www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - dlang.org redesign -- a better code sample for landing page

reply "aldanor" <i.s.smirnov gmail.com> writes:
Does anyone find the example on the landing page particularly 
exciting? (aside from it using an rdmd shebang) Anything that 
makes you, as a programmer, think -- huh, that's interesting, 
I'll need to check that out.

It would be nice if it showcases more of D's strong parts, e.g. 
type inference -- so an "auto" declaration could be used, maybe 
assoc arrays or range stuff. Maybe even a little bit of 
templating seeing how that's an integral part of D and how much 
more natural meta code looks like as compared to many other 
languages.

This is a very important snippet of code as it serves as the face 
of the front page of the language, I suggest we put some thought 
into it and make it more interesting and elegant. Any objections? 
Any takers?

Another option is to have multiple code samples and rotate them 
-- that's what Ruby does.
Jan 23 2015
next sibling parent reply "aldanor" <i.s.smirnov gmail.com> writes:
On Friday, 23 January 2015 at 13:34:36 UTC, aldanor wrote:
 Does anyone find the example on the landing page particularly 
 exciting? (aside from it using an rdmd shebang) Anything that 
 makes you, as a programmer, think -- huh, that's interesting, 
 I'll need to check that out.

 It would be nice if it showcases more of D's strong parts, e.g. 
 type inference -- so an "auto" declaration could be used, maybe 
 assoc arrays or range stuff. Maybe even a little bit of 
 templating seeing how that's an integral part of D and how much 
 more natural meta code looks like as compared to many other 
 languages.

 This is a very important snippet of code as it serves as the 
 face of the front page of the language, I suggest we put some 
 thought into it and make it more interesting and elegant. Any 
 objections? Any takers?

 Another option is to have multiple code samples and rotate them 
 -- that's what Ruby does.
In fact, the current example (which is not the greatest of all) is essentially a one/two-liner, something along the lines of: auto lines = stdin.byLine.map!(line => line.length); writefln("Average line length: %.4f.", 1.0 * lines.sum / lines.array.length); Ofc this is not the greatest piece of code ever and it's not lazy, but at the very least it showcases an auto declaration, a lambda, a formatted print, a template invocation and UFCS syntax, you get the point... oh wait, that and a lack of a "mean" function in the standard library... I bet you will come up with much better ideas!
Jan 23 2015
next sibling parent reply "bearophile" <bearophileHUGS lycos.com> writes:
aldanor:

     auto lines = stdin.byLine.map!(line => line.length);
     writefln("Average line length: %.4f.", 1.0 * lines.sum / 
 lines.array.length);

 Ofc this is not the greatest piece of code ever and it's not 
 lazy,
lines.walklength seems better than lines.array.length, but you can also use a reduce with two functions (a sum and a counting one), scanning the input file only once.
 oh wait, that and a lack of a "mean" function in the standard 
 library...
Yes, it's worth adding to Phobos. Bye, bearophile
Jan 23 2015
parent "bearophile" <bearophileHUGS lycos.com> writes:
 Yes, it's worth adding to Phobos.
The issue: https://issues.dlang.org/show_bug.cgi?id=14034 Bye, bearophile
Jan 23 2015
prev sibling parent "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm gmx.net> writes:
On Friday, 23 January 2015 at 13:55:04 UTC, aldanor wrote:
     auto lines = stdin.byLine.map!(line => line.length);
     writefln("Average line length: %.4f.", 1.0 * lines.sum / 
 lines.array.length);
This won't work; `sum` already consumes the range, so there will be nothing left to compute the length from.
Jan 26 2015
prev sibling parent "Per =?UTF-8?B?Tm9yZGzDtnci?= <per.nordlow gmail.com> writes:
On Friday, 23 January 2015 at 13:34:36 UTC, aldanor wrote:
 Does anyone find the example on the landing page particularly 
 exciting? (aside from it using an rdmd shebang) Anything that 
 makes you, as a programmer, think -- huh, that's interesting, 
 I'll need to check that out.
Further, I believe we should show off D in all its virtue at http://dlang.org/hash-map.html by addition to int* p = ("hello" in aa); if (p !is null) {} also include the even compacter if (auto p = "hello" in aa) {} along with if (const p = "hello" in aa) {} in the non-mutating case.
Mar 11 2015