End user experience with D
Ludovit Lucenic
llucenic at gmail.com
Sun Sep 1 13:47:53 PDT 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
More information about the Digitalmars-d
mailing list