Setting up dmd properly
Jason Jeffory via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jan 12 21:33:32 PST 2016
On Wednesday, 13 January 2016 at 01:40:59 UTC, Mike Parker wrote:
> On Tuesday, 12 January 2016 at 21:08:30 UTC, Jason Jeffory
> wrote:
>> (I should mention that I am exaggerating a bit, and some of
>> the complaints about D are actually more directed to the
>> programming community in general. D has the same fundamental
>> issues though and it is just a matter of scale. Programming is
>> way more fun when you are actually programming and getting the
>> job done rather than fighting things that should work but
>> don't. As programmers, we get used to that crap.. specially
>> those that programmed in the 70's and 80's... but it doesn't
>> mean it's ok. Specially when we know how to fix it. I really
>> like the D language but the D tool chain should be more user
>> friendly to work with on every level.)
>
> I think there's another side of this in that what is an issue
> for one person isn't necessarily an issue for another. For
> example, your difficulties with static linking... you aren't
> the first person to have this problem, but I personally never
> have. It all seems quite straight forward to me. I was annoyed
> by the COFF/OMF issue when I first started using D, sure, and
> that's what prompted me to start Derelict), but it's never been
> a problem that prevented me from building my D projects.
>
> The way to solve this particular sort of problem is to have
> more documentation, or tutorials, but that requires someone
> with the time and motivation to write it. People who aren't
> having that problem are going to be motivated to direct their
> time and energy elsewhere. So I don't see this as an issue of
> "getting used to" a bad situation, just one of varying opinions
> about what part of the situation is bad.
>
> I'm going to make an effort toward improving the situation with
> my learningd.org site. Linking with C libraries would be a good
> topic for a tutorial to go there. There is also some movement
> behind the scenes right now to create a comprehensive web site
> for teaching all things D, but it's going to be after the next
> DConf before any concrete effort is made in that direction.
>
> As for the toolchain... Until there is a dedicated team with a
> clear goal-oriented task list and the management necessary to
> keep development focused on those tasks, then development will
> go in the direction that the core contributors feel they need
> to direct their efforts. Anyone can champion a new cause in D's
> development, and several have over the years. That's what has
> driven the project forward. There have been many, many, many
> discussions over the years about how unfriendly D is to new
> users, or how difficult it is to get up and running with this
> or that aspect of the toolchain. Most of them have resulted in
> improvements. As a long time D user, I can tell you that you
> kids have it much better than we did back in the day.
>
> So things will get easier with time. Pre-D experience is what
> determines the degree of difficulty in getting started with D
> right now. For example, programmers who are comfortable with
> the command line, particularly when using C or C++, tend to
> have few difficulties with the toolchain. I'm hoping that the
> recent creation of the D Foundation will create opportunities
> to make it easier for /anyone/ to hit the ground running with D.
Yes, but the world consists of many differnet programmers, and
due the the interaction of different things, which is
exponential, it is too complex to solve each persons problems on
a one by one basis. What works for you works for you because you
are you... not because you are me(not trying to make a Beatles
song here).
e.g., if write your total system configuration in a list, and I
write mine, then just about every element in the list interacts
with every other element and creates new dependency problems. The
amount of potential issues it the powerset of all the items.
e.g.,
ubuntu 14.3, dmd 2.062, glad opengl, etc...
windows, dmd 2.061, derelict opengl, etc...
Each item in your list has to interact with each other, and in
each case it may or may not work well for you. But my list is
totally different and you can't say "It works for me"... because
it doesn't help me in any way.
dmd 2.061 may have a bug in the windows version and the derelict
version that is not exhibited by the linux case.
Because the problem is so complex, the only way to make it work
is that the elements themselves have to work well
individually(basically because we can't code for every
combination). This is why we have to break complex systems down
into simple well understood parts. But information is the here.
One has to have some way to "measure" progress(ask Andrei, he
said that in his performance lecture). If a tool doesn't give
results that can be compared, we can't see how we are solve the
problem and it usually requires guess, looking up stuff online
for similar problems/solutions, and usually a lot of wasted time.
So, the solution to all this is not solving the problems after
they exist but trying to prevent them in the first place... and
there is one and only one way to do this, and that's to write
better tools(because after the tools, is were the problems come
in from).
e.g., imagine compilers were perfect, no bugs... then we wouldn't
have problems with them, no patches would be required(e.g., so
essentially no github), etc..
But we don't work towards writing perfect tools, we work towards
writing perfect fixes for the tools. Again, the horse before the
cart.
I do realize it is necessary, and some people are working in the
absolute right direction. Most, it's just the vague general
direction with a lot of circling around, getting lost, etc.
My main "gripe", if you will, is simply that the tools are really
really import, and that programmers in general tend to forget
just how important. Mainly because they deal with it on a daily
basis, and many times they've forgotten how much of their own
lives have been wasted on needlessly solving problems that
shouldn't have existed in the first place.
Imagine if you were given all the time back that you spend wasted
on chasing rabbits that didn't exist? (someone wrote code that
didn't do what it was suppose to, etc.) It would probably add up
to more than a year(if you've been programming a long time). That
is significant!
This is my impression of the D "leadership": Lets fix bugs and
squabble over who's write about semantic interpretation of
certain language constructs(e.g., extern(c++, ns)). Lets find out
who's right and who's wrong and lets may sure no one admits they
are wrong or accepts a compromise!
This creates "unhappiness" on both sides. 1. If Manu had his
wish, he could test out the feature and determine if it worked
for him. 2. If Walter had his, he could feel good about not
introducing something that caused a lot of headaches.
This is not the solution to things. This creates division and
separation from actually solving the real problem. The solution
is "Lets figure out how to do both". That way, if Walter is
wrong, he can be proven wrong and if Manu is wrong, he will be
proven wrong(through real world practical problems). How much
time is wasted on such arguments instead of just figuring out how
to satisfies all parties? I personally believe it can be done if
everyone works towards that goal. (maybe there will have be some
compromise in technical issues, but not in goal)
Again, I'm inflating a lot of stuff and I think, for the most
part, DMD does a good job. It works well across the board in
general. Specific stuff though it seems to fail at in more cases
than it should, for some reason. It's more of a mentality that is
wide spread across people and programmers in general. It usually
leads to an unfocused and unproductive mess in the long term. I'd
hate to see that happen to D because I feel it is, perhaps, the
best language out there. It's elegant to some degree, it's
powerful, it has meta programming constructs that just make
sense, the people behind it seem intelligent and have a strong
desire to see it succeed... But it has a long was to go... and
that can't happen without more support. Gui's, graphics, sound,
database, etc must be well done and supported innately by D if it
wants to be top dog.
Water the flower well and it grows into a beautiful thing.
Neglect and ignore it and it will wilt and die. Same for
children, programming languages, families, species, etc. D's too
good to let it fade off into the bowls of mankind.
More information about the Digitalmars-d-learn
mailing list