Moving back to .NET
Laeeth Isharc via Digitalmars-d
digitalmars-d at puremagic.com
Tue Sep 29 08:31:28 PDT 2015
On Sunday, 27 September 2015 at 09:51:42 UTC, Ola Fosheim Grøstad
wrote:
On Monday, 28 September 2015 at 09:35:53 UTC, Chris wrote:
In response to Ola:
On Monday, 28 September 2015 at 09:35:53 UTC, Chris wrote:
>> Yep. What I was talking about was not the fear of a commercial
>> failure because of having picked the wrong tool (management). I
>> was talking about my impression that D might intimidate
>> programmers /coders.
> This logic is very difficult to follow.
Difficult to follow for you, because your mind doesn't work that
way. But, as Knuth pointed out, there are many different kinds
of minds in the world, and one will have an easier time of it if
one accepts this.
Chris was speaking about human factors, and these are important,
because programming is still for now a human activity. It's
rather well-established that people are funny creatures and are
influenced by factors that are irrational, or transcend logic,
depending on your perspective. Chris's observation is based on
an empirical view of how the world works; logic doesn't have much
to do with the observation (although his subsequent conclusion is
based on impeccable reasoning)
> From a project health point of view D2 suffers from the same
> issues as C++
That's your assessment, and you are certainly entitled to it.
Whether it is persuasive to others is an open question, because
those that have spent time writing significant projects in D tend
to arrive at different conclusions. There have been people who
give up in frustration - this will always happen with something
new, and may reflect a lack of maturity, or that D wasn't the
right tool for the job, at least for this person in this
environment, at this time, and from what I have seen this seems
to be perhaps less commmon over time as the ecosystem matures.
We don't give people 'exit interviews' here, but to the extent
one can tell, the reasons given are rarely that D is too much
like C++.
As John Colvin points out, someone who hasn't written quite a lot
of code in D over time (because as you rightly observe, the
ultimate consequences of choices aren't really observed till the
code base develops and grows), simply isn't in a position to make
a judgement about whether this is true.
You come across as someone very able (and I have worked with some
very bright people over the years, so I don't say this lightly),
but quite academically minded and theoretical, and I don't know
how many lines of D you have written. (Significant lines of D,
if you prefer). That matters, because the difference between
theory and practice is bigger in practice than in theory.
> But even after years of polish Go is still perceived as risky:
Of course it's risky. Yet why do people who are sensible
commercial people who aren't in the business of gambling use it?
Because it's a very good tool for certain kinds of job, and the
benefits outweight the costs, risks being one of those costs.
> risk management is at the core of software engineering.
No it's not, any more than it's helpful to say that risk
management is at the core of investment management. It's one
important thing, and if you don't do this reasonably well, life
will crush you. But engineering is about using tools to solve
problems, and you need to consider benefits and opportunity costs
in aggregate. Also in terms of optionality, since a small bet
today may open up future possibilities.
> Software process/methods maturity is often quantified in "repeat
> success". That is, not that you have one success, but keep
> repeating the success over many projects.
Indeed, and rapid iteration is an important part of reducing risk
and aligning development with the needs of the business. No
doubt in some areas there isn't an alternative to waterfall, but
I have seen this fail in many more cases than succeed in the
areas I know well - banking and hedge funds.
> I've majored in human factors/software engineering, taught it to
> students and been with a research group where many focused on
> using Latour's actor network theory for understanding
> organizations and systems development processes.
It's not a surprise that this approach to understand
organizations should appeal to you. That's not the kind of human
factors I mean, by the way. Academic approaches can sometimes be
useful in practice, and sometimes very useful, but when an
academically-informed perspective clashes with practical
experience and common sense, one must at least ask why. My
impression is that in the domain of software engineering
practices, it hasn't been the academics that have driven insight
about what works.
> But you seem to assume that whatever holds for your field
> translates well to other fields.
No, because I read widely and talk to people. And some things
are clearly universal, whilst others are not. And I haven't ever
suggested "every enterprise should use D", but merely said that
it really depends on the situation - what you are trying to
achieve, what your alternatives are, and what the human and
organisational factors. And that an aversion to risk is just one
factor that can't be said to apply in the kind of blanket way you
suggest it does.
"If I started arguing about hedge fund managment like you do
about programming and engineering you would most likely find it
tiresome".
To make the analogy relevant to this case: if you had been
managing money for a decade longer than you had been programming,
had worked as a money manager, had always done some money
management alongside your programming, had hired and managed
money managers, and money management was a core and strategic
part of your business at a time when money management was
transforming programming. Yes, I would want to hear what you had
to say about money management.
But I haven't ventured many opinions here about computer science
as it's not a field I formally studied, and what I know isn't
current in every area. I do have the right to have some
tentative views about certain aspects of software development
processes, because I have to have an opinion to be able to act in
the world. And on the commercial side, I have every right.
Let's for one moment suppose that finance and startups are
strange areas where the usual lessons don't apply. The
exceptions that _preuve_ the rule. What does one certain company
that hasn't been a startup for a while now but has one of the
largest codebases in the world, and is generally recognized to
have some of the best people say about software development?
"Move slowly because you don't want to take the risk of breaking
things?"
I don't think that's Facebook's motto, even if they have matured
a bit in its application since the early days. So your claim
about risk aversion simply needs to be put into proper commercial
context. Not taking risks is also risky. You just need to do
what you can to understand them, and make sensible merchant-like
decisions. Sometimes that even means betting a large pecuniary
amount on something uncertain, because that might be better than
the alternatives. It really all depends.
> Geeks have no trouble picking up new languages
A geek is someone who is intrinsically interested in technology
and whose choice of activities reflect this. Many such people
don't have "no trouble" picking up a new language, since it's a
lot of work to do so and not everyone who is technical has that
specific ability or the time required. One shouldn't
underestimate the cost of learning something new, and that's one
reason Manu is essentially right about getting rid of unnecessary
frictions over time.
> C++ programmers most certainly will have no trouble picking up
> D.
Thank you for the colour - helpful to hear, and it fits with what
Sociomantic say.
> The semantics are too close, but D2 does not solve C++'s issues,
> and brings another set of issues that C++ does not have.
That's not what many people with at least equivalent compsci
chops and much more practical experience of D seem to find.
Reasonable people may differ on this, and actually the answer to
the above will depend on the commercial situation as much as on
language design questions and ecosystem.
> Projecting "fear" onto professional decision making is just a
> way
> to make excuses for D's shortcomings.
That's not a charitable reading of what Chris said, because it
isn't what he was doing or could be understood to mean.
I worked for a little while with someone recently - not the right
guy for me, but the things he pointed out were exactly the
obstacles with this guy. And as it happens it might have made a
big difference in adoption in financial sector had he not been
put off by fear (I can't say more here), and so it's a
significantly meaningful data point in itself.
> Sun was a big player in IBM's core market and the Java design
> was
> very orthodox. Risk is certainly the single most important
> factor > for avoiding change.
In my experience, risk is the excuse, and habit and human dislike
of change is a much more powerful reason.
> If you change your core toolset you also will have to change the
> process and infrastructure.
Alas, alack, these things don't stay the same for very long these
days. I don't think you need to make massive changes as a result
of using D if you don't want to, but you probably will. Being
able to write code quickly that works can certainly be a radical
influence on organisational practices, processes and culture. I
certainly agree with that.
> has to do it. If we all had the same timid attitude towards
> adopting new technologies, D would no longer exist, nor would a
> whole bunch of other technologies.
> You are assuming that technologists have timid attitudes towards
> playing with new technologies.
Come on, Ola! You don't like it when people talk of goalpost
shifting, but you keep repeating the behaviour that led to this
observation. He wrote _adopting_ and rather than actually
address what he said, you strawmanned it and said _playing with_.
I hardly need to point out the difference.
> I am not doing consulting on a forum, I am arguing against the
> viewpoint that the lack of adoption of fringe tools is a result
> of
> unjustified fear. I wouldn't make any blanket statement for a
> business in any shape or form without talking with them to
> understand their situation. I don't know why you think I am
> doing > consulting here.
You keep doing this strawman thing - you defend yourself against
an imaginary accusation that is a caricature of what was actually
said (not even a cariacature). Nobody suggested you were doing
consulting, so why do you respond to this imaginary suggestion,
and with such vigour?
But you certainly have made many blanket statements about how
others behave and should behave and it's my belief that you don't
have a proper basis for doing so.
> Managers should avoid using unsupported fringe tools for larger
> long running projects, for many reasons. The big players have
> many
> more options, it means you are more likely able to move and make
> changes later on in the project. Like adopting new platforms
> such
> as ARM, asm.js etc. With a tool like D you have to be prepared
> to
> take custody of the compiler/runtime to get the same
> flexibility.
Nobody is suggesting you are doing consulting, but you certainly
don't hesitate to make ex cathedra pronouncements on what people
should and shouldn't do when you don't know their situation or
what problems they face!
We know that you think D is a toy language, although you also say
that you aren't calling it a toy language. Whatever. Factually
speaking, an unsupported tool is one where if something doesn't
work you are on your own. D isn't unsupported, since there is a
forum, a bug tracker, and if you're a significant user you can
try to email Walter and persuade him to help you, as some
commercial users of D have done in the past. Practically
speaking, access to people is very helpful (not just to Walter
and Andrei but other compiler and library developers). I know
that if I had a problem I could get it fixed at a reasonable
price. (I don't mean writing a new GC since that doesn't matter
to me much, but if I wanted to have one, even that wouldn't cost
a fortune relative to what's at stake in my business).
Empirically speaking, some very smart people have built their
business around D. And not only that, but their numbers show
that the cost advantage isn't theoretical. When you tell people
like that that in effect they are idiots, you ought to have some
basis if you wish to be taken seriously.
Nobody is suggesting that 'unjustified fear' is the reason why D
is not currently as widely adopted as C++. (It's not right to
say that what's striking is it's lack of adoption, since you
start where you start, but the rate of growth is what matters and
that, with all the ebb and flow of a natural phenomenon, keeps
going).
People are suggesting that perceptions are important, and that
it's little things that create a bit of pain in the beginning
that deter some people. That's often based on their practical
experience, not some academic study - what one makes of this will
depend on one's view of life, I suppose.
> adopting it for deployment is a completely different issue
Then you cover yourself, but then by doing so you essentially
confirm his point.
> What tools can D successfully replace? Give a focused answer to
> that and you can improve on D to a level where it becomes
> attractive.
Most of us aren't interested, or can't afford to be for now, in
answering such blanket questions. It's anyway much more
generative to ask oneself what's the best way to solve the
business problem before me. Hmm, maybe D could help - let's find
out.
And for the language foundation people, they'll do best by
listening to those who do use D successfully to solve their own
problems, and there are plenty of those, and most of these have
better things to do than post on the forum. How often do you see
emsi, sociomantic, weka, or the other well-known D users post
here about this kind of question? The forum is a tiny subset of
the D userbase, and the numbers show that.
> 1. That C# and Java programmers end up being disgruntled
You imply that this is a pattern, when I am not aware of such,
and indeed, as Walter pointed out, a significant shift a few
years back was from people saying "I'm a Java guy at work, but I
use D for side projects" to "Here is how I use D at work". That
wouldn't be the case (and it is), if Java programmers were
systematically disgruntled. Similarly you wouldn't have a
serious chap talking about how they transitioned from C# if this
were the case.
> is not a failure of the language, that is a failure of
> communicating that D is a system level programming language. It
> is
> not a fear issue, they just ended up in the wrong neighbourhood.
Interesting idea. Do you have anything to justify this view?
Evidence or empirical observations.
I don't think it's right to characterize D as a systems language
BTW - it can be if you want it to be, but the connnotations of a
systems language are one that isn't suited for rapid and safe
development, and you won't be understood if you use that term.
Which, I suppose, is why it isn't mentioned any more on the front
page, last I checked.
> When people who are looking for a system level programming
> language get disgruntled then you need to pay attention.
I agree with this. I thought it was a pity people weren't
immediately able to help the chap who was using D for embedded
systems at work, but resources are limited and these things take
time, and progress has been made since then.
> D2 is pretty much C++ with a Boehm collector attached to it.
That's one view. Don't you find it a puzzle then that anyone
should use D when they don't wish to use the GC or wish to write
their own? It's an anomaly for your theory really, and I think
you might do well to pay attention to anomalies.
> There is nothing theoretical about this, I am only concerned
> about
> the language, not the standard library. The same with C++.
Might be true for you, but the topic wasn't "how should Ola think
about D", but the "adoption of D in the developer community", and
when we speak about language adoption we cannot avoid speaking
about the ecosystem. If Go didn't have nice networking
libraries, its adoption would have been rather different. These
things are a package deal.
If you want to speak about your particular domain then you should
make clear what it is specifically, what the important things
are. And not create the impression - which you do, deliberately
or inadvertently - that your comments applying to your personal
use case and experience somehow have universal relevance.
It's a big world, and even Andrei and Walter should not pretend
that they understand all the possible ways in which people might
use D and what might be important to them. (And they don't).
> But keep it real.
Ola, that's one area where we can certainly agree!
Laeeth.
More information about the Digitalmars-d
mailing list