A few notes on choosing between Go and D for a quick project

Chris via Digitalmars-d digitalmars-d at puremagic.com
Fri Mar 13 08:37:11 PDT 2015

On Friday, 13 March 2015 at 15:17:06 UTC, Andrei Alexandrescu 
> On 3/13/15 7:51 AM, Chris wrote:
>> On Friday, 13 March 2015 at 14:34:23 UTC, Russel Winder wrote:
>>> On Fri, 2015-03-13 at 14:20 +0000, Chris via Digitalmars-d 
>>> wrote:
>>> […]
>>>> reluctant to learn something new. Crowd 2. we can win over, 
>>>> yet we
>>>> have failed to communicate with them, to reach out to them. 
>>>> Most
>>>> people I know have a look at D's homepage and say "Uh! Hm. 
>>>> Ah, I'll
>>>> use Python." No, they are not hardcore programmers, they are
>>>> engineers and scientists. But they are _users_, people who 
>>>> need to
>>>> write software to analyze data, to create something. We 
>>>> should not
>>>> ignore them, even if they are not (initially) interested in 
>>>> templates
>>>> and metaprogramming. Neither was I, when I first learned D.
>>> It is not Python or R or Julia the language that people 
>>> choose, it is
>>> the superstructure built on top. So for Python, it is Pandas,
>>> Matplotlib, SciPy, NumPy. And the ability to use ready made 
>>> C, C++ and
>>> Fortran libraries.
>> Exactly, that's part of it. People don't understand that they 
>> can use
>> all the C libraries with D as well. And if they do, "extern 
>> (C)" is too
>> "complicated", at least more complicated than "import 
>> numbergrind". I'm
>> really at loss here, I don't know how to communicate these 
>> things to
>> people. Colleagues and text books that talk about R and Python 
>> weigh so
>> much more than "D can actually interface to C without any 
>> effort".[1]
>> Also, sometimes I have the impression that people use any 
>> excuse not to
>> use D.
> That may as well be basic psychology at work. Curb appeal (or 
> lack thereof) is difficult to explain but is easy to 
> rationalize with unrelated arguments.
> There is something loosely related to curb appeal that has been 
> discussed here before. Consider someone just starts with D and 
> wants to figure whether there's a startsWith function in D.
> So they google for something like ``dlang startswith''. Nicely 
> enough http://dlang.org/phobos/std_algorithm.html comes up 
> first. (Ideally the individual page 
> http://dlang.org/library/std/algorithm/starts_with.html would 
> come up.)
> Anyhow, assuming the user clicks on the former, startsWith is 
> easy to find at the top and then when you click on it...
> ====
> uint startsWith(alias pred = "a == b", Range, Needles...)(Range 
> doesThisStart, Needles withOneOfThese) if (isInputRange!Range 
> && Needles.length > 1 && 
> is(typeof(.startsWith!pred(doesThisStart, withOneOfThese[0])) : 
> bool) && is(typeof(.startsWith!pred(doesThisStart, 
> withOneOfThese[1..$])) : uint));
> bool startsWith(alias pred = "a == b", R1, R2)(R1 
> doesThisStart, R2 withThis) if (isInputRange!R1 && 
> isInputRange!R2 && 
> is(typeof(binaryFun!pred(doesThisStart.front, withThis.front)) 
> : bool));
> bool startsWith(alias pred = "a == b", R, E)(R doesThisStart, E 
> withThis) if (isInputRange!R && 
> is(typeof(binaryFun!pred(doesThisStart.front, withThis)) : 
> bool));
> ====
> This in big bold font, too. The HTML way of saying, "you wanted 
> startsWith? I'll give you more startsWith than you can carry." 
> Picture the effect this has on someone who just wanted to see 
> if a string starts with another.
> We need to make the template constraints distinct for 
> formatting in ddoc.
> Sadly http://dlang.org/library/std/algorithm/starts_with.html 
> is bad in other ways. It doesn't have any examples! In 
> contrast, the unified page does have some decent examples.
> This all is under the "curb appeal" category.
> Andrei

Yep. This is part of the "make people feel good about it" 
approach. Plus, we're not selling shit, it's really a good 
product. In a way, we do it the other way around: bad marketing 
for a good product.

More information about the Digitalmars-d mailing list