Jump to page: 1 24  
Page
Thread overview
End user experience with D
Sep 01, 2013
Ludovit Lucenic
Sep 01, 2013
Adam D. Ruppe
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Adam D. Ruppe
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Dicebot
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Dicebot
Sep 02, 2013
Ludovit Lucenic
Sep 03, 2013
Ludovit Lucenic
Sep 01, 2013
Ramon
Sep 01, 2013
Brian Schott
Sep 01, 2013
Ramon
Sep 01, 2013
Adam D. Ruppe
Sep 01, 2013
Ramon
Sep 02, 2013
Peter Williams
Sep 02, 2013
Ramon
Sep 02, 2013
Peter Williams
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Adam D. Ruppe
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Paolo Invernizzi
Sep 02, 2013
Adam D. Ruppe
Sep 02, 2013
Paolo Invernizzi
Sep 02, 2013
Jacob Carlborg
Sep 02, 2013
Gary Willoughby
Sep 02, 2013
Paolo Invernizzi
Sep 03, 2013
Jacob Carlborg
Sep 03, 2013
Paolo Invernizzi
Sep 02, 2013
H. S. Teoh
Sep 02, 2013
Peter Williams
Sep 02, 2013
Ludovit Lucenic
Sep 02, 2013
Jacob Carlborg
Sep 02, 2013
Jacob Carlborg
Sep 02, 2013
Ludovit Lucenic
September 01, 2013
Hello everybody,

I read this very lively Manu's thread (Had another 48hr game jam this weekend..., http://forum.dlang.org/thread/mailman.680.1378001151.1719.digitalmars-d@puremagic.com) and am about to share my own D experience as someone who discovered D less than a year ago looking for a useful alternative to nowadays standards.

I'd like to point out that the thoughts I write here form an essay rather than some well structured discussion contribution. However, please read on and you may find it interesting after all.

Imagine someone (a developer/programmer or a software engineer) being in a search for something that is more appropriate to address his professional needs. Someone who do this on his own, is genuinely interested in software science, has something to offer and who understands the corporate motivations behind all the fancy languages/frameworks (most of which are not free/libre software at all) that have all the design-shortcomings that are 20+ years old. And (in contrast with corporate attitude) someone who as a human being seeks inner fulfilment in exchange of mutual respect, results, in learning and support.

But from the beginning. In my most recent job I lead development of a platform that enables better software design using a complete new approach (or paradigm) based on encapsulating software components into so called configurations or configuration patterns, while having all the OOP-like features as inheritance, polymorphism etc. in this (configuration) dimension as well. The inventor of the idea behind this concept had found investors that make an effort to make big business out of this here in Slovakia. I feel lucky I have had this opportunity of being a part of this endeavour since its to-mature phase. But as the time passed by I realized I felt tired of being in restraint of the fear of "the idea cannot leak or even losing the platform implementation" that was constantly imprinted upon us. As such, it had many impacts on our proficiency as software engineers. So I quit this job.

A couple of months before I have decided to resign I had tried to prove the concept of what we've been dealing with in the company in some technology other than Java and its servlets engine. I studied the current possibilities and that was the point I came to know D. I ever thought that some lower level approach, no VMs and some language constructs would outperform the implementation of this 'code the architecture with software component configurations' concept in Java we had, though it was a decent one.

To explain a little more on how my intention relates to D, I dare to claim that this new paradigm has potential of becoming next standard in software architecture design. Especially for larger projects. It will definitively address at least two of the three major goals of D Walter spoke about in his DConf intro talk this year: large scale project support (in this case: on architectural level) and the performance D would lend to this paradigm would ensure industry quality of modern systems.

After reading Andrei's book I sat down to computer and it took me about 5 man-days to design and program this concept in D. No previous experience with D at all. Technically, it was about an engine interpreting tree (stored e.g. in XML), where the target software application had stored its architecture. Polymorphism, hierarchy and everything on level of configuration patterns. Awesome. Actually this experience contributed to my ultimate decision on quitting :-) Walter et al., please be aware of how your work does change people's careers and lives :-D

To get that far I needed a web server in D. Technically, it was not necessary, but it might had been convenient as I was accustomed to the web interface for this platform. I have read everything that was at hand at that time and ended up with that only Mango would suite my needs the best. It 'just' needed to port it from D1 to D2. Somehow neither Adam D. Ruppe's web stuff nor vibe.d server were not able to target my intention to have latest D2 compiler support (Dec 2012/Jan 2013) and so did anything else I might have found. The mission also was to compile the tango on my Ubuntu, than to port and compile mango, link it with tango, create my own project and compile and link it with these libraries. While doing this I came across all the notorious in the community: dead dsource.org, only D1 version of majority of D code I could use, phobos vs. tango incompatibility and so on... Real pain that substituted the initial enthusiasm I felt almost instantly about D as a software engineer by heart. But my conviction to go on was stronger...

The first thing before I get into coding in D was desperately looking for an IDE. From my experience, Eclipse and Visual Studio have learned me to such comfort. In this case though it was not only about the comfort. The concept rely on some higher level of abstraction that even takes time to visualize in mind, not speaking about track in the code without using decoded memory. Getting 0x00FE67ED in debugger instead of a dynamic class instance with some details on some interface parameter or local variable, not speaking of global variables is just no-go.
I had three computers at my disposal at that time, two with Ubuntu and one with Windows 7, later upgraded to 8. I tried everything I found: Code::Blocks plugin, DDT, VisualD, Mono-D and maybe some others. I was looking for an eclipse-like debugging experience the people familiar with Java have. Desperately: WinDBG, Mago, Visual Studio Debugger, MonoDevelop.Debugger.GDB, CLI of GDB. No way except for DIY.

In order to at least finish my proof-of-concept project I chose Mono-D and contacted Alexander Bothe asking him for support in assistance with building a GDB add-in for MonoDevelop that would support D (I mean useful support, not the declared one in GDB announcements). The results of the joint effort, by the way, is at my GitHub (https://github.com/llucenic/MonoDevelop.Debugger.Gdb.D). I recently started a new job, where I am to switch to Windows platform (please keep this in mind ! people may change the platform along the career roads, even if their preference stays the same - free software in my case). After, it took me a while until I managed to update the Gdb.D Mono-D add-in in order to be used in a Xamarin Studio (MonoDevelop successor) along with Mono-D on Windows. When I got that far I came to the point that DMD on Windows does not generate debug info that GDB can read and make use of. So I started to get working executable of GDC and/or LDC as alternatives that should be (at least in theory) capable of cooperation with GDB on Windows. None of these efforts have been successful so far, the details of which we discuss in GDC and LDC forums respectively.

All in all, to sum things up I list all my fundamental show stoppers so far:
 1) only D1 version of majority of D code I could use, phobos vs. tango incompatibility, ... (valid for January 2013)
 2) missing IDE - comfort and primarily handling higher level abstraction necessity,
 3) debugger not capable of basic memory interpretation - as said, interface/class instances visualized just as memory address,
 4) GDB not working with DMD on Windows,
 5) not able to compile GDC on Windows,
 6) LDC complaining a lot of linkage errors when integrated in Xamarin Studio (with Mono-D) on Windows (not tried on Unix)

I am addressing these issues on their respective forums in particular, just need comment on the show stopper number 4. Why is it not possible, or what would it take to support GDB debug info format in DMD back-end on Windows ?

These issues are basically hindering me immensely in achieving my ultimate goal, which I think may contribute essentially to the D coming up.
I am enthusiastic about D, but I cannot estimate how long it will take until all this confusion and obstacles roll over me :-)
Hope it never happens, but I will definitively need a lot of support and help with making my intention reality.

After all, I consider this D community is pretty much about philosophy. I value highly (actually, one of my major reasons to go for D) Walter's motivation on creating a language out of love. Although, there surely is some pragmatic aspect in all this as well. And this makes D so special (at least for me).
When we get older, at some time we are going to pose the question: 'Did it all make sense ?" I guess with this language we say: 'it Did'

I wish you found this posting at least of some value.
Thank you for your time.

Kind regards,
Ludovit
September 01, 2013
On Sunday, 1 September 2013 at 20:47:56 UTC, Ludovit Lucenic wrote:
> Somehow neither Adam D. Ruppe's web stuff nor vibe.d server were not able to target my intention to have latest D2 compiler support (Dec 2012/Jan 2013)

Do you remember exactly what it was? I often skip every other dmd release so if it was blah is deprecated that's probably what it was.
September 01, 2013
Ludovit Lucenic

For the IDE and GDB issues I fully agree. And I'add less than comfortable (~"semi automatic"; from what I know) C library bindings.

While one may discuss about IDE or cli, I feel that an IDE is at least an immensely helpful starting point.
I agree that one should be able to do programming with no more than a simple editor, a compiler/linker, and a debugger (!). Newcomers, however, (and even many seasoned programmers) handily profit from an IDE (and I don't mean Eclipse which I count as a moloch that, to make things worse, is based on java).

I also feel that any modern language just *must* have a comfortable way to use C libraries.

Finally and possibly most importantly, basically not having fully working  debugger support is a very serious lack. I may be wrong (actually I hope to be wrong) but from what I know, this issue doesn't seem to be seen as having very high priority.

I'm more and more getting the impression that D could be a programmers dreams come true if only it were practically and productively useable. Sure, it's not D's fault. But in the end we need a fully working debugger, some good editor support (say, on a Scintilla/Scite level), preferably at least one cross platform non-java IDE (like Code:Blocks) and easy access to C libraries in order to actually and productively work with a language.

D's bias toward Windows doesn't help either.

Looking at it from a marketing perspective, i.e. looking for what potential users (read: "the large crowd out there") would look for, I see that the creators of D have done an excellent job that, however reminds of a Porsche engine on a makeshift chassis.

Frankly, if we want D to attract developers and to get the position it undoubtedly deserves that will not be achieved so much by finetuning D or even phobos but by being able to offer a well-rounded and well useable package (and soon after good docs for what we have so far).

A+ -R

September 01, 2013
On Sunday, 1 September 2013 at 22:21:10 UTC, Ramon wrote:
> D's bias toward Windows doesn't help either.

Did you mean against? I've found D to be much nicer on Linux.
September 01, 2013
On Sunday, 1 September 2013 at 22:27:43 UTC, Brian Schott wrote:
> On Sunday, 1 September 2013 at 22:21:10 UTC, Ramon wrote:
>> D's bias toward Windows doesn't help either.
>
> Did you mean against? I've found D to be much nicer on Linux.

Well, I can't comment on Windoze as I avoid it like the plague. But I'm under the impression (basically from reading here in the forum and looking at D related tools, IDEs, etc) that there is a certain bias toward Windows.

Which would be OK as most users (?) seem to work on Windoze *if* D marketed itself as a language for Windows.

As for linux, yes, you are right. I didn't experience any problems with DMD itself. Installed like a charm, worked like a charm.

But: I remember my first days and the conditio sine qua non that there are tools for linux, too. Well, there seems to ... yet, I'm still unable to reasonably debug. which, from what I saw/read seems to be a problem on the D side.

A+ -R
September 01, 2013
On Sunday, 1 September 2013 at 22:21:10 UTC, Ramon wrote:
> Finally and possibly most importantly, basically not having fully working  debugger support is a very serious lack.

Maybe it is because I write 100% bug free code the first time every time ( :-) ) but I've found the gdb support, at least on Linux, to be really pretty good.

I compile with -gc -debug - the "pretend to be C" option is something I started doing years ago and might not be necessary anymore, but I've found it to be plenty good enough anyway.

> D's bias toward Windows doesn't help either.

If anything, I don't think D goes far enough in its Windows support. It works well there, sure, even the optlink things others complain about don't bother me, but there's a lot of stuff it could easily do and doesn't, at least not without grabbing additional downloads.

On Linux, dmd works quite excellently, as do gdc and ldc.
September 01, 2013
On Sunday, 1 September 2013 at 23:22:30 UTC, Adam D. Ruppe wrote:
> On Sunday, 1 September 2013 at 22:21:10 UTC, Ramon wrote:
>> Finally and possibly most importantly, basically not having fully working  debugger support is a very serious lack.
>
> Maybe it is because I write 100% bug free code the first time every time ( :-) ) but I've found the gdb support, at least on Linux, to be really pretty good.
>
> I compile with -gc -debug - the "pretend to be C" option is something I started doing years ago and might not be necessary anymore, but I've found it to be plenty good enough anyway.
>
>> D's bias toward Windows doesn't help either.
>
> If anything, I don't think D goes far enough in its Windows support. It works well there, sure, even the optlink things others complain about don't bother me, but there's a lot of stuff it could easily do and doesn't, at least not without grabbing additional downloads.
>
> On Linux, dmd works quite excellently, as do gdc and ldc.

-gc? Hmmm ... I'll try that. Thanks for the tip ;)

For the rest: Frankly, I'm not even sure, I should follow that kind of discussion (like in Manu's thread) anymore. I don't mean to offend someone but it strikes me as ... uhm ... brains not used at their full power ... when "there is no really properly and fully working IDE" (which is pretty close to a killer for many) gt thrown in - and seriously - discussed with stuff like "nenene, in Windows Visual Blah 2010 it worked and now Intellisense works only with handish settings, nenene".
Even worse, while I'm still hoping for a promising statement by a heavy-weight like e.g. W. Bright along the line "Yep, we really, seriously need some working cross platform IDE, preferably an easy to install one" ... one seems quite happy to seriously adress nitty-bitties for Windows Whatever 2012 (c) (tm) $$$.

Maybe perfection must be three, the catholic way, a triplet. Maybe we need another incarnation of Andrei A. (who brought great stuff to D) but this third guy bringing good useabilty to D.
September 02, 2013
On 02/09/13 09:36, Ramon wrote:
> On Sunday, 1 September 2013 at 23:22:30 UTC, Adam D. Ruppe wrote:
>> On Sunday, 1 September 2013 at 22:21:10 UTC, Ramon wrote:
>>> Finally and possibly most importantly, basically not having fully
>>> working  debugger support is a very serious lack.
>>
>> Maybe it is because I write 100% bug free code the first time every
>> time ( :-) ) but I've found the gdb support, at least on Linux, to be
>> really pretty good.
>>
>> I compile with -gc -debug - the "pretend to be C" option is something
>> I started doing years ago and might not be necessary anymore, but I've
>> found it to be plenty good enough anyway.
>>
>>> D's bias toward Windows doesn't help either.
>>
>> If anything, I don't think D goes far enough in its Windows support.
>> It works well there, sure, even the optlink things others complain
>> about don't bother me, but there's a lot of stuff it could easily do
>> and doesn't, at least not without grabbing additional downloads.
>>
>> On Linux, dmd works quite excellently, as do gdc and ldc.
>
> -gc? Hmmm ... I'll try that. Thanks for the tip ;)
>
> For the rest: Frankly, I'm not even sure, I should follow that kind of
> discussion (like in Manu's thread) anymore. I don't mean to offend
> someone but it strikes me as ... uhm ... brains not used at their full
> power ... when "there is no really properly and fully working IDE"
> (which is pretty close to a killer for many) gt thrown in - and
> seriously - discussed with stuff like "nenene, in Windows Visual Blah
> 2010 it worked and now Intellisense works only with handish settings,
> nenene".
> Even worse, while I'm still hoping for a promising statement by a
> heavy-weight like e.g. W. Bright along the line "Yep, we really,
> seriously need some working cross platform IDE, preferably an easy to
> install one" ... one seems quite happy to seriously adress nitty-bitties
> for Windows Whatever 2012 (c) (tm) $$$.
>
> Maybe perfection must be three, the catholic way, a triplet. Maybe we
> need another incarnation of Andrei A. (who brought great stuff to D) but
> this third guy bringing good useabilty to D.

IMHO, the IDE should only be a wrapper around the core functionality and never be so closely integrated that the core is unusable without the IDE.  Personally, I just like using a configurable editor (e.g.  Geany, emacs and so on) which knows (or can be taught) how to do various useful things that an IDE might offer.

If you want an IDE then create one but make it an "add on" and don't expect everyone to use it.

Cheers
Peter
PS I especially hate IDEs that try to force me to create "projects".
PPS I especially like IDEs that have built in terminal editors so that you can do command line stuff without the need for a separate window.
September 02, 2013
On Monday, 2 September 2013 at 04:00:37 UTC, Peter Williams wrote:
>
> IMHO, the IDE should only be a wrapper around the core functionality and never be so closely integrated that the core is unusable without the IDE.  Personally, I just like using a configurable editor (e.g.  Geany, emacs and so on) which knows (or can be taught) how to do various useful things that an IDE might offer.
>
> If you want an IDE then create one but make it an "add on" and don't expect everyone to use it.
>
> Cheers
> Peter
> PS I especially hate IDEs that try to force me to create "projects".
> PPS I especially like IDEs that have built in terminal editors so that you can do command line stuff without the need for a separate window.

I perfectly agree. An IDE should be optional - but it should
exist.

And btw: With IDE I don't necessarily mean a fully blown Eclipse
like thing. A smart developer oriented editor (like Geany) with a
reasonable interface to a *working* debugger is good enough.
September 02, 2013
On Mon, Sep 02, 2013 at 12:21:08AM +0200, Ramon wrote: [...]
> D's bias toward Windows doesn't help either.
[...]

I'm confused by this statement. I don't do development on Windows either, but my impression during the time I've been around here is that Windows support is actually lagging behind Linux. It was only very recently that we got 64-bit support on Windows. And optlink often comes up as a nagging point (along with COFF vs. whatever it is the other format is called), but Linux users use the system linker and never have this problem.

So, all things considered, it would appear to me rather that D is more biased towards Linux. :)

As for the whole "need better IDE support" issue, I think it's the same with every other issue that has come up in the D community: it takes *somebody* to champion the cause and do whatever it takes to make it happen. Like Andrei with Phobos, Iain with GDC, Don with CTFE, etc.. Being an opensource community, the dynamics here are rather different from, say, a corporate-backed language: what somebody cares about enough to do something about it, is what gets implemented and supported. Dictating that people work on feature X, or officially declaring support for feature X, generally doesn't have very much actual effect. The core devs have enough on their hands already (too much, in fact -- Phobos pulls, for example, need much more manpower to review so that turnaround time isn't as slow as it currently is). What is needed is *somebody* from the community with the urge to do something about it, to go ahead and do it, and then submit the pull requests, etc., to get it integrated. I'm sure Walter & co will be more than happy to merge such requests.


T

-- 
Recently, our IT department hired a bug-fix engineer. He used to work for Volkswagen.
« First   ‹ Prev
1 2 3 4