How do you use D?

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Wed Jan 3 14:08:20 UTC 2018


On Wednesday, 3 January 2018 at 11:13:04 UTC, Joakim wrote:
> Not necessarily, it all depends if thinking you're the best 
> leads to taking your eye off the ball of improving and 
> acknowledging your problems, which I see little indication of 
> here.

Well, if a language is used for a narrow set of application areas 
then one might be able to have a deep understanding of what the 
challenges are.

In general I think it is difficult to understand what challenges 
people have in areas one have little familiarity with. I've seen 
this time and time again in discussions about memory management.

I think both Rust and D suffers a bit from this.  And likewise, I 
think C++ designers are making a mistake by presuming that C++ 
can become a competitive high level language.

So it is a general challenge in language design, I think.

> Agreed with much of this: they may be better at various things, 
> but those things don't matter much of the time.

Yes, I don't think any programmers are "best", some people are 
not at all suited for programming or lack some general knowledge, 
but otherwise I think we only have good programmers that are 
"best" in some very narrow domains.

> And who do you know who does this?  While I myself have 
> espoused the idea of the best tool for the job in this forum, 
> realistically, other than a small handful of coders, when does 
> that ever happen?

I don't know how many…  But if you have a good understanding of a 
language like Java and C/machine language, and also have the 
equivalent of a bachelor in comp sci, then I think you should be 
able to pick up just about any language in relatively short time 
(except C++ where the know-how is less accessible for various 
reasons).

Anyway, it is my impression that many C/C++ programmers also know 
Python and also have a good understanding of basic functional 
programming.

> I recently read some article linked off proggit that stated the 
> reality much better: programmers learn a language that suits 
> them, then use it everywhere they can.

Well. Take an iOS programmer. She/he would start out with 
Objective-C, which requires understanding of C. Then maybe you 
also need to interface with C++ in order to use some library. 
Then you switch over to Swift… Then you need to port the app to 
Android and have to pick up some Java. Then somebody want to turn 
it into a webapp and you pick up TypeScript… Then someone needs 
interfacing with C# for a web-service and you pick up a bit of 
that…

As long as you are interfacing with other systems you often 
achieve more by learning enough to use something written in 
another language than by picking a suboptimal solution that use 
your favourite language.

But sure, if I need to hack together something I would usually 
think about using Python first, mostly because it is so mallable 
for smaller tasks. Not really because it is my preferred 
language. I don't really like dynamic typing in principle, but it 
is productive for smaller tasks and prototyping.

> Given how much effort it takes to know a language platform 
> well, not only the language itself but all the libraries and 
> their bottlenecks, and most programmers' limited motivation to 
> pick up new tech, that is the only approach that makes sense 
> for the vast majority.

Well, but libraries and frameworks are unfortunately not 
permanent. They are shifting relatively fast. Heck, even the Java 
standard library contains many things that you don't want to use, 
because there is something better in there.

So if you start on a new project there is often a more productive 
framework you could go with.

And that might require adopting a new language as well.

This is of course good for new languages. If this was not the 
case then it would be near impossible for new languages to 
establish themselves.

But it can also be taken as a sign that we don't have the 
languages and tooling that enable writing really good timeless 
libraries and frameworks.

Maybe that will change in the future, I guess we now are reaching 
a point where neither CPU or memory are the limiting factor for 
most mundane applications. So maybe that will cause a more stable 
infrastructure to emerge… but probably not in our lifetime. I 
think we still have a long way to go in even simple areas such as 
GUI frameworks.


> Yes, but if you're only hyped because you were stowed away on a 
> popular platform, ie javascript in the browser, or are easy to 
> learn, Go from what I hear, then the technical limitations of 
> the language put a ceiling on how high you can go.  You'll get 
> to that ceiling faster, but then you're stuck there.

I perceived that there was a lot of hype around Python 15 years 
ago or so. Now, universities are replacing Java with Python as 
the introduction language and Python is also becoming the defacto 
language for scientific programming. Python is basically getting 
critical mass and is now managing to take on Matlab and perhaps  
to some extent even C++/Fortran.

There is a loooong road for languages like Rust, D and Julia… All 
those scientific simulation frameworks creates are rather heavy 
critical mass. That is very difficult to move around (Matlab was 
for a long time dominant).

>> The only time where it is an advantage to be small is when 
>> your language design is changing. Once the language design is 
>> stable there is only disadvantages in not having critical mass.
>
> And since when has the D language design been stable? ;)

Good point… Critical mass might be more damaging that good.


> And who's to say D doesn't have critical mass?  I'd say 
> 100-200k users (my math based on the chart below: 2k 
> downloads/day of dmd X 60 days between major versions + ldc/gdc 
> and external downloads) is a significant market:
>
> http://erdani.com/d/downloads.daily.png

I don't know what to make out of the download metric. It would be 
easier to grasp if it was broken down into regional downloads and 
if it isn't already, filtered by unique IPs.


> It's not hyped or popular, but you can leverage that base to 
> get bigger, particularly since you didn't sell out and 
> specialize to get that base in the first place.

Well, but nobody picks a language because it is a good language 
for building libraries. They might avoid a language if it is bad 
at that, but for a single application you often don't need 
generic programming.

When focusing on a niche you have an easier sell for the 
specifics of a project. Being a bit better than Rust at this, Go 
and that and C++ an this and that, isn't given as much weight as 
"hands down most productive solution for Y". And being the most 
productive goes beyond language and even libraries, it also 
includes knowhow and online tutorials for that narrow area.




More information about the Digitalmars-d mailing list