good reasons not to use D?
Laeeth Isharc via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Nov 4 04:08:15 PST 2015
On Tuesday, 3 November 2015 at 23:37:36 UTC, Chris wrote:
> On Friday, 30 October 2015 at 10:35:03 UTC, Laeeth Isharc wrote:
>
> Interesting. Two points suggest that you should use D only for
> serious programming:
>
> "cases where you want to write quick one-off scripts that need
> to use a bunch of different libraries not yet available in D
> and where it doesn't make sense to wrap or port them" - quick
> and dirty
>
> "where you have many inexperienced programmers and they need to
> be productive very quickly." - quick and awkward
>
> [what does this tell us about financial programming ...]
>
> This reason is true of any other language:
>
> "where you have a lot of code in another language (especially
> non C, non Python) and defining an interface is not so easy;"
>
> In fact, the reasons you give (apart from the point about GUI)
> are true of C++, C#, Java etc. too. It's a bit generic. I was
> thinking of D specific reasons like lack of support for mobile
> platforms (not 100% yet). So your average stock broker couldn't
> calculate some bogus numbers on his iPad while having a latte
> and a Pelegrino in a posh cafe off Wallstreet. He he he.
>
> GC and lack of mobile are real reasons not to use D.
Thanks, Chris, appreciate the feedback. I gave talk yesterday to
a select but interested audience. Slides should be up soon -
couple typos and as Andrei points out a bit too dense. (It's
easy to forget when you read very quickly that not everyone does,
and I should be more considerate of an audience). I really would
have liked to have spent a bit more time preparing, as many
things came together on other fronts so I had to do the best I
could with the time available.
You're right that I made it sound like D isn't a language for
non-serious programming - well not quite, but more in that
direction - and I should find a way to be clear about this
anyway. Fact is I use it for scripts all the time. But if I ask
myself, would I recommend it to someone who won't also use it for
serious things, or has to depend on getting a bunch of junior
guys with little experience (and with a low tolerance for
discomfort) no I would not.
> [what does this tell us about financial programming ...]
I'm an elitist (albeit a kind, open-hearted one), and I think
that the research about the differences between productivity
across almost any domain is right and underappreciated, and that
it matters because if you don't recognize this then you won't
organize your business so as to make it possible for these people
to perform at that level. It's because of that and because the
language appeals to me that I am here.
Paper is here:
https://www.evernote.com/shard/s37/sh/12b86414-ed93-472d-9a6f-db223087d869/62f13d679581134ef1d368d5b57cd2b7
Yaron Minsky said that at Jane Street they had the luxury of only
hiring good programmers (and so the possible difficulty of ocaml
simply wasn't a factor). I applaud the sentiment, and agree.
This somewhat american conception of the rockstar programmer
simply misses the point. That isn't how these people are, and
they won't all be paid gazillions of dollars. One just has to
have the discernment to recognize talent, earn its respect (which
can only be if you make yourself worthy of it), provide working
conditions that are suited to it, and figure out how to address
the particular challenges of working with creative people.
I don't know about financial programming in general - it's a
really big sector and requirements are not the same. Even within
my narrow little part of it, what I am doing (or at least a good
part of it) is a bit different from anyone else I know, and the
organizational approach and its flexibility is certainly so. I
wouldn't characterize the difficulty level as high - what it will
do is quite interesting, but in the stages I'm at for now, it's
by far not the most technically difficult thing I have worked on.
But I have a lot to achieve with somewhat limited resources in
the beginning, which makes the challenge more interesting.
> This reason is true of any other language:
>
> "where you have a lot of code in another language (especially
> non C, non Python) and defining an interface is not so easy;"
True. But it doesn't matter for Java as you aren't going to be
limited by libraries and if you're thinking about using Java it's
something obvious to you. Whereas if you know nothing about D
(and nobody in the audience had even downloaded DMD) then it's
not (and it matters much more for D). And if you want to speak
credibly, it's much better to be honest - if you got it, you
don't need to make it flashy. I don't see that many talks on
other emerging languages by proponents talking about the rough
edges, and maybe that's because it's a bad idea, but maybe it's
not. If I were being paid to sell D (a job I would never take if
I could not speak about the rougher aspects) then it might be
different - but it was a talk from a practitioner's perspective,
one who deeply appreciates the language and the community, but
not a fanatic.
I've been sold to a lot in the years, and I find people who are
honest with me about the problems are much more convincing.
Depends on your target market, but the natural D demographic
isn't going to be easily fooled anyway, so it's one of those nice
occasions where doing the right thing has no cost.
> In fact, the reasons you give (apart from the point about GUI)
> are true of C++, C#, Java etc. too. It's a bit generic. I was
Really? I think yes abstractly "cases where you want to write
quick one-off scripts that need to use a bunch of different
libraries not yet available in D and where it doesn't make sense
to wrap or port them" is true of many languages. But practically
speaking (and I'm acting for now as a merchant, albeit one with
an aesthetic, non-mercantile appreciation) this hardly matters
for Java, C++, Python etc because mostly you won't need to use a
bunch of different libraries.
Porting and wrapping things has definitely cost me some time, but
I don't mind too much because I learnt a lot by doing so, and
because it's a one-off cost that's small in the context of my
bigger goal. Had I gone a more enterprisey route, I'd be paying
a higher price via different means (lower share of the pie, and
much more friction, wasted time in meetings, and frustration).
And if you have inexperienced programmers (and I tried working
with one as I was getting started recently, and then before that
at my fund) then with Python or Go it will go much more quickly
and easily than with D - because of the language, the docs, and
the 'diversity' of the community (D caters less in its ecosystem
to beginners, except in the helpfulness of people in the forums,
which is quite a lot, but not enough to offset the other things).
"I was
> thinking of D specific reasons like lack of support for mobile
> platforms (not 100% yet). So your average stock broker couldn't
> calculate some bogus numbers on his iPad while having a latte
> and a Pelegrino in a posh cafe off Wallstreet. He he he."
I wouldn't include that in a talk as anyone who comes is not
likely to be open to using D primarily for mobile platforms.
Like if that's the deal-killer, why would he come? And my guess
- without knowing much - is that this is a matter of a little
time, and in a year or two it will be good enough to write some
basic apps.
BTW financial people may not be quite as your image of them might
be. On the hedge fund side there is an inordinate number of
exceptionally smart people. My old boss came top in his year in
maths at Cambridge, and when I asked his Directory of Studies
where I could find another chap of his ability amongst recent
graduates, he laughed and said a man like that comes along only
every few years if you are lucky. He's now a machine learning
researcher back at Cambridge. And there are many others like
him, or perhaps even smarter, that you never hear about. Michael
Hintze is one that has a public profile.
A chap I worked with 20 years back linkedin me to thank me for my
posts on D. He was a pretty successful trader that ended up
setting up a market-making business, but even a few years in he
felt a degree of mental pain financially. Because he had turned
down a personal offer from Bill Gates to work with him (they
didn't hire dummies, certainly then), and the stock from his
signing on bonus would have been worth $20mm. He's for now less
interested in programming as he is learning Greek to take
advantage of opportunities there.
There are even many smart stockbrokers (although it's been a less
cerebral job) because the collapse in commissions amidst a
lower-volume environment has been brutal and best execution means
the old relationship stuff is rather different. So to survive
you have to be a different kind of person than the guys that
flourished before.
> GC and lack of mobile are real reasons not to use D.
Depends what you are trying to do! If you aren't writing mobile
apps (as I'm not on a horizon that matters for planning) and
don't care about latency there are still many questions to think
about. I've had to think about this from another perspective
lately, as I need to see whether it makes sense for my client to
consider starting to use D inside the organization in some ways,
and I'm not going to last very long and it wouldn't be the right
thing to do if I suggested he should use D just because I happen
to like it..
BTW if you would like to chat about natural language processing,
please drop me a line by email.
Laeeth.
More information about the Digitalmars-d-learn
mailing list