How programmers transition between languages

Laeeth Isharc laeeth at laeeth.com
Sun Jan 28 18:54:34 UTC 2018


On Sunday, 28 January 2018 at 13:50:03 UTC, Michael wrote:
> I do worry that, having been using D for about 3 1/2 years now, 
> that the perceptions of D outside of this community don't seem 
> to be changing much. It does seem to make a huge difference to 
> have a big company behind a language, purely for the "free 
> advertisement". Most people at my university, outside of the 
> computer science department, that are using languages like 
> Python and R and MATLAB the most, are very aware of Rust and 
> Go, but not D. I wonder if we do need to pay more attention to 
> attracting new users just to get people talking about it.

That's what you would expect, because D is a very ambitious 
language, which means its natural user base is much more spread 
out and less highly concentrated.  And beyond that, most code is 
enterprise code that's closed source, and whilst the web guys 
talk a lot and influence the culture, enterprise guys talk much 
less and just do their thing quietly.  Even in our world, how 
often do you see the people using D get involved in forum 
discussions?  Sociomantic, Weka, Ebay, and so on.  (Or Microsoft 
- did you know that D was used in their COM team?  They didn't 
exactly send out a press release...)  A little bit, but only a 
little in relation to their use of the language.  If you're 
trying to accomplish something in a representative enterprise 
context with lean resources, you don't have much time to talk 
about what you are doing.

If you want to draw people to the language (and, honestly, I 
wonder why it matters so much to many here - it's clearly taking 
hold, has momentum and will continue to grow for decades; an 
acorn will become an oak tree, and fretting about how much it's 
grown in the past year might be missing the point, so long as 
it's healthy enough), why not just focus on both improving the 
language itself (pull requests, documentation) and on 
accomplishing something useful and worth doing with it?

Of course there are the usual trolls who don't seem to write much 
D, but seem to be drawn like vampires to the energy of those who 
do.  Sad.




On Sunday, 28 January 2018 at 17:23:12 UTC, Paulo Pinto wrote:
> This has been mentioned multiple times, D really needs some 
> kind of killer application.

Why?

It's a generalist language for getting stuff done in an age where 
people have succumbed so much to Stockholm Syndrome that they 
think it's a positive thing in a language that you can only use 
it to do something special.  Yet trends in performance and 
performance demands point to the rising importance of efficiency 
(and I suspect there will be a return to the recognition of the 
importance of being a generalist - in programming, as in other 
fields).  There was a tweet by the author of Musl libc observing 
that software today runs slower than software twenty years ago, 
and linking the bloat to the insane pressure to maximise CPU 
performance over all else.  The era of that kind of ruthless 
optimization is over because it's not the only thing that 
matters, and we start to see the price of it.  And generalism - 
in a dynamic business environment, there's considerable value to 
have capabilities that aren't adapted to particular narrow skills 
when what you need is always changing and may be unknown even to 
you.

My generation was privileged because very quickly if you wanted 
to get anything interesting done you had to learn assembly 
language (maybe write your own assembler or disassembler), had to 
learn a bit about hardware, and could never pretend the CPU was 
this perfect platonic abstraction.  And for a while that changed, 
but I think the past is returning again, as it often does.

So I see a value in hiring hacker / generalist types who can 
figure things out.  For example:

https://hackaday.com/2017/01/26/a-personal-fight-against-the-modern-laptop/
https://www.youtube.com/watch?v=Fzmm87oVQ6c

Back in 2007, most finance types would have said how completely 
impracticable and unreasonable.  But I say, with GK Chesterton, 
that "all progress depends on the unreasonable man".  And someone 
like that doesn't succumb to helplessness once they are outside 
of their shiny IDE, knows that in the end everything is just 
code, and you can change it if you want to, and there is 
strategic value from building organisational capabilities from 
hiring such people.  Usually I'm a couple of years ahead, and I 
think others will follow.  If you hold a contrarian point of 
view, you know you're right when surprises start coming in your 
direction, and people still can't see it.  And I think that's 
been the case since 2014.

Anyway - so D is a general purpose language, and I think we are 
likely seeing a nascent return in recognizing the value of 
generalist tools and people.

> On my line of work having Go on the skills list is slowly 
> becoming a requirement, due to Docker and Kubernetes adoption 
> on cloud infrastructures.

That's great.  Walter says that good code should look good on the 
page, and Go code looks nice enough.  It's got nice network and 
infra libraries, as you say.  But why would the adoption of Go be 
bad for D?  I think it's great for D because after a period of 
stagnation it gets people open to newer languages, and on the 
other hand the gap between the spirit of Go and D isn't that far 
(GC, clean code, native target) even if they don't have generics. 
  It's a big world - both D and Go can succeed, and the success of 
one isn't bought at the cost of the other.

> Just wondering if mir or easier GPGPU programming could be that 
> killer application.

We sponsor mir algorithm (some of the routines within were 
developed for us, and we were happy to open source them), and we 
are rewriting our core analytics - used across the firm in a 
$4.1bn hedge fund in D from C++ before that.  What alternative 
really exists for what we are doing there?  And C++ vs D, it's 
not even a fair fight if you care about productivity, plasticity 
of the code, and generating wrappers for other languages that you 
can still understand whilst maintaining decent performance.  At 
the same time, we're not a D shop - a diversity of languages is 
not a bad thing, provided you have some way for them to work 
together.  Code reuse is very difficult, but the UNIX way does 
work.  On the other hand, if you want to connect components, how 
are you to do that?  Well, D is pretty nice for writing DSLs that 
can connect to code written in other languages, and where 
expressions can be evaluated from other languages.

A specialist language adapted to a particular domain or set of 
domains - yes, that benefits from a killer app.  But for a 
generalist language that's useful for getting stuff done - why 
would there be a single killer app?  That doesn't make sense to 
me.  There should be multiple successes across different domains, 
and that's what we are beginning to see.  Just bear in mind that 
the web and tech guys talk a lot, but most programmers don't work 
in those industries.  It would be a mistake to conflate salience 
with economic importance, I think.


Laeeth.



More information about the Digitalmars-d mailing list