www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Website message overhaul

reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
Walter and I have been working on the website for a while. We want to 
crystallize a clear message of what the D programming language is.

Please take a look at http://d-programming-language.org/new/. The work 
is content-only (no significant changes in style, though collapsible 
examples and twitter news are a new style element).

Feedback is welcome.


Thanks,

Andrei
Nov 13 2011
next sibling parent so <so so.so> writes:
On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 Walter and I have been working on the website for a while. We want to  
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work  
 is content-only (no significant changes in style, though collapsible  
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

Looks good, but a compiler instead of that twitter thing would rock. Lets be unique! Being unique never been easier :)
Nov 13 2011
prev sibling next sibling parent reply Jonathan M Davis <jmdavisProg gmx.com> writes:
On Sunday, November 13, 2011 19:50:04 Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.
 
 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).
 
 Feedback is welcome.

Are there any major differences other than the main page and the links to TDPL and the documentation on Kindle? The main page is a definite improvement, though I think that you managed to end up giving links to gdc and ldc without giving a link to dmd (aside from the github stuff). Nitpick: "Ever wrote a useful script..." should be "Ever written a useful script..." Nitpick: "all major D contrib tors, including..." should be "all major D contributors, including..." - Jonathan M Davis
Nov 13 2011
next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/13/11 8:22 PM, Jonathan M Davis wrote:
 On Sunday, November 13, 2011 19:50:04 Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.

Are there any major differences other than the main page and the links to TDPL and the documentation on Kindle?

No. Andrei
Nov 13 2011
prev sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/13/11 8:22 PM, Jonathan M Davis wrote:
 Are there any major differences other than the main page and the links to TDPL
 and the documentation on Kindle? The main page is a definite improvement,
 though I think that you managed to end up giving links to gdc and ldc without
 giving a link to dmd (aside from the github stuff).

We need to add a big "Download" button that detects the client operating system and does the right thing. Didn't get to it yet.
 Nitpick: "Ever wrote a useful script..." should be "Ever written a useful
 script..."

Fixed.
 Nitpick: "all major D contrib tors, including..." should be "all major D
 contributors, including..."

Not getting this... I see the right text. Andrei
Nov 13 2011
prev sibling next sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
Andrei Alexandrescu:
 
 Feedback is welcome.

The overall look is nice, I like the foldable examples, but I think there's too much text for a home page. I think it's better to move lot of text in a "introduction" page. I suggest to avoid titles like "Multi-paradigm power", because they sound a bit too much too buzzwordy. I don't like phrases like "Newsflash—native efficiency is back. And it's big!". Bye, bearophile
Nov 13 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/13/11 8:37 PM, bearophile wrote:
 Andrei Alexandrescu:

 Feedback is welcome.

The overall look is nice, I like the foldable examples, but I think there's too much text for a home page. I think it's better to move lot of text in a "introduction" page. I suggest to avoid titles like "Multi-paradigm power", because they sound a bit too much too buzzwordy.

What characteristic of D would you substitute as a major differentiating feature?
 I don't like phrases like "Newsflash—native efficiency is back. And it's big!".

Dropped "Newsflash&mdash;". Andrei
Nov 13 2011
next sibling parent bearophile <bearophileHUGS lycos.com> writes:
Andrei Alexandrescu:

 What characteristic of D would you substitute as a major differentiating 
 feature?

In this specific case I suggest to remove the word "power". In general, I like D because I need a lot less time to write a correct program in D compared to C/C++, despite the lack of some D data structures. D helps me avoid mistakes. A question for you and other people: what are the differences (in design goals, mostly) between Ada and D2? Bye, bearophile
Nov 14 2011
prev sibling parent reply Lutger Blijdestijn <lutger.blijdestijn gmail.com> writes:
Andrei Alexandrescu wrote:

 On 11/13/11 8:37 PM, bearophile wrote:
 Andrei Alexandrescu:

 Feedback is welcome.

The overall look is nice, I like the foldable examples, but I think there's too much text for a home page. I think it's better to move lot of text in a "introduction" page. I suggest to avoid titles like "Multi-paradigm power", because they sound a bit too much too buzzwordy.

What characteristic of D would you substitute as a major differentiating feature?

I like the term modeling power a lot, and would use this as the main point. It's straightforward, suggests a trade-off and has a pragmatic connotation.
Nov 14 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 3:02 PM, Lutger Blijdestijn wrote:
 Andrei Alexandrescu wrote:

 On 11/13/11 8:37 PM, bearophile wrote:
 Andrei Alexandrescu:

 Feedback is welcome.

The overall look is nice, I like the foldable examples, but I think there's too much text for a home page. I think it's better to move lot of text in a "introduction" page. I suggest to avoid titles like "Multi-paradigm power", because they sound a bit too much too buzzwordy.

What characteristic of D would you substitute as a major differentiating feature?

I like the term modeling power a lot, and would use this as the main point. It's straightforward, suggests a trade-off and has a pragmatic connotation.

I don't see it that way. It dilutes the message by replacing it with a vague claim. "Multi-paradigm language" has a rather precise meaning - you get to use several major programming styles within the language. "Modeling power" is rather subjective as I think many languages, even the underpowered ones, would claim having modeling power. But a language that doesn't do e.g. objects can't claim being multi-paradigm. Andrei
Nov 14 2011
prev sibling next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Sunday, November 13, 2011 20:27:27 Andrei Alexandrescu wrote:
 On 11/13/11 8:22 PM, Jonathan M Davis wrote:
 Nitpick: "all major D contrib tors, including..." should be "all major D
 contributors, including..."

Not getting this... I see the right text.

Looking at the html source for the page, it looks right, so my guess is that it's a browser bug in Konqueror relating to the fact that it's at the end of the line. If I adjust the window so that it's not at the end of the line, it's not a problem. - Jonathan M Davis
Nov 13 2011
prev sibling next sibling parent Jude Young <10equals2 gmail.com> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/13/2011 07:50 PM, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want
 to crystallize a clear message of what the D programming language
 is.
 
 Please take a look at http://d-programming-language.org/new/. The
 work is content-only (no significant changes in style, though
 collapsible examples and twitter news are a new style element).
 
 Feedback is welcome.
 
 
 Thanks,
 
 Andrei
 

I can't decide if this is an error or not... I believe that LDC is now being developed on github: https://github.com/ldc-developers/ldc But looking at their dsource page, it looks up to date as well. shrug. Might be something to look into. Otherwise I love the changes! It's perfect. ^^ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJOwLb9AAoJENcHIWLyQiSlD5AH/2WTxy4UFId3G5cSCHoBR94h WZMYaStj7Ajs9O8eiIOh7PNE232LwCWa36Z+QkqzHqx33nPmMXf14XdPQQUYwKL6 MFXj7XrC2tRwD/RmU9lrqUlSpISqYzs5KkoTW4i3XMDv9kKS5iUxlDn7MsF7/zWD b2gy0cYhQ7Av80vcp7spoY7Ibdu48+Bj8ZoG4aXGn6zORSMXENckMpb61YyqWPRS fs8sbqwaAqzxRQWIEp8yqbcppiWORETyEXaLyspIGIWFiHw70PBqCAV1W6tdn9Zw cChA3youcEHUS4FH4Hw5lyQtCMTfoR1TCbOiwSEAMBhXfmo2RvgaOnlL9t+Q/s8= =LIcP -----END PGP SIGNATURE-----
Nov 13 2011
prev sibling next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-14 02:50, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

No mention of metaprogramming? May I suggest adding a "Fork me on GitHub" banner. -- /Jacob Carlborg
Nov 13 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/13/11 11:27 PM, Jacob Carlborg wrote:
 On 2011-11-14 02:50, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

No mention of metaprogramming?

It's part of the multi-paradigm point, but it should be better substantiated.
 May I suggest adding a "Fork me on GitHub" banner.

Good idea. Andrei
Nov 14 2011
prev sibling next sibling parent reply Tobias Pankrath <tobias pankrath.net> writes:
Andrei Alexandrescu wrote:

 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.
 
 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).
 
 Feedback is welcome.
 
 
 Thanks,
 
 Andrei

The "Forums" link points to a digitalmars.com page. I'd say, it shouldn't leave the site and point to a new page, that does only contain links to forums / newsgroups related to D, that are still active and interesting to the newcomer.
Nov 14 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 12:07 AM, Tobias Pankrath wrote:
 Andrei Alexandrescu wrote:

 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

The "Forums" link points to a digitalmars.com page. I'd say, it shouldn't leave the site and point to a new page, that does only contain links to forums / newsgroups related to D, that are still active and interesting to the newcomer.

Yes, we plan to migrate the groups and downloads page to d-p-l.org. Thanks, Andrei
Nov 14 2011
prev sibling next sibling parent reply "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 Walter and I have been working on the website for a while. We want to  
 crystallize a clear message of what the D programming language is.

It's way too cheesy in my opinion. Reads like a desperate sales pitch. Also, too much text - right now it looks like an unappealing wall of text. Also, ads? Really? Are we so cheap that we can't even afford web hosting without annoying the user with often embarrassingly-irrelevant advertisements? Compare with other programming language websites: http://golang.org/ http://www.scala-lang.org/ http://www.ruby-lang.org/en/ http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/ -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
next sibling parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 10:10 AM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:

 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

It's way too cheesy in my opinion. Reads like a desperate sales pitch. Also, too much text - right now it looks like an unappealing wall of text. Also, ads? Really? Are we so cheap that we can't even afford web hosting without annoying the user with often embarrassingly-irrelevant advertisements? Compare with other programming language websites: http://golang.org/

Very nice, but there is not really much more to say about Go (on a front page), because it is so small.
 http://www.scala-lang.org/

I did not like this at all when I was first looking for information about Scala.
 http://www.ruby-lang.org/en/

It says "I (love|*love*) ruby" six times in a row. Cheesy enough =).
 http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

Same problem as scala-lang.org. Not enough interesting information/too much effort to get at it.
Nov 14 2011
prev sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 1:10 AM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:

 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

It's way too cheesy in my opinion. Reads like a desperate sales pitch. Also, too much text - right now it looks like an unappealing wall of text. Also, ads? Really? Are we so cheap that we can't even afford web hosting without annoying the user with often embarrassingly-irrelevant advertisements? Compare with other programming language websites: http://golang.org/ http://www.scala-lang.org/ http://www.ruby-lang.org/en/ http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

There was more text on the page before, including a code example that wasn't very illustrative. While working on the homepage I kept an eye on those websites and others (Perl, Java) and my perception is that the proposed website compares well with others. Regarding ads, this is my "I told you" moment. I am completely opposed to ads anywhere on d-p-l.org, and I believe their presence hurts us in ways that the cost savings doesn't even begin to cover. I see it as a textbook case of "penny wise". That being said, Walter agreed with removing ads from the homepage but not the other parts of the site. I didn't get to that yet. Andrei
Nov 14 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 11:55 AM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 21:45:58 +0200, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:

 There was more text on the page before, including a code example that
 wasn't very illustrative.

Most other front pages are still more varied and dynamic. What happened with the ideas to have the latest commits / newsgroup topics / etc. in a box on the front page?

What happened is that nobody took those to completion. I did all I could in a limited amount of time. My focus was the message more than the presentation.
 Regarding ads, this is my "I told you" moment. I am completely opposed
 to ads anywhere on d-p-l.org, and I believe their presence hurts us in
 ways that the cost savings doesn't even begin to cover. I see it as a
 textbook case of "penny wise". That being said, Walter agreed with
 removing ads from the homepage but not the other parts of the site. I
 didn't get to that yet.

There's also a moral issue here. Except for the articles he's written, Walter is basically monetizing the work of everyone who's contributed to D.

I think that's an exaggeration. Andrei
Nov 14 2011
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
Vladimir Panteleev wrote:
 I could easily do the technical part 

If you like, I can send you the code from my implementation of the last idea too. You can see it live here: http://arsdnet.net/d-web-site/ It's all written in D too, but I haven't updated it for months. (and lol, my crappy web newsreader that I never finished works much better than the one on digitalmars.com! At least mine actually loads every time.)
Nov 14 2011
next sibling parent reply Adam D. Ruppe <destructionator gmail.com> writes:
Oh, forgot to mention, that "try now" button currently
doesn't work.

My server that was hosting the compiler died and I haven't
replaced it yet.
Nov 14 2011
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
Vladimir Panteleev wrote:
 How did you do the sandboxing?

I used setrlimit() in a single purpose VM. Each process was limited in time, memory, files, disk space, etc., and then the whole VM was firewalled off, snapshotted, and given resource limits. Thus, even if someone got root, it's not a big deal. Worse case is I'd just reset it and it'd return to a known good state. For network, what I decided to do was allow most networking on localhost, but restrict the VM from doing most everything externally. So, they could play and I *think* it'd be harmless.
Nov 14 2011
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
Vladimir Panteleev wrote:
 What VM software did you use? 

VMWare on the first server. My next setup is going to use kvm and qemu.
Nov 15 2011
parent Adam D. Ruppe <destructionator gmail.com> writes:
Just to see what I'd look like, I took my nntp.d and imported
d-programming-language.org's html skeleton and css into it.

This is the result:

http://arsdnet.net/d-web-site/nntp/get-thread?newsgroup=digitalmars.D&messageId=%3Cj9ps5n%2430nq%241%40digitalmars.com%3E&ordering=ByDate


That doesn't look half bad IMO. It's certainly not perfect, but it
looks decent.


(if you're wondering why the whole thread isn't there, it's because
my program pulls only the posts I specifically ask it for or post
through it right now.)
Nov 15 2011
prev sibling parent Adam D. Ruppe <destructionator gmail.com> writes:
Vladimir Panteleev wrote:
 Why not make it open-source? 

I sort of did. The code was available in my dcode folder and the source is here: http://arsdnet.net/d-web-site/site.d http://arsdnet.net/d-web-site/nntp.d I have a github account now, but I didn't at the time I wrote that, so I just dropped the files in web directory. If I get back into it, I'll make a new github project for it all. here's my github page with the support modules: https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff
 I'm itching to write a D web newsreader as well. (You'll never > make me use
CGI though, mwahaha!) 

Heh. But cgi is really quite nice. And my cgi.d module supports fastcgi and an embedded http server too. Though my http server kinda sucks; it's single threaded (uses select() to do multiple connections). It does a decent job if each request goes quickly, but if not, the whole thing can go to a stop. But I'm not in a big rush to work on it since I like cgi well enough, and kinda want to wait on Phobos networking to continue forward.
Nov 14 2011
prev sibling next sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 02:50 AM, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

Looks good, I think this is the right direction. Nitpicks: 1. // Type deduction works for function results. This is important for generic // functions, such as min below, which works correctly for all comparable // types. auto min(T1, T2)(T1 lhs, T2 rhs) { return rhs < lhs ? rhs : lhs; } It does not. The two types need to have a common type as well. 2. The scope statement example should actually show transactional code. Otherwise the poor reader feels fooled into clicking "See example". Using scope(exit) to write something at function exit is useful for debugging, but scope(failure) is the real thing that is important to show. 3. If contract inheritance is to be promoted on the front page (and it is certainly something that may attract developers), it should actually work. 4. If we can find a less buzzy word than 'Multi-paradigm power' to describe D's multi-paradigm power, that would be nice, but I am also fine with the current state of affairs. 5. The most important language features are not displayed at all. Where are Metaprogramming, CTFE and code generation? It sure is hard to come up with a short but convincing example, but I think we should try to.
Nov 14 2011
next sibling parent reply Andrea Fontana <advmail katamail.com> writes:
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I think most of programmers has an analytical mind. So IMHO a comparison
chart (with others programming languages) of features / benchmark /
"how-tos" will work better than a page filled of words.=20

Il giorno lun, 14/11/2011 alle 10.15 +0100, Timon Gehr ha scritto:

 On 11/14/2011 02:50 AM, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

Looks good, I think this is the right direction. =20 Nitpicks: =20 1. =20 // Type deduction works for function results. This is important for gener=

 // functions, such as min below, which works correctly for all comparable
 // types.
 auto min(T1, T2)(T1 lhs, T2 rhs) {
      return rhs < lhs ? rhs : lhs;
 }
=20
 It does not. The two types need to have a common type as well.
=20
 2.
=20
 The scope statement example should actually show transactional code.=20
 Otherwise the poor reader feels fooled into clicking "See example".
 Using scope(exit) to write something at function exit is useful for=20
 debugging, but scope(failure) is the real thing that is important to show=

=20
 3.
=20
 If contract inheritance is to be promoted on the front page (and it is=

 certainly something that may attract developers), it should actually work=

=20
 4.
=20
 If we can find a less buzzy word than 'Multi-paradigm power' to describe=

 D's multi-paradigm power, that would be nice, but I am also fine with=20
 the current state of affairs.
=20
 5.
=20
 The most important language features are not displayed at all. Where are=

 Metaprogramming, CTFE and code generation? It sure is hard to come up=20
 with a short but convincing example, but I think we should try to.
=20
=20
=20
=20

Nov 14 2011
next sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 10:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind.

I agree.
 So IMHO a comparison
 chart (with others programming languages) of features / benchmark /
 "how-tos" will work better than a page filled of words.

I think this is a valid proposal, but an analytical mind is usually able to do comparisons with other known languages itself. There should maybe be a link to some benchmarks where the text says that D compiles to fast native code though. I think the page should at least assume that the reader has some interest in informing himself about the language. It should just make that easy.
Nov 14 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 11:03 AM, Andrea Fontana wrote:
 Ok, but check this:

 for( unsigned int i = 0; i < arr.size(); ++i) arr[i] = 10;
 vs
 arr[] = 10;

 or

 arr[0..1] = arr2[2..3];

 This examples (about arrays) are (almost) self-explanatory and very
 impressive for a c/c++ coder.

 Same goes for strings, CTFE, parallelism, etc...

I agree, those should totally be in an example somewhere. I was just saying that the C++ version does not strictly need to be there too.
Nov 14 2011
prev sibling next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Monday, November 14, 2011 10:45:15 Timon Gehr wrote:
 On 11/14/2011 10:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind.

I agree.
 So IMHO a comparison
 chart (with others programming languages) of features / benchmark /
 "how-tos" will work better than a page filled of words.

I think this is a valid proposal, but an analytical mind is usually able to do comparisons with other known languages itself. There should maybe be a link to some benchmarks where the text says that D compiles to fast native code though. I think the page should at least assume that the reader has some interest in informing himself about the language. It should just make that easy.

Having such a page is a good idea, but I don't know that it needs to be the front page. We don't want to overload it with data. - Jonathan M Davis
Nov 14 2011
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 1:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind. So IMHO a comparison chart
 (with others programming languages) of features / benchmark / "how-tos" will
 work better than a page filled of words.

There used to be a comparison chart. Everyone hated it.
Nov 14 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 2:36 AM, so wrote:
 On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright <newshound2 digitalmars.com>
 wrote:

 On 11/14/2011 1:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind. So IMHO a comparison chart
 (with others programming languages) of features / benchmark / "how-tos" will
 work better than a page filled of words.

There used to be a comparison chart. Everyone hated it.

Not everyone, it was the first thing i checked, C++/C/C++0x comparison.

Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.
Nov 14 2011
parent "Nick Sabalausky" <a a.a> writes:
"Walter Bright" <newshound2 digitalmars.com> wrote in message 
news:j9qrpf$1lkt$1 digitalmars.com...
 On 11/14/2011 2:36 AM, so wrote:
 On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright 
 <newshound2 digitalmars.com>
 wrote:

 On 11/14/2011 1:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind. So IMHO a 
 comparison chart
 (with others programming languages) of features / benchmark / "how-tos" 
 will
 work better than a page filled of words.

There used to be a comparison chart. Everyone hated it.

Not everyone, it was the first thing i checked, C++/C/C++0x comparison.

Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.

I found it to be a *huge* help when I first came across D. I always liked it.
Nov 14 2011
prev sibling parent Dejan Lekic <dejan.lekic gmail.com> writes:
Andrea Fontana wrote:

 I think most of programmers has an analytical mind. So IMHO a comparison
 chart (with others programming languages) of features / benchmark /
 "how-tos" will work better than a page filled of words.

I strongly disagree. :) "analytical mind" is what differentiates a good programmer from the rest. I must admit I have seen (being a project lead, and person who is doing recruitment and selection of IT personell for my company) many who belong to "the rest" team, and few who belong to the "good programmer" team. Kind regards
Nov 18 2011
prev sibling next sibling parent Andrea Fontana <advmail katamail.com> writes:
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Ok, but check this:

for( unsigned int i =3D 0; i < arr.size(); ++i) arr[i] =3D 10;  =20
vs =20
arr[] =3D 10;

or

arr[0..1] =3D arr2[2..3]; =20

This examples (about arrays) are (almost) self-explanatory and very
impressive for a c/c++ coder.=20

Same goes for strings, CTFE, parallelism, etc...


Il giorno lun, 14/11/2011 alle 10.45 +0100, Timon Gehr ha scritto:

 On 11/14/2011 10:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind.

I agree. =20
 So IMHO a comparison
 chart (with others programming languages) of features / benchmark /
 "how-tos" will work better than a page filled of words.

I think this is a valid proposal, but an analytical mind is usually able=

 to do comparisons with other known languages itself. There should maybe=

 be a link to some benchmarks where the text says that D compiles to fast=

 native code though.
=20
 I think the page should at least assume that the reader has some=20
 interest in informing himself about the language. It should just make=20
 that easy.

Nov 14 2011
prev sibling next sibling parent so <so so.so> writes:
On Mon, 14 Nov 2011 11:45:15 +0200, Timon Gehr <timon.gehr gmx.ch> wrote:

 On 11/14/2011 10:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind.

I agree.

I do not agree, most programmers have only one thing in common, they all are programmers and even that is questionable.
Nov 14 2011
prev sibling next sibling parent so <so so.so> writes:
On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright  
<newshound2 digitalmars.com> wrote:

 On 11/14/2011 1:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind. So IMHO a  
 comparison chart
 (with others programming languages) of features / benchmark / "how-tos"  
 will
 work better than a page filled of words.

There used to be a comparison chart. Everyone hated it.

Not everyone, it was the first thing i checked, C++/C/C++0x comparison.
Nov 14 2011
prev sibling next sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Mon, 14 Nov 2011 05:49:41 -0500, Walter Bright  
<newshound2 digitalmars.com> wrote:

 On 11/14/2011 2:36 AM, so wrote:
 On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright  
 <newshound2 digitalmars.com>
 wrote:

 On 11/14/2011 1:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind. So IMHO a  
 comparison chart
 (with others programming languages) of features / benchmark /  
 "how-tos" will
 work better than a page filled of words.

There used to be a comparison chart. Everyone hated it.

Not everyone, it was the first thing i checked, C++/C/C++0x comparison.

Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.

http://www.d-programming-language.org/new/comparison.html Although it's not comparing itself to anything. Two comments on this page: 1. The chart is very tall and thin, it seems like a waste of space. Perhaps we could add a "notes" column to consolidate some of the descriptions later. 2. It should not be titled "Comparison" since there is no comparisons going on. The title on the left is called "Features". That sounds much better. 3. Reading a lot of the notes on the bottom, it seems like it expects the chart to be comparing to C and C++. 4. Would it not be a valid place to list D1 features as well for comparison? -Steve
Nov 14 2011
prev sibling next sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Mon, 14 Nov 2011 09:34:08 -0500, Steven Schveighoffer  
<schveiguy yahoo.com> wrote:

 On Mon, 14 Nov 2011 05:49:41 -0500, Walter Bright  
 <newshound2 digitalmars.com> wrote:

 On 11/14/2011 2:36 AM, so wrote:
 On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright  
 <newshound2 digitalmars.com>
 wrote:

 On 11/14/2011 1:37 AM, Andrea Fontana wrote:
 I think most of programmers has an analytical mind. So IMHO a  
 comparison chart
 (with others programming languages) of features / benchmark /  
 "how-tos" will
 work better than a page filled of words.

There used to be a comparison chart. Everyone hated it.

Not everyone, it was the first thing i checked, C++/C/C++0x comparison.

Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.

http://www.d-programming-language.org/new/comparison.html Although it's not comparing itself to anything. Two comments on this page:

I mean 4 comments :P Started out with 2 comments, but forgot to go back and edit this... -Steve
Nov 14 2011
prev sibling next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 1:15 AM, Timon Gehr wrote:
 Looks good, I think this is the right direction.

 Nitpicks:

 1.

 // Type deduction works for function results. This is important for generic
 // functions, such as min below, which works correctly for all comparable
 // types.
 auto min(T1, T2)(T1 lhs, T2 rhs) {
 return rhs < lhs ? rhs : lhs;
 }

 It does not. The two types need to have a common type as well.

It's difficult to be concise and complete simultaneously. The underlying assumption is that if two types are comparable, they also have a common type.
 2.

 The scope statement example should actually show transactional code.
 Otherwise the poor reader feels fooled into clicking "See example".
 Using scope(exit) to write something at function exit is useful for
 debugging, but scope(failure) is the real thing that is important to show.

Good point.
 3.

 If contract inheritance is to be promoted on the front page (and it is
 certainly something that may attract developers), it should actually work.

Absolutely.
 4.

 If we can find a less buzzy word than 'Multi-paradigm power' to describe
 D's multi-paradigm power, that would be nice, but I am also fine with
 the current state of affairs.

 5.

 The most important language features are not displayed at all. Where are
 Metaprogramming, CTFE and code generation? It sure is hard to come up
 with a short but convincing example, but I think we should try to.

Those would be under the multi-paradigm thingie. Andrei
Nov 14 2011
parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 08:47 PM, Andrei Alexandrescu wrote:
 On 11/14/11 1:15 AM, Timon Gehr wrote:
 Looks good, I think this is the right direction.

 Nitpicks:

 1.

 // Type deduction works for function results. This is important for
 generic
 // functions, such as min below, which works correctly for all comparable
 // types.
 auto min(T1, T2)(T1 lhs, T2 rhs) {
 return rhs < lhs ? rhs : lhs;
 }

 It does not. The two types need to have a common type as well.

It's difficult to be concise and complete simultaneously. The underlying assumption is that if two types are comparable, they also have a common type.

hm, maybe call the them 'compatible comparable types'?
 2.

 The scope statement example should actually show transactional code.
 Otherwise the poor reader feels fooled into clicking "See example".
 Using scope(exit) to write something at function exit is useful for
 debugging, but scope(failure) is the real thing that is important to
 show.

Good point.
 3.

 If contract inheritance is to be promoted on the front page (and it is
 certainly something that may attract developers), it should actually
 work.

Absolutely.

There has been disagreement on whether or not my bug report on the matter was valid. What it means for your example: // Interfaces and classe interface Printable { void print(uint level) in { assert(level > 0); } // contract is part of the interface } // Interface implementation class Widget : Printable { void print(uint level) { ... } } void main(){ Widget w = new Widget(); w.print(0); // passes through, but should not } Can you state in the issue tracker that the bug report is valid? http://d.puremagic.com/issues/show_bug.cgi?id=6856
 4.

 If we can find a less buzzy word than 'Multi-paradigm power' to describe
 D's multi-paradigm power, that would be nice, but I am also fine with
 the current state of affairs.

 5.

 The most important language features are not displayed at all. Where are
 Metaprogramming, CTFE and code generation? It sure is hard to come up
 with a short but convincing example, but I think we should try to.

Those would be under the multi-paradigm thingie.

Ok. Maybe there could be a few LOC demonstrating the 'recurrence' function generating a few fibonacci numbers. I think it is a nice showcase, although I have never needed that particular function in real code :o). It has also the potential of showing Phobos' lazy functional style features. But unfortunately, most functional programmers will shriek for a moment when they see the argument order of 'take'.
Nov 14 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 09:51 PM, Brad Anderson wrote:
 On Mon, Nov 14, 2011 at 1:29 PM, Timon Gehr <timon.gehr gmx.ch
 <mailto:timon.gehr gmx.ch>> wrote:

     On 11/14/2011 08:47 PM, Andrei Alexandrescu wrote:

         On 11/14/11 1:15 AM, Timon Gehr wrote:

             Looks good, I think this is the right direction.

             Nitpicks:

             1.

             // Type deduction works for function results. This is
             important for
             generic
             // functions, such as min below, which works correctly for
             all comparable
             // types.
             auto min(T1, T2)(T1 lhs, T2 rhs) {
             return rhs < lhs ? rhs : lhs;
             }

             It does not. The two types need to have a common type as well.


         It's difficult to be concise and complete simultaneously. The
         underlying
         assumption is that if two types are comparable, they also have a
         common
         type.


     hm, maybe call the them 'compatible comparable types'?



             2.

             The scope statement example should actually show
             transactional code.
             Otherwise the poor reader feels fooled into clicking "See
             example".
             Using scope(exit) to write something at function exit is
             useful for
             debugging, but scope(failure) is the real thing that is
             important to
             show.


         Good point.

             3.

             If contract inheritance is to be promoted on the front page
             (and it is
             certainly something that may attract developers), it should
             actually
             work.


         Absolutely.


     There has been disagreement on whether or not my bug report on the
     matter was valid.

     What it means for your example:

     // Interfaces and classe
     interface Printable {
         void print(uint level)
         in { assert(level > 0); } // contract is part of the interface
     }

     // Interface implementation
     class Widget : Printable {
         void print(uint level) { ... }
     }

     void main(){
         Widget w = new Widget();
         w.print(0); // passes through, but should not
     }

     Can you state in the issue tracker that the bug report is valid?
     http://d.puremagic.com/issues/__show_bug.cgi?id=6856
     <http://d.puremagic.com/issues/show_bug.cgi?id=6856>




             4.

             If we can find a less buzzy word than 'Multi-paradigm power'
             to describe
             D's multi-paradigm power, that would be nice, but I am also
             fine with
             the current state of affairs.

             5.

             The most important language features are not displayed at
             all. Where are
             Metaprogramming, CTFE and code generation? It sure is hard
             to come up
             with a short but convincing example, but I think we should
             try to.


         Those would be under the multi-paradigm thingie.


     Ok. Maybe there could be a few LOC demonstrating the 'recurrence'
     function generating a few fibonacci numbers. I think it is a nice
     showcase, although I have never needed that particular function in
     real code :o). It has also the potential of showing Phobos' lazy
     functional style features. But unfortunately, most functional
     programmers will shriek for a moment when they see the argument
     order of 'take'.



 I think that's a good idea.  While learning D I became impressed with it
 when I solved Project Euler problem 2 ("By considering the terms in the
 Fibonacci sequence whose values do not exceed four million, find the sum
 of the even-valued terms.") with:

 auto answer = reduce!"a + b"(filter!"a % 2 == 0"(until!"a >
 4_000_000"(recurrence!"a[n-1] + a[n-2]"(1, 1))));

 It'd look better with UFCS but it's still rather neat I think.

You can also use stride(..., 3) instead of filtering.
Nov 14 2011
prev sibling parent reply Brad Anderson <eco gnuk.net> writes:
--f46d04339ee84f835f04b1b80a44
Content-Type: text/plain; charset=ISO-8859-1

On Mon, Nov 14, 2011 at 1:29 PM, Timon Gehr <timon.gehr gmx.ch> wrote:

 On 11/14/2011 08:47 PM, Andrei Alexandrescu wrote:

 On 11/14/11 1:15 AM, Timon Gehr wrote:

 Looks good, I think this is the right direction.

 Nitpicks:

 1.

 // Type deduction works for function results. This is important for
 generic
 // functions, such as min below, which works correctly for all comparable
 // types.
 auto min(T1, T2)(T1 lhs, T2 rhs) {
 return rhs < lhs ? rhs : lhs;
 }

 It does not. The two types need to have a common type as well.

It's difficult to be concise and complete simultaneously. The underlying assumption is that if two types are comparable, they also have a common type.

hm, maybe call the them 'compatible comparable types'?
  2.
 The scope statement example should actually show transactional code.
 Otherwise the poor reader feels fooled into clicking "See example".
 Using scope(exit) to write something at function exit is useful for
 debugging, but scope(failure) is the real thing that is important to
 show.

Good point. 3.
 If contract inheritance is to be promoted on the front page (and it is
 certainly something that may attract developers), it should actually
 work.

Absolutely.

There has been disagreement on whether or not my bug report on the matter was valid. What it means for your example: // Interfaces and classe interface Printable { void print(uint level) in { assert(level > 0); } // contract is part of the interface } // Interface implementation class Widget : Printable { void print(uint level) { ... } } void main(){ Widget w = new Widget(); w.print(0); // passes through, but should not } Can you state in the issue tracker that the bug report is valid? http://d.puremagic.com/issues/**show_bug.cgi?id=6856<http://d.puremagic.com/issues/show_bug.cgi?id=6856>
  4.
 If we can find a less buzzy word than 'Multi-paradigm power' to describe
 D's multi-paradigm power, that would be nice, but I am also fine with
 the current state of affairs.

 5.

 The most important language features are not displayed at all. Where are
 Metaprogramming, CTFE and code generation? It sure is hard to come up
 with a short but convincing example, but I think we should try to.

Those would be under the multi-paradigm thingie.

generating a few fibonacci numbers. I think it is a nice showcase, although I have never needed that particular function in real code :o). It has also the potential of showing Phobos' lazy functional style features. But unfortunately, most functional programmers will shriek for a moment when they see the argument order of 'take'.

when I solved Project Euler problem 2 ("By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.") with: auto answer = reduce!"a + b"(filter!"a % 2 == 0"(until!"a > 4_000_000"(recurrence!"a[n-1] + a[n-2]"(1, 1)))); It'd look better with UFCS but it's still rather neat I think. --f46d04339ee84f835f04b1b80a44 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Mon, Nov 14, 2011 at 1:29 PM, Timon Gehr <span dir=3D"ltr">&lt;<a href= =3D"mailto:timon.gehr gmx.ch">timon.gehr gmx.ch</a>&gt;</span> wrote:<br><d= iv class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:= 0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> <div class=3D"im">On 11/14/2011 08:47 PM, Andrei Alexandrescu wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> On 11/14/11 1:15 AM, Timon Gehr wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> Looks good, I think this is the right direction.<br> <br> Nitpicks:<br> <br> 1.<br> <br> // Type deduction works for function results. This is important for<br> generic<br> // functions, such as min below, which works correctly for all comparable<b= r> // types.<br> auto min(T1, T2)(T1 lhs, T2 rhs) {<br> return rhs &lt; lhs ? rhs : lhs;<br> }<br> <br> It does not. The two types need to have a common type as well.<br> </blockquote> <br> It&#39;s difficult to be concise and complete simultaneously. The underlyin= g<br> assumption is that if two types are comparable, they also have a common<br> type.<br> </blockquote> <br></div> hm, maybe call the them &#39;compatible comparable types&#39;?<div class=3D= "im"><br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> 2.<br> <br> The scope statement example should actually show transactional code.<br> Otherwise the poor reader feels fooled into clicking &quot;See example&quot= ;.<br> Using scope(exit) to write something at function exit is useful for<br> debugging, but scope(failure) is the real thing that is important to<br> show.<br> </blockquote> <br> Good point.<br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> 3.<br> <br> If contract inheritance is to be promoted on the front page (and it is<br> certainly something that may attract developers), it should actually<br> work.<br> </blockquote> <br> Absolutely.<br> </blockquote> <br></div> There has been disagreement on whether or not my bug report on the matter w= as valid.<br> <br> What it means for your example:<br> <br> // Interfaces and classe<br> interface Printable {<br> =A0 =A0void print(uint level)<br> =A0 =A0in { assert(level &gt; 0); } // contract is part of the interface<b= r> }<br> <br> // Interface implementation<br> class Widget : Printable {<br> =A0 =A0void print(uint level) { ... }<br> }<br> <br> void main(){<br> =A0 =A0Widget w =3D new Widget();<br> =A0 =A0w.print(0); // passes through, but should not<br> }<br> <br> Can you state in the issue tracker that the bug report is valid?<br> <a href=3D"http://d.puremagic.com/issues/show_bug.cgi?id=3D6856" target=3D"= _blank">http://d.puremagic.com/issues/<u></u>show_bug.cgi?id=3D6856</a><div= class=3D"im"><br> <br> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> <br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"> 4.<br> <br> If we can find a less buzzy word than &#39;Multi-paradigm power&#39; to des= cribe<br> D&#39;s multi-paradigm power, that would be nice, but I am also fine with<b= r> the current state of affairs.<br> <br> 5.<br> <br> The most important language features are not displayed at all. Where are<br=

with a short but convincing example, but I think we should try to.<br> </blockquote> <br> Those would be under the multi-paradigm thingie.<br> <br> </blockquote> <br></div> Ok. Maybe there could be a few LOC demonstrating the &#39;recurrence&#39; f= unction generating a few fibonacci numbers. I think it is a nice showcase, = although I have never needed that particular function in real code :o). It = has also the potential of showing Phobos&#39; lazy functional style feature= s. But unfortunately, most functional programmers will shriek for a moment = when they see the argument order of &#39;take&#39;.<br> <br> <br> </blockquote></div><br><div>I think that&#39;s a good idea. =A0While learni= ng D I became impressed with it when I solved Project Euler problem 2 (&quo= t;By considering the terms in the Fibonacci sequence whose values do not ex= ceed four million, find the sum of the even-valued terms.&quot;) with:</div=

% 2 =3D=3D 0&quot;(until!&quot;a &gt; 4_000_000&quot;(recurrence!&quot;a[n= -1] + a[n-2]&quot;(1, 1))));</div><div><br></div><div>It&#39;d look better = with UFCS but it&#39;s still rather neat I think.</div> --f46d04339ee84f835f04b1b80a44--
Nov 14 2011
parent reply bearophile <bearophileHUGS lycos.com> writes:
Brad Anderson:

 auto answer = reduce!"a + b"(filter!"a % 2 == 0"(until!"a >
 4_000_000"(recurrence!"a[n-1] + a[n-2]"(1, 1))));
 
 It'd look better with UFCS but it's still rather neat I think.

reduce!"a + b"() is going to be replaced by std.algorithm.sum(). And I think a isOdd() and isEven are worth putting in Phobos. So it becomes: auto answer = sum(filter!isEven(until!q{ a > 4_000_000 }(recurrence!q{ a[n-1] + a[n-2] }(1, 1)))); And maybe like this with UFCS: auto answer = recurrence!q{ a[n-1] + a[n-2] }(1, 1).until!q{ a > 4_000_000 }().filter!isEven().sum(); And this is even starting to become readable enough. But is UFCS going to work with explicit template arguments syntax too? T[] tail(T)(T[] a) { return a[1 .. $]; } void main() { auto b = [10, 20, 30]; assert(b.tail().tail() == [30]); // OK assert(b.tail!int().tail!int() == [30]); // Error: tail(b) isn't a template } Bye, bearophile
Nov 14 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 11:30 PM, bearophile wrote:
 Brad Anderson:

 auto answer = reduce!"a + b"(filter!"a % 2 == 0"(until!"a>
 4_000_000"(recurrence!"a[n-1] + a[n-2]"(1, 1))));

 It'd look better with UFCS but it's still rather neat I think.

reduce!"a + b"() is going to be replaced by std.algorithm.sum(). And I think a isOdd() and isEven are worth putting in Phobos. So it becomes: auto answer = sum(filter!isEven(until!q{ a> 4_000_000 }(recurrence!q{ a[n-1] + a[n-2] }(1, 1)))); And maybe like this with UFCS: auto answer = recurrence!q{ a[n-1] + a[n-2] }(1, 1).until!q{ a> 4_000_000 }().filter!isEven().sum(); And this is even starting to become readable enough.

Some people like query-style formatting: auto answer = recurrence!q{ a[n-1] + a[n-2] }(1, 1) .until!q{ a> 4_000_000 }() .filter!isEven() .sum();
 But is UFCS going to work with explicit template arguments syntax too?

 T[] tail(T)(T[] a) {
      return a[1 .. $];
 }
 void main() {
      auto b = [10, 20, 30];
      assert(b.tail().tail() == [30]); // OK
      assert(b.tail!int().tail!int() == [30]); // Error: tail(b) isn't a
template
 }

 Bye,
 bearophile

If UFCS is going to work, then that should ideally work too. Probably what is a little bit problematic here is that it is parsed as (b.tail)!int(). b.tail gets rewritten to tail(b) per UFCS and property syntax. And that is not a template anymore.
Nov 14 2011
prev sibling next sibling parent reply Dejan Lekic <dejan.lekic gmail.com> writes:
Andrei, what attracted me to D some ... 7-8 years ago was the fact it is a 
*pragmatic* language. Modules, unittesting, design by contract, "version" 
keyword, much clearer syntax for templates where always on top of my list of 
D features.

Kind regards
Nov 14 2011
parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 2:27 AM, Dejan Lekic wrote:
 Andrei, what attracted me to D some ... 7-8 years ago was the fact it is a
 *pragmatic* language. Modules, unittesting, design by contract, "version"
 keyword, much clearer syntax for templates where always on top of my list of
 D features.

The idea for the front page is to list 3 concepts about D. Not 2, not 4, and most definitely not a laundry list. This is based on a fair amount of cognitive research. Each concept can have 3 sub-aspects to it, etc. So yes, D has a lot of features, and everyone has their favorites. The hard part is boiling it down to the 3 most essential and definitive concepts about D, and then to be able to summarize it into a "tweet" sized chunk of text. If someone asks about D, and they get a long rambling list of features, they will tune out.
Nov 14 2011
prev sibling next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:j9ps5n$30nq$1 digitalmars.com...
 Walter and I have been working on the website for a while. We want to 
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work is 
 content-only (no significant changes in style, though collapsible examples 
 and twitter news are a new style element).

 Feedback is welcome.

Haven't had a chance to read through it yet, but initial observations: Con: Examples are never visible without JS. There is *no* good technical or stylistic reason for that. Like I was just telling someone on D.announce, if you need something collapsible, the way you do it is by leaving it uncollapsed in the HTML/CSS. Then, if you really want JS users to see it collapsed by default, you collapse it *via JS* upon page load. Or just make use of the noscript tag. There is *never* any reason to do it any differently than that. Con: I don't think it's a good stylistic choice to have *no* sample code at all on the main homepage without clicking. Put a good short snippet right there for everyone to always see. Doesn't have to be anything fancy or all-encompassing. You can look through other langauge's sites for inspiration - it's quickly becoming standard practice for languages to have a short example on their website's homepage. It's often not much more than a hello world, just to get a little taste of the language. Con: The little icons after external links are ugly and unnecessary. First of all, this isn't a wiki. More importantly, if anyone actually cares what links go to a different site, they can already tell that by hovering. If you're doing it out of worry that people will think they're still on the same site, well, that's *very* 1990's, and it was merely absurd paranoia even back then. It's not much better than those god-awful sites that have those rediculous and patronizing "you are now leaving our site" screens. Con: While I don't have any objection to there *being* Kindle versions of the docs, I strongly feel it doesn't deserve a place in the default sidebar. Call it a matter of "pulling it's own weight". It's just not nearly significant enough, and it's easy enough (and perfectly sufficient) to have a link to the kindle version of the Book/Reference *on* the main page for the Book/Reference. Besides, we're not an Amazon advertisement here. Plus: I don't see this new twitface element people are talking about. Yes, I realize *some* people like such sites, but that's no excuse for cramming it down *everyone's* face. Again, we're not here to be twitface's free advertising. So I like that whatever this new thing is isn't showing up.
Nov 14 2011
next sibling parent reply "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 17:11:59 +0200, Nick Sabalausky <a a.a> wrote:

 Then, if you really want JS users to see it
 collapsed by default, you collapse it *via JS* upon page load. Or just  
 make
 use of the noscript tag. There is *never* any reason to do it any
 differently than that.

I agree, but there is a better way. Use JavaScript and document.write to print out a style definition which hides collapsed content, like this: <script type="text/javascript"> // <!-- document.write('<style type="text/css">.nojs { display: none; }</style>'); // --> </script> (That goes inside the <head> tag.) This avoids a flash of content before the document load events are fired. Nobody likes those.
 Con: I don't think it's a good stylistic choice to have *no* sample code  
 at all on the main homepage without clicking.

I agree, it just looks like a wall of text with the ugly Twitter thing in the middle.
 Con: The little icons after external links are ugly and unnecessary.

They also have a border in Internet Explorer.
 Plus: I don't see this new twitface element people are talking about.  
 Yes, I realize *some* people like such sites, but that's no excuse for  
 cramming it down *everyone's* face. Again, we're not here to be  
 twitface's free
 advertising. So I like that whatever this new thing is isn't showing up.

Do you have Twitter widgets blocked? (I have them blocked too...) It's what the News section is. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
parent "Nick Sabalausky" <a a.a> writes:
"Vladimir Panteleev" <vladimir thecybershadow.net> wrote in message 
news:op.v4x02rqetuzx1w cybershadow.mshome.net...
 On Mon, 14 Nov 2011 17:11:59 +0200, Nick Sabalausky <a a.a> wrote:

 Then, if you really want JS users to see it
 collapsed by default, you collapse it *via JS* upon page load. Or just 
 make
 use of the noscript tag. There is *never* any reason to do it any
 differently than that.

I agree, but there is a better way. Use JavaScript and document.write to print out a style definition which hides collapsed content, like this: <script type="text/javascript"> // <!-- document.write('<style type="text/css">.nojs { display: one; }</style>'); // --> </script> (That goes inside the <head> tag.) This avoids a flash of content before the document load events are fired. Nobody likes those.

Right, the main point is to make it work without JS, and then any defaults you want different in the JS version *MUST* be done *USING* JS, never baked into the raw non-JS portions of the HTML/CSS.
 Plus: I don't see this new twitface element people are talking about. 
 Yes, I realize *some* people like such sites, but that's no excuse for 
 cramming it down *everyone's* face. Again, we're not here to be 
 twitface's free
 advertising. So I like that whatever this new thing is isn't showing up.

Do you have Twitter widgets blocked? (I have them blocked too...)

Not specifically. I have JS disabled by default. Also, I use AdBlock Plus because of all those [many explitives here] animating ads that make it impossible to focus on and read a page's content (and because of targeted user-tracking ads - WTF is this, minority goddamn report?). So it's possible that one of those might be why it's mercifully not showing up for me.
 It's what the News section is.

Nov 14 2011
prev sibling next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 7:11 AM, Nick Sabalausky wrote:
 Con: Examples are never visible without JS. There is *no* good technical or
 stylistic reason for that. Like I was just telling someone on D.announce, if
 you need something collapsible, the way you do it is by leaving it
 uncollapsed in the HTML/CSS. Then, if you really want JS users to see it
 collapsed by default, you collapse it *via JS* upon page load. Or just make
 use of the noscript tag. There is *never* any reason to do it any
 differently than that.

I'm not sure what to do about catering for people who disable JS. Other language sites (Go, Scala) do use JS and at least Go is unprepared for it being disabled. Scala seems to have a designed fallback mode. A reasonable question is what percentage of people have Javascript disabled. I ran this query: https://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=percentage+javascript+disabled+browsers After looking through the top answers I inferred that the percentage is around 2% and declining.
 Con: I don't think it's a good stylistic choice to have *no* sample code at
 all on the main homepage without clicking. Put a good short snippet right
 there for everyone to always see. Doesn't have to be anything fancy or
 all-encompassing. You can look through other langauge's sites for
 inspiration - it's quickly becoming standard practice for languages to have
 a short example on their website's homepage. It's often not much more than a
 hello world, just to get a little taste of the language.

Okay.
 Con: The little icons after external links are ugly and unnecessary. First
 of all, this isn't a wiki. More importantly, if anyone actually cares what
 links go to a different site, they can already tell that by hovering. If
 you're doing it out of worry that people will think they're still on the
 same site, well, that's *very* 1990's, and it was merely absurd paranoia
 even back then. It's not much better than those god-awful sites that have
 those rediculous and patronizing "you are now leaving our site" screens.

I added that only to further distinguish "See example" which keeps you on the page from "Read more" which takes you out.
 Con: While I don't have any objection to there *being* Kindle versions of
 the docs, I strongly feel it doesn't deserve a place in the default sidebar.
 Call it a matter of "pulling it's own weight". It's just not nearly
 significant enough, and it's easy enough (and perfectly sufficient) to have
 a link to the kindle version of the Book/Reference *on* the main page for
 the Book/Reference. Besides, we're not an Amazon advertisement here.

Okay.
 Plus: I don't see this new twitface element people are talking about. Yes, I
 realize *some* people like such sites, but that's no excuse for cramming it
 down *everyone's* face. Again, we're not here to be twitface's free
 advertising. So I like that whatever this new thing is isn't showing up.

You'd probably see it if you enabled javascript. The idea is that streaming Twitter news adds dynamism to the page, which encourages repeat visits. I don't see anything wrong with using such a technology to keep people informed. We're not in the business of creating news aggregators. Andrei
Nov 14 2011
next sibling parent reply Adam D. Ruppe <destructionator gmail.com> writes:
The cost of supporting non-scripted browsing is virtually zero.
There's really no reason not to, even if Nick and I are the only
people left on Earth who disable javascript!
Nov 14 2011
parent Jacob Carlborg <doob me.com> writes:
On 2011-11-14 21:12, Adam D. Ruppe wrote:
 The cost of supporting non-scripted browsing is virtually zero.
 There's really no reason not to, even if Nick and I are the only
 people left on Earth who disable javascript!

I have disabled javascript by default as well. -- /Jacob Carlborg
Nov 14 2011
prev sibling next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 12:09 PM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 22:01:49 +0200, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:

 After looking through the top answers I inferred that the percentage
 is around 2% and declining.

This is a bad measurement. Technically-inclined people are more likely to fine-tune their web browsing experience. The best metrics would be of d-p-l.org visitors. However, making the website accessible without JS is so easy, it's not really worth arguing about. Reminder: there are people in this community (myself included) who have web programming experience and would gladly help out. Don't be afraid to ask.

By this I am asking. Let's do this - finish this pass, and then make sure things work properly without javascript. From what I understand that's not difficult.
 You'd probably see it if you enabled javascript. The idea is that
 streaming Twitter news adds dynamism to the page, which encourages
 repeat visits. I don't see anything wrong with using such a technology
 to keep people informed. We're not in the business of creating news
 aggregators.

Speaking of which, the twitter widget needs to be placed in an iframe so that it doesn't block the page load (inline scripts cause browsers to stop parsing the page until the script is loaded and executed, which creates a network dependency on a website we don't control).

Yah, good point. That raises additional issues but probably needs to be done at some point. Andrei
Nov 14 2011
parent Adam D. Ruppe <destructionator gmail.com> writes:
Is the site source on the github?

We could always go back and fix the code/script issues later with
a pull request.
Nov 14 2011
prev sibling next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-14 21:09, Vladimir Panteleev wrote:
 Speaking of which, the twitter widget needs to be placed in an iframe so
 that it doesn't block the page load (inline scripts cause browsers to
 stop parsing the page until the script is loaded and executed, which
 creates a network dependency on a website we don't control).

Put the JavaScript at the end of the page instead. -- /Jacob Carlborg
Nov 14 2011
next sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-11-14 22:05, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 22:43:05 +0200, Jacob Carlborg <doob me.com> wrote:

 On 2011-11-14 21:09, Vladimir Panteleev wrote:
 Speaking of which, the twitter widget needs to be placed in an iframe so
 that it doesn't block the page load (inline scripts cause browsers to
 stop parsing the page until the script is loaded and executed, which
 creates a network dependency on a website we don't control).

Put the JavaScript at the end of the page instead.

The script writes its content during execution. Unless the Twitter JS supports writing to a specified element, it can't be at the end without CSS positioning hacks.

Doesn't sound like a good API from Twitter. But if I recall correctly they have a pretty good RESTful API. -- /Jacob Carlborg
Nov 14 2011
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-11-14 22:05, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 22:43:05 +0200, Jacob Carlborg <doob me.com> wrote:

 On 2011-11-14 21:09, Vladimir Panteleev wrote:
 Speaking of which, the twitter widget needs to be placed in an iframe so
 that it doesn't block the page load (inline scripts cause browsers to
 stop parsing the page until the script is loaded and executed, which
 creates a network dependency on a website we don't control).

Put the JavaScript at the end of the page instead.

The script writes its content during execution. Unless the Twitter JS supports writing to a specified element, it can't be at the end without CSS positioning hacks.

BTW, if that Twitter feed isn't updated live, i.e. no page reload is required, there's no reason to use JavaScript to load the feed. On the other hand d-p-l.org only consists of static pages and then the above will not work. New idea, if JSONP is still supported by the Twitter API that could be used to make an AJAX request for the Twitter feed and insert it in the DOM after the page has finished loaded. -- /Jacob Carlborg
Nov 14 2011
prev sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:j9rs4o$nrs$1 digitalmars.com...
 On 11/14/11 7:11 AM, Nick Sabalausky wrote:
 Con: Examples are never visible without JS. There is *no* good technical 
 or
 stylistic reason for that. Like I was just telling someone on D.announce, 
 if
 you need something collapsible, the way you do it is by leaving it
 uncollapsed in the HTML/CSS. Then, if you really want JS users to see it
 collapsed by default, you collapse it *via JS* upon page load. Or just 
 make
 use of the noscript tag. There is *never* any reason to do it any
 differently than that.

I'm not sure what to do about catering for people who disable JS. Other language sites (Go, Scala) do use JS and at least Go is unprepared for it being disabled.

Well, that's not too surprising since Go comes from people in Google. Google's been really trying to push JS more and more the last so many years.
 Scala seems to have a designed fallback mode.

 A reasonable question is what percentage of people have Javascript 
 disabled. I ran this query:

 https://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=percentage+javascript+disabled+browsers

 After looking through the top answers I inferred that the percentage is 
 around 2% and declining.

Vlad and Adam have already addressed all of this pretty well, including most of my main points, but I'd like that add that while even 1% sounds small, it's still a hell of a lot of people. Also, and this is getting slightly offtopic, but I've often wondered about the reliability of Google's stats about JS vs non-JS. My understanding is that Google Analytics *uses* JS, so I would think there's a good chance that many non-JS users are unaccounted for. But maybe I'm wrong. But even that possible inaccuracy aside, many of the people who disable JS do so selectively via NoScript. It's common to have JS disabled by default, but then turn it on for certain domains. I'd be willing to bet that among the people who do that, google would probably be a very common domain to have JS enabled on (even I sometimes have it on for the google domain even though I don't like to do so). So that would skew google's recorded "non-JS" results lower than they really are. So then those NoScript selective-JS users would go to d-p-l.org and basic, trivial stuff on the frontpage would fail to work. Maybe they would then turn JS on for d-p-l.org, too, but it would leave a bad first impression - which is exactly what that page is designed for: first impressions.
Nov 14 2011
parent Jacob Carlborg <doob me.com> writes:
On 2011-11-14 21:46, Nick Sabalausky wrote:
 So then those NoScript selective-JS users would go to d-p-l.org and basic,
 trivial stuff on the frontpage would fail to work. Maybe they would then
 turn JS on for d-p-l.org, too, but it would leave a bad first impression -
 which is exactly what that page is designed for: first impressions.

I have it turned off for d-p-l.org because the site works anyway. -- /Jacob Carlborg
Nov 14 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 22:01:49 +0200, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 After looking through the top answers I inferred that the percentage is  
 around 2% and declining.

This is a bad measurement. Technically-inclined people are more likely to fine-tune their web browsing experience. The best metrics would be of d-p-l.org visitors. However, making the website accessible without JS is so easy, it's not really worth arguing about. Reminder: there are people in this community (myself included) who have web programming experience and would gladly help out. Don't be afraid to ask.
 You'd probably see it if you enabled javascript. The idea is that  
 streaming Twitter news adds dynamism to the page, which encourages  
 repeat visits. I don't see anything wrong with using such a technology  
 to keep people informed. We're not in the business of creating news  
 aggregators.

Speaking of which, the twitter widget needs to be placed in an iframe so that it doesn't block the page load (inline scripts cause browsers to stop parsing the page until the script is loaded and executed, which creates a network dependency on a website we don't control). -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
prev sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 22:43:05 +0200, Jacob Carlborg <doob me.com> wrote:

 On 2011-11-14 21:09, Vladimir Panteleev wrote:
 Speaking of which, the twitter widget needs to be placed in an iframe so
 that it doesn't block the page load (inline scripts cause browsers to
 stop parsing the page until the script is loaded and executed, which
 creates a network dependency on a website we don't control).

Put the JavaScript at the end of the page instead.

The script writes its content during execution. Unless the Twitter JS supports writing to a specified element, it can't be at the end without CSS positioning hacks. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
prev sibling next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:j9ps5n$30nq$1 digitalmars.com...
 Walter and I have been working on the website for a while. We want to 
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work is 
 content-only (no significant changes in style, though collapsible examples 
 and twitter news are a new style element).

 Feedback is welcome.

I really think we need a link to the changelog. I can't even *find* a way to navigate to the changelog from d-p-l.org.
Nov 14 2011
next sibling parent "Nick Sabalausky" <a a.a> writes:
"Nick Sabalausky" <a a.a> wrote in message 
news:j9rbtd$2qqj$1 digitalmars.com...
 "Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
 news:j9ps5n$30nq$1 digitalmars.com...
 Walter and I have been working on the website for a while. We want to 
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work is 
 content-only (no significant changes in style, though collapsible 
 examples and twitter news are a new style element).

 Feedback is welcome.

I really think we need a link to the changelog. I can't even *find* a way to navigate to the changelog from d-p-l.org.

Speaking of the changelog, the d-p-l.org version of the changelog (which I had to get to by typing in the URL directly) is showing 2.056 as completely blank: http://www.d-programming-language.org/changelog.html Also, the justified-text should probably be disabled for this page since it just doesn't work well for this type of content. In particular, see the "New/Changed Features" section for 2.055. Most of it looks fine since the lines aren't long enough to wrap (in which case the justification isn't even doing *anything*), but then there's this absolutely hideous line in the middle that says "The names of the values of std.mmfile.Mode,..."
Nov 14 2011
prev sibling next sibling parent reply Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 11/14/11, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:
 so there's no reason "Download & Tools" should link
 directly to http://www.digitalmars.com/d/download.html.

And because it redirects to that page you can't find information on what compiler arguments you can pass. This is a serious flaw imho.
Nov 14 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 10:13 AM, Andrej Mitrovic wrote:
 On 11/14/11, Andrej Mitrovic<andrej.mitrovich gmail.com>  wrote:
 so there's no reason "Download&  Tools" should link
 directly to http://www.digitalmars.com/d/download.html.

And because it redirects to that page you can't find information on what compiler arguments you can pass. This is a serious flaw imho.

I don't understand this. Andrei
Nov 14 2011
prev sibling next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 7:23 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:j9ps5n$30nq$1 digitalmars.com...
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work is
 content-only (no significant changes in style, though collapsible examples
 and twitter news are a new style element).

 Feedback is welcome.

I really think we need a link to the changelog. I can't even *find* a way to navigate to the changelog from d-p-l.org.

Good idea. Andrei
Nov 14 2011
prev sibling next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 10:11 AM, Andrej Mitrovic wrote:
 On 11/14/11, Nick Sabalausky<a a.a>  wrote:
 I really think we need a link to the changelog. I can't even *find*
 a way to navigate to the changelog from d-p-l.org.

That's because "Download& Tools" (http://d-programming-language.org/download.html) redirects to http://www.digitalmars.com/d/download.html , even though there's a whole subcategory section as found here: http://d-programming-language.org/dmd-linux.html I think I've already reported this but nothing was done about it, or it was shot down, I don't really recall. But each of those DMD Linux/Win/OSX pages links to http://www.digitalmars.com/d/download.html via the "Download D Compiler" link, so there's no reason "Download& Tools" should link directly to http://www.digitalmars.com/d/download.html.

We will take care of this. From an email I wrote on Sunday:
 4. We must make "Download" simpler and more direct. "Downloads &
 Tools" on the right-hand site is small and has a diluted message. I
 want people who visit the homepage to see a prominent button offering
 immediate download of the compiler for their OS.

Andrei
Nov 14 2011
prev sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 11/14/11, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:
 On 11/14/11 10:13 AM, Andrej Mitrovic wrote:
 On 11/14/11, Andrej Mitrovic<andrej.mitrovich gmail.com>  wrote:
 so there's no reason "Download&  Tools" should link
 directly to http://www.digitalmars.com/d/download.html.

And because it redirects to that page you can't find information on what compiler arguments you can pass. This is a serious flaw imho.

I don't understand this. Andrei

I just meant if there's no link to the compiler information page (e.g. http://d-programming-language.org/dmd-linux.html), then people can't really figure out how to use DMD. And "Downloads & Tools" is supposed to link there. But it's getting fixed, so that's good.
Nov 14 2011
prev sibling next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 11/14/11, Nick Sabalausky <a a.a> wrote:
 I really think we need a link to the changelog. I can't even *find* a way to
 navigate to the changelog from d-p-l.org.

That's because "Download & Tools" (http://d-programming-language.org/download.html) redirects to http://www.digitalmars.com/d/download.html , even though there's a whole subcategory section as found here: http://d-programming-language.org/dmd-linux.html I think I've already reported this but nothing was done about it, or it was shot down, I don't really recall. But each of those DMD Linux/Win/OSX pages links to http://www.digitalmars.com/d/download.html via the "Download D Compiler" link, so there's no reason "Download & Tools" should link directly to http://www.digitalmars.com/d/download.html.
Nov 14 2011
prev sibling next sibling parent reply Robert Clipsham <robert octarineparrot.com> writes:
On 14/11/2011 01:50, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

- From the first look at the page it's a big block of text with no code. Very off putting from a programming language home page. - My advise here would be to *just* show the key bullet points, click for more information. - It's covered in buzz words. Are you trying to appeal to managers or programmers? - "See example." is actually show/hide example, the text should reflect this. - Community - Maybe mention the IRC channel #D on freenode. - There's no need for the "Walter Bright" name-drop, particularly in a community section (Walter is not the community!) - Contribute - First thing I see is a bullet pointed list of compilers, DMD is not listed, perhaps the surrounding text needs to be re-worded - inconsistent capitalization of (C|c)ompiler - Definitely needs a "Fork us on github" banner of some sort A key thing I find missing is code - the first thing I want to see when I visit the home page of a new language is sample code. My advise here would be to always have a code section on one side, then have more information on the other, describing what the code is demonstrating. Something like http://imgur.com/QL619 where the right hand side would have code, the left hand side your 3 key points. -- Robert http://octarineparrot.com/
Nov 14 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 11:04 AM, Robert Clipsham wrote:
 - From the first look at the page it's a big block of text with no
 code. Very off putting from a programming language home page.

I think the current page with a big block of code is quite unappealing, too.
 - My advise here would be to *just* show the key bullet points,
 click for more information.

Duly noted.
 - It's covered in buzz words. Are you trying to appeal to managers or
 programmers?

Programmers. Of the language sites I looked at, scala-lang.org looked the most corporate-y. We are trying to convey the key advantages of D in few words. If we used weaker words, the message would be, well, weak. The point is that we really have something to show under each "buzzword".
 - "See example." is actually show/hide example, the text should
 reflect this.

Hm, that should change when expanded. More work for me, sigh.
 - Community
 - Maybe mention the IRC channel #D on freenode.

Yah, forgot
 - There's no need for the "Walter Bright" name-drop, particularly in
 a community section (Walter is not the community!)

Walter is the most prominent member of the community. I think the mention is entirely appropriate. In particular, we noted that the old site doesn't mention Walter as the creator of D, and that many people don't know who invented D.
 - Contribute
 - First thing I see is a bullet pointed list of compilers, DMD is
 not listed, perhaps the surrounding text needs to be re-worded

The idea is that there'd be copious download links before that point (to be added).
 - inconsistent capitalization of (C|c)ompiler

OK.
 - Definitely needs a "Fork us on github" banner of some sort

OK.
 A key thing I find missing is code - the first thing I want to see when
 I visit the home page of a new language is sample code.

OK.
 My advise here would be to always have a code section on one side, then
 have more information on the other, describing what the code is
 demonstrating. Something like http://imgur.com/QL619 where the right
 hand side would have code, the left hand side your 3 key points.

Thanks! Andrei
Nov 14 2011
next sibling parent Robert Clipsham <robert octarineparrot.com> writes:
On 14/11/2011 20:12, Andrei Alexandrescu wrote:
 On 11/14/11 11:04 AM, Robert Clipsham wrote:
 - From the first look at the page it's a big block of text with no
 code. Very off putting from a programming language home page.

I think the current page with a big block of code is quite unappealing, too.

Well neither is ideal! It'll probably take some fine-tuning to get the right balance.
 - My advise here would be to *just* show the key bullet points,
 click for more information.

Duly noted.

I always found this really annoying (though it seems to work well for a lot of things) - having an automatic scroll through the bullet points showing them in more detail could work though.
 - It's covered in buzz words. Are you trying to appeal to managers or
 programmers?

Programmers. Of the language sites I looked at, scala-lang.org looked the most corporate-y. We are trying to convey the key advantages of D in few words. If we used weaker words, the message would be, well, weak. The point is that we really have something to show under each "buzzword".

few words + little code = big impact At least in my opinion. I know this differs a lot, but most of my generation don't read more than a few words on screen unless they have to, their eyes jump almost immediately to what they want to see. Having some code and some text is probably the best way to simplify this.
 - "See example." is actually show/hide example, the text should
 reflect this.

Hm, that should change when expanded. More work for me, sigh.

It's only a couple of lines of code ;)
 - Community
 - Maybe mention the IRC channel #D on freenode.

Yah, forgot
 - There's no need for the "Walter Bright" name-drop, particularly in
 a community section (Walter is not the community!)

Walter is the most prominent member of the community. I think the mention is entirely appropriate. In particular, we noted that the old site doesn't mention Walter as the creator of D, and that many people don't know who invented D.

I challenge you to find a programming language website that mentions the creator on the front page. It's not that I don't think Walter deserves credit for his work, just that I don't deem it such an important detail that it needs to be on the homepage. Also, should D gain popularity I foresee Walter being bombarded with direct questions rather than them coming to the community who are just as qualified to answer a lot of them - having his name on the front page won't help this :) -- Robert http://octarineparrot.com/
Nov 14 2011
prev sibling next sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-11-14 21:12, Andrei Alexandrescu wrote:
 Walter is the most prominent member of the community. I think the
 mention is entirely appropriate. In particular, we noted that the old
 site doesn't mention Walter as the creator of D, and that many people
 don't know who invented D.

That may be more appropriate on page covering the history and background of D. -- /Jacob Carlborg
Nov 14 2011
prev sibling parent "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:j9rso9$ov0$1 digitalmars.com...
 On 11/14/11 11:04 AM, Robert Clipsham wrote:
 - "See example." is actually show/hide example, the text should
 reflect this.

Hm, that should change when expanded. More work for me, sigh.

Just changing the text from "See example" to "show/hide example" should be perfectly sufficent. 'Course, if you'd really rather make it change, that'd certainly be fine too.
Nov 14 2011
prev sibling next sibling parent reply Michel Fortin <michel.fortin michelf.com> writes:
On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu 
<SeeWebsiteForEmail erdani.org> said:

 Walter and I have been working on the website for a while. We want to 
 crystallize a clear message of what the D programming language is.
 
 Please take a look at http://d-programming-language.org/new/. The work 
 is content-only (no significant changes in style, though collapsible 
 examples and twitter news are a new style element).
 
 Feedback is welcome.

I kind of like it, the structure. I don't like the visual presentation (but I understand that will come later). But most of all I think you're being too wordy. (I haven't read most of the thread yet, so sorry if I am just repeating what others have said.) Just take the three main points: - Modern convenience - Multi-paradigm power - Native efficiency That's all mixed up. Either use use these three *qualifiers*: - Modern - Multi-paradigm - Native Or these three *goals*: - Convenience - Power - Efficiency But matching each goal with a qualifier/feature makes things more confusing. At least for me, it automatically raise a bullshit flag in my head. Just answer this: why does the *multi-paradigm* feature bring power specifically? Couldn't it bring efficiency or convenience instead or in addition to power? How many ways could you combine words from these two lists and it'd still mean the same thing? -- Michel Fortin michel.fortin michelf.com http://michelf.com/
Nov 14 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 11:41 AM, Michel Fortin wrote:
 On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> said:

 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.

I kind of like it, the structure. I don't like the visual presentation (but I understand that will come later). But most of all I think you're being too wordy. (I haven't read most of the thread yet, so sorry if I am just repeating what others have said.) Just take the three main points: - Modern convenience - Multi-paradigm power - Native efficiency That's all mixed up. Either use use these three *qualifiers*: - Modern - Multi-paradigm - Native Or these three *goals*: - Convenience - Power - Efficiency

It's a good idea to keep the top message as is and then eliminate the goals from the bullet points.
 But matching each goal with a qualifier/feature makes things more
 confusing. At least for me, it automatically raise a bullshit flag in my
 head. Just answer this: why does the *multi-paradigm* feature bring
 power specifically?

Because it allows you to model difficult problem domains.
 Couldn't it bring efficiency or convenience instead
 or in addition to power?

It could, but that would be secondary at best.
 How many ways could you combine words from
 these two lists and it'd still mean the same thing?

Not many. Andrei
Nov 14 2011
parent reply Michel Fortin <michel.fortin michelf.com> writes:
On 2011-11-14 20:14:22 +0000, Andrei Alexandrescu 
<SeeWebsiteForEmail erdani.org> said:

 On 11/14/11 11:41 AM, Michel Fortin wrote:
 On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> said:
 
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.
 
 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).
 
 Feedback is welcome.

I kind of like it, the structure. I don't like the visual presentation (but I understand that will come later). But most of all I think you're being too wordy. (I haven't read most of the thread yet, so sorry if I am just repeating what others have said.) Just take the three main points: - Modern convenience - Multi-paradigm power - Native efficiency That's all mixed up. Either use use these three *qualifiers*: - Modern - Multi-paradigm - Native Or these three *goals*: - Convenience - Power - Efficiency

It's a good idea to keep the top message as is and then eliminate the goals from the bullet points.
 But matching each goal with a qualifier/feature makes things more
 confusing. At least for me, it automatically raise a bullshit flag in my
 head. Just answer this: why does the *multi-paradigm* feature bring
 power specifically?

Because it allows you to model difficult problem domains.
 Couldn't it bring efficiency or convenience instead
 or in addition to power?

It could, but that would be secondary at best.
 How many ways could you combine words from
 these two lists and it'd still mean the same thing?

Not many.

You mean this doesn't make sense to you? - Multi-paradigm convenience: it's much more convenient than mixing code from two or more languages. - Native power: can use every bit of power your hardware can provide because it's native. - Modern efficiency: all modern languages now have good optimizers built-in, making the code efficient. It probably makes more sense from your perspective to match them the way you did, I won't contest that. But there's always a way to match them differently that would fit someone else's perspective. So to me it raises questions whether those words mean anything or they are there to impress the less knowledgeable (buzzwords). Or at least it'd raise those questions if I were visiting the site for the first time. -- Michel Fortin michel.fortin michelf.com http://michelf.com/
Nov 14 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 12:42 PM, Michel Fortin wrote:
 You mean this doesn't make sense to you?

 - Multi-paradigm convenience: it's much more convenient than mixing code
 from two or more languages.
 - Native power: can use every bit of power your hardware can provide
 because it's native.
 - Modern efficiency: all modern languages now have good optimizers
 built-in, making the code efficient.

To me all this sounds twisted.
 It probably makes more sense from your perspective to match them the way
 you did, I won't contest that. But there's always a way to match them
 differently that would fit someone else's perspective. So to me it
 raises questions whether those words mean anything or they are there to
 impress the less knowledgeable (buzzwords). Or at least it'd raise those
 questions if I were visiting the site for the first time.

I thought about these words for weeks. I could not find a more clear and concise way to state D's differentiating features. Andrei
Nov 14 2011
parent Somedude <lovelydear mailmetrash.com> writes:
Le 14/11/2011 22:38, Andrei Alexandrescu a écrit :
 
 I thought about these words for weeks. I could not find a more clear and
 concise way to state D's differentiating features.
 
 
 Andrei
 

I don't have any problem with these words, but I don't like to see them repeated in the title. I think it should limit itself to "The D Programming Language".
Nov 17 2011
prev sibling next sibling parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/14/2011 08:41 PM, Michel Fortin wrote:
 On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> said:

 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.

I kind of like it, the structure. I don't like the visual presentation (but I understand that will come later). But most of all I think you're being too wordy. (I haven't read most of the thread yet, so sorry if I am just repeating what others have said.) Just take the three main points: - Modern convenience - Multi-paradigm power - Native efficiency That's all mixed up. Either use use these three *qualifiers*: - Modern - Multi-paradigm - Native Or these three *goals*: - Convenience - Power - Efficiency

+1. Gets us rid of the buzzy 'Multi-paradigm' in the title too.
 But matching each goal with a qualifier/feature makes things more
 confusing. At least for me, it automatically raise a bullshit flag in my
 head. Just answer this: why does the *multi-paradigm* feature bring
 power specifically? Couldn't it bring efficiency or convenience instead
 or in addition to power? How many ways could you combine words from
 these two lists and it'd still mean the same thing?

Nov 14 2011
prev sibling next sibling parent Michel Fortin <michel.fortin michelf.com> writes:
On 2011-11-14 19:41:28 +0000, Michel Fortin <michel.fortin michelf.com> said:

 On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu 
 <SeeWebsiteForEmail erdani.org> said:
 
 Walter and I have been working on the website for a while. We want to 
 crystallize a clear message of what the D programming language is.
 
 Please take a look at http://d-programming-language.org/new/. The work 
 is content-only (no significant changes in style, though collapsible 
 examples and twitter news are a new style element).
 
 Feedback is welcome.

I kind of like it, the structure. I don't like the visual presentation (but I understand that will come later). But most of all I think you're being too wordy. (I haven't read most of the thread yet, so sorry if I am just repeating what others have said.)

More comments: At least make the key words bold in the lists of features so you can scan the text and pass over the parts that are not interesting to you. The news section is empty for me (I get an empty twitter frame with a join the conversation link). I guess that's my fault for using browser extensions to disable various web tracking APIs, so I won't complain. -- Michel Fortin michel.fortin michelf.com http://michelf.com/
Nov 14 2011
prev sibling next sibling parent "Nick Sabalausky" <a a.a> writes:
"Michel Fortin" <michel.fortin michelf.com> wrote in message 
news:j9rqui$le5$1 digitalmars.com...
 Just take the three main points:

 - Modern convenience
 - Multi-paradigm power
 - Native efficiency

 That's all mixed up. Either use use these three *qualifiers*:

 - Modern
 - Multi-paradigm
 - Native

Yes, I like this change a lot. It's much clearer and easier to read. I can grok the latter at a mere glance, while the former I have to actually read and then think. Besides, I can draw my own conclusions as to what "Modern", "Multi-paradigm", and "Native" each imply, and they're all still explained in the text anyway.
Nov 14 2011
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 11:41 AM, Michel Fortin wrote:
 - Convenience
 - Power
 - Efficiency

My problem with those three are those are the goals of every single computer language ever invented. They are completely and fatuously generic.
 - Modern convenience

"Modern" implies using the latest ideas and techniques in computer languages. Modern has been used successfully in Andrei's books to convey that, which is why I suggested using the word.
 - Multi-paradigm power

Many newly-designed languages are wrapped around a single paradigm, and they set a store by being so. D most assuredly and pointedly has different take on that.
 - Native efficiency

Most (nearly all?) new languages are targeted at a VM. Being native is clearly a distinguishing feature of D.
Nov 14 2011
next sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/14/2011 04:52 PM, Walter Bright wrote:
 Many newly-designed languages are wrapped around a single paradigm, and
 they set a store by being so. D most assuredly and pointedly has
 different take on that.

As do languages like Go, C++, and Scala. "multi-paradigm" is "completely and fatuously generic", to use your words. This is *my* I told you so moment. How many different people have keyed in on this stupid buzzword?
Nov 14 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 5:01 PM, Jeff Nowakowski wrote:
 On 11/14/2011 04:52 PM, Walter Bright wrote:
 Many newly-designed languages are wrapped around a single paradigm, and
 they set a store by being so. D most assuredly and pointedly has
 different take on that.

As do languages like Go, C++, and Scala. "multi-paradigm" is "completely and fatuously generic", to use your words.

That doesn't seem the case to me at all. Multi-paradigm programming language has a rather precise meaning - it's a language that allows several of the classic programming styles (functional, object-oriented, procedural, generic).
 This is *my* I told you so
 moment. How many different people have keyed in on this stupid buzzword?

Not a lot. At least in the circles I frequent it is acknowledged that C++ is multi-paradigm (there's even a book with the phrase in the title) and most other languages are not. Andrei
Nov 14 2011
next sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/14/2011 08:05 PM, Andrei Alexandrescu wrote:
 That doesn't seem the case to me at all. Multi-paradigm programming
 language has a rather precise meaning - it's a language that allows
 several of the classic programming styles (functional, object-oriented,
 procedural, generic).

It's not precise at all. Very few languages are actually single-paradigm. Is C++ multi-paradigm, even though it bills itself as such? Well compared to Smalltalk it is, but its functional support is crap, and generics are a nightmare. Is Java multi-paradigm? Why not? It isn't as religious as Smalltalk, has primites and arrays, with some generic support, and you can always kluge functional programming. What about Common Lisp? Sure, it has lots of parenthesis, but you can bend the language and it has support for objects (CLOS). Multi-paradigm is *not* a selling point. Explicit features are. This is one of these cases where you are arguing from a dead-end position. A reaction about marketing from your community cannot be explained away, because marketing is about about perceptions.
Nov 14 2011
next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 7:15 PM, Jeff Nowakowski wrote:
 It's not precise at all. Very few languages are actually single-paradigm. Is
C++
 multi-paradigm, even though it bills itself as such? Well compared to Smalltalk
 it is, but its functional support is crap, and generics are a nightmare. Is
Java
 multi-paradigm? Why not? It isn't as religious as Smalltalk, has primites and
 arrays, with some generic support, and you can always kluge functional
 programming. What about Common Lisp? Sure, it has lots of parenthesis, but you
 can bend the language and it has support for objects (CLOS).

It's true that with enough effort you can program in any paradigm in any language. But that doesn't really make them multi-paradigm languages. To repeat an earlier analogy, I'm an expert at using a screwdriver as a hammer, but I still would prefer an actual hammer.
 Multi-paradigm is *not* a selling point. Explicit features are. This is one of
 these cases where you are arguing from a dead-end position. A reaction about
 marketing from your community cannot be explained away, because marketing is
 about about perceptions.

I am surprised at the negative reaction, because when I've done presentations about D revolving around it being multi-paradigm, the reaction was always positive.
Nov 14 2011
prev sibling next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 7:15 PM, Jeff Nowakowski wrote:
 On 11/14/2011 08:05 PM, Andrei Alexandrescu wrote:
 That doesn't seem the case to me at all. Multi-paradigm programming
 language has a rather precise meaning - it's a language that allows
 several of the classic programming styles (functional, object-oriented,
 procedural, generic).

It's not precise at all. Very few languages are actually single-paradigm. Is C++ multi-paradigm, even though it bills itself as such? Well compared to Smalltalk it is, but its functional support is crap, and generics are a nightmare. Is Java multi-paradigm? Why not? It isn't as religious as Smalltalk, has primites and arrays, with some generic support, and you can always kluge functional programming. What about Common Lisp? Sure, it has lots of parenthesis, but you can bend the language and it has support for objects (CLOS).

Statements and views can be bent in various ways. For example, I think it would be tenuous to bill Java as multi-paradigm. Of course you could if you really wanted, but you'd go against the grain. Here we're trying to build a brief and clear message about D's differentiating qualities. We're not trying to defend D in a court of law. Of course "multi-paradigm" is not precise in the sense that e.g. a math theorem, a formal specification, or a legal document is. That goes without saying. What I meant to say is that it is more precise than e.g. "productive" or "with modeling power".
 Multi-paradigm is *not* a selling point. Explicit features are.

We have a good amount of evidence suggesting that laundry lists of features are a weak means to sell D.
 This is
 one of these cases where you are arguing from a dead-end position.

I think it's simpler than that - to be frank, it's probably the time to reckon it's you who is the problem. Almost without exception, you only post from an already emotionally loaded, negative frame. It's like when you're posting you're already furious and indignant, but you never allow that state to be avoided by engaging in dialog early. Just take an objective look at your earlier posts - there's hardly one shred of good intention and helpfulness in any of them. You didn't disappoint this time either.
 A
 reaction about marketing from your community cannot be explained away,
 because marketing is about about perceptions.

The reaction is generally positive, and we got a lot of great feedback and offers for help. Still waiting for yours. Andrei
Nov 14 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/14/2011 10:55 PM, Andrei Alexandrescu wrote:
 Statements and views can be bent in various ways. For example, I think
 it would be tenuous to bill Java as multi-paradigm. Of course you could
 if you really wanted, but you'd go against the grain.

I don't see why C++ is given a pass for "multi-paradigm" and Java isn't. Want procedures? Java has static functions. They didn't make primitives and arrays proper objects. Smalltalk is single-paradigm. Haskell is single-paradigm. Nearly every popular language embraces multiple paradigms. The dynamic crowd does -- Python, Ruby, etc. New languages like Scala do, and I don't see what single paradigm Go adheres to that you could call it single-paradigm.
 I think it's simpler than that - to be frank, it's probably the time to
 reckon it's you who is the problem. Almost without exception, you only
 post from an already emotionally loaded, negative frame.

I see. So do I control the what, half-dozen people who all came out against multi-paradigm? This being two weeks after my single, short, and blunt message against using the word multi-paradigm? You've got blinders on, and it's not the first time when it's about something like a name that you are enamored to and lots of people dislike.
Nov 15 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 5:43 AM, Jeff Nowakowski wrote:
 On 11/14/2011 10:55 PM, Andrei Alexandrescu wrote:
 Statements and views can be bent in various ways. For example, I
 think it would be tenuous to bill Java as multi-paradigm. Of course
 you could if you really wanted, but you'd go against the grain.

I don't see why C++ is given a pass for "multi-paradigm" and Java isn't. Want procedures? Java has static functions.

That would mean "allowed", not "supported".
 They didn't make primitives and arrays proper objects.

Primitive types being special does not add one extra programming paradigm. That being said, on http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languages Java is billed as a four-paradigms language alongside C++.
 Smalltalk is single-paradigm. Haskell is single-paradigm. Nearly
 every popular language embraces multiple paradigms. The dynamic crowd
 does -- Python, Ruby, etc. New languages like Scala do, and I don't
 see what single paradigm Go adheres to that you could call it
 single-paradigm.

 I think it's simpler than that - to be frank, it's probably the
 time to reckon it's you who is the problem. Almost without
 exception, you only post from an already emotionally loaded,
 negative frame.

I see. So do I control the what, half-dozen people who all came out against multi-paradigm?

Let's enumerate. I searched for all messages titled "Website message overhaul" containing "paradigm", then read them again. Bearophile was opposed to it. Timon Gehr wrote: "If we can find a less buzzy word than 'Multi-paradigm power' to describe D's multi-paradigm power, that would be nice, but I am also fine with the current state of affairs." That hardly counts him as against, but fine. That's a grand total of two. Not to mention that other participants to the discussion agreed to the term either implicitly or explicitly.
 This being two weeks after my single, short,
 and blunt message against using the word multi-paradigm?

It comes after a long, monochord pattern of sniping. Skim through your past posts, then think for a second of how predictable a post replying to "Website message overhaul" from "Jeff Nowakowski" is.
 You've got blinders on, and it's not the first time when it's about
 something like a name that you are enamored to and lots of people
 dislike.

Walter and I think "multi-paradigm" is a distinguishing characteristic of D. It was his idea to make that one of the three, and I agree with it. That doesn't mean all other languages are single paradigm, or that D supports more paradigms than all other languages. It just means that D embraces the multi-paradigm philosophy to an arguably larger degree than others, and that's an important tidbit of information about D. So I'm not "enamored" with anything but I think Walter and I have a point. I find it reasonable to not let myself convinced otherwise by arguments that are, as I pointed out, weak or flawed. Andrei
Nov 15 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/15/2011 09:31 AM, Andrei Alexandrescu wrote:
 On 11/15/11 5:43 AM, Jeff Nowakowski wrote:
 I don't see why C++ is given a pass for "multi-paradigm" and Java
 isn't. Want procedures? Java has static functions.

That would mean "allowed", not "supported".

Java explicitly supports "static" functions that are not part of an object. Math.abs() is a common example. Both you and Walter have been supporting C++ as multi-paradigm, but it's functional support is awful and generics are a nightmare to use. The only reason C++ has that billing is because it came out when Smalltalk was *the* object-oriented language, and it took "everything is an object" very seriously. It was also slow as hell and unfamiliar to C users, so C++ marketed itself differently.
 Let's enumerate. I searched for all messages titled "Website message
 overhaul" containing "paradigm", then read them again. Bearophile was
 opposed to it. Timon Gehr wrote: "If we can find a less buzzy word than
 'Multi-paradigm power' to describe D's multi-paradigm power, that would
 be nice, but I am also fine with the current state of affairs." That
 hardly counts him as against, but fine. That's a grand total of two.

He also said: "+1. Gets us rid of the buzzy 'Multi-paradigm' in the title too." He's obviously against it, but was willing to let it slide. There's also: - Lutger Blijdestijn, while he didn't explicitly come out against multi-paradigm, offered an alternative: "I like the term modeling power a lot, and would use this as the main point." - Robert Clipsham, who said: "It's covered in buzz words. Are you trying to appeal to managers or programmers?" Maybe he can clarify if that includes multi-paradigm. I assume yes. - And Jonathon Davis, while he defends it, he also damns it: "I think that the problem is that it _sounds_ like a buzzword and it's not a term that enough programmers have thought about. [..] But if it's not a term that you've thought about before or which really means something to you, then it's just going to sound like a stupid buzzword." By the way, the idea that somebody like bearophile hasn't thought about different paradigms is laughable. - Paulo Pinto and Jacob Carlborg have also questioned why you don't consider some languages multi-paradigm.
 It comes after a long, monochord pattern of sniping.

It's true that I generally post negative critique, and that's because I tend to post when things get my dander up enough. That doesn't mean the message is frivolous or wrong. If I wanted to snipe like that I'd be posting here several times a week on multiple topics. I don't.
Nov 15 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 8:13 AM, Jeff Nowakowski wrote:
 On 11/15/2011 09:31 AM, Andrei Alexandrescu wrote:
 It's true that I generally post negative critique, and that's because I
 tend to post when things get my dander up enough. That doesn't mean the
 message is frivolous or wrong. If I wanted to snipe like that I'd be
 posting here several times a week on multiple topics. I don't.

Would be great to also post when you feel you could help with something. Andrei
Nov 15 2011
parent Jeff Nowakowski <jeff dilacero.org> writes:
On 11/15/2011 12:59 PM, Andrei Alexandrescu wrote:
 Would be great to also post when you feel you could help with something.

My criticism is intended to be helpful, just like it is when other people have criticized the website. You even changed your mind about fonts and layout on the website some months back in response to my criticism.
Nov 15 2011
prev sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 11/15/2011 05:13 PM, Jeff Nowakowski wrote:
 He also said: "+1. Gets us rid of the buzzy 'Multi-paradigm' in the
 title too." He's obviously against it, but was willing to let it slide.

Well, I am not strictly against it. It is as I wrote in that other post, if we can find a better, maybe more discriminating, term, that would be nice. I like the 'modelling power' proposal too.
Nov 15 2011
parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 15/11/11 7:30 PM, Timon Gehr wrote:
 On 11/15/2011 05:13 PM, Jeff Nowakowski wrote:
 He also said: "+1. Gets us rid of the buzzy 'Multi-paradigm' in the
 title too." He's obviously against it, but was willing to let it slide.

Well, I am not strictly against it. It is as I wrote in that other post, if we can find a better, maybe more discriminating, term, that would be nice. I like the 'modelling power' proposal too.

To me, multi-paradigm is another way of saying "not dogmatic", i.e. you aren't forced into a single paradigm. Perhaps a better way to say it would simply be "Pragmatic"? I think the fact that D's development is based on years of experience rather than academic ideals, like orthogonality, is very much understated on the new page.
Nov 15 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Peter Alexander" <peter.alexander.au gmail.com> wrote in message 
news:j9uftl$v0q$1 digitalmars.com...
 On 15/11/11 7:30 PM, Timon Gehr wrote:
 On 11/15/2011 05:13 PM, Jeff Nowakowski wrote:
 He also said: "+1. Gets us rid of the buzzy 'Multi-paradigm' in the
 title too." He's obviously against it, but was willing to let it slide.

Well, I am not strictly against it. It is as I wrote in that other post, if we can find a better, maybe more discriminating, term, that would be nice. I like the 'modelling power' proposal too.

To me, multi-paradigm is another way of saying "not dogmatic", i.e. you aren't forced into a single paradigm. Perhaps a better way to say it would simply be "Pragmatic"? I think the fact that D's development is based on years of experience rather than academic ideals, like orthogonality, is very much understated on the new page.

"Pragmatic" is always the term I think of as a one-word description of D.
Nov 15 2011
parent reply Daniel Gibson <metalcaedes gmail.com> writes:
Am 15.11.2011 21:11, schrieb Nick Sabalausky:
 "Peter Alexander"<peter.alexander.au gmail.com>  wrote in message
 news:j9uftl$v0q$1 digitalmars.com...
 On 15/11/11 7:30 PM, Timon Gehr wrote:
 On 11/15/2011 05:13 PM, Jeff Nowakowski wrote:
 He also said: "+1. Gets us rid of the buzzy 'Multi-paradigm' in the
 title too." He's obviously against it, but was willing to let it slide.

Well, I am not strictly against it. It is as I wrote in that other post, if we can find a better, maybe more discriminating, term, that would be nice. I like the 'modelling power' proposal too.

To me, multi-paradigm is another way of saying "not dogmatic", i.e. you aren't forced into a single paradigm. Perhaps a better way to say it would simply be "Pragmatic"? I think the fact that D's development is based on years of experience rather than academic ideals, like orthogonality, is very much understated on the new page.

"Pragmatic" is always the term I think of as a one-word description of D.

While "pragmatic" fits D, it does not really describe features D offers, "multi-paradigm" is a bit more descriptive. I still think the best description for D is "C++ done right" ;-) Cheers, - Daniel
Nov 15 2011
parent Somedude <lovelydear mailmetrash.com> writes:
Le 15/11/2011 23:17, Daniel Gibson a écrit :
 I still think the best description for D is "C++ done right" ;-)
 
 Cheers,
 - Daniel
 

That's giving the stick to be beaten. Most C++ die-hard fans would sneer at this description.
Nov 17 2011
prev sibling parent reply Somedude <lovelydear mailmetrash.com> writes:
Le 15/11/2011 04:15, Jeff Nowakowski a écrit :
 Multi-paradigm is *not* a selling point. Explicit features are. This is
 one of these cases where you are arguing from a dead-end position. A
 reaction about marketing from your community cannot be explained away,
 because marketing is about about perceptions.

I don't see the problem with using the term multi-paradigm. This page is not geared towards language theoreticians. It's geared towards programmers who may be interested in having a look, usually coming from other largely used imperative languages. And for most of these programmers, multi-paradigm means what Andrei said. My feeling is your nitpicking isn't very helpful.
Nov 17 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/17/2011 02:12 PM, Somedude wrote:
 It's geared towards programmers who may be interested in having a
 look, usually coming from other largely used imperative languages.
 And for most of these programmers, multi-paradigm means what Andrei
 said.

My opinion is that most programmers don't give a shit if a language advertises itself as "multi-paradigm". It's not something I see bandied about among developers, except that C++ is most known for using that label. It just isn't a distinguishing feature in today's programming landscape.
 My feeling is your nitpicking isn't very helpful.

I wasn't the only one, "Somedude".
Nov 17 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/17/11 3:10 PM, Jeff Nowakowski wrote:
 On 11/17/2011 02:12 PM, Somedude wrote:
 It's geared towards programmers who may be interested in having a
 look, usually coming from other largely used imperative languages.
 And for most of these programmers, multi-paradigm means what Andrei
 said.

My opinion is that most programmers don't give a shit if a language advertises itself as "multi-paradigm". It's not something I see bandied about among developers, except that C++ is most known for using that label. It just isn't a distinguishing feature in today's programming landscape.
 My feeling is your nitpicking isn't very helpful.

I wasn't the only one, "Somedude".

Half a dozen... :o) Andrei
Nov 17 2011
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 5:29 PM, Jonathan M Davis wrote:
 I think that C++ is really the only language that I've heard termed multi-
 paradigm (though most languages do allow for multiple paradigms on some level,
 even if they tend to focus heavily on one), and D definitely deserves that
 designation as well.

C++ is definitely multiparadigm, D more so. Go isn't, Java isn't, C isn't. (Try doing OOP in C. It can be done, but it's like using a screwdriver as a hammer.)
Nov 14 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-15 04:20, Walter Bright wrote:
 On 11/14/2011 5:29 PM, Jonathan M Davis wrote:
 I think that C++ is really the only language that I've heard termed
 multi-
 paradigm (though most languages do allow for multiple paradigms on
 some level,
 even if they tend to focus heavily on one), and D definitely deserves
 that
 designation as well.

C++ is definitely multiparadigm, D more so. Go isn't, Java isn't, C isn't. (Try doing OOP in C. It can be done, but it's like using a screwdriver as a hammer.)

What would be necessary for you to call a language multiparadigm? -- /Jacob Carlborg
Nov 14 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 11:50 PM, Jacob Carlborg wrote:
 What would be necessary for you to call a language multiparadigm?

If using multiple paradigms is reasonably natural and convenient in that language. For example: C: imperative C++: imperative, OOP, metaprogramming Java: OOP D: imperative, OOP, metaprogramming, functional, assembler, script I've seen metaprogramming in C using the preprocessor. But it ain't natural or convenient. It's hideous.
Nov 15 2011
next sibling parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
Hi,

then following you description Go is also multiparadigm.

Go: imperative, functional, component programming

"Walter Bright" <newshound2 digitalmars.com> wrote in message 
news:j9t7n4$jjf$1 digitalmars.com...
 On 11/14/2011 11:50 PM, Jacob Carlborg wrote:
 What would be necessary for you to call a language multiparadigm?

If using multiple paradigms is reasonably natural and convenient in that language. For example: C: imperative C++: imperative, OOP, metaprogramming Java: OOP D: imperative, OOP, metaprogramming, functional, assembler, script I've seen metaprogramming in C using the preprocessor. But it ain't natural or convenient. It's hideous.

Nov 15 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/15/2011 12:28 AM, Paulo Pinto wrote:
 then following you description Go is also multiparadigm.

 Go: imperative, functional, component programming

Since Go does not offer function purity or data immutability, its support for functional programming is lacking. "functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data." -- http://en.wikipedia.org/wiki/Functional_programming Is "component programming" a paradigm or a style? I think pretty much every language supports component programming in one form or another.
Nov 15 2011
parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
Hi,

even if it is not enforced, one can write pure like functions if one so 
wishes and the lambda
functions do help, even if they are not proper closures.

Personally I consider component programming, the concept to programmer 
against interface
types, as Go offers or the COM/Taligent programming models.

These concepts where nicely described here, with the first edition using 
Component Pascal,
http://www.amazon.com/Component-Software-Beyond-Object-Oriented-Programming/dp/0201745720

Now don't take this as a Go fanboy post, if you read my Gonuts posts you'll 
see that I am quite critic
of some of the design decisions namely the lack of generics.

I just wanted to clear that from my point of view Go also supports more than 
one paradigm.

--
Paulo

"Walter Bright" <newshound2 digitalmars.com> wrote in message 
news:j9t9vi$nqf$1 digitalmars.com...
 On 11/15/2011 12:28 AM, Paulo Pinto wrote:
 then following you description Go is also multiparadigm.

 Go: imperative, functional, component programming

Since Go does not offer function purity or data immutability, its support for functional programming is lacking. "functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data." -- http://en.wikipedia.org/wiki/Functional_programming Is "component programming" a paradigm or a style? I think pretty much every language supports component programming in one form or another.

Nov 15 2011
next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/15/2011 1:55 AM, Paulo Pinto wrote:
 even if it is not enforced, one can write pure like functions if one so
 wishes and the lambda
 functions do help, even if they are not proper closures.

You can also do closures in C.
Nov 15 2011
prev sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 1:55 AM, Paulo Pinto wrote:
 Hi,

 even if it is not enforced, one can write pure like functions if one so
 wishes and the lambda
 functions do help, even if they are not proper closures.

You can do a lot of things that are not enforced. That doesn't mean the language supports it! Andrei
Nov 15 2011
prev sibling next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-15 09:25, Walter Bright wrote:
 On 11/14/2011 11:50 PM, Jacob Carlborg wrote:
 What would be necessary for you to call a language multiparadigm?

If using multiple paradigms is reasonably natural and convenient in that language. For example: C: imperative C++: imperative, OOP, metaprogramming Java: OOP D: imperative, OOP, metaprogramming, functional, assembler, script I've seen metaprogramming in C using the preprocessor. But it ain't natural or convenient. It's hideous.

If you would consider at least two paradigms as multiparadigm then I would say that a lot of languages are multiparadigm. -- /Jacob Carlborg
Nov 15 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/15/2011 12:43 AM, Jacob Carlborg wrote:
 If you would consider at least two paradigms as multiparadigm then I would say
 that a lot of languages are multiparadigm.

We could bikeshed forever what is a paradigm and what isn't, and how many constitutes multi, etc. But whatever color one's shed is painted, it's pretty clear that D supports an unusually large number of paradigms for a programming language. It doesn't start from an idea that "everything is an object". For example, Haskell is described as: "Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing" --- http://en.wikipedia.org/wiki/Haskell_(programming_language) which certainly suggests a single paradigm language. "Smalltalk is an object-oriented, dynamically typed, reflective programming language." --- http://en.wikipedia.org/wiki/Smalltalk "Java is a general-purpose, concurrent, class-based, object-oriented language that is specifically designed to have as few implementation dependencies as possible." --- http://en.wikipedia.org/wiki/Java_(programming_language) "Go is a compiled, garbage-collected, concurrent programming language" --- http://en.wikipedia.org/wiki/Go_(programming_language) What does Wikipedia have to say about C++? "C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language." --- http://en.wikipedia.org/wiki/C%2B%2B It's a markedly different tone from the others. Here's what Wikipedia has to say about what a multi-paradigm language is: http://en.wikipedia.org/wiki/Multi-paradigm_programming_language#Multi-paradigm_programming_language
Nov 15 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-15 10:16, Walter Bright wrote:
 On 11/15/2011 12:43 AM, Jacob Carlborg wrote:
 If you would consider at least two paradigms as multiparadigm then I
 would say
 that a lot of languages are multiparadigm.

We could bikeshed forever what is a paradigm and what isn't, and how many constitutes multi, etc.

Yeah, I guess there is not point of this discussion.
 But whatever color one's shed is painted, it's pretty clear that D
 supports an unusually large number of paradigms for a programming
 language. It doesn't start from an idea that "everything is an object".

I agree with that.
 For example, Haskell is described as:

 "Haskell is a standardized, general-purpose purely functional
 programming language, with non-strict semantics and strong static
 typing" --- http://en.wikipedia.org/wiki/Haskell_(programming_language)

 which certainly suggests a single paradigm language.

 "Smalltalk is an object-oriented, dynamically typed, reflective
 programming language." --- http://en.wikipedia.org/wiki/Smalltalk

 "Java is a general-purpose, concurrent, class-based, object-oriented
 language that is specifically designed to have as few implementation
 dependencies as possible." ---
 http://en.wikipedia.org/wiki/Java_(programming_language)

 "Go is a compiled, garbage-collected, concurrent programming language"
 --- http://en.wikipedia.org/wiki/Go_(programming_language)


 What does Wikipedia have to say about C++?

 "C++ is a statically typed, free-form, multi-paradigm, compiled,
 general-purpose programming language." ---
 http://en.wikipedia.org/wiki/C%2B%2B

 It's a markedly different tone from the others.

 Here's what Wikipedia has to say about what a multi-paradigm language is:

 http://en.wikipedia.org/wiki/Multi-paradigm_programming_language#Multi-paradigm_programming_language

According to this: http://en.wikipedia.org/wiki/Comparison_of_programming_languages Most languages are multi-paradigm. Smalltalk: concurrent, declarative, event-driven, object-oriented, reflective Java: generic, imperative, object-oriented, reflective Go: concurrent, imperative Haskell: functional, generic, lazy evaluation -- /Jacob Carlborg
Nov 15 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 1:33 AM, Jacob Carlborg wrote:
 On 2011-11-15 10:16, Walter Bright wrote:
 But whatever color one's shed is painted, it's pretty clear that D
 supports an unusually large number of paradigms for a programming
 language. It doesn't start from an idea that "everything is an object".

I agree with that.

How does this agreement...
 According to this:
 http://en.wikipedia.org/wiki/Comparison_of_programming_languages

 Most languages are multi-paradigm.

 Smalltalk: concurrent, declarative, event-driven, object-oriented,
 reflective

 Java: generic, imperative, object-oriented, reflective

 Go: concurrent, imperative

 Haskell: functional, generic, lazy evaluation

... go with this? I mean if the purpose is to argue petty details, sure. But "concurrent" or "reflective" are hardly paradigms, Java does not allow one to write a free function (which stands in the way of it being imperative), and in Haskell "functional" and "lazy evaluation" are not options, they're _always on_. Andrei
Nov 15 2011
next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:j9tpsf$1k7f$1 digitalmars.com...
 Java does not allow one to write a free function (which stands in the way 
 of it being imperative)

For all I know it's possible I might not be technically correct, but I've always understood imperative as meaning that it typically executes one statement, then the next, then the next, etc, as opposed to being declarative where the flow of execution isn't so step-by-step. That makes Java every bit as much imperative as it is OO, if not more imperative than OO (with Smalltalk being much more heavily OO than Java).
Nov 15 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 5:54 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:j9tpsf$1k7f$1 digitalmars.com...
 Java does not allow one to write a free function (which stands in the way
 of it being imperative)

For all I know it's possible I might not be technically correct, but I've always understood imperative as meaning that it typically executes one statement, then the next, then the next, etc, as opposed to being declarative where the flow of execution isn't so step-by-step. That makes Java every bit as much imperative as it is OO, if not more imperative than OO (with Smalltalk being much more heavily OO than Java).

Sorry, I had "procedural" in mind when I wrote that. Andrei
Nov 15 2011
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-11-15 14:35, Andrei Alexandrescu wrote:
 On 11/15/11 1:33 AM, Jacob Carlborg wrote:
 On 2011-11-15 10:16, Walter Bright wrote:
 But whatever color one's shed is painted, it's pretty clear that D
 supports an unusually large number of paradigms for a programming
 language. It doesn't start from an idea that "everything is an object".

I agree with that.

How does this agreement...

I agree with: "... D supports an unusually large number of paradigms for a programming".
 According to this:
 http://en.wikipedia.org/wiki/Comparison_of_programming_languages

 Most languages are multi-paradigm.

 Smalltalk: concurrent, declarative, event-driven, object-oriented,
 reflective

 Java: generic, imperative, object-oriented, reflective

 Go: concurrent, imperative

 Haskell: functional, generic, lazy evaluation

... go with this? I mean if the purpose is to argue petty details, sure. But "concurrent" or "reflective" are hardly paradigms, Java does not allow one to write a free function (which stands in the way of it being imperative), and in Haskell "functional" and "lazy evaluation" are not options, they're _always on_. Andrei

I'm just listing what's on the wikipedia page, as Walter did. -- /Jacob Carlborg
Nov 15 2011
prev sibling parent reply RivenTheMage <riven-mage id.ru> writes:
 If using multiple paradigms is reasonably natural and convenient in that
 language.

 D: imperative, OOP, metaprogramming, functional, assembler, script

Zero-paradigm? In the sense that the D language supports almost all popular paradigms.
Nov 15 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 12:01 PM, RivenTheMage wrote:
 If using multiple paradigms is reasonably natural and convenient in that
 language.

 D: imperative, OOP, metaprogramming, functional, assembler, script

Zero-paradigm? In the sense that the D language supports almost all popular paradigms.

That's quite an interesting angle. Andrei
Nov 15 2011
prev sibling parent reply Daniel Gibson <metalcaedes gmail.com> writes:
Am 15.11.2011 02:29, schrieb Jonathan M Davis:
 I think that C++ is really the only language that I've heard termed multi-
 paradigm (though most languages do allow for multiple paradigms on some level,
 even if they tend to focus heavily on one), and D definitely deserves that
 designation as well.

 - Jonathan M Davis

Scala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language) Cheers, - Daniel
Nov 15 2011
next sibling parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 15/11/11 9:31 PM, Daniel Gibson wrote:
 Am 15.11.2011 02:29, schrieb Jonathan M Davis:
 I think that C++ is really the only language that I've heard termed
 multi-
 paradigm (though most languages do allow for multiple paradigms on
 some level,
 even if they tend to focus heavily on one), and D definitely deserves
 that
 designation as well.

 - Jonathan M Davis

Scala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language) Cheers, - Daniel

But wait, there's more! http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languages
Nov 15 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/15/2011 1:52 PM, Peter Alexander wrote:
 But wait, there's more!

 http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languages

I think those characterizations are rather generous. Just try and make a data structure that is not OOP in Java.
Nov 15 2011
parent Peter Alexander <peter.alexander.au gmail.com> writes:
On 15/11/11 9:57 PM, Walter Bright wrote:
 On 11/15/2011 1:52 PM, Peter Alexander wrote:
 But wait, there's more!

 http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languages

I think those characterizations are rather generous. Just try and make a data structure that is not OOP in Java.

I agree, but I don't think our opinions matter all that much. Clearly there are people out there that think that Java is multi-paradigm, so selling D as multi-paradigm doesn't say much to those people. For all they know, D could just be another imperative OOP language.
Nov 15 2011
prev sibling next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 1:31 PM, Daniel Gibson wrote:
 Am 15.11.2011 02:29, schrieb Jonathan M Davis:
 I think that C++ is really the only language that I've heard termed
 multi-
 paradigm (though most languages do allow for multiple paradigms on
 some level,
 even if they tend to focus heavily on one), and D definitely deserves
 that
 designation as well.

 - Jonathan M Davis

Scala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language)

I'd agree with that characterization. Andrei
Nov 15 2011
prev sibling next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/15/2011 1:31 PM, Daniel Gibson wrote:
 Scala is also termed a "multi-paradigm programming language", see
 http://en.wikipedia.org/wiki/Scala_(programming_language)

Scala's multi-paradigms are OOP and functional. Yet it doesn't support function purity or immutable data. Having a syntax for lambdas doesn't make a language functional. I know few people share my opinion about that, but it seems that functional is used a lot as a buzzword.
Nov 15 2011
next sibling parent reply Daniel Gibson <metalcaedes gmail.com> writes:
Am 15.11.2011 22:54, schrieb Walter Bright:
 On 11/15/2011 1:31 PM, Daniel Gibson wrote:
 Scala is also termed a "multi-paradigm programming language", see
 http://en.wikipedia.org/wiki/Scala_(programming_language)

Scala's multi-paradigms are OOP and functional. Yet it doesn't support function purity or immutable data. Having a syntax for lambdas doesn't make a language functional. I know few people share my opinion about that, but it seems that functional is used a lot as a buzzword.

I have never used Scala but only heard about it and skimmed over the wikipedia article. Technically it may not support functional programming because it lacks function purity and immutable data, but judging from the code example it has the look and feel of functional programming - the qsort example (which is no real quicksort of course) looks very much like Haskell (pattern matching etc). D2 on the other hand support pure functions and immutable data, but it doesn't look and feel like a "normal" functional language. I guess people used to OO programming, (C++-style) Metaprogramming or imperative programming feel at home with D and its support for "their" paradigms, but people coming from Haskell or similar languages will probably have a hard time using their style of code with D2 - while they probably feel more at home with Scala, even though D2 supports real functional programming and Scala doesn't. Cheers, - Daniel
Nov 15 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/15/2011 11:16 PM, Daniel Gibson wrote:
 Am 15.11.2011 22:54, schrieb Walter Bright:
 On 11/15/2011 1:31 PM, Daniel Gibson wrote:
 Scala is also termed a "multi-paradigm programming language", see
 http://en.wikipedia.org/wiki/Scala_(programming_language)

Scala's multi-paradigms are OOP and functional. Yet it doesn't support function purity or immutable data. Having a syntax for lambdas doesn't make a language functional. I know few people share my opinion about that, but it seems that functional is used a lot as a buzzword.

I have never used Scala but only heard about it and skimmed over the wikipedia article. Technically it may not support functional programming because it lacks function purity and immutable data, but judging from the code example it has the look and feel of functional programming - the qsort example (which is no real quicksort of course) looks very much like Haskell (pattern matching etc). D2 on the other hand support pure functions and immutable data, but it doesn't look and feel like a "normal" functional language. I guess people used to OO programming, (C++-style) Metaprogramming or imperative programming feel at home with D and its support for "their" paradigms, but people coming from Haskell or similar languages will probably have a hard time using their style of code with D2

That is partly because the current GC cannot handle huge loads of tiny, short-lived objects as well as deeply linked data structures. And because strictly immutable (or even just const, for that matter) data does not pair well with lazy evaluation. I don't really like the fact that D reserves the 'lazy' keyword to mean call by name, there would be some nice potential in actually supporting lazy evaluation.
 - while they probably feel more at home with Scala, even though D2 supports
real
 functional programming and Scala doesn't.

I think referential transparency is also quite useful for FP, but it is impossible to support without lazy evaluation.
Nov 15 2011
prev sibling next sibling parent Max Klyga <max.klyga gmail.com> writes:
On 2011-11-16 00:54:17 +0300, Walter Bright said:

 On 11/15/2011 1:31 PM, Daniel Gibson wrote:
 Scala is also termed a "multi-paradigm programming language", see
 http://en.wikipedia.org/wiki/Scala_(programming_language)

Scala's multi-paradigms are OOP and functional. Yet it doesn't support function purity or immutable data. Having a syntax for lambdas doesn't make a language functional. I know few people share my opinion about that, but it seems that functional is used a lot as a buzzword.

These days a language is considered functional if it has features found in ML descendand languages (expressive type system, type inference, pattern matching, modules, etc.) Though quite a few people accociate functional programming with higher order functions and lambdas.
Nov 15 2011
prev sibling next sibling parent Jeff Nowakowski <jeff dilacero.org> writes:
On 11/15/2011 04:54 PM, Walter Bright wrote:
 Scala's multi-paradigms are OOP and functional.

 Yet it doesn't support function purity or immutable data. Having a
 syntax for lambdas doesn't make a language functional. I know few people
 share my opinion about that, but it seems that functional is used a lot
 as a buzzword.

Alan Kay on C++: "Actually I made up the term 'object-oriented', and I can tell you I did not have C++ in mind." You can argue all you want whether Scala is /really/ functional, or if C++ is /really/ object-oriented, but what is clear is that they have both borrowed ideas from the different styles, and are not singularly dogmatic as a single-paradigm language would suggest.
Nov 15 2011
prev sibling parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 15/11/11 9:54 PM, Walter Bright wrote:
 On 11/15/2011 1:31 PM, Daniel Gibson wrote:
 Scala is also termed a "multi-paradigm programming language", see
 http://en.wikipedia.org/wiki/Scala_(programming_language)

Scala's multi-paradigms are OOP and functional. Yet it doesn't support function purity or immutable data. Having a syntax for lambdas doesn't make a language functional. I know few people share my opinion about that, but it seems that functional is used a lot as a buzzword.

Scala does support function purity (you can write pure functions) and immutable data (you can create data that you don't write to), it just doesn't statically check either of those things :-) As you say, you know few people that share your opinion, so is that an opinion we want to put forward on the front page?
Nov 15 2011
next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/15/2011 10:55 PM, Peter Alexander wrote:
 Scala does support function purity (you can write pure functions) and immutable
 data (you can create data that you don't write to), it just doesn't statically
 check either of those things :-)

That's like saying Python supports static typing, it just never checks it!
 As you say, you know few people that share your opinion, so is that an opinion
 we want to put forward on the front page?

I don't think we should write "Scala is not a functional programming language" on the front page, or make any comments about other languages.
Nov 16 2011
parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/16/2011 12:34 AM, Jonathan M Davis wrote:
 On Wednesday, November 16, 2011 00:23:09 Walter Bright wrote:
 That's like saying Python supports static typing, it just never checks it!

While I don't know scala, I think that there's a _big_ difference between a language that supports a style of programming which is functional except for its lack immutability and saying that a dynamically typed language supports static typing.

Here's an analogy maybe that is more palatable. Let's say a language says it supports "memory safe" programming. But it never checks it. Would you say, then, that C "supports" memory safe programming, because if you're super careful and never make any mistakes, it is memory safe? I'd be a laughingstock if I made such a claim. I would say that C doesn't prevent you from writing memory safe programs, but not that it supported it. There is no support in C for it.
Nov 16 2011
prev sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Wednesday, November 16, 2011 00:23:09 Walter Bright wrote:
 On 11/15/2011 10:55 PM, Peter Alexander wrote:
 Scala does support function purity (you can write pure functions) and
 immutable data (you can create data that you don't write to), it just
 doesn't statically check either of those things :-)

That's like saying Python supports static typing, it just never checks it!

While I don't know scala, I think that there's a _big_ difference between a language that supports a style of programming which is functional except for its lack immutability and saying that a dynamically typed language supports static typing. Immutability is an important part of functional programming, but you can program functionally without having any immutability. But you seem to much more inclined to consider something pointless or useless if the compiler doesn't enforce it than most programmers are (e.g. const in C++). I'd argue that stuff like auto result = map!foo(filter!bar(range)); is most definitely functional even if there's no immutability involved at all. - Jonathan M Davis
Nov 16 2011
prev sibling parent reply Somedude <lovelydear mailmetrash.com> writes:
Le 15/11/2011 22:31, Daniel Gibson a écrit :
 Am 15.11.2011 02:29, schrieb Jonathan M Davis:
 I think that C++ is really the only language that I've heard termed
 multi-
 paradigm (though most languages do allow for multiple paradigms on
 some level,
 even if they tend to focus heavily on one), and D definitely deserves
 that
 designation as well.

 - Jonathan M Davis

Scala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language) Cheers, - Daniel

Nov 17 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/17/2011 11:00 AM, Somedude wrote:
 And Ocaml too: functional + generic + OOP

To me, multi-paradigm means I can switch paradigms. Ocaml is functional, there's no switching away from that.
Nov 19 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/19/2011 03:21 PM, Walter Bright wrote:
 To me, multi-paradigm means I can switch paradigms. Ocaml is functional,
 there's no switching away from that.

What does that even mean? Are you thinking of Haskell? OCaml has object-oriented features and allows imperative constructs.
Nov 19 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/19/2011 3:41 PM, Jeff Nowakowski wrote:
 On 11/19/2011 03:21 PM, Walter Bright wrote:
 To me, multi-paradigm means I can switch paradigms. Ocaml is functional,
 there's no switching away from that.

What does that even mean? Are you thinking of Haskell? OCaml has object-oriented features and allows imperative constructs.

If a language has all variables being immutable, then the functional aspect of it is not something you can move away from, hence the functional aspect would not contribute to multi-paradigm-ness. If I could use a language with mutable variables, or use that same language with immutable variables, then that would be multi-paradigm.
Nov 19 2011
next sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/19/2011 07:02 PM, Walter Bright wrote:
 If a language has all variables being immutable, then the functional
 aspect of it is not something you can move away from

This is just wrong: http://caml.inria.fr/pub/docs/manual-ocaml/manual003.html#toc8 The whole point of OCaml is that it is NOT pure like Haskell. If you need to be imperative it has full support for it.
Nov 19 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/19/2011 4:49 PM, Jeff Nowakowski wrote:
 On 11/19/2011 07:02 PM, Walter Bright wrote:
 If a language has all variables being immutable, then the functional
 aspect of it is not something you can move away from

This is just wrong: http://caml.inria.fr/pub/docs/manual-ocaml/manual003.html#toc8 The whole point of OCaml is that it is NOT pure like Haskell. If you need to be imperative it has full support for it.

Since OCaml allows both mutable and immutable state, I stand corrected in regards to OCaml. But my point still stands. For example, Java has been called "multi-paradigm" because it supports OOP and Imperative. But there's no getting away from OOP in Java. All data structures are Objects. Even arrays are Objects. Hence, OOP in Java cannot be considered an alternative paradigm for Java.
Nov 19 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/19/2011 08:00 PM, Walter Bright wrote:
 Since OCaml allows both mutable and immutable state, I stand corrected
 in regards to OCaml. But my point still stands.

What point? This sub-thread was about OCaml.
 For example, Java has been called "multi-paradigm" because it supports
 OOP and Imperative. But there's no getting away from OOP in Java. All
 data structures are Objects. Even arrays are Objects. Hence, OOP in Java
 cannot be considered an alternative paradigm for Java.

Primitives are not objects, and arrays are specialized objects with language support. Java also supports procedural programming with static methods. It also supports checking reference equality with ==, which is not OO at all. If all you wanted to do was treat Java as a procedural language, you could. You'd pay an object tax on memory, but other than that, the procedural style is very easy to do. All these OO escape hatches were built into the language intentionally, quite unlike Smalltalk. Besides all this, Java is going to be the weakest language to pick on for "multi-paradigm". Many other languages in today's programming landscape offer more variety. If you want to argue that D is special, then argue about it's support for functional purity. Even Scala doesn't have that. Just don't get into the quagmire of saying that Scala isn't multi-paradigm because it isn't /really/ functional. And I still say you should avoid the use of "multi-paradigm", because it sounds like a stupid buzzword. EXECUTIVE Oh, God, yes. We're talking about a totally outrageous paradigm. MEYER Excuse me, but "proactive" and "paradigm"? Aren't these just buzzwords that dumb people use to sound important? Not that I'm accusing you of anything like that. I'm fired, aren't I? MEYERS Oh, yes.
Nov 19 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/19/2011 5:53 PM, Jeff Nowakowski wrote:
 Primitives are not objects, and arrays are specialized objects with language
 support. Java also supports procedural programming with static methods. It also
 supports checking reference equality with ==, which is not OO at all. If all
you
 wanted to do was treat Java as a procedural language, you could. You'd pay an
 object tax on memory, but other than that, the procedural style is very easy
to do.

I don't agree. You cannot have any data structures in Java that are not OOP. You've really got to stretch to call Java multiparadigm.
 All these OO escape hatches were built into the language intentionally, quite
 unlike Smalltalk. Besides all this, Java is going to be the weakest language to
 pick on for "multi-paradigm". Many other languages in today's programming
 landscape offer more variety.

Haskell, Ruby, Python don't, for example.
 If you want to argue that D is special, then argue about it's support for
 functional purity. Even Scala doesn't have that. Just don't get into the
 quagmire of saying that Scala isn't multi-paradigm because it isn't /really/
 functional.

I'll argue in this n.g. that Scala isn't functional, but I don't intend to do so on the web site or write any articles about Scala.
 And I still say you should avoid the use of "multi-paradigm",
 because it sounds like a stupid buzzword.

It's misused a lot, to be sure. But we are using it correctly. D really is multi-paradigm. There is no stretching of the term to make it fit.
Nov 19 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/19/2011 11:27 PM, Walter Bright wrote:
 I don't agree. You cannot have any data structures in Java that are not
 OOP. You've really got to stretch to call Java multiparadigm.

You've got a very binary view on things. Object-oriented programming is about encapsulating data via methods and inheritance. If all you've got is primitive types, arrays, objects with fields only, and static procedures along with reference equality then you've got a classic, procedural program. The only thing you've paid for is a tiny bit of object memory overhead.
 Haskell, Ruby, Python don't, for example.

Haskell is *the* single-paradigm functional language, and I've already stated it is. Both Python and Ruby offer functional support, as well as support for objects.
 I'll argue in this n.g. that Scala isn't functional, but I don't intend
 to do so on the web site or write any articles about Scala.

In your binary thinking world, Scala doesn't support functional programming. Yet the outside world sees that it does, so any marketing along the lines of D being "multi-paradigm" isn't going to be unique.
 It's misused a lot, to be sure. But we are using it correctly. D really
 is multi-paradigm. There is no stretching of the term to make it fit.

It's a stupid sounding buzzword because average people don't use it in everyday conversation. They use simpler, more common words like "model" or "style". It's like when the marketing droids came up with the word "leverage" and starting using it everywhere in place of "use".
Nov 20 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/20/2011 7:28 AM, Jeff Nowakowski wrote:
 Yet
 the outside world sees that it does, so any marketing along the lines of D
being
 "multi-paradigm" isn't going to be unique.

I am not arguing that D being multi-paradigm is unique. I would argue that it arguably supports more paradigms than any other language. My view of what is multi-paradigm isn't binary, I know there's a continuum. But I think that saying Java supports imperative programming is quite a stretch. Saying Scala supports functional is also a stretch, because it supports only one of the three defining characteristics of functional programming. It doesn't even support the other two in a half-assed manner, it doesn't support them at all. I didn't invent my own definition of functional programming. I am using the standard definition that anyone can look up. I don't see that as being unreasonable, binary, or misusing the term.
 It's a stupid sounding buzzword because average people don't use it in everyday
 conversation. They use simpler, more common words like "model" or "style". It's
 like when the marketing droids came up with the word "leverage" and starting
 using it everywhere in place of "use".

Back around 1990, OOP was the hot buzzword of the day. Everyone started calling their product "object oriented". Every programming language was tortured into being object oriented (even Fortran!), databases were re-documented as object oriented, even operating systems were touted as object oriented. It did become a joke after a while to call something object oriented. Fortunately, after a while, the noise passed and OOP reverted to just another paradigm among many. I see an echo of that today in calling Java multi-paradigm, which I find hilariously ironic as Java was designed during the apex of the OOP hype and was certainly designed to buy into OOP lock, stock and barrel. But I am not seeing multi-paradigm jargon hype as nearly as pervasive as the OOP fever was. (In another of the great ironies, the kickoff of the Great OOP Boom was, you guessed it, C++. C++ led the charge for OOP. And yet, at the height of OOP, C++ abruptly turned left and went to parametric polymorphism, i.e. template metaprogramming. You don't see much of anything written about C++'s OOP abilities any more.)
Nov 20 2011
next sibling parent Peter Alexander <peter.alexander.au gmail.com> writes:
On 20/11/11 8:15 PM, Walter Bright wrote:
 My view of what is multi-paradigm isn't binary, I know there's a
 continuum. But I think that saying Java supports imperative programming
 is quite a stretch. Saying Scala supports functional is also a stretch,
 because it supports only one of the three defining characteristics of
 functional programming. It doesn't even support the other two in a
 half-assed manner, it doesn't support them at all.

 I didn't invent my own definition of functional programming. I am using
 the standard definition that anyone can look up. I don't see that as
 being unreasonable, binary, or misusing the term.

I don't disagree with you, but the fact of the matter is that Scala is considered a functional programming language. Its website says it, wikipedia says, and people that talk about Scala say it.
Nov 20 2011
prev sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
Walter:

 Saying Scala supports functional is also a stretch, because it supports only
one 
 of the three defining characteristics of functional programming. It doesn't
even 
 support the other two in a half-assed manner, it doesn't support them at all.
 
 I didn't invent my own definition of functional programming. I am using the 
 standard definition that anyone can look up. I don't see that as being 
 unreasonable, binary, or misusing the term.

This is an interesting discussion topic. Scala is widely regarded as a rather functional language (more than C#, less than F# and OCaML and Haskell). Why is Scala perceived as quite functional? 1) It has pattern matching, lazy stream lists similar to Haskell lists, its standard library is rather functional oriented, its has better type inference, is has a very powerful type system that allows to express lot of static invariants, and generally Scala encourages to use immutability over mutability, there are immutable collections too in its standard library, and they are preferred. All this makes Scala rather handy for functional programming despite it lacks "true" immutability and true purity. 2) It's a matter of syntax too. Scala has optional parenthesys, and other sylistic features that are pleasant for functional programming. While if you try to use a functional-style programming in D you often produce unreadable lines of code. I have shown this several times in the D newsgroup but nearly nobody seemed to care. 3) It's a bit a matter of perception too. People think of it as partially functional because lot of people do it, and it is advertised for this. Around it there are functional programmers too, even academic ones. Regarding D immutability and purity, often you can't put a map() in a pure function, and many Phobos functions don't work with const/immutable data. This makes D almost a joke for functional programming. This side of D will improve, but Scala is there already. import std.algorithm: map, filter; int foo(immutable int x) pure nothrow { return 1; } void main() pure { immutable data = [1, 2, 3]; auto m1 = map!((x){ return 1; })(data); // OK auto m2 = map!((int x){ return 1; })(data); // OK auto m3 = map!q{ 1 }(data); // error, map is not pure auto m4 = map!foo(data); // error, map is not pure //------------ auto f1 = filter!((x){ return 1; })(data); // OK auto f2 = filter!((int x){ return 1; })(data); // OK auto f3 = filter!q{ 1 }(data); // error, filter is not pure auto f4 = filter!foo(data); // error, filter is not pure } Bye, bearophile
Nov 20 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/20/11 5:05 PM, bearophile wrote:
 This is an interesting discussion topic. Scala is widely regarded as
 a rather functional language (more than C#, less than F# and OCaML
 and Haskell). Why is Scala perceived as quite functional?

Marketing. Scala is most often contrasted with Java, so since it has lambdas, higher-order functions, and free functions, it is "more functional" than Java.
 1) It has pattern matching, lazy stream lists similar to Haskell
 lists, its standard library is rather functional oriented, its has
 better type inference,

Not a functional thing.
 is has a very powerful type system that
 allows to express lot of static invariants,

Not a functional thing.
 and generally Scala
 encourages to use immutability over mutability,

There is no data immutability beyond "final". I am surprised that I get to destroy with this even programmers who pretend to know Scala quite well.
 there are immutable
 collections too in its standard library,

Most languages allow defining a collection interface that disallows change to individual elements.
 and they are preferred.

We're talking about support, not preference.
 All
 this makes Scala rather handy for functional programming despite it
 lacks "true" immutability and true purity.

For someone coming from Java, sure.
 2) It's a matter of syntax too. Scala has optional parenthesys, and
 other sylistic features that are pleasant for functional
 programming.

Optional parens are not a functional things. In fact it's supremely ironic to sustain otherwise because Lisp is the forefather of all functional languages...
 While if you try to use a functional-style programming
 in D you often produce unreadable lines of code. I have shown this
 several times in the D newsgroup but nearly nobody seemed to care.

In D you have a bit more of a difficult time producing compelling examples. This is because D is multi-paradigm so your D functional example must compete with a variety of other possible approaches, of which often a different style leads to a simpler approach. In contrast, in e.g. Haskell getting something done in a functional manner is pretty much the only way to do it so there's no more discussion. From what I saw there is a pattern of debate that goes like this: bearophile: "I took this functional example in language X and translated in D. The original X code is this: [weird mess]. The translation is this: [weirder mess]. The D version looks bad and is slower, too!" someone else: "They why the hell don't you solve the problem like this: [simple code mixing paradigms]? It's smaller, simpler, and faster!"
 3) It's a bit a matter of perception too. People think of it as
 partially functional because lot of people do it, and it is
 advertised for this. Around it there are functional programmers too,
 even academic ones.

 Regarding D immutability and purity, often you can't put a map() in
 a pure function, and many Phobos functions don't work with
 const/immutable data. This makes D almost a joke for functional
 programming. This side of D will improve, but Scala is there
 already.

So let me make sure I understand: you find D's support for pure and immutable insufficient (something I agree with), but Scala is "there already" because it doesn't have any notion of pure and immutability?
 import std.algorithm: map, filter;
 int foo(immutable int x) pure nothrow {
     return 1;
 }
 void main() pure {
     immutable data = [1, 2, 3];
     auto m1 = map!((x){ return 1; })(data);     // OK
     auto m2 = map!((int x){ return 1; })(data); // OK
     auto m3 = map!q{ 1 }(data); // error, map is not pure
     auto m4 = map!foo(data);    // error, map is not pure
     //------------
     auto f1 = filter!((x){ return 1; })(data);     // OK
     auto f2 = filter!((int x){ return 1; })(data); // OK
     auto f3 = filter!q{ 1 }(data); // error, filter is not pure
     auto f4 = filter!foo(data);    // error, filter is not pure
 }

This would make a solid bug report. Thanks, Andrei
Nov 20 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-21 00:31, Andrei Alexandrescu wrote:
 On 11/20/11 5:05 PM, bearophile wrote:
 This is an interesting discussion topic. Scala is widely regarded as
 a rather functional language (more than C#, less than F# and OCaML
 and Haskell). Why is Scala perceived as quite functional?

Marketing. Scala is most often contrasted with Java, so since it has lambdas, higher-order functions, and free functions, it is "more functional" than Java.
 1) It has pattern matching, lazy stream lists similar to Haskell
 lists, its standard library is rather functional oriented, its has
 better type inference,

Not a functional thing.

You used this point as one of four when you described what's needed to categorize a language as functional at one of your talks with Herb and Scott posted here recently. The other three were: lambdas, immutability and purity. Which would mean that Scala fulfills, at least, two of your requirements. -- /Jacob Carlborg
Nov 20 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/21/11 1:47 AM, Jacob Carlborg wrote:
 On 2011-11-21 00:31, Andrei Alexandrescu wrote:
 On 11/20/11 5:05 PM, bearophile wrote:
 This is an interesting discussion topic. Scala is widely regarded as
 a rather functional language (more than C#, less than F# and OCaML
 and Haskell). Why is Scala perceived as quite functional?

Marketing. Scala is most often contrasted with Java, so since it has lambdas, higher-order functions, and free functions, it is "more functional" than Java.
 1) It has pattern matching, lazy stream lists similar to Haskell
 lists, its standard library is rather functional oriented, its has
 better type inference,

Not a functional thing.

You used this point as one of four when you described what's needed to categorize a language as functional at one of your talks with Herb and Scott posted here recently. The other three were: lambdas, immutability and purity. Which would mean that Scala fulfills, at least, two of your requirements.

Type inference was not one of the things I mentioned. Andrei
Nov 20 2011
prev sibling parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/20/2011 07:20 AM, Derek wrote:
 On Sun, 20 Nov 2011 11:02:14 +1100, Walter Bright
 <newshound2 digitalmars.com> wrote:

 ... all variables being immutable ...

LOL, nice oxymoron.

http://en.wikipedia.org/wiki/Variable_%28mathematics%29
Nov 20 2011
prev sibling next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Monday, November 14, 2011 17:05:19 Andrei Alexandrescu wrote:
 On 11/14/11 5:01 PM, Jeff Nowakowski wrote:
 On 11/14/2011 04:52 PM, Walter Bright wrote:
 Many newly-designed languages are wrapped around a single paradigm,
 and
 they set a store by being so. D most assuredly and pointedly has
 different take on that.

As do languages like Go, C++, and Scala. "multi-paradigm" is "completely and fatuously generic", to use your words.

That doesn't seem the case to me at all. Multi-paradigm programming language has a rather precise meaning - it's a language that allows several of the classic programming styles (functional, object-oriented, procedural, generic).
 This is *my* I told you so
 moment. How many different people have keyed in on this stupid buzzword?

Not a lot. At least in the circles I frequent it is acknowledged that C++ is multi-paradigm (there's even a book with the phrase in the title) and most other languages are not.

I think that the problem is that it _sounds_ like a buzzword and it's not a term that enough programmers have thought about. If you aren't actually familiar with a variety of paradigms, then it doesn't really mean anything to you - particularly since you'll be able to use a multi-paradigm language in whatever paradigm you're used to. Multi-paradigm means a lot, and if anything, I'd argue that D is _more_ multi- paradigm than C++ (particularly C++ 98), so that's a definite selling point. But if it's not a term that you've thought about before or which really means something to you, then it's just going to sound like a stupid buzzword. I think that C++ is really the only language that I've heard termed multi- paradigm (though most languages do allow for multiple paradigms on some level, even if they tend to focus heavily on one), and D definitely deserves that designation as well. - Jonathan M Davis
Nov 14 2011
prev sibling next sibling parent "Marco Leise" <Marco.Leise gmx.de> writes:
Am 15.11.2011, 14:35 Uhr, schrieb Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org>:

 Java does not allow one to write a free function
 (which stands in the way of it being imperative)

As long as one doesn't try to do 'functional' programming, free functions in Java can often be conceptually be bound to a certain class. So they'd simply be static methods, which resembles free functions with namespaces. JavaScript is even harder to describe. You can write and call free functions, but they actually end up as properties in the global object. They are hybrid.
Nov 15 2011
prev sibling parent Derek <ddparnell bigpond.com> writes:
On Sun, 20 Nov 2011 11:02:14 +1100, Walter Bright  
<newshound2 digitalmars.com> wrote:

 ... all variables being immutable ...

LOL, nice oxymoron. -- Derek Parnell Melbourne, Australia
Nov 19 2011
prev sibling parent reply Michel Fortin <michel.fortin michelf.com> writes:
On 2011-11-14 21:52:30 +0000, Walter Bright <newshound2 digitalmars.com> said:

 On 11/14/2011 11:41 AM, Michel Fortin wrote:
 - Convenience
 - Power
 - Efficiency

My problem with those three are those are the goals of every single computer language ever invented. They are completely and fatuously generic.

Very true. I wasn't really suggesting we use the words from this list, it was more an attempt at exposing how little they meant compared to the other triplet.
  > - Modern convenience
 
 "Modern" implies using the latest ideas and techniques in computer 
 languages. Modern has been used successfully in Andrei's books to 
 convey that, which is why I suggested using the word.
 
  > - Multi-paradigm power
 
 Many newly-designed languages are wrapped around a single paradigm, and 
 they set a store by being so. D most assuredly and pointedly has 
 different take on that.
 
  > - Native efficiency
 
 Most (nearly all?) new languages are targeted at a VM. Being native is 
 clearly a distinguishing feature of D.

Personally I rather like Modern, Multi-paradigm, and Native. It's convenience, power, and efficency I'd rather remove, because they are fatuously generic (your words) and effectively dilute what you're trying to convey, at least when *I* read. Beside, it should be telling that in each of your three descriptions above, you talked about what it meant being modern, you talked about single-paradigm languages, and about being native vs. VM. Nowhere did you mention convenience, power, and efficiency… perhaps because those are too generic or too implicit to talk about. -- Michel Fortin michel.fortin michelf.com http://michelf.com/
Nov 14 2011
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/14/2011 6:30 PM, Michel Fortin wrote:
 Personally I rather like Modern, Multi-paradigm, and Native. It's convenience,
 power, and efficency I'd rather remove, because they are fatuously generic
(your
 words) and effectively dilute what you're trying to convey, at least when *I*
read.

That's a good point.
 Beside, it should be telling that in each of your three descriptions above, you
 talked about what it meant being modern, you talked about single-paradigm
 languages, and about being native vs. VM. Nowhere did you mention convenience,
 power, and efficiency… perhaps because those are too generic or too implicit
to
 talk about.

Yes. Ted Neward once wrote an article where he complained that every single language promoted itself as "improving productivity", rendering the term utterly meaningless. It's like advertising Brand X Soap as "washes the dirt off!" When people first look at D, they need a reason to want to look further, meaning that there needs to be something there that immediately distinguishes D from other languages - something that will pique their curiosity.
Nov 14 2011
parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 15/11/11 3:40 AM, Walter Bright wrote:
 When people first look at D, they need a reason to want to look further,
 meaning that there needs to be something there that immediately
 distinguishes D from other languages - something that will pique their
 curiosity.

I think we need a short description of the language rather than those 3 key phrases with long descriptions. All other language sites seem to state their goal in a couple of short, concise sentences. Some examples: Ruby - "Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write." Python - "Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs." Scala - "Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive. Code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application." Haskell - "Haskell is an advanced purely-functional programming language. An open-source product of more than twenty years of cutting-edge research, it allows rapid development of robust, concise, correct software. With strong support for integration with other languages, built-in concurrency and parallelism, debuggers, profilers, rich libraries and an active community, Haskell makes it easier to produce flexible, maintainable, high-quality software." --- The current site is a wall of text that takes too long to tell me *what* D is. There needs to be some sort of "D at a glance" that explains what the language is without going into details. A quick example (could be better) "D is a multi-paradigm, type-safe, natively compiled programming language with a focus on pragmatism. D programs run as fast as those written in C or C++ without the tedium of manual memory management, verbose syntax or unsafe semantics." It would then have a "Read More..." link that leads to a more complete list of D's key features. There would also be a short (~10 lines) code example that demonstrates D's concise syntax (type deduction and CTFE/metaprogramming via string mixins could be demonstrated quickly).
Nov 15 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters. Andrei
Nov 15 2011
next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:j9tpa6$1icu$1 digitalmars.com...
 On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters.

That's not bad, but I think it's an absolute shame to loose this, which I've always thought was perfect (well, with "functional" added to the list of progrmming styles in paragraph 2): -------------- D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. The D language is statically typed and compiles directly to machine code. It's multiparadigm, supporting many programming styles: imperative, object oriented, and metaprogramming. It's a member of the C syntax family, and its appearance is very similar to that of C++. Here's a quick list of features. It is not governed by a corporate agenda or any overarching theory of programming. -------------- FWIW, I *really* think that should stay there, right between "The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." and the "Modern convenience" section. (Note, I did remove the last sentence: "The needs and contributions of the D programming community form the direction it goes." since, at this point, the langauge has pretty much solidified.)
Nov 15 2011
next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 6:09 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:j9tpa6$1icu$1 digitalmars.com...
 On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters.

That's not bad, but I think it's an absolute shame to loose this, which I've always thought was perfect (well, with "functional" added to the list of progrmming styles in paragraph 2): -------------- D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. The D language is statically typed and compiles directly to machine code. It's multiparadigm, supporting many programming styles: imperative, object oriented, and metaprogramming. It's a member of the C syntax family, and its appearance is very similar to that of C++. Here's a quick list of features. It is not governed by a corporate agenda or any overarching theory of programming. -------------- FWIW, I *really* think that should stay there, right between "The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." and the "Modern convenience" section.

But that adds more text to the "wall of text". How do we address that? The point of the current design is to have three strong points, followed by substantiation for each. It's simple and if anything the substantiations are too wordy. Text like the above is not bad but should be moved to a more literary introduction to the language. Andrei
Nov 15 2011
prev sibling next sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-11-15 15:09, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:j9tpa6$1icu$1 digitalmars.com...
 On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters.

That's not bad, but I think it's an absolute shame to loose this, which I've always thought was perfect (well, with "functional" added to the list of progrmming styles in paragraph 2): -------------- D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. The D language is statically typed and compiles directly to machine code. It's multiparadigm, supporting many programming styles: imperative, object oriented, and metaprogramming. It's a member of the C syntax family, and its appearance is very similar to that of C++. Here's a quick list of features. It is not governed by a corporate agenda or any overarching theory of programming. --------------

I miss those paragraphs too. I always basically quote those paragraphs when explaining to someone what kind of language D is. -- /Jacob Carlborg
Nov 15 2011
prev sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 12:57 PM, so wrote:
 Contrary to some (not surprisingly), i *really* like "golang.org".

 It is simply precise.

 No twitter or facebook bs in the front page.
 I am guessing this is because they are rivals but still.

To me it looks like the connection dropped and the page hasn't loaded. The button "Community" is not aligned, but instead oddly centered below the others. The "Quick Links" aligns with the upper edge of the code frame, which is jarring because that frame also has textual title (which would be more natural to align other text with). I understand that the site tries its best to be simple, but it has unrelated issues. I don't think it's an example to follow. Andrei
Nov 19 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:jaac0l$1keu$1 digitalmars.com...
 On 11/15/11 12:57 PM, so wrote:
 Contrary to some (not surprisingly), i *really* like "golang.org".

 It is simply precise.

 No twitter or facebook bs in the front page.
 I am guessing this is because they are rivals but still.

To me it looks like the connection dropped and the page hasn't loaded. The button "Community" is not aligned, but instead oddly centered below the others.

Looks fine in FF2... (Heh, yea, I know...)
 The "Quick Links" aligns with the upper edge of the code frame, which is 
 jarring because that frame also has textual title (which would be more 
 natural to align other text with).

 I understand that the site tries its best to be simple, but it has 
 unrelated issues. I don't think it's an example to follow.


 Andrei 

Nov 20 2011
next sibling parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/20/2011 10:03 AM, Nick Sabalausky wrote:
 Looks fine in FF2... (Heh, yea, I know...)

There's nothing funny about running a browser that stopped getting security updates 3 years ago.
Nov 20 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jeff Nowakowski" <jeff dilacero.org> wrote in message 
news:jab7i5$o4t$1 digitalmars.com...
 On 11/20/2011 10:03 AM, Nick Sabalausky wrote:
 Looks fine in FF2... (Heh, yea, I know...)

There's nothing funny about running a browser that stopped getting security updates 3 years ago.

All Mozilla has to do is put out a browser with a UI that can be configured to *not* be worse than FF2. It's not as if that should be difficult for any team that doesn't have their heads up Chrome's ass.
Nov 20 2011
parent reply Jeff Nowakowski <jeff dilacero.org> writes:
On 11/20/2011 01:49 PM, Nick Sabalausky wrote:
 All Mozilla has to do is

Mozilla doesn't have to do anything. Why should they care that *you* are running with a browser 3 years out of security updates? According to Wikipedia [1], not even 1% of Firefox users out there still run version 2. [1] http://en.wikipedia.org/wiki/Firefox#Market_adoption Maybe you want to dispute the statistics, but I think you'll have a hard time coming up with anything significantly different.
Nov 20 2011
parent "Nick Sabalausky" <a a.a> writes:
"Jeff Nowakowski" <jeff dilacero.org> wrote in message 
news:jaboq8$269f$1 digitalmars.com...
 On 11/20/2011 01:49 PM, Nick Sabalausky wrote:
 All Mozilla has to do is

Mozilla doesn't have to do anything. Why should they care that *you* are running with a browser 3 years out of security updates? According to Wikipedia [1], not even 1% of Firefox users out there still run version 2. [1] http://en.wikipedia.org/wiki/Firefox#Market_adoption Maybe you want to dispute the statistics, but I think you'll have a hard time coming up with anything significantly different.

Well, whether Mozilla or not, some people obviously do care, considering the amount of crap I get from people (and websites) for using FF2. Besides, there's a *lot* of people that get irritated at newer versions of FF changing things without a "revert" option. Whether those people upgrade anyway or not, fact is, Mozilla's got it's head up it's ass - and doubly so if they keep pulling those stunts while still banging that load of crap "customizable/personalizable" drum.
Nov 20 2011
prev sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/20/11 9:03 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:jaac0l$1keu$1 digitalmars.com...
 On 11/15/11 12:57 PM, so wrote:
 Contrary to some (not surprisingly), i *really* like "golang.org".

 It is simply precise.

 No twitter or facebook bs in the front page.
 I am guessing this is because they are rivals but still.

To me it looks like the connection dropped and the page hasn't loaded. The button "Community" is not aligned, but instead oddly centered below the others.

Looks fine in FF2... (Heh, yea, I know...)

Not if you increase the font size. Andrei
Nov 20 2011
prev sibling parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 15/11/11 1:25 PM, Andrei Alexandrescu wrote:
 On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters. Andrei

I don't feel that those few words adequately introduce D. If a friend asked you what the D programming language was, you wouldn't reply with that headline, nor would you reply with several paragraphs of key features. You'd probably say something like "D is statically typed, natively compiled language with type deduction, automatic memory management, and clean C-family syntax. It focuses on pragmatism, safety, and powerful abstractions." You then might go on to list some other more specific features like metaprogramming, compile speeds, its approach to concurrency etc. That would probably be better on another page though. I just feel like that page is desperately trying to sell D, rather than just humbly introducing it and letting the language speak for itself.
Nov 15 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 11:51 AM, Peter Alexander wrote:
 On 15/11/11 1:25 PM, Andrei Alexandrescu wrote:
 On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters. Andrei

I don't feel that those few words adequately introduce D. If a friend asked you what the D programming language was, you wouldn't reply with that headline, nor would you reply with several paragraphs of key features. You'd probably say something like "D is statically typed, natively compiled language with type deduction, automatic memory management, and clean C-family syntax. It focuses on pragmatism, safety, and powerful abstractions." You then might go on to list some other more specific features like metaprogramming, compile speeds, its approach to concurrency etc. That would probably be better on another page though. I just feel like that page is desperately trying to sell D, rather than just humbly introducing it and letting the language speak for itself.

I don't think "letting the language speak for itself" works. People who are willing to get to that point are already interested. The challenge is having someone with only a fleeting curiosity get a quick overview of why they should become interested. We want to send a clear and crisp message about D. This is not about being humble vs. arrogant or whatnot. One very disingenuous argument I've seen is "as you use the language, you'll notice how you need features X and Y and don't feel the absence of Z". Nobody wants to spend months using a language to confirm or infirm such a hypothesis. From your message I distinguish eight keyphrases: - statically typed - natively compiled - type deduction - automatic memory management - C-family syntax - pragmatism - safety - powerful abstractions These are accurate, but eight is a lot of'em. How would you compress them in three powerful messages? Andrei
Nov 15 2011
parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 16/11/11 1:19 AM, Andrei Alexandrescu wrote:
 On 11/15/11 11:51 AM, Peter Alexander wrote:
 I just feel like that page is desperately trying to sell D, rather than
 just humbly introducing it and letting the language speak for itself.

I don't think "letting the language speak for itself" works. People who are willing to get to that point are already interested. The challenge is having someone with only a fleeting curiosity get a quick overview of why they should become interested. We want to send a clear and crisp message about D. This is not about being humble vs. arrogant or whatnot.

By "letting the language speak for itself" I mean that we shouldn't resort to desperate sales pitches: "Concurrency seems difficult? Fear no more." <-- cheesy sales pitch "True immutable data, no sharing by default, and controlled mutable sharing across threads." <-- letting the language speak
  From your message I distinguish eight keyphrases:

 - statically typed
 - natively compiled
 - type deduction
 - automatic memory management
 - C-family syntax
 - pragmatism
 - safety
 - powerful abstractions

 These are accurate, but eight is a lot of'em. How would you compress
 them in three powerful messages?

Why do we need three powerful messages? No other language website does that and I don't see why we should do it. Short introduction (like the one I already posted) + tiny code sample. import std.stdio; void main() { // 'line' statically deduced to string type foreach (line; File("text.txt").byLine()) writeln(line); } That tiny code sample demonstrates: - C-family syntax - Static typing - Type deduction - Automatic memory management - Powerful abstractions The missing things could easily be stated in any short paragraph.
Nov 15 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 11:21 PM, Peter Alexander wrote:
 On 16/11/11 1:19 AM, Andrei Alexandrescu wrote:
 On 11/15/11 11:51 AM, Peter Alexander wrote:
 I just feel like that page is desperately trying to sell D, rather than
 just humbly introducing it and letting the language speak for itself.

I don't think "letting the language speak for itself" works. People who are willing to get to that point are already interested. The challenge is having someone with only a fleeting curiosity get a quick overview of why they should become interested. We want to send a clear and crisp message about D. This is not about being humble vs. arrogant or whatnot.

By "letting the language speak for itself" I mean that we shouldn't resort to desperate sales pitches: "Concurrency seems difficult? Fear no more." <-- cheesy sales pitch "True immutable data, no sharing by default, and controlled mutable sharing across threads." <-- letting the language speak

Like.
 Why do we need three powerful messages? No other language website does
 that and I don't see why we should do it.

Because three is an excellent number for this kind of stuff as has been repeatedly shown.
 Short introduction (like the one I already posted) + tiny code sample.

 import std.stdio;
 void main()
 {
 // 'line' statically deduced to string type
 foreach (line; File("text.txt").byLine())
 writeln(line);
 }

 That tiny code sample demonstrates:
 - C-family syntax
 - Static typing
 - Type deduction
 - Automatic memory management
 - Powerful abstractions

 The missing things could easily be stated in any short paragraph.

An always visible example would be indeed good. Andrei
Nov 15 2011
prev sibling parent reply Daniel Gibson <metalcaedes gmail.com> writes:
Am 15.11.2011 09:37, schrieb Peter Alexander:
 A quick example (could be better)

 "D is a multi-paradigm, type-safe, natively compiled programming
 language with a focus on pragmatism. D programs run as fast as those
 written in C or C++ without the tedium of manual memory management,
 verbose syntax or unsafe semantics."

I like this (but maybe a short note that manual memory management and unsafe stuff is still possible). "The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." however sounds too buzzwordy IMHO. Regardless of the actual words used: This style of pseudo sentences only consisting of an adjective and a noun reminds me of annoying advertising slogans (there probably is a technical term for this, but I'm no linguist). And three of them in a row (or 4, if your count "The D programming language") hurt. Two or three short sentences (in the style of Peter's suggestion) are still short enough that everybody reads them (maybe important parts could be emphasized for everybody who is too lazy to read whole sentences), contain more information and look more serious than a line of pseudo-sentences that sound like taken from a TV commercial. Cheers, - Daniel
Nov 15 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/15/11 2:41 PM, Daniel Gibson wrote:
 Am 15.11.2011 09:37, schrieb Peter Alexander:
 A quick example (could be better)

 "D is a multi-paradigm, type-safe, natively compiled programming
 language with a focus on pragmatism. D programs run as fast as those
 written in C or C++ without the tedium of manual memory management,
 verbose syntax or unsafe semantics."

I like this (but maybe a short note that manual memory management and unsafe stuff is still possible). "The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." however sounds too buzzwordy IMHO. Regardless of the actual words used: This style of pseudo sentences only consisting of an adjective and a noun reminds me of annoying advertising slogans (there probably is a technical term for this, but I'm no linguist). And three of them in a row (or 4, if your count "The D programming language") hurt. Two or three short sentences (in the style of Peter's suggestion) are still short enough that everybody reads them (maybe important parts could be emphasized for everybody who is too lazy to read whole sentences), contain more information and look more serious than a line of pseudo-sentences that sound like taken from a TV commercial.

I understand this objection, and how it reminding of hackneyed ads can be annoying. I'd agree with if the slogan were inflated and insincere. But it really is a brief rendering of the most prominent features of D. If we go with a few sentences about D, any and all parts of those sentences can easily be forgotten. Andrei
Nov 15 2011
parent reply Daniel Gibson <metalcaedes gmail.com> writes:
Am 16.11.2011 02:24, schrieb Jude Young:
 I see one camp that is against using multi-paradigm on the basis that
 it sounds buzz-wordy, and another camp for using because it does
 actually mean something specific.

I'm not against calling D "multi paradigm", I'm just against the style of the "Modern convenience. Multi-paradigm power. Native efficiency." sentences. It *sounds* buzzwordy, regardless of the words. Even "Rusty bars. Heavy chains. Merciless guards." sounds like a cheap commercial ;) OTOH "D is a modern, powerful multi-paradigm programming language that combines the efficiency of native code with the convenience of modern languages like C#" contains all those buzzwords but doesn't sound as bad. Cheers, - Daniel
Nov 16 2011
parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
Hi,

the only issue with your sentence is that the "efficiency of native code" is 
also
possible with C#.

--
Paulo

"Daniel Gibson" <metalcaedes gmail.com> wrote in message 
news:ja10k6$27j8$1 digitalmars.com...
 Am 16.11.2011 02:24, schrieb Jude Young:
 I see one camp that is against using multi-paradigm on the basis that
 it sounds buzz-wordy, and another camp for using because it does
 actually mean something specific.

I'm not against calling D "multi paradigm", I'm just against the style of the "Modern convenience. Multi-paradigm power. Native efficiency." sentences. It *sounds* buzzwordy, regardless of the words. Even "Rusty bars. Heavy chains. Merciless guards." sounds like a cheap commercial ;) OTOH "D is a modern, powerful multi-paradigm programming language that combines the efficiency of native code with the convenience of modern languages like C#" contains all those buzzwords but doesn't sound as bad. Cheers, - Daniel

Nov 17 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
At any rate, I wouldn't want the D intro page to mention any other language.

Andrei

On 11/17/11 8:05 AM, Paulo Pinto wrote:
 Hi,

 the only issue with your sentence is that the "efficiency of native code" is
 also
 possible with C#.

 --
 Paulo

 "Daniel Gibson"<metalcaedes gmail.com>  wrote in message
 news:ja10k6$27j8$1 digitalmars.com...
 Am 16.11.2011 02:24, schrieb Jude Young:
 I see one camp that is against using multi-paradigm on the basis that
 it sounds buzz-wordy, and another camp for using because it does
 actually mean something specific.

I'm not against calling D "multi paradigm", I'm just against the style of the "Modern convenience. Multi-paradigm power. Native efficiency." sentences. It *sounds* buzzwordy, regardless of the words. Even "Rusty bars. Heavy chains. Merciless guards." sounds like a cheap commercial ;) OTOH "D is a modern, powerful multi-paradigm programming language that combines the efficiency of native code with the convenience of modern languages like C#" contains all those buzzwords but doesn't sound as bad. Cheers, - Daniel


Nov 17 2011
parent Daniel Gibson <metalcaedes gmail.com> writes:
 "Daniel Gibson"<metalcaedes gmail.com> wrote in message
 news:ja10k6$27j8$1 digitalmars.com...
 OTOH "D is a modern, powerful multi-paradigm programming language that
 combines the efficiency of native code with the convenience of modern
 languages like C#" contains all those buzzwords but doesn't sound as
 bad.



Am 17.11.2011 19:34, schrieb Andrei Alexandrescu:
 At any rate, I wouldn't want the D intro page to mention any other
 language.

 Andrei

Ok, agreed. Then just leave out the "like C#" :P The point was that these "buzzwords" don't sound that buzzwordy to me when used in proper sentences. Cheers, - Daniel
Nov 18 2011
prev sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Paulo Pinto" <pjmlp progtools.org> wrote in message 
news:ja3bcp$ied$1 digitalmars.com...
 Hi,

 the only issue with your sentence is that the "efficiency of native code" 
 is also
 possible with C#.

I used to do a fair amount of C# and...no, it isn't ;) At least not without a world of hurt. For example, try to read in a block of data and impose a structure over it without any unnecessary copying or processing and you'll see what I mean.
Nov 18 2011
next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Nick Sabalausky" <a a.a> wrote in message 
news:ja6042$230j$1 digitalmars.com...
 "Paulo Pinto" <pjmlp progtools.org> wrote in message 
 news:ja3bcp$ied$1 digitalmars.com...
 Hi,

 the only issue with your sentence is that the "efficiency of native code" 
 is also
 possible with C#.

I used to do a fair amount of C# and...no, it isn't ;) At least not without a world of hurt. For example, try to read in a block of data and impose a structure over it without any unnecessary copying or processing and you'll see what I mean.

It's better than Java though: At least C# actually *has* pointers.
Nov 18 2011
parent reply Paulo Pinto <pjmlp progtools.org> writes:
Am 18.11.2011 17:12, schrieb Nick Sabalausky:
 "Nick Sabalausky"<a a.a>  wrote in message
 news:ja6042$230j$1 digitalmars.com...
 "Paulo Pinto"<pjmlp progtools.org>  wrote in message
 news:ja3bcp$ied$1 digitalmars.com...
 Hi,

 the only issue with your sentence is that the "efficiency of native code"
 is also
 possible with C#.

I used to do a fair amount of C# and...no, it isn't ;) At least not without a world of hurt. For example, try to read in a block of data and impose a structure over it without any unnecessary copying or processing and you'll see what I mean.

It's better than Java though: At least C# actually *has* pointers.

Sure, but I don't remember the last time I really needed to use pointers. Don't understand me wrong, it is good to have pointers around for the few cases one might need them.
Nov 18 2011
parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/18/2011 9:00 AM, Paulo Pinto wrote:
 Don't understand me wrong, it is good to have pointers around for the few cases
 one might need them.

Try implementing a garbage collector without pointers!
Nov 20 2011
prev sibling parent reply Paulo Pinto <pjmlp progtools.org> writes:
Sorry to say, but with your description I can only say "blame the
programmer".

There are C# compilers that generate native code (ngen to a certain 
extent, and mono). Even if there was none, languages are not slow
or fast, implementations are.

As for your comment, was it an issue with the language, the algorithms,
the implementation or the libraries you were using?

--
Paulo

Am 18.11.2011 17:09, schrieb Nick Sabalausky:
 "Paulo Pinto"<pjmlp progtools.org>  wrote in message
 news:ja3bcp$ied$1 digitalmars.com...
 Hi,

 the only issue with your sentence is that the "efficiency of native code"
 is also
 possible with C#.

I used to do a fair amount of C# and...no, it isn't ;) At least not without a world of hurt. For example, try to read in a block of data and impose a structure over it without any unnecessary copying or processing and you'll see what I mean.

Nov 18 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Paulo Pinto" <pjmlp progtools.org> wrote in message 
news:ja62t0$27bd$1 digitalmars.com...
 Even if there was none, languages are not slow
 or fast, implementations are.

I know that's become an enormously popular thing to say, but to be brutally honest, it's a load of crap. Yes, there can be slow and fast implementations, but the fastest implementation in the world isn't going to do a damn bit of good if the language itself either A. Lacks the tools to let you do things in a fast manner, or B. Has the tools, but they're awkward enough that their use is effectively discouraged. For example, if you take a language that has no direct memory manipulation, you're never going to write, say, a codec or a software rasterizer that's as fast as what could be done in C/C++/D/etc. If you take a language that does have that ability, but it's awkward to use, then it *might* be possible, but it's not realistically going to happen (and if it does, it only means someone just wasted a bunch of their time). The only way this will ever change is if somebody invents a *perfect* optimizer, and that obviously hasn't happened yet. (And PLEASE, don't anyone trot out "turing completeness". The typical CS student belief that "turing complete" means "you can do anything, just like any other turing complete language" is a complete perversion and misinterpretation of the theory.)
 As for your comment, was it an issue with the language, the algorithms,
 the implementation or the libraries you were using?

The system as a whole: Convert this to C# ...Without significantly more processing, copying, memory usage, verbosity, or hindering readability: import std.file; align(1) struct Foo { int x, y; ubyte r, g, b, a; char[16] ident; uint[100] data; } void main() { auto buffer = cast(ubyte[])read("data.bin"); auto foos = cast(Foo[])buffer; } Arguments about IO bottlenecks don't count because: 1. It might not be coming from a spinning platter. 2. It might even be coming straight from RAM or ROM. 3. Even if it is from a spinning platter, you might have other CPU-bound processing you can get done, even on the same core, while waiting for the data to load. 4. Giving the CPU more to do just uses more energy anyway (again, it's not always from a spinning platter, and CPUs can be power-hungry too), thus costing more, reducing battery life, and potentially hurting the environment (depending how your local power grid is, umm, powered).
Nov 18 2011
parent reply Paulo Pinto <pjmlp progtools.org> writes:
Am 18.11.2011 22:40, schrieb Nick Sabalausky:
 For example, if you take a language that has no direct memory manipulation,
 you're never going to write, say, a codec or a software rasterizer that's as
 fast as what could be done in C/C++/D/etc. If you take a language that does
 have that ability, but it's awkward to use, then it *might* be possible, but
 it's not realistically going to happen (and if it does, it only means
 someone just wasted a bunch of their time).

 The only way this will ever change is if somebody invents a *perfect*
 optimizer, and that obviously hasn't happened yet.

But does it matter if the application is already executing fast enough for its purposes? I am a big defendent of polyglot programming, if the application still lacks the required execution after all algorithm changes have been tried then the hot spot can even be written in Assembly for what I care. Always use the right tool for the job. As for your example, my C# is a bit rusty but I'll have a go at it during the weekend. -- Paulo
Nov 18 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Paulo Pinto" <pjmlp progtools.org> wrote in message 
news:ja6mof$p0p$1 digitalmars.com...
 Am 18.11.2011 22:40, schrieb Nick Sabalausky:
 For example, if you take a language that has no direct memory 
 manipulation,
 you're never going to write, say, a codec or a software rasterizer that's 
 as
 fast as what could be done in C/C++/D/etc. If you take a language that 
 does
 have that ability, but it's awkward to use, then it *might* be possible, 
 but
 it's not realistically going to happen (and if it does, it only means
 someone just wasted a bunch of their time).

 The only way this will ever change is if somebody invents a *perfect*
 optimizer, and that obviously hasn't happened yet.

But does it matter if the application is already executing fast enough for its purposes?

That's not the issue though. The question was "Is the efficiency of native code [necessarily] possible in C# "? "Good enough" is beside the point.
 I am a big defendent of polyglot programming, if the application still 
 lacks the required execution after all algorithm changes have been tried 
 then the hot spot can even be written in Assembly for what I care.

 Always use the right tool for the job.

 As for your example, my C# is a bit rusty but I'll have a go at it during 
 the weekend.

It may very well be possible, but back when I encountered it a few years ago I spent at least a couple days on it and gave up. Good luck though. If you do manage to get it, I'd be very interested in seeing how. Hell, C# has had some new versions since I left it, there might even be a new feature now that would change things.
Nov 19 2011
parent reply Paulo Pinto <pjmlp progtools.org> writes:
Hi,

the code below is what I managed to achieve, but I
do conceed that the D code looks better.

Regarding the efficiency of native code in other languages,
do you consider efficiency the hability to do low level tricks
with the language or generating proper native code?

I have been developing applications in last 10 years in high level
languages and very seldom required to do low level tricks to achieve
what I consider efficient code.

Regarding your example I would rather write a software rasterizer or
code using SIMD instructions or a GPGPU language.

The cast trick you did although quite handy, is the type of language
feature that prevents D to use advanced GC algorithms.




using System.Runtime.InteropServices;
using System.IO;


[StructLayoutAttribute(LayoutKind.Sequential, Pack=1)]
internal unsafe struct Foo
{
     int x, y;
     byte r, g, b, a;
     fixed char ident[16];
     fixed uint data[100];
}

public class Example {
     public unsafe static void Main(string[] args)
     {
        var buffer = File.ReadAllBytes("data.bin");
        fixed (byte *bufferPtr = &buffer[0]) {
            Foo* data = (Foo*)  bufferPtr;
         }
     }
}


--
Paulo

Am 19.11.2011 16:32, schrieb Nick Sabalausky:
 "Paulo Pinto"<pjmlp progtools.org>  wrote in message
 news:ja6mof$p0p$1 digitalmars.com...
 Am 18.11.2011 22:40, schrieb Nick Sabalausky:
 For example, if you take a language that has no direct memory
 manipulation,
 you're never going to write, say, a codec or a software rasterizer that's
 as
 fast as what could be done in C/C++/D/etc. If you take a language that
 does
 have that ability, but it's awkward to use, then it *might* be possible,
 but
 it's not realistically going to happen (and if it does, it only means
 someone just wasted a bunch of their time).

 The only way this will ever change is if somebody invents a *perfect*
 optimizer, and that obviously hasn't happened yet.

But does it matter if the application is already executing fast enough for its purposes?

That's not the issue though. The question was "Is the efficiency of native code [necessarily] possible in C# "? "Good enough" is beside the point.
 I am a big defendent of polyglot programming, if the application still
 lacks the required execution after all algorithm changes have been tried
 then the hot spot can even be written in Assembly for what I care.

 Always use the right tool for the job.

 As for your example, my C# is a bit rusty but I'll have a go at it during
 the weekend.

It may very well be possible, but back when I encountered it a few years ago I spent at least a couple days on it and gave up. Good luck though. If you do manage to get it, I'd be very interested in seeing how. Hell, C# has had some new versions since I left it, there might even be a new feature now that would change things.

Nov 19 2011
next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Paulo Pinto" <pjmlp progtools.org> wrote in message 
news:ja8p96$1q53$1 digitalmars.com...
 Hi,

 the code below is what I managed to achieve, but I
 do conceed that the D code looks better.

Hmm, I'm impressed that it does appear to be possible. And it's not even as bad-looking as I would have expected. Benchmarks would be interesting. Although, I do still think it's an example of an efficient approach that's effectively discouraged by the langauge, and therefore much less likely to actually happen in the wild. How many C# users are even going to know they can do that? (But maybe the features involved are all more common knowlege in the C# world than I think?)
 Regarding the efficiency of native code in other languages,
 do you consider efficiency the hability to do low level tricks
 with the language or generating proper native code?

Mainly the former. (Which is part of why I was always more drawn to C# than Java). Like you indicated about quality of implementation, just because something is native code doesn't necessarily mean it's *good* native code.
 I have been developing applications in last 10 years in high level
 languages and very seldom required to do low level tricks to achieve
 what I consider efficient code.

Well, the vast majority of the time I come across a slow, bloated app, it's from a VM or otherwise dymanic language. The vast majority of the time I come across a lean, zippy app, it's from something like C/C++/D/etc. Whatever the exact reasons, the former group of langauges tends to lean towards inefficient approaches, and the latter group tends to lean towards more efficient approaches. (I try to avoid calling the things like C#/Ruby/Java/etc high-level, since I consider D to be just as high-level, if not more - it's just that D is *also* more low-level, too) Also, in my own personal experience coding, even just a quick-n-dirty approach in C, C++ or D tends to be *noticably* more efficient than putting forth the same amount of effort in something like C# or Java. With the VM-ish stuff, I've always found you need to put forth more effort to get comparable efficiency.
 Regarding your example I would rather write a software rasterizer or
 code using SIMD instructions or a GPGPU language.

Ok, so I'm old and so are my examples ;)
 The cast trick you did although quite handy, is the type of language
 feature that prevents D to use advanced GC algorithms.

Interesting point. Although, it is a balancing act: From what I hear, JVM is considered to have a top-notch GC (no doubt due in part to it's lack of low-level ability), but I bet you'd be hard-pressed to get our reinterpret-cast-Foo example or codecs/filter/rasterizers/etc (assuming you actually wanted to ;)) to run as fast in Java as in D.
 using System.Runtime.InteropServices;
 using System.IO;


 [StructLayoutAttribute(LayoutKind.Sequential, Pack=1)]
 internal unsafe struct Foo
 {
     int x, y;
     byte r, g, b, a;
     fixed char ident[16];
     fixed uint data[100];
 }

 public class Example {
     public unsafe static void Main(string[] args)
     {
        var buffer = File.ReadAllBytes("data.bin");
        fixed (byte *bufferPtr = &buffer[0]) {
            Foo* data = (Foo*)  bufferPtr;
         }
     }
 }

Nov 19 2011
parent reply Paulo Pinto <pjmlp progtools.org> writes:
Am 19.11.2011 21:22, schrieb Nick Sabalausky:
 Well, the vast majority of the time I come across a slow, bloated app, it's
 from a VM or otherwise dymanic language. The vast majority of the time I
 come across a lean, zippy app, it's from something like C/C++/D/etc.
 Whatever the exact reasons, the former group of langauges tends to lean
 towards inefficient approaches, and the latter group tends to lean towards
 more efficient approaches. (I try to avoid calling the things like
 C#/Ruby/Java/etc high-level, since I consider D to be just as high-level, if
 not more - it's just that D is *also* more low-level, too)

Sure you are right, but that is because most developers nowadays don't learn properly how to code. In my line of work, one of the reasons why we make static analysis tools part of the build process is to force developers to code properly. Sometimes I ask myself what some of our developers were doing at the university.
 Also, in my own personal experience coding, even just a quick-n-dirty
 approach in C, C++ or D tends to be *noticably* more efficient than putting
 forth the same amount of effort in something like C# or Java. With the
 VM-ish stuff, I've always found you need to put forth more effort to get
 comparable efficiency.

As for C,C++, D usually you get faster results quicker that's for sure, but you can also do that in other languages, specially if native code compilers are available to it. But you are right that some more effort might be required, depending on the algorithm in case. Haskell is a good example. It can run as fast as C in most cases, but you need to aproach your problem with a completely different mindset.
 Interesting point. Although, it is a balancing act: From what I hear, JVM is
 considered to have a top-notch GC (no doubt due in part to it's lack of
 low-level ability), but I bet you'd be hard-pressed to get our
 reinterpret-cast-Foo example or codecs/filter/rasterizers/etc (assuming you
 actually wanted to ;)) to run as fast in Java as in D.

That is the reason I tend to favour polyglot programming. As a possible example, I would rather write the majority of the application in Java and leave the codec implemented in C, while calling it via JNI. This is how we code most applications in my line of work. Anyway, this was the reason I was against referrin to C# in the language slogan. If you start comparing against other languages, in the eyes of the receiver you already lost, most time. Surely you need to compare, but that comes afterwards after the person has got some interest to find more about the language.
Nov 20 2011
next sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
Paulo Pinto:

 Haskell is a good example. It can run as fast as C in most cases, but 
 you need to aproach your problem with a completely different mindset.

My small experience tells me otherwise: with Haskell you are able to approach something vaguely like C performance only if you use complex weird things (sometimes mutability too). Normal Haskell programs are usually not near C programs speed, unless they use a better algorithm compared to the C programs (this sometimes happens because Haskell is lazy, and lazyness sometimes allows to express certain better algorithms in a simpler way, that are harder to express correctly in C). Bye, bearophile
Nov 20 2011
parent Paulo Pinto <pjmlp progtools.org> writes:
Am 20.11.2011 12:30, schrieb bearophile:
 Paulo Pinto:

 Haskell is a good example. It can run as fast as C in most cases, but
 you need to aproach your problem with a completely different mindset.

My small experience tells me otherwise: with Haskell you are able to approach something vaguely like C performance only if you use complex weird things (sometimes mutability too). Normal Haskell programs are usually not near C programs speed, unless they use a better algorithm compared to the C programs (this sometimes happens because Haskell is lazy, and lazyness sometimes allows to express certain better algorithms in a simpler way, that are harder to express correctly in C). Bye, bearophile

That is what I meant with a "completely different mindset".
Nov 20 2011
prev sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Paulo Pinto" <pjmlp progtools.org> wrote in message 
news:jaafb1$1u20$1 digitalmars.com...
 Am 19.11.2011 21:22, schrieb Nick Sabalausky:
 Well, the vast majority of the time I come across a slow, bloated app, 
 it's
 from a VM or otherwise dymanic language. The vast majority of the time I
 come across a lean, zippy app, it's from something like C/C++/D/etc.
 Whatever the exact reasons, the former group of langauges tends to lean
 towards inefficient approaches, and the latter group tends to lean 
 towards
 more efficient approaches. (I try to avoid calling the things like
 C#/Ruby/Java/etc high-level, since I consider D to be just as high-level, 
 if
 not more - it's just that D is *also* more low-level, too)

Sure you are right, but that is because most developers nowadays don't learn properly how to code.

I still think there's more to it than just that, but I do share your pessimism on the quality of most programmers.
 In my line of work, one of the reasons why we make static analysis tools
 part of the build process is to force developers to code properly.

 Sometimes I ask myself what some of our developers were doing at the 
 university.

I would never trust a programmer whose only experience is classroom and homework. Luckily though, programming is one of those things you can get real non-school experience in without actually being employed in the field. (Many other fields have a chicken-and-egg problem in that regard.)
 Interesting point. Although, it is a balancing act: From what I hear, JVM 
 is
 considered to have a top-notch GC (no doubt due in part to it's lack of
 low-level ability), but I bet you'd be hard-pressed to get our
 reinterpret-cast-Foo example or codecs/filter/rasterizers/etc (assuming 
 you
 actually wanted to ;)) to run as fast in Java as in D.

That is the reason I tend to favour polyglot programming. As a possible example, I would rather write the majority of the application in Java and leave the codec implemented in C, while calling it via JNI.

See, I've never really been a fan of that style. Yea, it's a good thing to do when necessary, but I always favor using a more general-purpose langauge (big part of what drew me to D) than constantly switching langauges, or ending up in a language-soup project. I find polyglot programming to be a big pain. That way you have to deal with things like interop, and mentally switching gears to the other langauge (that's a fairly high-overhead context switch).
 This is how we code most applications in my line of work.

I don't know what line of work you're in, but I do a lot of web stuff and it's the same thing here. That's one of the many things I dislike about web dev: Can't do anything without swapping between twenty different lanaguges.
 Anyway, this was the reason I was against referrin to C# in the language 
 slogan. If you start comparing against other languages, in the eyes of the 
 receiver you already lost, most time.

 Surely you need to compare, but that comes afterwards after the person
 has got some interest to find more about the language. 

Nov 20 2011
parent Paulo Pinto <pjmlp progtools.org> writes:
Am 20.11.2011 16:22, schrieb Nick Sabalausky:

 This is how we code most applications in my line of work.

I don't know what line of work you're in, but I do a lot of web stuff and it's the same thing here. That's one of the many things I dislike about web dev: Can't do anything without swapping between twenty different lanaguges.

We do large scale consulting projects, from 20 developers team size up to 300 and more per project, scattered around the globe in multiple development centers.
Nov 20 2011
prev sibling next sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 11/19/2011 06:32 PM, Paulo Pinto wrote:
 Hi,

 the code below is what I managed to achieve, but I
 do conceed that the D code looks better.

 Regarding the efficiency of native code in other languages,
 do you consider efficiency the hability to do low level tricks
 with the language or generating proper native code?

 I have been developing applications in last 10 years in high level
 languages and very seldom required to do low level tricks to achieve
 what I consider efficient code.

 Regarding your example I would rather write a software rasterizer or
 code using SIMD instructions or a GPGPU language.

 The cast trick you did although quite handy, is the type of language
 feature that prevents D to use advanced GC algorithms.

The fact that Nicks example works has no implications for the GC implementation because the two types involved in his reinterpret-casting don't have any indirections. Furthermore: int* a =...; int b = cast(int)a; int* c = cast(int*)b; // assert(a == c); // not guaranteed! The language allows the GC to move around heap data. What kind of GC would be impossible to implement?
Nov 19 2011
parent reply Paulo Pinto <pjmlp progtools.org> writes:
Am 19.11.2011 21:49, schrieb Timon Gehr:

The fact that Nicks example works has no implications for the GC implementation because the two types involved in his reinterpret-casting don't have any indirections. Furthermore: int* a =...; int b = cast(int)a; int* c = cast(int*)b; // assert(a == c); // not guaranteed! The language allows the GC to move around heap data. What kind of GC would be impossible to implement?

I am by no means a GC expert, but I was under the impression that D could only make use of conservative GC because of the casting tricks. What if Nick's example had inner pointers? align(1) struct Foo { int x, y; ubyte r, g, b, a; char[16] ident; uint[100] data; Foo* next; } Is the GC smart enough to know that Foo.next will contain garbage after the assignment with cast? What about when I later assign a valid value to it?
Nov 20 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/20/2011 09:40 AM, Paulo Pinto wrote:
 Am 19.11.2011 21:49, schrieb Timon Gehr:

The fact that Nicks example works has no implications for the GC implementation because the two types involved in his reinterpret-casting don't have any indirections. Furthermore: int* a =...;


I meant int* a = new int; here, just in case anyone is wondering.
 int b = cast(int)a;
 int* c = cast(int*)b;
 // assert(a == c); // not guaranteed!

 The language allows the GC to move around heap data.
 What kind of GC would be impossible to implement?

I am by no means a GC expert, but I was under the impression that D could only make use of conservative GC because of the casting tricks.

D's GC could make use of any advanced GC algorithm I am aware of, it just has to be implemented (the bottleneck is probably compiler support). At the moment, the GC is conservative because the compiler provides no runtime information about which pieces of memory are pointers/references and which are not
 What if Nick's example had inner pointers?

 align(1) struct Foo
 {
 int x, y;
 ubyte r, g, b, a;
 char[16] ident;
 uint[100] data;
 Foo* next;
 }

That is actually not a problem. Dereferencing an invalid pointer is unrelated to GC issues. And if the pointer is always valid, then it does not point to GC memory, therefore it can be ignored by the GC.
 Is the GC smart enough to know that Foo.next will contain garbage after
 the assignment with cast?

How can it know that it will contain garbage? Not every object in a D program is necessarily GC heap allocated. But the GC does not have to care anyway, as soon as unsafe casts are in play it is the responsibility of the programmer to ensure correctness.
 What about when I later assign a valid value to it?

That works as expected, because the type information is available.
Nov 20 2011
prev sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/19/2011 9:32 AM, Paulo Pinto wrote:
 Regarding the efficiency of native code in other languages,
 do you consider efficiency the hability to do low level tricks
 with the language or generating proper native code?

The ability to write "tricks" is important, because no language is perfect. But even more important is to support a style of code that maps efficiently onto what the underlying CPU can do directly. For example, if language X's integers are defined to be 33 bits wide, that is not going to be very efficient on a 32 bit CPU.
Nov 20 2011
prev sibling next sibling parent Andrea Fontana <advmail katamail.com> writes:
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I agree.=20

Il giorno lun, 14/11/2011 alle 13.52 -0800, Walter Bright ha scritto:

 On 11/14/2011 11:41 AM, Michel Fortin wrote:
  > - Native efficiency
=20
 Most (nearly all?) new languages are targeted at a VM. Being native is cl=

 distinguishing feature of D.

Nov 15 2011
prev sibling next sibling parent "Marco Leise" <Marco.Leise gmx.de> writes:
Am 15.11.2011, 04:43 Uhr, schrieb Walter Bright  
<newshound2 digitalmars.com>:

 I am surprised at the negative reaction, because when I've done  
 presentations about D revolving around it being multi-paradigm, the  
 reaction was always positive.

Reading between the lines, it is probably just the combination - as Michel Fortin pointed out - of qualifiers and goals that looks odd. In an actual presentation you would not say "Now let's look at D's multi-paradigm power!" - "D's what?" "Mutli-paradigm" may be overused, but - despite the discussion here - I would think of it as supporting fundamentally different approaches, like pure functional and OOP. It is up to the text below, to explain exactly what D has to offer there. Remember how you changed invariant to immutable? Try to think of giving a presentation and how you would introduce multi-paradigm there to the audience. "Native code" is also more recognizable than "Native efficiency", I think. And everyone already knows that native code is efficient.
Nov 15 2011
prev sibling next sibling parent so <so so.so> writes:
On Tue, 15 Nov 2011 16:09:38 +0200, Nick Sabalausky <a a.a> wrote:

 "Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message
 news:j9tpa6$1icu$1 digitalmars.com...
 On 11/15/11 12:37 AM, Peter Alexander wrote:
 The current site is a wall of text that takes too long to tell me  
 *what*
 D is. There needs to be some sort of "D at a glance" that explains what
 the language is without going into details.

"The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." It's right there at the top in big letters.

That's not bad, but I think it's an absolute shame to loose this, which I've always thought was perfect (well, with "functional" added to the list of progrmming styles in paragraph 2): -------------- D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. The D language is statically typed and compiles directly to machine code. It's multiparadigm, supporting many programming styles: imperative, object oriented, and metaprogramming. It's a member of the C syntax family, and its appearance is very similar to that of C++. Here's a quick list of features. It is not governed by a corporate agenda or any overarching theory of programming. -------------- FWIW, I *really* think that should stay there, right between "The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." and the "Modern convenience" section.

Contrary to some (not surprisingly), i *really* like "golang.org". It is simply precise. No twitter or facebook bs in the front page. I am guessing this is because they are rivals but still.
Nov 15 2011
prev sibling next sibling parent Miles Stoudenmire <miles.stoudenmire gmail.com> writes:
Would it be possible to add little plus signs to the "See example"
links? I was surprised when I clicked one because I expected it to
open a new page, not pop open a block of code below.

On 15 November 2011 09:59, Andrei Alexandrescu
<SeeWebsiteForEmail erdani.org> wrote:
 On 11/15/11 8:13 AM, Jeff Nowakowski wrote:
 On 11/15/2011 09:31 AM, Andrei Alexandrescu wrote:
 It's true that I generally post negative critique, and that's because I
 tend to post when things get my dander up enough. That doesn't mean the
 message is frivolous or wrong. If I wanted to snipe like that I'd be
 posting here several times a week on multiple topics. I don't.

Would be great to also post when you feel you could help with something. Andrei

--=20 =A0=A0 -=3DMiles Stoudenmire=3D- =A0=A0 miles.stoudenmire gmail.com
Nov 15 2011
prev sibling next sibling parent Jude Young <10equals2 gmail.com> writes:
On Tue 15 Nov 2011 07:07:11 PM CST, Andrei Alexandrescu wrote:
 On 11/15/11 2:41 PM, Daniel Gibson wrote:
 Am 15.11.2011 09:37, schrieb Peter Alexander:
 A quick example (could be better)

 "D is a multi-paradigm, type-safe, natively compiled programming
 language with a focus on pragmatism. D programs run as fast as those
 written in C or C++ without the tedium of manual memory management,
 verbose syntax or unsafe semantics."

I like this (but maybe a short note that manual memory management and unsafe stuff is still possible). "The D programming language. Modern convenience. Multi-paradigm power. Native efficiency." however sounds too buzzwordy IMHO. Regardless of the actual words used: This style of pseudo sentences only consisting of an adjective and a noun reminds me of annoying advertising slogans (there probably is a technical term for this, but I'm no linguist). And three of them in a row (or 4, if your count "The D programming language") hurt. Two or three short sentences (in the style of Peter's suggestion) are still short enough that everybody reads them (maybe important parts could be emphasized for everybody who is too lazy to read whole sentences), contain more information and look more serious than a line of pseudo-sentences that sound like taken from a TV commercial.

I understand this objection, and how it reminding of hackneyed ads can be annoying. I'd agree with if the slogan were inflated and insincere. But it really is a brief rendering of the most prominent features of D. If we go with a few sentences about D, any and all parts of those sentences can easily be forgotten. Andrei

I see one camp that is against using multi-paradigm on the basis that it sounds buzz-wordy, and another camp for using because it does actually mean something specific. Whats to stop us from using the term, but also including a link to wikipedia? Heck, I might be technical minded, but I do like the idea of having links under all of the main bullet points. We then aren't only claiming something, we are stating that OTHER people are claiming something. Native efficiency could point to one of the 'speed tests' that i've seen floating around. Multi-paradigm could point to wiki article of multi-paradigm, and modern convenience could point to something about how using these features will speed up programming times. or something. Not entirely thought out, but you get the idea. "ha! buzzwords! ...apparently they AREN'T buzzwords..." my 2 cents.
Nov 15 2011
prev sibling next sibling parent Sean Kelly <sean invisibleduck.org> writes:
If you compare your product to another one you're implying that the other pr=
oduct is better in some way. Generally a bad idea to do so.=20

Sent from my iPhone

On Nov 17, 2011, at 10:34 AM, Andrei Alexandrescu <SeeWebsiteForEmail erdani=
.org> wrote:

 At any rate, I wouldn't want the D intro page to mention any other languag=

=20
 Andrei
=20
 On 11/17/11 8:05 AM, Paulo Pinto wrote:
 Hi,
=20
 the only issue with your sentence is that the "efficiency of native code"=


 also
 possible with C#.
=20
 --
 Paulo
=20
 "Daniel Gibson"<metalcaedes gmail.com>  wrote in message
 news:ja10k6$27j8$1 digitalmars.com...
 Am 16.11.2011 02:24, schrieb Jude Young:
=20
 I see one camp that is against using multi-paradigm on the basis that
 it sounds buzz-wordy, and another camp for using because it does
 actually mean something specific.

=20 I'm not against calling D "multi paradigm", I'm just against the style o=



 the "Modern convenience. Multi-paradigm power. Native efficiency."
 sentences. It *sounds* buzzwordy, regardless of the words.
 Even "Rusty bars. Heavy chains. Merciless guards." sounds like a cheap
 commercial ;)
=20
 OTOH "D is a modern, powerful multi-paradigm programming language that
 combines the efficiency of native code with the convenience of modern
 languages like C#" contains all those buzzwords but doesn't sound as bad=



=20
 Cheers,
 - Daniel

=20


Nov 17 2011
prev sibling next sibling parent Andrea Fontana <advmail katamail.com> writes:
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

And it doesn't need a huge virtual machine to run a hello world.


Il giorno ven, 18/11/2011 alle 11.09 -0500, Nick Sabalausky ha scritto:

 "Paulo Pinto" <pjmlp progtools.org> wrote in message=20
 news:ja3bcp$ied$1 digitalmars.com...
 Hi,

 the only issue with your sentence is that the "efficiency of native cod=


 is also
 possible with C#.

I used to do a fair amount of C# and...no, it isn't ;) At least not witho=

 a world of hurt. For example, try to read in a block of data and impose a=

 structure over it without any unnecessary copying or processing and you'l=

 see what I mean.=20
=20
=20

Nov 18 2011
prev sibling next sibling parent Nicolae Mihalache <xpromache gmail.com> writes:
Hello,

As a potential new D user (just discovered this language 1 week ago),
I can tell the following:
1. It is very likely that the first idea about D will be obtained from
the wikipedia rather that the D website.
2. Someone that passed over this first step, will soon be confused by
the D2 vs D1 and phobos vs tango debate.
3. Someone that will pass over the second step will be even more
confused discovering that the dsource website linked from the main D
programming website is obsolete (seems most projects are moving to
github) and there is no up2date list of projects using D2.

I'm not sure about the point 3 but that is where I am after one week.

If you look at this page
http://www.d-programming-language.org/future.html, it talks about
future post 1.0 plans. Is this the version 1.0 of D2.0?

I think you should have a page describing the history of D to clear
out the confusion.

no need to answer my email, better fix the website in the same time.

mache
On Fri, Nov 18, 2011 at 6:00 PM, Paulo Pinto <pjmlp progtools.org> wrote:
 Am 18.11.2011 17:12, schrieb Nick Sabalausky:
 "Nick Sabalausky"<a a.a> =A0wrote in message
 news:ja6042$230j$1 digitalmars.com...
 "Paulo Pinto"<pjmlp progtools.org> =A0wrote in message
 news:ja3bcp$ied$1 digitalmars.com...
 Hi,

 the only issue with your sentence is that the "efficiency of native
 code"
 is also
 possible with C#.

I used to do a fair amount of C# and...no, it isn't ;) At least not without a world of hurt. For example, try to read in a block of data an=



 impose a structure over it without any unnecessary copying or processin=



 and you'll see what I mean.

It's better than Java though: At least C# actually *has* pointers.

Sure, but I don't remember the last time I really needed to use pointers. Don't understand me wrong, it is good to have pointers around for the few cases one might need them.

Nov 18 2011
prev sibling parent Jude Young <10equals2 gmail.com> writes:
On Fri 18 Nov 2011 11:33:18 AM CST, Nicolae Mihalache wrote:
 Hello,

 As a potential new D user (just discovered this language 1 week ago),
 I can tell the following:

 1. It is very likely that the first idea about D will be obtained from
 the wikipedia rather that the D website.
 2. Someone that passed over this first step, will soon be confused by
 the D2 vs D1 and phobos vs tango debate.
 3. Someone that will pass over the second step will be even more
 confused discovering that the dsource website linked from the main D
 programming website is obsolete (seems most projects are moving to
 github) and there is no up2date list of projects using D2.

Something I just realized not too long ago, Dsource is still used by some projects, but due to the way its laid out, it can be difficult to find those projects... And a lot of the projects didn't really even pack up, they just disappeared. Good points though, Things have improved a LOT lately for newbies though.
Nov 18 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 21:45:58 +0200, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 There was more text on the page before, including a code example that  
 wasn't very illustrative.

Most other front pages are still more varied and dynamic. What happened with the ideas to have the latest commits / newsgroup topics / etc. in a box on the front page?
 Regarding ads, this is my "I told you" moment. I am completely opposed  
 to ads anywhere on d-p-l.org, and I believe their presence hurts us in  
 ways that the cost savings doesn't even begin to cover. I see it as a  
 textbook case of "penny wise". That being said, Walter agreed with  
 removing ads from the homepage but not the other parts of the site. I  
 didn't get to that yet.

There's also a moral issue here. Except for the articles he's written, Walter is basically monetizing the work of everyone who's contributed to D. If it were just a matter of hosting, I'm sure there are many from our community who would gladly provide it. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 22:16:11 +0200, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 On 11/14/11 11:55 AM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 21:45:58 +0200, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:

 There was more text on the page before, including a code example that
 wasn't very illustrative.

Most other front pages are still more varied and dynamic. What happened with the ideas to have the latest commits / newsgroup topics / etc. in a box on the front page?

What happened is that nobody took those to completion. I did all I could in a limited amount of time. My focus was the message more than the presentation.

I could easily do the technical part (I already have something that announces GitHub events, newsgroup and twitter posts on the #d IRC channel). Should it be multiple boxes, or one single feed? I could format it as a single chronological list, with multiple syndicated sources. (Icons can be used to visually distinguish event sources.) -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 22:36:08 +0200, Adam D. Ruppe  
<destructionator gmail.com> wrote:

 It's all written in D too, but I haven't updated
 it for months.

That's a solid piece of work.
 If you like, I can send you the code from my
 implementation of the last idea too.

Why not make it open-source? I think the best way to make things last is to open-source them - then anyone can fix them if I run out of time/interest/under a bus. If I can't open-source your code, we might be better-off with a rewrite :)
 (and lol, my crappy web newsreader that I never finished
 works much better than the one on digitalmars.com!

I'm itching to write a D web newsreader as well. (You'll never make me use CGI though, mwahaha!) -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Mon, 14 Nov 2011 22:37:50 +0200, Adam D. Ruppe  
<destructionator gmail.com> wrote:

 Oh, forgot to mention, that "try now" button currently
 doesn't work.

How did you do the sandboxing? I was messing with creating chroot jails for another project. The filesystem security is easy to nail down, but there remains the question of limiting up resources (ulimit? cgroups?). There's also the dilemma of network access - should it be allowed for the sake of network code examples, or forbidden to prevent abuse? -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 14 2011
prev sibling next sibling parent reply Robert Clipsham <robert octarineparrot.com> writes:
On 14/11/2011 01:50, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

Another point, partially based on things others have said that I've now read: As I mentioned in another post, myself (and many, many others I'm sure) have the ability to look at a page and automatically find what we want without reading anything. People visiting dpl.org will be in one of two groups: - Potential D users - D users What they want to see: = Potential D users i ) Sample code ii ) Reasons to use D iii) Download/try/setup links iv ) How to find out more = D users v ) Download links vi ) How to get help vii ) Language reference viii) Library reference ix ) News/things of interest x ) Current version (Do I have the latest and greatest? This will be less important as the language continues to mature) xi ) Changelog (see above, less important with time) xii ) How to get involved. This is a lot of information to get onto one page, but it can easily be simplified with a simple bit of knowledge - D users have seen the page before. Related note: I can't find any of these by looking at the D front page, despite having seen it hundreds of times (yes, I know most of it is in the sidebar, that's not something I see without thinking about it though, I automatically assume it's just part of the background). -- Robert http://octarineparrot.com/
Nov 14 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-14 22:04, Robert Clipsham wrote:
 On 14/11/2011 01:50, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

Another point, partially based on things others have said that I've now read: As I mentioned in another post, myself (and many, many others I'm sure) have the ability to look at a page and automatically find what we want without reading anything. People visiting dpl.org will be in one of two groups: - Potential D users - D users What they want to see: = Potential D users i ) Sample code ii ) Reasons to use D iii) Download/try/setup links iv ) How to find out more = D users v ) Download links vi ) How to get help vii ) Language reference viii) Library reference ix ) News/things of interest x ) Current version (Do I have the latest and greatest? This will be less important as the language continues to mature) xi ) Changelog (see above, less important with time) xii ) How to get involved. This is a lot of information to get onto one page, but it can easily be simplified with a simple bit of knowledge - D users have seen the page before. Related note: I can't find any of these by looking at the D front page, despite having seen it hundreds of times (yes, I know most of it is in the sidebar, that's not something I see without thinking about it though, I automatically assume it's just part of the background).

As I'm already a D user I'm looking first for Library reference and Language reference. I mean, if I am a D user I most likely already have a compiler installed and doesn't have to look for that as much as the points. -- /Jacob Carlborg
Nov 14 2011
parent Robert Clipsham <robert octarineparrot.com> writes:
On 15/11/2011 07:26, Jacob Carlborg wrote:
 As I'm already a D user I'm looking first for Library reference and
 Language reference. I mean, if I am a D user I most likely already have
 a compiler installed and doesn't have to look for that as much as the
 points.

I used an ordered list because I was planning to refer to individual points later, I ended up not doing it though... They weren't in any particular order! The reason for download links being there is for new compiler versions. -- Robert http://octarineparrot.com/
Nov 15 2011
prev sibling next sibling parent reply Jonathan M Davis <jmdavisProg gmx.com> writes:
On Monday, November 14, 2011 11:45:58 Andrei Alexandrescu wrote:
 On 11/14/11 1:10 AM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu
 
 <SeeWebsiteForEmail erdani.org> wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

It's way too cheesy in my opinion. Reads like a desperate sales pitch. Also, too much text - right now it looks like an unappealing wall of text. Also, ads? Really? Are we so cheap that we can't even afford web hosting without annoying the user with often embarrassingly-irrelevant advertisements? Compare with other programming language websites: http://golang.org/ http://www.scala-lang.org/ http://www.ruby-lang.org/en/ http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

There was more text on the page before, including a code example that wasn't very illustrative. While working on the homepage I kept an eye on those websites and others (Perl, Java) and my perception is that the proposed website compares well with others. Regarding ads, this is my "I told you" moment. I am completely opposed to ads anywhere on d-p-l.org, and I believe their presence hurts us in ways that the cost savings doesn't even begin to cover. I see it as a textbook case of "penny wise". That being said, Walter agreed with removing ads from the homepage but not the other parts of the site. I didn't get to that yet.

d-programming-language.org has ads?! LOL. I have so much stuff blocked in my hosts file that I didn't have a clue that that was the case. Yeah. I can understand wanting to recoup server costs and whatnot, but having ads on the home page of programming language definitely strikes me as bad. Even if it's just to recoup costs, it makes it look like we're trying to make money out of the deal, which is _not_ a good impression to make. - Jonathan M Davis
Nov 14 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jonathan M Davis" <jmdavisProg gmx.com> wrote in message 
news:mailman.937.1321304740.24802.digitalmars-d puremagic.com...
 On Monday, November 14, 2011 11:45:58 Andrei Alexandrescu wrote:
 On 11/14/11 1:10 AM, Vladimir Panteleev wrote:
 On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu

 <SeeWebsiteForEmail erdani.org> wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

It's way too cheesy in my opinion. Reads like a desperate sales pitch. Also, too much text - right now it looks like an unappealing wall of text. Also, ads? Really? Are we so cheap that we can't even afford web hosting without annoying the user with often embarrassingly-irrelevant advertisements? Compare with other programming language websites: http://golang.org/ http://www.scala-lang.org/ http://www.ruby-lang.org/en/ http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

There was more text on the page before, including a code example that wasn't very illustrative. While working on the homepage I kept an eye on those websites and others (Perl, Java) and my perception is that the proposed website compares well with others. Regarding ads, this is my "I told you" moment. I am completely opposed to ads anywhere on d-p-l.org, and I believe their presence hurts us in ways that the cost savings doesn't even begin to cover. I see it as a textbook case of "penny wise". That being said, Walter agreed with removing ads from the homepage but not the other parts of the site. I didn't get to that yet.

d-programming-language.org has ads?! LOL. I have so much stuff blocked in my hosts file that I didn't have a clue that that was the case. Yeah. I can understand wanting to recoup server costs and whatnot, but having ads on the home page of programming language definitely strikes me as bad. Even if it's just to recoup costs, it makes it look like we're trying to make money out of the deal, which is _not_ a good impression to make.

I've never seen them either. I *hope* they're at least text-only. Animating ads are an evil scourge upon the internet. Not only are they almost always irritating, but I find it physically impossible to read a page that has anything animating on it (and I'm fairly young). That's the single main reason I installed AdBlock Plus in the first place - so I could actually *use* the web.
Nov 14 2011
next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/14/11 1:15 PM, Nick Sabalausky wrote:
 I've never seen them either. I *hope* they're at least text-only. Animating
 ads are an evil scourge upon the internet.

They may be either text or animated graphics. Andrei
Nov 14 2011
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2011-11-14 22:15, Nick Sabalausky wrote:
 I've never seen them either. I *hope* they're at least text-only. Animating
 ads are an evil scourge upon the internet. Not only are they almost always
 irritating, but I find it physically impossible to read a page that has
 anything animating on it (and I'm fairly young). That's the single main
 reason I installed AdBlock Plus in the first place - so I could actually
 *use* the web.

I think they're Google ads. -- /Jacob Carlborg
Nov 14 2011
prev sibling next sibling parent =?utf-8?Q?Simen_Kj=C3=A6r=C3=A5s?= <simen.kjaras gmail.com> writes:
On Mon, 14 Nov 2011 22:15:49 +0100, Nick Sabalausky <a a.a> wrote:


 Animating
 ads are an evil scourge upon the internet. Not only are they almost  
 always
 irritating, but I find it physically impossible to read a page that has
 anything animating on it (and I'm fairly young). That's the single main
 reason I installed AdBlock Plus in the first place - so I could actually
 *use* the web.

Agreed. I use Opera's built-in ad blocker, and animated ones are the first to go. No mercy.
Nov 14 2011
prev sibling next sibling parent reply Kapps <Kapps NotValidEmail.com> writes:
On 13/11/2011 7:50 PM, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

I rather like the way it looks currently, but there are a few fairly major issues: There absolutely needs to be some sample code that shows off D's capabilities. Ideally things like parallel loops and CTFE, but those are likely too complex/big for something that should be small and simple. The most important thing anyone looks at when looking at a language, is sample code. The syntax and form speak a great deal about the language. It is very important that they be able to see it the moment they get onto the page (above the fold, without needing to click anything; basically, above News). There should be a very noticeable "Download Now" button on the page itself, without having to look at the sidebar. Every time I go to download DMD, it is always annoying trying to figure out where the link is. Even more confusing the first time you do it. Ideally, it could auto-detect your OS and send you to a download link directly for it, but that starts becoming too dynamic and may be too much effort to detect in a good way. And some other less major issues: News should contain a changelog link. I really, really, do not like the on Kindle underneath Book and Language Reference. Perhaps that could expand when clicked to specify [physical|kindle] for Book, and [online|kindle] Language Reference? Expanded by default, JavaScript collapses and then expands on click. Having "See example." makes it sound like clicking the example will take you to a new page, making the user not want to do so. As someone mentioned, it should be Show example. In my opinion, browse should use the archives. It at least provides a threaded view, which is what someone just looking at the language would want. Looking at peoples discussions on a new language and seeing a bunch of "Re: Something" is not useful.
Nov 14 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-15 03:18, Kapps wrote:
 There should be a very noticeable "Download Now" button on the page
 itself, without having to look at the sidebar. Every time I go to
 download DMD, it is always annoying trying to figure out where the link
 is. Even more confusing the first time you do it. Ideally, it could
 auto-detect your OS and send you to a download link directly for it, but
 that starts becoming too dynamic and may be too much effort to detect in
 a good way.

Just use DVM to install the latest compiler, then it's only: "dvm install -l" https://bitbucket.org/doob/dvm -- /Jacob Carlborg
Nov 14 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jacob Carlborg" <doob me.com> wrote in message 
news:j9t5gq$88e$1 digitalmars.com...
 On 2011-11-15 03:18, Kapps wrote:
 There should be a very noticeable "Download Now" button on the page
 itself, without having to look at the sidebar. Every time I go to
 download DMD, it is always annoying trying to figure out where the link
 is. Even more confusing the first time you do it. Ideally, it could
 auto-detect your OS and send you to a download link directly for it, but
 that starts becoming too dynamic and may be too much effort to detect in
 a good way.

Just use DVM to install the latest compiler, then it's only: "dvm install -l" https://bitbucket.org/doob/dvm

DVM really should be officially sanctioned and prominently recommended on d-p-l.org. I think the only big improvement DVM could really use at this point is a system-wide installation option that avoids the "edit .bashrc/whatever..." step on Posix. With just that, I really think it should be the #1 recommended way of obtaining DMD. And installers should be based upon it.
Nov 15 2011
parent reply Jacob Carlborg <doob me.com> writes:
On 2011-11-15 15:23, Nick Sabalausky wrote:
 "Jacob Carlborg"<doob me.com>  wrote in message
 news:j9t5gq$88e$1 digitalmars.com...
 On 2011-11-15 03:18, Kapps wrote:
 There should be a very noticeable "Download Now" button on the page
 itself, without having to look at the sidebar. Every time I go to
 download DMD, it is always annoying trying to figure out where the link
 is. Even more confusing the first time you do it. Ideally, it could
 auto-detect your OS and send you to a download link directly for it, but
 that starts becoming too dynamic and may be too much effort to detect in
 a good way.

Just use DVM to install the latest compiler, then it's only: "dvm install -l" https://bitbucket.org/doob/dvm

DVM really should be officially sanctioned and prominently recommended on d-p-l.org. I think the only big improvement DVM could really use at this point is a system-wide installation option that avoids the "edit .bashrc/whatever..." step on Posix. With just that, I really think it should be the #1 recommended way of obtaining DMD. And installers should be based upon it.

Yeah, system-wide installation would be nice. Just takes some thought to figure out how it should work together with single-user installations. -- /Jacob Carlborg
Nov 15 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jacob Carlborg" <doob me.com> wrote in message 
news:j9tueg$1rlo$3 digitalmars.com...
 On 2011-11-15 15:23, Nick Sabalausky wrote:
 DVM really should be officially sanctioned and prominently recommended on
 d-p-l.org.

 I think the only big improvement DVM could really use at this point is a
 system-wide installation option that avoids the "edit 
 .bashrc/whatever..."
 step on Posix. With just that, I really think it should be the #1
 recommended way of obtaining DMD. And installers should be based upon it.

Yeah, system-wide installation would be nice. Just takes some thought to figure out how it should work together with single-user installations.

What sort of specific potential problems do you see?
Nov 15 2011
parent Jacob Carlborg <doob me.com> writes:
On 2011-11-15 15:58, Nick Sabalausky wrote:
 "Jacob Carlborg"<doob me.com>  wrote in message
 news:j9tueg$1rlo$3 digitalmars.com...
 On 2011-11-15 15:23, Nick Sabalausky wrote:
 DVM really should be officially sanctioned and prominently recommended on
 d-p-l.org.

 I think the only big improvement DVM could really use at this point is a
 system-wide installation option that avoids the "edit
 .bashrc/whatever..."
 step on Posix. With just that, I really think it should be the #1
 recommended way of obtaining DMD. And installers should be based upon it.

Yeah, system-wide installation would be nice. Just takes some thought to figure out how it should work together with single-user installations.

What sort of specific potential problems do you see?

The thing is that I haven't thought about it that much. But on top my head I can think of: What should happen if dvm is installed system-wide and at the same time installed in the user's home directory? * Should it possible to both access the compilers that are installed in the system-wide installation and the single-user installation * What happens when the user tries to switch to a compiler that is installed system-wide but not in the user's home directory That's what I can think of for now, but there can be other similar scenarios. -- /Jacob Carlborg
Nov 15 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Tue, 15 Nov 2011 06:50:54 +0200, Adam D. Ruppe  
<destructionator gmail.com> wrote:

 Vladimir Panteleev wrote:
 How did you do the sandboxing?

I used setrlimit() in a single purpose VM.

What VM software did you use? -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 15 2011
prev sibling next sibling parent "Vladimir Panteleev" <vladimir thecybershadow.net> writes:
On Tue, 15 Nov 2011 16:46:37 +0200, Adam D. Ruppe  
<destructionator gmail.com> wrote:

 Vladimir Panteleev wrote:
 What VM software did you use?

VMWare on the first server. My next setup is going to use kvm and qemu.

I've played with UML today. It's nice, and fast enough to do a boot + compile + shutdown for every request. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
Nov 15 2011
prev sibling next sibling parent Ary Manzana <ary esperanto.org.ar> writes:
On 11/13/11 10:50 PM, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

// Defines a dictionary mapping string to int, type is int[string] auto auto table = [ "one" : 1, "two" : 2, "three" : 3 ]; I hate comments like: // This is a foo auto bar = ... Come on! // Defines a dictionary ... auto dictionary = ... In fact, once you write that, there's no need for the "defines a dictionary mapping". You can just write "mapping string to int".
Nov 15 2011
prev sibling next sibling parent reply Tobias Pankrath <tobias pankrath.net> writes:
There is also an error in the language spec site for classes. Probably a 
syntax error in the macros, because the page begins with $(SPEC_S Classes, 
and the text and background colours are wrong.

http://d-programming-language.org/class.html
Nov 17 2011
parent Trass3r <un known.com> writes:
https://github.com/D-Programming-Language/d-programming-language.org/pull/33
Nov 17 2011
prev sibling next sibling parent reply Xinok <xinok live.com> writes:
On 11/13/2011 8:50 PM, Andrei Alexandrescu wrote:
 Walter and I have been working on the website for a while. We want to
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work
 is content-only (no significant changes in style, though collapsible
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

I would suggest adding a single paragraph at the beginning which summarizes the language and it's benefits. It should be straight to the point. The first item on that page is type deduction, which isn't a good way to start. What type of language is it? It's a statically typed language which compiles to native machine code, but with modern features like garbage collection or dynamic arrays. What are its benefits? Higher productivity, fewer bugs, native speed, fast compilation. Those are the first things to come to mind when I think of D. Then in the following bullet points, you can provide examples and break it down in greater detail.
Nov 17 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/17/11 11:48 AM, Xinok wrote:
 I would suggest adding a single paragraph at the beginning which
 summarizes the language and it's benefits. It should be straight to the
 point. The first item on that page is type deduction, which isn't a good
 way to start.

 What type of language is it? It's a statically typed language which
 compiles to native machine code, but with modern features like garbage
 collection or dynamic arrays.

Good idea.
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals. Andrei
Nov 17 2011
next sibling parent bearophile <bearophileHUGS lycos.com> writes:
Andrei Alexandrescu:

 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

But they care for some things more than other ones. Python core developers work all the time to speed up the interpreter but the design goals of Python put runtime flexibility before runtime speed. D values dynamic and static correctness (despite it lacks built-in integral overflow errors, support for not nullable reference types, array covariance done well, and maybe few other smaller things) more than other languages like Go, even if not as much as Ada or SPARK, and it's willing to invest in language and type system complexity to do it. Bye, bearophile
Nov 17 2011
prev sibling next sibling parent reply Xinok <xinok live.com> writes:
On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:
 On 11/17/11 11:48 AM, Xinok wrote:
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

When a person visits the site for the first time, there's two things they want to know immediately: What and why? Besides for providing the "what", a description of the language, it's also important to answer, Why D? What is D's purpose? What does it excel at? Why would I want to use it? You don't have to use my example, but I think it's a good idea to include something along those lines.
Nov 17 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/17/11 7:50 PM, Xinok wrote:
 On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:
 On 11/17/11 11:48 AM, Xinok wrote:
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

When a person visits the site for the first time, there's two things they want to know immediately: What and why? Besides for providing the "what", a description of the language, it's also important to answer, Why D? What is D's purpose? What does it excel at? Why would I want to use it?

Because it has modern convenience, multi-paradigm power, and native efficiency. Andrei
Nov 17 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/18/11 2:16 AM, Derek wrote:
 On Fri, 18 Nov 2011 17:38:49 +1100, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:

 On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:
 On 11/17/11 11:48 AM, Xinok wrote:

use it?

Because it has modern convenience, multi-paradigm power, and native efficiency.

Still sounds like it was generated with a 'buzz-word' program. "modern convenience"? As opposed to what - modern inconvenience, old-fashioned convenience? Why not just say "convenient". DPL's syntax helps you write code by supporting convenient constructs and styles.

It's all explained right after. As opposed to languages that don't take advantage of /recent/ progress in programming language design, which make coding more /convenient/.
 "multi-paradigm power"? Let's face it, any product described using the
 term "power" is immediately suspect.

Why? I don't see that. I'm implying modeling power.
 Even if it IS powerful. That's not
 the point. If you want to emphasize the multi-paradigm aspect then just
 say that. DPL supports multiple coding paradigms, such as OOP,
 Functional, and Procedural.

Too long. That belongs to the extended description.
 "native efficiency"? What does that even mean?!

It means that D generates native code (no interpretation or virtual machine), which makes for efficient code.
 If you are trying to say
 that it can be fast, then just say that (of course it depends on the
 implementation - I'm sure someone could create a slow D compiler and one
 that generates slow object code if they wanted to). By the way, I'm sure
 that by "efficient" you are not referring to memory usage - DPL has a
 large memory footprint.

Compared to what?
 DPL compilation is typically fast because of its
 module concept that allows the compiler to efficiently process imported
 files and multiple files in one pass, and can generate fast machine code
 because the coder can express their intentions with precision, enabling
 the compiler to avoid generic output and produce targeted output instead.

Too long. Extended description.
 I'm no word-smith, but the front page of the D site ought to avoid
 ambiguous and meaningless buzz. It needs to be straight talking and
 engaging.

Then please give some good examples of straight talk that's engaging. Andrei
Nov 18 2011
prev sibling next sibling parent a <a a.com> writes:
 As opposed to other languages that have lower productivity, more bugs, 
 less speed and slower compilation as goals.

This just has to mean PHP :D
Nov 18 2011
prev sibling next sibling parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:ja4fhd$2amk$1 digitalmars.com...
 On 11/17/11 11:48 AM, Xinok wrote:
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.
Nov 18 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/18/11 7:22 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:ja4fhd$2amk$1 digitalmars.com...
 On 11/17/11 11:48 AM, Xinok wrote:
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.

These are too "motherhood and apple pie" kind of things, and too vague to be useful. Andrei
Nov 18 2011
parent reply Xinok <xinok live.com> writes:
On 11/18/2011 11:01 AM, Andrei Alexandrescu wrote:
 On 11/18/11 7:22 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message
 news:ja4fhd$2amk$1 digitalmars.com...
 On 11/17/11 11:48 AM, Xinok wrote:
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.

These are too "motherhood and apple pie" kind of things, and too vague to be useful. Andrei

That's why you go into more detail in the following bullet points. There are lots of terms you could use to describe a programming language: Strict, flexible, powerful, expressive, explicit, etc. Not all of these terms apply to D, so while they may be vague, they still give the newcomer a general idea. What is too vague is the terms at the top of the page, it sounds like a commercial for a hygiene product. "Intriguing, elegant, Loreal." D is a systems programming language which seamlessly integrates imperative, functional, object-oriented, low-level, and meta-programming styles into a single package. D compiles directly to machine code, so you get the efficiency of native executables with the convenience and productivity of modern languages. * I used the word 'efficiency' to describe native executables. D programs aren't necessarily faster, but they don't require an external runtime like Java or .NET. I find D programs have faster startup times and lower memory usage because of that. * Rather than saying "multi-paradigm", I went into a little more detail, listing the programming styles supported by D. "Low-level" refers to features like pointers, and inline assembly which is standard. * Providing links to external sources (Wikipedia) on certain terms may help to avoid confusion about what those terms actually mean in the context of D. * I'm just trying to get the ball rolling on this. I'm sure somebody else will write a better paragraph which puts mine to shame.
Nov 20 2011
parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/20/11 3:07 PM, Xinok wrote:
 On 11/18/2011 11:01 AM, Andrei Alexandrescu wrote:
 On 11/18/11 7:22 AM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message
 news:ja4fhd$2amk$1 digitalmars.com...
 On 11/17/11 11:48 AM, Xinok wrote:
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.

These are too "motherhood and apple pie" kind of things, and too vague to be useful. Andrei

That's why you go into more detail in the following bullet points. There are lots of terms you could use to describe a programming language: Strict, flexible, powerful, expressive, explicit, etc. Not all of these terms apply to D, so while they may be vague, they still give the newcomer a general idea. What is too vague is the terms at the top of the page, it sounds like a commercial for a hygiene product. "Intriguing, elegant, Loreal."

We're looking for a brief and memorable intro. Three long-winding sentences are not that. Andrei
Nov 20 2011
prev sibling parent Ary Manzana <ary esperanto.org.ar> writes:
On 11/17/11 11:21 PM, Andrei Alexandrescu wrote:
 On 11/17/11 11:48 AM, Xinok wrote:
 I would suggest adding a single paragraph at the beginning which
 summarizes the language and it's benefits. It should be straight to the
 point. The first item on that page is type deduction, which isn't a good
 way to start.

 What type of language is it? It's a statically typed language which
 compiles to native machine code, but with modern features like garbage
 collection or dynamic arrays.

Good idea.
 What are its benefits? Higher productivity, fewer bugs, native speed,
 fast compilation.

As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.

As opposed to other languages that have greater productivity, less bugs and don't need to be compiled.
Nov 18 2011
prev sibling next sibling parent Derek <ddparnell bigpond.com> writes:
On Fri, 18 Nov 2011 17:38:49 +1100, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:
 On 11/17/11 11:48 AM, Xinok wrote:

use it?

Because it has modern convenience, multi-paradigm power, and native efficiency.

Still sounds like it was generated with a 'buzz-word' program. "modern convenience"? As opposed to what - modern inconvenience, old-fashioned convenience? Why not just say "convenient". DPL's syntax helps you write code by supporting convenient constructs and styles. "multi-paradigm power"? Let's face it, any product described using the term "power" is immediately suspect. Even if it IS powerful. That's not the point. If you want to emphasize the multi-paradigm aspect then just say that. DPL supports multiple coding paradigms, such as OOP, Functional, and Procedural. "native efficiency"? What does that even mean?! If you are trying to say that it can be fast, then just say that (of course it depends on the implementation - I'm sure someone could create a slow D compiler and one that generates slow object code if they wanted to). By the way, I'm sure that by "efficient" you are not referring to memory usage - DPL has a large memory footprint. DPL compilation is typically fast because of its module concept that allows the compiler to efficiently process imported files and multiple files in one pass, and can generate fast machine code because the coder can express their intentions with precision, enabling the compiler to avoid generic output and produce targeted output instead. I'm no word-smith, but the front page of the D site ought to avoid ambiguous and meaningless buzz. It needs to be straight talking and engaging. -- Derek Parnell Melbourne, Australia
Nov 18 2011
prev sibling parent reply Derek <ddparnell bigpond.com> writes:
On Sat, 19 Nov 2011 02:12:15 +1100, Andrei Alexandrescu  
<SeeWebsiteForEmail erdani.org> wrote:

 On 11/18/11 2:16 AM, Derek wrote:
 On Fri, 18 Nov 2011 17:38:49 +1100, Andrei Alexandrescu
 <SeeWebsiteForEmail erdani.org> wrote:


 DPL has a large memory footprint.

Compared to what?

When a minimum D program is compiled, the executable is huge compared to the source code size. There are good reasons for that, but it is not a small footprint.
 I'm no word-smith, but the front page of the D site ought to avoid
 ambiguous and meaningless buzz. It needs to be straight talking and
 engaging.

Then please give some good examples of straight talk that's engaging.

I repeat ... I'm no word-smith; you have books to your name. DPL ... * Takes advantage of recent progress in programming language design, which makes coding more convenient. * Supports multiple coding models, such as OOP, Functional, Procedural, and System-level. * Generates native machine code (no interpretation or virtual machine), which makes for efficient code. -- Derek Parnell Melbourne, Australia
Nov 18 2011
parent reply Bane <branimir.milosavljevic gmail.com> writes:
<rant>
As a language claiming for itself it was created out of practical needs of
programmers I must say D fails on that test (both compilers and D website). It
is not user friendly. It is user hostile, for simplest and most common tasks.
Especially for newbie programmers.

It was like that 4 years ago when I first saw it, and it is much like that now.

You people should really hire some non-programmers with documenting skill and
knack for KISS principle to make D website and documentation. It is obvious
that Walter, Andrei and the rest of core people are highly skilled in their
field of work, but not interested, available or competent to present D
complexity in simple, right-to-the point way.

I guess it is so much more fun to add new features and optimize code than to
organize and present all the documentation the way it can be useful.

And come on, BUD like feature is first useful thing compilers are lacking.
Talking about practical need.
</rant>
Nov 18 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/18/11 1:15 PM, Bane wrote:
 <rant> As a language claiming for itself it was created out of
 practical needs of programmers I must say D fails on that test (both
 compilers and D website). It is not user friendly. It is user
 hostile, for simplest and most common tasks. Especially for newbie
 programmers.

 It was like that 4 years ago when I first saw it, and it is much
 like that now.

Is that the language, compiler, environment, or website? I got a bit confused.
 You people should really hire some non-programmers with documenting
 skill and knack for KISS principle to make D website and
 documentation. It is obvious that Walter, Andrei and the rest of
 core people are highly skilled in their field of work, but not
 interested, available or competent to present D complexity in
 simple, right-to-the point way.

Right now D is pushed forward by volunteer work. Indeed it would be great if more articles and tutorials were available.
 I guess it is so much more fun to add new features and optimize code
 than to organize and present all the documentation the way it can be
 useful.

Fun doesn't have a lot to do with it.
 And come on, BUD like feature is first useful thing compilers are
 lacking. Talking about practical need. </rant>

Agreed. To add to that, I am a bit worried that the most worked-on build management tool uses D1 and Ruby. Thanks, Andrei
Nov 18 2011
parent reply Bane <branimir.milosavljevic gmail.com> writes:
Andrei Alexandrescu Wrote:

 On 11/18/11 1:15 PM, Bane wrote:
 <rant> As a language claiming for itself it was created out of
 practical needs of programmers I must say D fails on that test (both
 compilers and D website). It is not user friendly. It is user
 hostile, for simplest and most common tasks. Especially for newbie
 programmers.

 It was like that 4 years ago when I first saw it, and it is much
 like that now.

Is that the language, compiler, environment, or website? I got a bit confused.

Website problems I think should be sorted out: - D1 vs D2, which to choose, what are differences between them etc. Too unclear and discouraging for a newcomer. - Too much old and unnecessary info. Too much redundant text. I suggest going again from scratch or just start using delete key without restrictions. Just one example: a lot is written about benefits of exception handling vs. C like return values etc. It is practically proven that approach is useful, nobody questions that. There is no need to clutter documentation with articles like that. Things like that should be shelved on some "old docs" place, not on prime pages. - Generally feeling "lets stuff as much info as possible here, and don't delete anything - it may be useful for somebody" that just overwhelms first time reader and distracts him.
 
 You people should really hire some non-programmers with documenting
 skill and knack for KISS principle to make D website and
 documentation. It is obvious that Walter, Andrei and the rest of
 core people are highly skilled in their field of work, but not
 interested, available or competent to present D complexity in
 simple, right-to-the point way.

Right now D is pushed forward by volunteer work. Indeed it would be great if more articles and tutorials were available.

I paused with D last year after (yet another) unsuccessful attempt to port my code from D1 to D2. reason: shared stuff. More specific reason - is it a bug with my code or docs ain't exact or that feature isn't working yet (even docs claim it works?)? So, I guess problem is correctness of manual for D2. Digging trough this newsletter to find is some feature working and how is terrible way for learning.
 
 I guess it is so much more fun to add new features and optimize code
 than to organize and present all the documentation the way it can be
 useful.

Fun doesn't have a lot to do with it.

Well... we wouldn't be here if we don't find programming fun (too).
 
 And come on, BUD like feature is first useful thing compilers are
 lacking. Talking about practical need. </rant>

Agreed. To add to that, I am a bit worried that the most worked-on build management tool uses D1 and Ruby.

It strikes me very bad seeing there are/were more than one project published (bud, dss etc. i might be mistaking) and god knows how many people made their solutions for internal work just to simplify task of compiling multiple files and yet - compilers still lack that feature. A lot of work invested in D tools just rot away because it is not incorporated into core, or ad least mentioned in proper docs "Hey guys, compiler don;t has feature Y yet, but here is official tool for that here, use it - just don't reinvent the wheel again". And there goes same with lot of small things. People who want D to succeed should start collecting those fruits and putting them where they can be seen.
 
 Thanks,
 
 Andrei

Nov 19 2011
parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 19/11/11 2:02 PM, Bane wrote:
 I paused with D last year after (yet another) unsuccessful attempt to port my
code from D1 to D2. reason: shared stuff. More specific reason - is it a bug
with my code or docs ain't exact or that feature isn't working yet (even docs
claim it works?)?

 So, I guess problem is correctness of manual for D2.  Digging trough this
newsletter to find is some feature working and how is terrible way for learning.

I agree with this 100%. It is true that a lot of advertised features in D simply do not work at all, and the fact that they don't work isn't documented anywhere except in the newsgroups. In addition to making it incredibly difficult to learn the language, it also dissuades people from writing tutorials. A couple of times I have started to write tutorials and stopped simply because the stuff I wrote didn't actually work (e.g. I'd write about selective imports, but then figure out that they don't work as advertised). I don't want to write tutorials that are filled with "D is awesome, you can do this... except you can't." Things that don't work simply shouldn't be mentioned in the docs. Put them on a "Work in progress" page or something so that people know what should be working, but don't advertise them as working features until at least one compiler supports them.
Nov 19 2011
parent reply Bane <branimir.milosavljevic gmail.com> writes:
Peter Alexander Wrote:

 On 19/11/11 2:02 PM, Bane wrote:
 I paused with D last year after (yet another) unsuccessful attempt to port my
code from D1 to D2. reason: shared stuff. More specific reason - is it a bug
with my code or docs ain't exact or that feature isn't working yet (even docs
claim it works?)?

 So, I guess problem is correctness of manual for D2.  Digging trough this
newsletter to find is some feature working and how is terrible way for learning.

I agree with this 100%. It is true that a lot of advertised features in D simply do not work at all, and the fact that they don't work isn't documented anywhere except in the newsgroups. In addition to making it incredibly difficult to learn the language, it also dissuades people from writing tutorials. A couple of times I have started to write tutorials and stopped simply because the stuff I wrote didn't actually work (e.g. I'd write about selective imports, but then figure out that they don't work as advertised). I don't want to write tutorials that are filled with "D is awesome, you can do this... except you can't." Things that don't work simply shouldn't be mentioned in the docs. Put them on a "Work in progress" page or something so that people know what should be working, but don't advertise them as working features until at least one compiler supports them.

Yup. Learning D is just too difficult comparing to most other popular languages. My general feeling is that it is sloppy and too great investment for one to get to know its powers mixed with pain-in-the-ass quirks. Delete docs, start from scratch, this time documenting only what is and not what it might become one day. Unfortunately, this can be done only by core people who really know how D ticks, and they are probably occupied with other stuff.
Nov 19 2011
next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 11/19/2011 11:33 AM, Bane wrote:
 Yup. Learning D is just too difficult comparing to most other popular
 languages. My general feeling is that it is sloppy and too great investment
 for one to get to know its powers mixed with pain-in-the-ass quirks.

It would be nice to be more specific about what pain points you experienced.
Nov 19 2011
parent Bane <branimir.milosavljevic gmail.com> writes:
Walter Bright Wrote:

 On 11/19/2011 11:33 AM, Bane wrote:
 Yup. Learning D is just too difficult comparing to most other popular
 languages. My general feeling is that it is sloppy and too great investment
 for one to get to know its powers mixed with pain-in-the-ass quirks.

It would be nice to be more specific about what pain points you experienced.

Main thing was with threading and shared vars. It was painful experience for me last year, I couldn't manage to migrate code to D2. Lost about a month experimenting and digging trough all documentation. At the end, I didn't had final answer what was wrong - me or docs or some obscure bug i couldn't find in bug tracker. Not finding answer was that pain in the ass. Things might be changed now, but I am not ready to experiment again. So I'm sticking with proven D.1.030 for time being.
Nov 19 2011
prev sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 11/19/2011 08:33 PM, Bane wrote:
 Peter Alexander Wrote:

 On 19/11/11 2:02 PM, Bane wrote:
 I paused with D last year after (yet another) unsuccessful attempt to port my
code from D1 to D2. reason: shared stuff. More specific reason - is it a bug
with my code or docs ain't exact or that feature isn't working yet (even docs
claim it works?)?

 So, I guess problem is correctness of manual for D2.  Digging trough this
newsletter to find is some feature working and how is terrible way for learning.

I agree with this 100%. It is true that a lot of advertised features in D simply do not work at all, and the fact that they don't work isn't documented anywhere except in the newsgroups. In addition to making it incredibly difficult to learn the language, it also dissuades people from writing tutorials. A couple of times I have started to write tutorials and stopped simply because the stuff I wrote didn't actually work (e.g. I'd write about selective imports, but then figure out that they don't work as advertised). I don't want to write tutorials that are filled with "D is awesome, you can do this... except you can't." Things that don't work simply shouldn't be mentioned in the docs. Put them on a "Work in progress" page or something so that people know what should be working, but don't advertise them as working features until at least one compiler supports them.

Yup. Learning D is just too difficult comparing to most other popular languages. My general feeling is that it is sloppy and too great investment for one to get to know its powers mixed with pain-in-the-ass quirks.

There is 'D' the language and 'DMD' the implementation. You confuse the two. The quirks you are talking about are DMD's, but the specification is that of D. DMD needs to be fixed, and that is what the 'core people' are working on. BTW, I have never felt much PITA when working with DMD even though I have hit a few bugs. What are the specific quirks you are referring to?
 Delete docs, start from scratch, this time documenting only what is and not
what it might become one day. Unfortunately, this can be done only by core
people who really know how D ticks, and they are probably occupied with other
stuff.

I agree that the specification should be reworked and made thorough and unambiguous. I completely disagree that DMD bugs should be incorporated into the D language specification.
Nov 19 2011
next sibling parent reply Peter Alexander <peter.alexander.au gmail.com> writes:
On 19/11/11 8:22 PM, Timon Gehr wrote:
 On 11/19/2011 08:33 PM, Bane wrote:
 Peter Alexander Wrote:

 On 19/11/11 2:02 PM, Bane wrote:
 I paused with D last year after (yet another) unsuccessful attempt
 to port my code from D1 to D2. reason: shared stuff. More specific
 reason - is it a bug with my code or docs ain't exact or that
 feature isn't working yet (even docs claim it works?)?

 So, I guess problem is correctness of manual for D2. Digging trough
 this newsletter to find is some feature working and how is terrible
 way for learning.

I agree with this 100%. It is true that a lot of advertised features in D simply do not work at all, and the fact that they don't work isn't documented anywhere except in the newsgroups. In addition to making it incredibly difficult to learn the language, it also dissuades people from writing tutorials. A couple of times I have started to write tutorials and stopped simply because the stuff I wrote didn't actually work (e.g. I'd write about selective imports, but then figure out that they don't work as advertised). I don't want to write tutorials that are filled with "D is awesome, you can do this... except you can't." Things that don't work simply shouldn't be mentioned in the docs. Put them on a "Work in progress" page or something so that people know what should be working, but don't advertise them as working features until at least one compiler supports them.

Yup. Learning D is just too difficult comparing to most other popular languages. My general feeling is that it is sloppy and too great investment for one to get to know its powers mixed with pain-in-the-ass quirks.

There is 'D' the language and 'DMD' the implementation. You confuse the two. The quirks you are talking about are DMD's, but the specification is that of D. DMD needs to be fixed, and that is what the 'core people' are working on.

You are right, but DMD is the reference implementation and as such should implement everything in the language. Bugs are to be expected, and you may even expect to see some of the esoteric corner cases of the language unimplemented, but it is quite frustrating when many fundamental features are simply unimplemented or don't work as designed. If the reference implementation doesn't implement the language it claims to implement then at the very least it should still be marked as an alpha or beta version of the compiler, but that's not the case. At the very, *very* least there should be a note on the DMD download page that says that it is an unfinished implementation, with perhaps a link to a list of major unimplemented features.
Nov 19 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/19/2011 10:16 PM, Peter Alexander wrote:
 On 19/11/11 8:22 PM, Timon Gehr wrote:
 On 11/19/2011 08:33 PM, Bane wrote:
 Peter Alexander Wrote:

 On 19/11/11 2:02 PM, Bane wrote:
 I paused with D last year after (yet another) unsuccessful attempt
 to port my code from D1 to D2. reason: shared stuff. More specific
 reason - is it a bug with my code or docs ain't exact or that
 feature isn't working yet (even docs claim it works?)?

 So, I guess problem is correctness of manual for D2. Digging trough
 this newsletter to find is some feature working and how is terrible
 way for learning.

I agree with this 100%. It is true that a lot of advertised features in D simply do not work at all, and the fact that they don't work isn't documented anywhere except in the newsgroups. In addition to making it incredibly difficult to learn the language, it also dissuades people from writing tutorials. A couple of times I have started to write tutorials and stopped simply because the stuff I wrote didn't actually work (e.g. I'd write about selective imports, but then figure out that they don't work as advertised). I don't want to write tutorials that are filled with "D is awesome, you can do this... except you can't." Things that don't work simply shouldn't be mentioned in the docs. Put them on a "Work in progress" page or something so that people know what should be working, but don't advertise them as working features until at least one compiler supports them.

Yup. Learning D is just too difficult comparing to most other popular languages. My general feeling is that it is sloppy and too great investment for one to get to know its powers mixed with pain-in-the-ass quirks.

There is 'D' the language and 'DMD' the implementation. You confuse the two. The quirks you are talking about are DMD's, but the specification is that of D. DMD needs to be fixed, and that is what the 'core people' are working on.

You are right, but DMD is the reference implementation and as such should implement everything in the language. Bugs are to be expected, and you may even expect to see some of the esoteric corner cases of the language unimplemented, but it is quite frustrating when many fundamental features are simply unimplemented or don't work as designed. If the reference implementation doesn't implement the language it claims to implement then at the very least it should still be marked as an alpha or beta version of the compiler, but that's not the case. At the very, *very* least there should be a note on the DMD download page that says that it is an unfinished implementation, with perhaps a link to a list of major unimplemented features.

I agree.
Nov 19 2011
prev sibling parent reply Bane <branimir.milosavljevic gmail.com> writes:
 
 There is 'D' the language and 'DMD' the implementation. You confuse the 
 two. The quirks you are talking about are DMD's, but the specification 
 is that of D. DMD needs to be fixed, and that is what the 'core people' 
 are working on.

I am using dmd compilers just because I believe they are first to implement new features and define standard for language. I might be wrong.
 
 BTW, I have never felt much PITA when working with DMD even though I 
 have hit a few bugs. What are the specific quirks you are referring to?
 

 Delete docs, start from scratch, this time documenting only what is and not
what it might become one day. Unfortunately, this can be done only by core
people who really know how D ticks, and they are probably occupied with other
stuff.

I agree that the specification should be reworked and made thorough and unambiguous. I completely disagree that DMD bugs should be incorporated into the D language specification.

I didn't say bugs should be incorporated. I say features not working on certain implementations should be clearly documented. Preferably in D language manual, as I believe that should be primary source for learning.
Nov 19 2011
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 11/20/2011 02:23 AM, Bane wrote:
 There is 'D' the language and 'DMD' the implementation. You confuse the
 two. The quirks you are talking about are DMD's, but the specification
 is that of D. DMD needs to be fixed, and that is what the 'core people'
 are working on.

I am using dmd compilers just because I believe they are first to implement new features and define standard for language. I might be wrong.
 BTW, I have never felt much PITA when working with DMD even though I
 have hit a few bugs. What are the specific quirks you are referring to?


Well, that does not answer my question since I am working exclusively with D2.
Nov 20 2011
prev sibling next sibling parent reply Gour <gour atmarama.net> writes:
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

On Sun, 13 Nov 2011 19:50:04 -0600
Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:

Dear Andrei,

 Walter and I have been working on the website for a while. We want to=20
 crystallize a clear message of what the D programming language is.

you might remember be being quite interested in D in order to write general desktop app using D+Qt, but then decided the time is not ripe (yet) and went exploring Python + Cython. Today I went to re-check what's new in the community and found out about this longish thread...
 Feedback is welcome.

My humble opinion is that D is very fine language and the exact wording on the site are not so important like this multi-paradigm discussion. However, if you check e.g. Python's site (http://python.org/about/) you can see the following: - extensive standard libraries and third party modules for virtually every = task which is later supplemented with: "Fans of Python use the phrase "batteries included" to describe the standard library, which covers everything from asynchronous processing to zip files. The language itself is a flexible powerhouse that can handle practically any problem domain. Build your own web server in three lines of code. Build flexible data-driven code using Python's powerful and dynamic introspection capabilities and advanced language features such as meta-classes, duck typing and decorators..." Today I found out that e.g. gtkD is one man show, development of QtD is mostly stalled...so my suggestion is not to focus so much on the homepage blurb, but to honestly explain what is the status od D's "batteries" and how long one is expected to wait to pick something from the 'charger'. The language itself is advancing very nicely, gdc & ldc are alive, gdc might get into 4.7, but at the end, developer needs libraries for "virtually every task ". Although seeing the current state of QtD made me sad a bit, hearing about application written using GtkD is encouraging. btw, Haskell also has short intro: "Haskell is a computer programming language. In particular, it is a polymorphically statically typed, lazy, purely functional language, quite different from most other programming languages." Sincerely, Gour --=20 In this endeavor there is no loss or diminution,=20 and a little advancement on this path can protect=20 one from the most dangerous type of fear. http://atmarama.net | Hlapicina (Croatia) | GPG: 52B5C810
Nov 19 2011
parent Walter Bright <newshound2 digitalmars.com> writes:
On 11/19/2011 10:18 PM, Jude Young wrote:
 I'm working on getting pretty much any library that I can get my hands
 on into Deimos just as fast as I can.

 So far I've helped with ncurses, ZeroMQ, CZMQ(high-level C wrapper for
 ZeroMQ)....

This is valuable work, keep it coming!
Nov 19 2011
prev sibling next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 11/14/11, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:
 Please take a look at http://d-programming-language.org/new/. T

I think you could add screenshots and links to D IDE's like VisualD/DDT/XCode, IDEs are one of the first things any newbie posts about and it should be one of the first things they see listed on the website. I don't like this: "Concurrency seems difficult? Fear no more. D offers an innovative approach featuring true immutable data, no sharing by default, and controlled mutable sharing across threads." You start advertising how simple concurrency is and then go into unnecessary detail that people unfamiliar with concurrency techniques will be confused with. I'd rewrite it to: "D is multicore-ready. It's flagship message-passing technology will make your programs efficient, correct, and scale to the multicore hardware of tomorrow." You could put a "Read more" link to some page that describes the other techniques like using shared/gshared/etc. I'd replace "To contribute" with "Join the dev team" or "Open to Contributions", or something invitational like that. Last point, there should really be a "Download now" or "Get it now" or "Try it out!" button somewhere. Almost every programming language website has a nice graphical download link that's easily spotted.
Nov 19 2011
prev sibling next sibling parent Jude Young <10equals2 gmail.com> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/19/2011 03:00 PM, Gour wrote:

 The language itself is advancing very nicely, gdc & ldc are alive,
 gdc might get into 4.7, but at the end, developer needs libraries
 for "virtually every task ".

I'm working on getting pretty much any library that I can get my hands on into Deimos just as fast as I can. So far I've helped with ncurses, ZeroMQ, CZMQ(high-level C wrapper for ZeroMQ).... Currently trying to get OpenMPI working, but that's pretty big and will probably take a few weeks(months?) at least... Deimos seems to need a little help cause there hasn't been any activity for almost 5 days now... (It really needs help cause it can't keep up with my rapid pace. hahah) I'd volunteer to help manage it, but I'm pretty new to the scene and I'm pretty sure that I haven't "proven myself" yet. What I'm trying to say is that people are working on what you're talking about. It'll just take some time, or more man-power. It would help if you would give me a few libraries that you 'know' would be useful,and that people would like to have. I'll get started on them soon, but it'll be a few weeks before you'll see much progress. In other words, Help me help you. =P -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJOyJvJAAoJENcHIWLyQiSlY70H/0R2Co64wySn/W1ikAfZjuKk SVXg/RebIUcUIS7Zw6qg3m7ENG5rtnO7pH+fQtjU624ezzSZS3W1euBokUulThAz OUNMxkR3lqO9oLn0E3owux/cMsCnzEd4JvXbJEu27zHeUoTAHoMit0NrniBMVo4n zXfluPPDN05XIRRguw/XvnOkUhmLzQqEVjmQR452sZZFpIfrzbKo8Kmr/PiyFu+S 5uwX13suV7kRQPpv642iMDPcCJ/DRPXkub0f1NvaXug2U7ctjIEmYnaMGZHVZM13 3RqYmRnqtzrjxQB8ttXdh91FuIrL61nzlst/o0jgO4Jv07yNoPsC+CqslowEcYM= =25Hf -----END PGP SIGNATURE-----
Nov 19 2011
prev sibling next sibling parent Gour <gour atmarama.net> writes:
LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMQ0KDQpPbiBTdW4s
IDIwIE5vdiAyMDExIDAwOjE4OjQ5IC0wNjAwDQpKdWRlIFlvdW5nIDwxMGVxdWFsczJAZ21haWwu
Y29tPiB3cm90ZToNCg0KPiBJdCB3b3VsZCBoZWxwIGlmIHlvdSB3b3VsZCBnaXZlIG1lIGEgZmV3
IGxpYnJhcmllcyB0aGF0IHlvdSAna25vdycNCj4gd291bGQgYmUgdXNlZnVsLGFuZCB0aGF0IHBl
b3BsZSB3b3VsZCBsaWtlIHRvIGhhdmUuDQoNCkZvciBub3cgSSdkIGxpa2UgdG8gaGF2ZSBjb21w
bGV0ZSBzcWxpdGUzIGJpbmRpbmdzIHdpdGggcG9zc2libHkNCmhpZ2hlci1sZXZlbCBELWlzaCBB
UEkgYW5kL29yIGdlbmVyYWwgREItQVBJIGNvdmVyaW5nIHRoZQ0KTXlTUWwvUG9zdGdyZVNRTC9T
cWxpdGUgdHJpby4NCg0KQW5vdGhlciBzZW5zaXRpdmUgYXJlYSBhcmUgR1VJIGJpbmRpbmdzOiBR
dGQgaXMgcHJhY3RpY2FsbHkgc3RhbGxlZCwNCndoaWxlIGd0a0QgaXMgb25lLW1hbi1zaG93IChh
cyBJJ20gdG9sZCBvbiAjZ3RrZCB5ZXN0ZXJkYXkpLg0KDQoNCldoYXQgaXMgdGhlIHJlY29tbWVu
ZGVkIHRvb2wgdG8gcHJvdmlkZSBoaWdoZXItbGV2ZWwgRCBiaW5kaW5ncyBmb3INCkMtbGlicz8N
Cg0KPiBJJ2xsIGdldCBzdGFydGVkIG9uIHRoZW0gc29vbiwgYnV0IGl0J2xsIGJlIGEgZmV3IHdl
ZWtzIGJlZm9yZSB5b3UnbGwNCj4gc2VlIG11Y2ggcHJvZ3Jlc3MuDQoNCk5vIHJ1c2guIDspDQoN
Cj4gSW4gb3RoZXIgd29yZHMsIEhlbHAgbWUgaGVscCB5b3UuDQoNClllYWgsIEkgZ2V0IHRoZSBw
b2ludC4uLg0KDQoNCg0KU2luY2VyZWx5LA0KR291cg0KDQoNCi0gLS0gDQpBcyB0aGUgZW1ib2Rp
ZWQgc291bCBjb250aW51b3VzbHkgcGFzc2VzLCBpbiB0aGlzIGJvZHksIA0KZnJvbSBib3lob29k
IHRvIHlvdXRoIHRvIG9sZCBhZ2UsIHRoZSBzb3VsIHNpbWlsYXJseSBwYXNzZXMgDQppbnRvIGFu
b3RoZXIgYm9keSBhdCBkZWF0aC4gQSBzb2JlciBwZXJzb24gaXMgbm90IGJld2lsZGVyZWQgDQpi
eSBzdWNoIGEgY2hhbmdlLg0KDQpodHRwOi8vYXRtYXJhbWEubmV0IHwgSGxhcGljaW5hIChDcm9h
dGlhKSB8IEdQRzogNTJCNUM4MTANCi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQpWZXJz
aW9uOiBHbnVQRyB2MS40LjExIChHTlUvTGludXgpDQoNCmlRSWNCQUVCQWdBR0JRSk95SzgwQUFv
SkVMaHhYUFZTdGNnUWlFWVAvMkt4bFN1d0RUZFhkdk11a0VYWjh1cWoNCmZkTFdGUENtc3FVVTU2
UnJacDRHM3ZITnVKQ2dsM2lrUGFBaFgxZE83dk83NHdDOXR1YzIwYUtTODd3Z0VxNTINCjRmUVVr
VXkrU3IxbHJ1S3B5NzRRWmh2WFJ6Qjh5NW5Yd0RXUTFJWEVqSlcvU2ZsTEQzZnBiVjQ0UkF4QXdO
T3cNCk1ia3hDVkNUcE9MOXlqWlRNbnhHQ282dE4zWWt6N1dGN29pWWtwbE41WjVpQ2VQTDJzQi9k
QW5La0FqT1Q1SmoNCk1OeXREa3lDYUpqQ0haZ0RHMnJuRXJBMlR3TXczbDNob2k3bkJ5ZEYzK2Ru
d01sdWJhbVdoRFF2dEJ6cnRtQmcNCnBiYkgwUS9NdWZla25kc2VuQXluZkQwSzRobGVUNktUbmhN
VHRPbmZ6bVVBRW0rN08vUzVhNVJ4QUkvalFOMTkNCk1xTmVoY3hlMzZtbld6MjlKcmhTN251UHNx
cS9hL2NsRHZCRUNYWU5UN3lYYUN2SXY3U2x4dStBeDI5eTMxWFINClZiemNXUVlXSHVoUnNBTVFT
MDJTR2hIV3dMdld4UFh1dkMva0J4Mk5rTms3cWRjdnpEMDFoYm9uNVVhNUF2OEUNCkN5MVVUS0Qy
Y1BkbUN6MU5QQlk2bkVkMzJYL1B2aU5mamIvOE5WZ0VSQ2FQLzlPNS9VQlV6TWJZVW4zeVNrSHYN
CjdTaFdTRjdPMzJqQS90RnVZdEg0SDUxWjM2b0NUejBRVlRzekhRVWlIVk5Mc3haSmVwRFpRN0kr
VFpvanZnaloNCmk0NXdPUHNGTXpoTldFdC9td2xmWThTU0JTd0dpZkFneDJHM25LYXZCQ2R2QkF3
TlFMZW5renQ4MUREWHhXMW8NCkFKd2w5anM4ditTWmVUUWRnV1pZDQo9d0tkUQ0KLS0tLS1FTkQg
UEdQIFNJR05BVFVSRS0tLS0tDQo=
Nov 19 2011
prev sibling next sibling parent Jude Young <10equals2 gmail.com> writes:
On Sun 20 Nov 2011 12:43:56 AM CST, Walter Bright wrote:
 On 11/19/2011 10:18 PM, Jude Young wrote:
 I'm working on getting pretty much any library that I can get my hands
 on into Deimos just as fast as I can.

 So far I've helped with ncurses, ZeroMQ, CZMQ(high-level C wrapper for
 ZeroMQ)....

This is valuable work, keep it coming!

Thank you
Nov 19 2011
prev sibling next sibling parent Jude Young <10equals2 gmail.com> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/20/2011 01:41 AM, Gour wrote:
 On Sun, 20 Nov 2011 00:18:49 -0600 Jude Young <10equals2 gmail.com>
 wrote:
 
 It would help if you would give me a few libraries that you
 'know' would be useful,and that people would like to have.

For now I'd like to have complete sqlite3 bindings with possibly higher-level D-ish API and/or general DB-API covering the MySQl/PostgreSQL/Sqlite trio.

I believe that this is being worked on, check the archives. https://github.com/bioinfornatics/DSQLite/blob/master/examples/test_sql.d is what I found with a little searching. I don't know how far along that is though...
 
 Another sensitive area are GUI bindings: Qtd is practically
 stalled, while gtkD is one-man-show (as I'm told on #gtkd
 yesterday).

You're right, GUI is definitely important. And with that, my plate is officially overflowing.
 
 
 What is the recommended tool to provide higher-level D bindings
 for C-libs?

Not sure that there is one. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJOyLV9AAoJENcHIWLyQiSlcyMH/jOxzzx+/ReW6D3sR0+shN4O 4Wg2KNW8+40SOi+hPs4HUwZQauGVyAg6NX4hU1ruDp2WVTSIyaE40k72ECm+pLpN RKfcRdnyar9hmUvSUPVQ3IpE8wfiN2OXBJEewKzxmTlGkKC0gfBNFfrCOzb/wgfA rbvilG/S0PmTtDmJ5iKyu0wPGtVRWq5dYXEhNM81HfP0T9S1T4yt5MXinGgsS5oS 78f7PJ414t/HdCKajEYmSS22Q/Sd8+Azduk+Vl/cGUxhyo9QXvwQWSF29oWKX2N4 RfcuIpg/F8qQPfAEXfP5E8/yHRMwz8ORhUaMMPZhVa5VHsVWamRQb9BmYhlK7yQ= =NZtR -----END PGP SIGNATURE-----
Nov 20 2011
prev sibling parent reply Andrea Fontana <advmail katamail.com> writes:
I see that http://www.digitalmars.com/d/ redirect to 
http://www.d-programming-language.org/ using a meta http-equiv=refresh.

You should redirect using a http 301 headers to transfer google ranking
to new domain..

Andrea

Andrei Alexandrescu wrote:

 Walter and I have been working on the website for a while. We want to 
 crystallize a clear message of what the D programming language is.

 Please take a look at http://d-programming-language.org/new/. The work 
 is content-only (no significant changes in style, though collapsible 
 examples and twitter news are a new style element).

 Feedback is welcome.


 Thanks,

 Andrei

Nov 20 2011
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/20/11 4:43 AM, Andrea Fontana wrote:
 I see that http://www.digitalmars.com/d/ redirect to
 http://www.d-programming-language.org/ using a meta http-equiv=refresh.

 You should redirect using a http 301 headers to transfer google ranking
 to new domain..

 Andrea

Request forwarded. Andrei
Nov 20 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:jabkq4$1nu6$1 digitalmars.com...
 On 11/20/11 4:43 AM, Andrea Fontana wrote:
 I see that http://www.digitalmars.com/d/ redirect to
 http://www.d-programming-language.org/ using a meta http-equiv=refresh.

 You should redirect using a http 301 headers to transfer google ranking
 to new domain..

 Andrea

Request forwarded.

Hah! I see what you did there... ;)
Nov 20 2011
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/20/11 2:55 PM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:jabkq4$1nu6$1 digitalmars.com...
 On 11/20/11 4:43 AM, Andrea Fontana wrote:
 I see that http://www.digitalmars.com/d/ redirect to
 http://www.d-programming-language.org/ using a meta http-equiv=refresh.

 You should redirect using a http 301 headers to transfer google ranking
 to new domain..

 Andrea

Request forwarded.

Hah! I see what you did there... ;)

Telling the truth is what I did. I don't have access to the the config files and .htaccess use is disabled, so I sent the request to the site admin. Andrei
Nov 20 2011
next sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 11/20/11 4:03 PM, Andrei Alexandrescu wrote:
 On 11/20/11 2:55 PM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message
 news:jabkq4$1nu6$1 digitalmars.com...
 On 11/20/11 4:43 AM, Andrea Fontana wrote:
 I see that http://www.digitalmars.com/d/ redirect to
 http://www.d-programming-language.org/ using a meta http-equiv=refresh.

 You should redirect using a http 301 headers to transfer google ranking
 to new domain..

 Andrea

Request forwarded.

Hah! I see what you did there... ;)

Telling the truth is what I did. I don't have access to the the config files and .htaccess use is disabled, so I sent the request to the site admin. Andrei

Got word back - this has been taken cared of. Except for newsgroups and download, everything D related on digitalmars.com seamlessly forwards to d-programming-language.org. Andrei
Nov 20 2011
prev sibling parent "Nick Sabalausky" <a a.a> writes:
"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message 
news:jabtgj$2jua$1 digitalmars.com...
 On 11/20/11 2:55 PM, Nick Sabalausky wrote:
 "Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org>  wrote in message
 news:jabkq4$1nu6$1 digitalmars.com...
 On 11/20/11 4:43 AM, Andrea Fontana wrote:
 I see that http://www.digitalmars.com/d/ redirect to
 http://www.d-programming-language.org/ using a meta http-equiv=refresh.

 You should redirect using a http 301 headers to transfer google ranking
 to new domain..

 Andrea

Request forwarded.

Hah! I see what you did there... ;)

Telling the truth is what I did. I don't have access to the the config files and .htaccess use is disabled, so I sent the request to the site admin.

Guess the irony wasn't deliberate then: "http 301"..."request forwarded"...although HTTP more commonly uses the term "redirected", but it's a similar thing.
Nov 21 2011
prev sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
Btw, DMD still ships web files from digitalmars.com instead of the new one.
Nov 20 2011