www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - GSoC Mentor Summit Observations and D Marketing

reply dsimcha <dsimcha yahoo.com> writes:
I wanted to thank the D community for getting us involved in GSoC and 
giving me the opportunity to attend the Mentor Summit, which was this 
weekend.  I was pleasantly surprised to find out that most hardcore 
programmers have at least heard of D by now, at least if the Mentor 
Summit was a representative sample of hardcore programmers that I had 
never talked to before.  There seemed to be substantial interest in it 
from the informal conversations I had over meals, etc.

I got the impression that D is not being used partly because of the 
obvious reasons (lack of libraries, legacy code in other languages) but 
also partly because most people, even if they've heard of it, don't know 
what its most important features/benefits are.  I think that we need to 
develop a short, memorable "elevator speech" version of its selling 
points, even if we ignore some substantial areas in doing so.  The one I 
used was basically "compile-time metaprogramming on steroids, static if, 
CTFE, string mixins, see std.algorithm, std.range and std.parallelism 
for examples".

I was also frequently asked about D's compatibility with C and C++.  The 
impression I get is that we would do well to highlight our ease of 
integrating with C more in our marketing, especially now that we have 
Deimos.

BTW, Fawzi Mohammed was also at the Mentor Summit and may have 
additional comments.  I'd be interested to see him weigh in on this thread.
Oct 24 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 10/24/2011 5:42 PM, dsimcha wrote:
 I got the impression that D is not being used partly because of the obvious
 reasons (lack of libraries, legacy code in other languages) but also partly
 because most people, even if they've heard of it, don't know what its most
 important features/benefits are. I think that we need to develop a short,
 memorable "elevator speech" version of its selling points, even if we ignore
 some substantial areas in doing so. The one I used was basically "compile-time
 metaprogramming on steroids, static if, CTFE, string mixins, see std.algorithm,
 std.range and std.parallelism for examples".
You're right, I've been recently wrestling with the elevator pitch thing for D. I know we need one. Bartosz has suggested "Systems programming safe and easy."
Oct 24 2011
next sibling parent dsimcha <dsimcha yahoo.com> writes:
On 10/24/2011 9:12 PM, Walter Bright wrote:
 You're right, I've been recently wrestling with the elevator pitch thing
 for D. I know we need one. Bartosz has suggested "Systems programming
 safe and easy."
I think that might be a little too non-technical, though. I think we need to highlight a couple of the key features that make D safe and easy. (IMHO template metaprogramming contributes massively to the "easy" part because it massively improves library API flexibility and is pervasive in the standard library.)
Oct 24 2011
prev sibling parent reply Brad Roberts <braddr slice-2.puremagic.com> writes:
On Mon, 24 Oct 2011, Walter Bright wrote:

 On 10/24/2011 5:42 PM, dsimcha wrote:
 I got the impression that D is not being used partly because of the obvious
 reasons (lack of libraries, legacy code in other languages) but also partly
 because most people, even if they've heard of it, don't know what its most
 important features/benefits are. I think that we need to develop a short,
 memorable "elevator speech" version of its selling points, even if we ignore
 some substantial areas in doing so. The one I used was basically
 "compile-time
 metaprogramming on steroids, static if, CTFE, string mixins, see
 std.algorithm,
 std.range and std.parallelism for examples".
You're right, I've been recently wrestling with the elevator pitch thing for D. I know we need one. Bartosz has suggested "Systems programming safe and easy."
That's not a pitch, that's a slogan or a catch phrase. It might be enough to get the listener to invite the pitch. A pitch needs to be longer and more informative. You've got 20-30 seconds to convince the person to look deeper. It's enough to list a couple important points. Top three reasons it's worth looking at closer.. something along those lines.
Oct 24 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 10/24/2011 6:52 PM, Brad Roberts wrote:
 On Mon, 24 Oct 2011, Walter Bright wrote:

 On 10/24/2011 5:42 PM, dsimcha wrote:
 I got the impression that D is not being used partly because of the obvious
 reasons (lack of libraries, legacy code in other languages) but also partly
 because most people, even if they've heard of it, don't know what its most
 important features/benefits are. I think that we need to develop a short,
 memorable "elevator speech" version of its selling points, even if we ignore
 some substantial areas in doing so. The one I used was basically
 "compile-time
 metaprogramming on steroids, static if, CTFE, string mixins, see
 std.algorithm,
 std.range and std.parallelism for examples".
You're right, I've been recently wrestling with the elevator pitch thing for D. I know we need one. Bartosz has suggested "Systems programming safe and easy."
That's not a pitch, that's a slogan or a catch phrase. It might be enough to get the listener to invite the pitch.
Right, but you need a headline that's 140 characters or less (tweet size). For example, the ipad was "1000 songs in your pocket". The iphone was "reinvention of the phone".
 A pitch needs to be longer and more informative.  You've got 20-30 seconds
 to convince the person to look deeper.  It's enough to list a couple
 important points.  Top three reasons it's worth looking at closer..
 something along those lines.
The 3 keys come next. It has to be more than two, and less than 4. I've been toying with: 1. control 2. multi-paradigm 3. robustness (Yes, I've been reading a book on this!)
Oct 24 2011
next sibling parent reply Gor Gyolchanyan <gor.f.gyolchanyan gmail.com> writes:
Many languages come with a built-in religion. That religion drives the
design of those languages towards particular goals or particular ways
of achieving goals.
D doesn't have a religion. D is an atheistic language. It's aware,
that many goals have nothing in common and that they gave their own
specific ways of achieving them. D allows you to do get whatever you
want however you want. It doesn't force you in a certain direction or
limit you with what you can do with it.
You might think, that C++ (the second least religious language IMO)
has the same philosophy, but it's not true. Here are some examples:
1. C++ thinks, that every user-defined type is a class with
polymorphic behavior.
2. C++ assumes, that every feature should be half-implemented:
2.1. Templates in C++ look more, like a demo version of the real
thing. That's one of the reasons why many people resist from using C++
templates.
2.2. Polymorphism is built in a way, that discourages it's usage. You
can't guarantee a proper destruction of a polymorphic type and you
can't manipulate polymorphic types without pointer shenanigans.
3. C++ is sure, that the code must be fast, but it need not be working:
3.1. Default behavior is the one most prone to errors:
3.1.1. Variable are initialized with garbage by default.
3.1.2. Array of polymorphic objects doesn't call their constructors.
3.1.3. Copying polymorphic objects results in a cut-in-half corpses,
instead of objects.
3.1.4. Most of the stuff the programmer works with is
implementation-defined (in layman's terms, may or may not work at
will).
4. C++ is designed for people who take pleasure of reading encrypted
Klingon, instead of a pretty and readable text.

D works in the way, in which "the easy way is the right way". The
right way in C++ is using shared pointers, the right way in D is
using... well.. objects. That's the most obvious example. Indeed, C++
is a good tool in the hands of a highly skilled professional. But
that's not a good thing. That's retarded. The things C++ allows you to
do are not worth all the time and effort, spent on studying all the
bugs and holes in the C++ standard.

Other languages are just religious and that's it. Python is religious
about dynamicity (Nothing is known at compile time. Compile-time
doesn't exist), Java is religious about complexity (it's a
straitjacket, not a language), Perl is write-only language, religious
about text manipulation (perl thinks, that nothing ever exists besides
text), C is religious about stone-age tools (Design patterns,
high-level constructs are blasphemy for C).

That's why one should consider D.

On Tue, Oct 25, 2011 at 7:19 AM, Walter Bright
<newshound2 digitalmars.com> wrote:
 On 10/24/2011 6:52 PM, Brad Roberts wrote:
 On Mon, 24 Oct 2011, Walter Bright wrote:

 On 10/24/2011 5:42 PM, dsimcha wrote:
 I got the impression that D is not being used partly because of the
 obvious
 reasons (lack of libraries, legacy code in other languages) but also
 partly
 because most people, even if they've heard of it, don't know what its
 most
 important features/benefits are. I think that we need to develop a
 short,
 memorable "elevator speech" version of its selling points, even if we
 ignore
 some substantial areas in doing so. The one I used was basically
 "compile-time
 metaprogramming on steroids, static if, CTFE, string mixins, see
 std.algorithm,
 std.range and std.parallelism for examples".
You're right, I've been recently wrestling with the elevator pitch thin=
g
 for
 D. I know we need one. Bartosz has suggested "Systems programming safe
 and
 easy."
That's not a pitch, that's a slogan or a catch phrase. =A0It might be en=
ough
 to get the listener to invite the pitch.
Right, but you need a headline that's 140 characters or less (tweet size)=
.
 For example, the ipad was "1000 songs in your pocket". The iphone was
 "reinvention of the phone".

 A pitch needs to be longer and more informative. =A0You've got 20-30 sec=
onds
 to convince the person to look deeper. =A0It's enough to list a couple
 important points. =A0Top three reasons it's worth looking at closer..
 something along those lines.
The 3 keys come next. It has to be more than two, and less than 4. I've b=
een
 toying with:

 1. control
 2. multi-paradigm
 3. robustness

 (Yes, I've been reading a book on this!)
Oct 25 2011
parent reply bearophile <bearophileHUGS lycos.com> writes:
Gor Gyolchanyan:

 D doesn't have a religion. D is an atheistic language.
I doubt this. There was even an attempt to write a D Zen. Bye, bearophile
Oct 25 2011
next sibling parent Gor Gyolchanyan <gor.f.gyolchanyan gmail.com> writes:
Huh? What is this D Zen?

On Tue, Oct 25, 2011 at 1:40 PM, bearophile <bearophileHUGS lycos.com> wrote:
 Gor Gyolchanyan:

 D doesn't have a religion. D is an atheistic language.
I doubt this. There was even an attempt to write a D Zen. Bye, bearophile
Oct 25 2011
prev sibling parent reply Don <nospam nospam.com> writes:
On 25.10.2011 11:40, bearophile wrote:
 Gor Gyolchanyan:

 D doesn't have a religion. D is an atheistic language.
I doubt this. There was even an attempt to write a D Zen.
That was by you, though, wasn't it? <g> OTOH I agree that it's got an underlying philosophy. It was clearly motivated by a love/hate relationship with C++. "C++ done right" is still not too far wrong, although it seems that when you do C++ correctly, it looks like some other languages as well...
Oct 25 2011
next sibling parent Manu <turkeyman gmail.com> writes:
On 25 October 2011 13:31, Don <nospam nospam.com> wrote:

 On 25.10.2011 11:40, bearophile wrote:

 Gor Gyolchanyan:

  D doesn't have a religion. D is an atheistic language.

 I doubt this. There was even an attempt to write a D Zen.
That was by you, though, wasn't it? <g> OTOH I agree that it's got an underlying philosophy. It was clearly motivated by a love/hate relationship with C++. "C++ done right" is still not too far wrong, although it seems that when you do C++ correctly, it looks like some other languages as well...
Except every other example of C++ done right leads to a managed runtime :) It's this "C++ done right" idea that sold me on D, except after spending some time, I wonder if D is quite sure about what it is? I bought in with the clear impression (and "C++ done right" certainly suggests) that it was a modernised systems programming language. Surely this is(/was?) the primary goal? That's definitely what appeals to me... it's compiled to machine code, has uninhibited hardware access, and that's the only niche that it cleanly fills which isn't occupied by any other languages. But I also see a lot of conversation about really high level features which neatly into D without compromise, then sure, why not. I love cool features! :) But is D making any compromise to that end? I haven't been following long enough to know... Don: The only thing I really care about is that the compiler never chooses double intrinsically.. that will prove which way the language leans to me ;)
Oct 25 2011
prev sibling parent Gor Gyolchanyan <gor.f.gyolchanyan gmail.com> writes:
I think combining straight-forward uncomprimised support for both
bare-metal access AND very high-level constructs is the thing, that no
other language has dome before and D has a great shot at this.
Personally, i think it needs more high-level construct support, like
correctly implemented dynamic typing support.
The C part of D is great: it deals with low-level stuff like a champ,
but the Pythin part is not so good: high-level and abstract concepts
are still a tricky thing to do.

We need to get high ;-)

On Tue, Oct 25, 2011 at 3:25 PM, Manu <turkeyman gmail.com> wrote:
 On 25 October 2011 13:31, Don <nospam nospam.com> wrote:
 On 25.10.2011 11:40, bearophile wrote:
 Gor Gyolchanyan:

 D doesn't have a religion. D is an atheistic language.
I doubt this. There was even an attempt to write a D Zen.
That was by you, though, wasn't it? <g> OTOH I agree that it's got an underlying philosophy. It was clearly motivated by a love/hate relationship with C++. "C++ done right" is still not too far wrong, although it seems that when you do C++ correctly, it looks like some other languages as well...
Except every other example of C++ done right leads to a managed runtime :=
)
 It's this "C++ done right" idea that sold me on D, except after spending
 some time,=A0I wonder if D is quite sure about what it is?
 I bought in with the clear impression (and "C++ done right" certainly
 suggests) that it was a modernised systems programming language. Surely t=
his
 is(/was?) the primary goal?
 That's definitely what appeals to me... it's compiled to machine code, ha=
s
 uninhibited hardware access, and that's the only niche that it cleanly fi=
lls
 which isn't occupied by any other languages.
 But I also see a lot of conversation about really high level features whi=
ch

 neatly into D without compromise, then sure, why not. I love cool feature=
s!
 :)
 But is D making any compromise to that end? I haven't been following long
 enough to know...
  Don: The only thing I really care about is that the compiler never choos=
es
 double intrinsically.. that will prove which way the language leans to me=
;)
Oct 25 2011
prev sibling next sibling parent Gor Gyolchanyan <gor.f.gyolchanyan gmail.com> writes:
C++ is like an age-old soviet nuclear missile: You can probably wipe
out all your enemies with it, but you have a much greater chance of
killing yourself and everyone around you.

On Tue, Oct 25, 2011 at 1:10 PM, Gor Gyolchanyan
<gor.f.gyolchanyan gmail.com> wrote:
 Many languages come with a built-in religion. That religion drives the
 design of those languages towards particular goals or particular ways
 of achieving goals.
 D doesn't have a religion. D is an atheistic language. It's aware,
 that many goals have nothing in common and that they gave their own
 specific ways of achieving them. D allows you to do get whatever you
 want however you want. It doesn't force you in a certain direction or
 limit you with what you can do with it.
 You might think, that C++ (the second least religious language IMO)
 has the same philosophy, but it's not true. Here are some examples:
 1. C++ thinks, that every user-defined type is a class with
 polymorphic behavior.
 2. C++ assumes, that every feature should be half-implemented:
 2.1. Templates in C++ look more, like a demo version of the real
 thing. That's one of the reasons why many people resist from using C++
 templates.
 2.2. Polymorphism is built in a way, that discourages it's usage. You
 can't guarantee a proper destruction of a polymorphic type and you
 can't manipulate polymorphic types without pointer shenanigans.
 3. C++ is sure, that the code must be fast, but it need not be working:
 3.1. Default behavior is the one most prone to errors:
 3.1.1. Variable are initialized with garbage by default.
 3.1.2. Array of polymorphic objects doesn't call their constructors.
 3.1.3. Copying polymorphic objects results in a cut-in-half corpses,
 instead of objects.
 3.1.4. Most of the stuff the programmer works with is
 implementation-defined (in layman's terms, may or may not work at
 will).
 4. C++ is designed for people who take pleasure of reading encrypted
 Klingon, instead of a pretty and readable text.

 D works in the way, in which "the easy way is the right way". The
 right way in C++ is using shared pointers, the right way in D is
 using... well.. objects. That's the most obvious example. Indeed, C++
 is a good tool in the hands of a highly skilled professional. But
 that's not a good thing. That's retarded. The things C++ allows you to
 do are not worth all the time and effort, spent on studying all the
 bugs and holes in the C++ standard.

 Other languages are just religious and that's it. Python is religious
 about dynamicity (Nothing is known at compile time. Compile-time
 doesn't exist), Java is religious about complexity (it's a
 straitjacket, not a language), Perl is write-only language, religious
 about text manipulation (perl thinks, that nothing ever exists besides
 text), C is religious about stone-age tools (Design patterns,
 high-level constructs are blasphemy for C).

 That's why one should consider D.

 On Tue, Oct 25, 2011 at 7:19 AM, Walter Bright
 <newshound2 digitalmars.com> wrote:
 On 10/24/2011 6:52 PM, Brad Roberts wrote:
 On Mon, 24 Oct 2011, Walter Bright wrote:

 On 10/24/2011 5:42 PM, dsimcha wrote:
 I got the impression that D is not being used partly because of the
 obvious
 reasons (lack of libraries, legacy code in other languages) but also
 partly
 because most people, even if they've heard of it, don't know what its
 most
 important features/benefits are. I think that we need to develop a
 short,
 memorable "elevator speech" version of its selling points, even if we
 ignore
 some substantial areas in doing so. The one I used was basically
 "compile-time
 metaprogramming on steroids, static if, CTFE, string mixins, see
 std.algorithm,
 std.range and std.parallelism for examples".
You're right, I've been recently wrestling with the elevator pitch thi=
ng
 for
 D. I know we need one. Bartosz has suggested "Systems programming safe
 and
 easy."
That's not a pitch, that's a slogan or a catch phrase. =A0It might be e=
nough
 to get the listener to invite the pitch.
Right, but you need a headline that's 140 characters or less (tweet size=
).
 For example, the ipad was "1000 songs in your pocket". The iphone was
 "reinvention of the phone".

 A pitch needs to be longer and more informative. =A0You've got 20-30 se=
conds
 to convince the person to look deeper. =A0It's enough to list a couple
 important points. =A0Top three reasons it's worth looking at closer..
 something along those lines.
The 3 keys come next. It has to be more than two, and less than 4. I've =
been
 toying with:

 1. control
 2. multi-paradigm
 3. robustness

 (Yes, I've been reading a book on this!)
Oct 25 2011
prev sibling next sibling parent reply bcs <bcs example.com> writes:
On 10/24/2011 08:19 PM, Walter Bright wrote:
 On 10/24/2011 6:52 PM, Brad Roberts wrote:
 On Mon, 24 Oct 2011, Walter Bright wrote:
 A pitch needs to be longer and more informative. You've got 20-30 seconds
 to convince the person to look deeper. It's enough to list a couple
 important points. Top three reasons it's worth looking at closer..
 something along those lines.
The 3 keys come next. It has to be more than two, and less than 4. I've been toying with: 1. control 2. multi-paradigm 3. robustness (Yes, I've been reading a book on this!)
1. uncompromising performance. 2. maximum utility. 3. no unnecessary complexity.
Oct 28 2011
parent reply Fawzi Mohamed <fawzi gmx.ch> writes:
At the gsoc I was using something like this:

a better (simplified) C++:
- close to C but not 100% backward compatible, either it compiles or it =
gives an error
	- easy to link C, partially possible to use C++ libs (no =
template instantiation)
- single inheritance + interfaces (and contracts)
- garbage collection (possible to avoid with some effort)
- better templates (template language close to normal D, constraints), =
CTFE and mixing
- auto/foreach
- delegates

- immutable/const/pure if the discussions goes in that direction

and going more in depth in the things that did strike the listener.

I was also surprised about how many already heard something about D, I =
got even some questions about D1/D2 tango/phobos.
My answers were something along these lines:
- D2 toolchain becoming now robust enough to be chosen for new projects =
(with gdc finally also 64 bits)
- D1 simpler, but misses some nice features of D2, not all D2 features =
are perfect, but the proposal is compelling
- it was difficult for the community to improve the lib & druntime -> =
tango, personally I think it is the better library for D1 (I was =
contributing to it), unfortunately not compatible with phobos. D2 =
runtime, and no tango yet, but if/when it comes likely it will use =
druntime.

Fawzi=
Oct 30 2011
parent Jerry <jlquinn optonline.net> writes:
Fawzi Mohamed <fawzi gmx.ch> writes:

 I was also surprised about how many already heard something about D, I got
even some questions about D1/D2 tango/phobos.
 My answers were something along these lines:
 - D2 toolchain becoming now robust enough to be chosen for new projects (with
gdc finally also 64 bits)
Umm, not yet. GDB support is woefully lacking. The 3 custom debugging types output by dmd aren't supported at all. These are darray, aarray, and delegate. Without it, debugging D code is awful. I think darrays would be straightforward to support in GDB. Delegates can probably be supported as well, taking advantage of C++ member function pointer support. However, aarray doesn't have an ABI other than void*. There's no defined portable way to access the contents. Currently druntime has some C functions to access the AA, but those are implementation-specific. To be more ready for prime time, an actual ABI needs to be defined for AA's, especially if you wish to permit multiple compilers to write compatible object files. That's not a huge issue yet, since all the current D compilers use the same front end, but will become increasingly so as D becomes more popular. The AA ABI issue could be solved by defining all AA operations to map to a template class defined by druntime. That's what already happens, but defining it would plug this hole. Jerry
Nov 01 2011
prev sibling parent Jeff Nowakowski <jeff dilacero.org> writes:
On 10/24/2011 11:19 PM, Walter Bright wrote:
 The 3 keys come next. It has to be more than two, and less than 4. I've
 been toying with:

 1. control
 2. multi-paradigm
 3. robustness

 (Yes, I've been reading a book on this!)
makes people's eyes glaze over.
Oct 30 2011