digitalmars.D - Website message overhaul
- Andrei Alexandrescu (8/8) Nov 13 2011 Walter and I have been working on the website for a while. We want to
- so (4/12) Nov 13 2011 Looks good, but a compiler instead of that twitter thing would rock.
- Jonathan M Davis (10/18) Nov 13 2011 Are there any major differences other than the main page and the links t...
- Andrei Alexandrescu (3/14) Nov 13 2011 No.
- Andrei Alexandrescu (6/14) Nov 13 2011 We need to add a big "Download" button that detects the client operating...
- Jonathan M Davis (6/11) Nov 13 2011 Looking at the html source for the page, it looks right, so my guess is ...
- bearophile (7/8) Nov 13 2011 The overall look is nice, I like the foldable examples, but I think ther...
- Andrei Alexandrescu (5/10) Nov 13 2011 What characteristic of D would you substitute as a major differentiating...
- bearophile (6/8) Nov 14 2011 In this specific case I suggest to remove the word "power".
- Lutger Blijdestijn (3/17) Nov 14 2011 I like the term modeling power a lot, and would use this as the main poi...
- Andrei Alexandrescu (8/25) Nov 14 2011 I don't see it that way. It dilutes the message by replacing it with a
- Jude Young (21/36) Nov 13 2011 -----BEGIN PGP SIGNED MESSAGE-----
- Jacob Carlborg (5/13) Nov 13 2011 No mention of metaprogramming?
- Andrei Alexandrescu (5/21) Nov 14 2011 It's part of the multi-paradigm point, but it should be better
- Tobias Pankrath (5/18) Nov 14 2011 The "Forums" link points to a digitalmars.com page. I'd say, it shouldn'...
- Andrei Alexandrescu (4/22) Nov 14 2011 Yes, we plan to migrate the groups and downloads page to d-p-l.org.
- Vladimir Panteleev (15/17) Nov 14 2011 It's way too cheesy in my opinion. Reads like a desperate sales pitch.
- Timon Gehr (8/22) Nov 14 2011 Very nice, but there is not really much more to say about Go (on a front...
- Andrei Alexandrescu (13/27) Nov 14 2011 There was more text on the page before, including a code example that
- Vladimir Panteleev (12/20) Nov 14 2011 Most other front pages are still more varied and dynamic.
- Andrei Alexandrescu (6/22) Nov 14 2011 What happened is that nobody took those to completion. I did all I could...
- Vladimir Panteleev (11/24) Nov 14 2011 I could easily do the technical part (I already have something that
- Adam D. Ruppe (10/11) Nov 14 2011 If you like, I can send you the code from my
- Adam D. Ruppe (4/4) Nov 14 2011 Oh, forgot to mention, that "try now" button currently
- Vladimir Panteleev (11/13) Nov 14 2011 How did you do the sandboxing?
- Adam D. Ruppe (10/11) Nov 14 2011 I used setrlimit() in a single purpose VM.
- Vladimir Panteleev (6/9) Nov 15 2011 What VM software did you use?
- Adam D. Ruppe (3/4) Nov 15 2011 VMWare on the first server.
- Vladimir Panteleev (7/11) Nov 15 2011 I've played with UML today. It's nice, and fast enough to do a boot +
- Adam D. Ruppe (9/9) Nov 15 2011 Just to see what I'd look like, I took my nntp.d and imported
- Vladimir Panteleev (12/18) Nov 14 2011 That's a solid piece of work.
- Adam D. Ruppe (18/20) Nov 14 2011 I sort of did. The code was available in my dcode folder and
- Jonathan M Davis (8/41) Nov 14 2011 d-programming-language.org has ads?! LOL. I have so much stuff blocked i...
- Nick Sabalausky (8/52) Nov 14 2011 I've never seen them either. I *hope* they're at least text-only. Animat...
- Andrei Alexandrescu (3/5) Nov 14 2011 They may be either text or animated graphics.
- =?utf-8?Q?Simen_Kj=C3=A6r=C3=A5s?= (3/10) Nov 14 2011 Agreed. I use Opera's built-in ad blocker, and animated ones are the
- Jacob Carlborg (4/10) Nov 14 2011 I think they're Google ads.
- Timon Gehr (27/35) Nov 14 2011 Looks good, I think this is the right direction.
- Andrea Fontana (10/67) Nov 14 2011 I think most of programmers has an analytical mind. So IMHO a comparison
- Timon Gehr (9/13) Nov 14 2011 I think this is a valid proposal, but an analytical mind is usually able...
- Jonathan M Davis (4/21) Nov 14 2011 Having such a page is a good idea, but I don't know that it needs to be ...
- Andrea Fontana (13/31) Nov 14 2011 Ok, but check this:
- Timon Gehr (3/12) Nov 14 2011 I agree, those should totally be in an example somewhere. I was just
- so (3/6) Nov 14 2011 I do not agree, most programmers have only one thing in common, they all...
- Walter Bright (2/5) Nov 14 2011 There used to be a comparison chart. Everyone hated it.
- so (3/10) Nov 14 2011 Not everyone, it was the first thing i checked, C++/C/C++0x comparison.
- Walter Bright (3/12) Nov 14 2011 Well, it's dead and will not be resurrected. The criticism of it was hea...
- Steven Schveighoffer (16/33) Nov 14 2011 http://www.d-programming-language.org/new/comparison.html
- Steven Schveighoffer (5/28) Nov 14 2011 I mean 4 comments :P
- Nick Sabalausky (4/21) Nov 14 2011 I found it to be a *huge* help when I first came across D. I always like...
- Dejan Lekic (7/10) Nov 18 2011 I strongly disagree. :)
- Andrei Alexandrescu (8/34) Nov 14 2011 It's difficult to be concise and complete simultaneously. The underlying...
- Timon Gehr (26/71) Nov 14 2011 There has been disagreement on whether or not my bug report on the
- Brad Anderson (8/93) Nov 14 2011 I think that's a good idea. While learning D I became impressed with it
- Timon Gehr (2/90) Nov 14 2011 You can also use stride(..., 3) instead of filtering.
- bearophile (19/23) Nov 14 2011 reduce!"a + b"() is going to be replaced by std.algorithm.sum().
- Timon Gehr (11/34) Nov 14 2011 Some people like query-style formatting:
- Dejan Lekic (5/5) Nov 14 2011 Andrei, what attracted me to D some ... 7-8 years ago was the fact it is...
- Walter Bright (10/14) Nov 14 2011 The idea for the front page is to list 3 concepts about D. Not 2, not 4,...
- Nick Sabalausky (34/40) Nov 14 2011 Haven't had a chance to read through it yet, but initial observations:
- Vladimir Panteleev (21/34) Nov 14 2011 I agree, but there is a better way.
- Nick Sabalausky (10/35) Nov 14 2011 Right, the main point is to make it work without JS, and then any defaul...
- Andrei Alexandrescu (19/50) Nov 14 2011 I'm not sure what to do about catering for people who disable JS. Other
- Vladimir Panteleev (17/24) Nov 14 2011 This is a bad measurement. Technically-inclined people are more likely t...
- Andrei Alexandrescu (7/28) Nov 14 2011 By this I am asking. Let's do this - finish this pass, and then make
- Adam D. Ruppe (3/3) Nov 14 2011 Is the site source on the github?
- Jacob Carlborg (4/8) Nov 14 2011 Put the JavaScript at the end of the page instead.
- Vladimir Panteleev (7/14) Nov 14 2011 The script writes its content during execution. Unless the Twitter JS
- Jacob Carlborg (5/17) Nov 14 2011 Doesn't sound like a good API from Twitter. But if I recall correctly
- Jacob Carlborg (10/22) Nov 14 2011 BTW, if that Twitter feed isn't updated live, i.e. no page reload is
- Adam D. Ruppe (3/3) Nov 14 2011 The cost of supporting non-scripted browsing is virtually zero.
- Jacob Carlborg (4/7) Nov 14 2011 I have disabled javascript by default as well.
- Nick Sabalausky (22/42) Nov 14 2011 Well, that's not too surprising since Go comes from people in Google.
- Jacob Carlborg (4/8) Nov 14 2011 I have it turned off for d-p-l.org because the site works anyway.
- Nick Sabalausky (4/10) Nov 14 2011 I really think we need a link to the changelog. I can't even *find* a wa...
- Nick Sabalausky (13/26) Nov 14 2011 Speaking of the changelog, the d-p-l.org version of the changelog (which...
- Andrej Mitrovic (12/14) Nov 14 2011 That's because "Download & Tools"
- Andrei Alexandrescu (3/21) Nov 14 2011 Andrei
- Andrej Mitrovic (3/5) Nov 14 2011 And because it redirects to that page you can't find information on
- Andrei Alexandrescu (3/8) Nov 14 2011 I don't understand this.
- Andrej Mitrovic (6/15) Nov 14 2011 I just meant if there's no link to the compiler information page (e.g.
- Andrei Alexandrescu (3/16) Nov 14 2011 Good idea.
- Robert Clipsham (27/35) Nov 14 2011 - From the first look at the page it's a big block of text with no
- Andrei Alexandrescu (22/45) Nov 14 2011 I think the current page with a big block of code is quite unappealing,
- Robert Clipsham (23/50) Nov 14 2011 Well neither is ideal! It'll probably take some fine-tuning to get the
- Jacob Carlborg (5/9) Nov 14 2011 That may be more appropriate on page covering the history and background...
- Nick Sabalausky (5/9) Nov 14 2011 Just changing the text from "See example" to "show/hide example" should ...
- Michel Fortin (29/37) Nov 14 2011 I kind of like it, the structure. I don't like the visual presentation
- Andrei Alexandrescu (7/42) Nov 14 2011 It's a good idea to keep the top message as is and then eliminate the
- Michel Fortin (19/76) Nov 14 2011 You mean this doesn't make sense to you?
- Andrei Alexandrescu (5/18) Nov 14 2011 I thought about these words for weeks. I could not find a more clear and...
- Somedude (4/11) Nov 17 2011 I don't have any problem with these words, but I don't like to see them
- Timon Gehr (2/35) Nov 14 2011
- Michel Fortin (11/29) Nov 14 2011 More comments:
- Nick Sabalausky (7/15) Nov 14 2011 Yes, I like this change a lot. It's much clearer and easier to read. I c...
- Walter Bright (10/16) Nov 14 2011 My problem with those three are those are the goals of every single comp...
- Jeff Nowakowski (4/7) Nov 14 2011 As do languages like Go, C++, and Scala. "multi-paradigm" is "completely...
- Andrei Alexandrescu (9/18) Nov 14 2011 That doesn't seem the case to me at all. Multi-paradigm programming
- Jonathan M Davis (15/36) Nov 14 2011 I think that the problem is that it _sounds_ like a buzzword and it's no...
- Walter Bright (4/8) Nov 14 2011 C++ is definitely multiparadigm, D more so.
- Jacob Carlborg (4/16) Nov 14 2011 What would be necessary for you to call a language multiparadigm?
- Walter Bright (9/10) Nov 15 2011 If using multiple paradigms is reasonably natural and convenient in that...
- Paulo Pinto (5/16) Nov 15 2011 Hi,
- Walter Bright (8/10) Nov 15 2011 Since Go does not offer function purity or data immutability, its suppor...
- Paulo Pinto (19/31) Nov 15 2011 Hi,
- Walter Bright (2/5) Nov 15 2011 You can also do closures in C.
- Andrei Alexandrescu (4/8) Nov 15 2011 You can do a lot of things that are not enforced. That doesn't mean the
- Jacob Carlborg (5/16) Nov 15 2011 If you would consider at least two paradigms as multiparadigm then I
- Walter Bright (24/26) Nov 15 2011 We could bikeshed forever what is a paradigm and what isn't, and how man...
- Jacob Carlborg (13/42) Nov 15 2011 I agree with that.
- Andrei Alexandrescu (8/21) Nov 15 2011 ... go with this? I mean if the purpose is to argue petty details, sure....
- Nick Sabalausky (8/10) Nov 15 2011 For all I know it's possible I might not be technically correct, but I'v...
- Andrei Alexandrescu (3/15) Nov 15 2011 Sorry, I had "procedural" in mind when I wrote that.
- Jacob Carlborg (6/33) Nov 15 2011 I agree with: "... D supports an unusually large number of paradigms for...
- Marco Leise (8/10) Nov 15 2011 As long as one doesn't try to do 'functional' programming, free function...
- RivenTheMage (2/5) Nov 15 2011 Zero-paradigm?
- Andrei Alexandrescu (3/9) Nov 15 2011 That's quite an interesting angle.
- Daniel Gibson (5/10) Nov 15 2011 Scala is also termed a "multi-paradigm programming language", see
- Peter Alexander (3/17) Nov 15 2011 But wait, there's more!
- Walter Bright (3/5) Nov 15 2011 I think those characterizations are rather generous.
- Peter Alexander (5/11) Nov 15 2011 I agree, but I don't think our opinions matter all that much.
- Andrei Alexandrescu (3/15) Nov 15 2011 I'd agree with that characterization.
- Walter Bright (5/7) Nov 15 2011 Scala's multi-paradigms are OOP and functional.
- Daniel Gibson (18/26) Nov 15 2011 I have never used Scala but only heard about it and skimmed over the
- Timon Gehr (9/35) Nov 15 2011 That is partly because the current GC cannot handle huge loads of tiny,
- Max Klyga (5/15) Nov 15 2011 These days a language is considered functional if it has features found
- Jeff Nowakowski (7/12) Nov 15 2011 Alan Kay on C++: "Actually I made up the term 'object-oriented', and I
- Peter Alexander (6/14) Nov 15 2011 Scala does support function purity (you can write pure functions) and
- Walter Bright (4/9) Nov 16 2011 I don't think we should write "Scala is not a functional programming lan...
- Jonathan M Davis (13/19) Nov 16 2011 While I don't know scala, I think that there's a _big_ difference betwee...
- Walter Bright (8/14) Nov 16 2011 Here's an analogy maybe that is more palatable. Let's say a language say...
- Somedude (2/18) Nov 17 2011 And Ocaml too: functional + generic + OOP
- Walter Bright (3/4) Nov 19 2011 To me, multi-paradigm means I can switch paradigms. Ocaml is functional,...
- Jeff Nowakowski (3/5) Nov 19 2011 What does that even mean? Are you thinking of Haskell? OCaml has
- Walter Bright (6/12) Nov 19 2011 If a language has all variables being immutable, then the functional asp...
- Jeff Nowakowski (5/7) Nov 19 2011 This is just wrong:
- Walter Bright (7/15) Nov 19 2011 Since OCaml allows both mutable and immutable state, I stand corrected i...
- Jeff Nowakowski (25/31) Nov 19 2011 Primitives are not objects, and arrays are specialized objects with
- Walter Bright (8/23) Nov 19 2011 I don't agree. You cannot have any data structures in Java that are not ...
- Jeff Nowakowski (17/24) Nov 20 2011 You've got a very binary view on things.
- Walter Bright (27/34) Nov 20 2011 I am not arguing that D being multi-paradigm is unique. I would argue th...
- Peter Alexander (4/13) Nov 20 2011 I don't disagree with you, but the fact of the matter is that Scala is
- bearophile (24/31) Nov 20 2011 This is an interesting discussion topic. Scala is widely regarded as a r...
- Andrei Alexandrescu (33/80) Nov 20 2011 Marketing. Scala is most often contrasted with Java, so since it has
- Jacob Carlborg (8/19) Nov 20 2011 You used this point as one of four when you described what's needed to
- Andrei Alexandrescu (3/23) Nov 20 2011 Type inference was not one of the things I mentioned.
- Derek (6/7) Nov 19 2011 LOL, nice oxymoron.
- Timon Gehr (2/6) Nov 20 2011 http://en.wikipedia.org/wiki/Variable_%28mathematics%29
- Jeff Nowakowski (13/17) Nov 14 2011 It's not precise at all. Very few languages are actually
- Walter Bright (7/18) Nov 14 2011 It's true that with enough effort you can program in any paradigm in any...
- Marco Leise (14/17) Nov 15 2011 Reading between the lines, it is probably just the combination - as Mich...
- Andrei Alexandrescu (23/43) Nov 14 2011 Statements and views can be bent in various ways. For example, I think
- Jeff Nowakowski (13/19) Nov 15 2011 I don't see why C++ is given a pass for "multi-paradigm" and Java isn't....
- Andrei Alexandrescu (27/51) Nov 15 2011 Primitive types being special does not add one extra programming paradig...
- Jeff Nowakowski (31/43) Nov 15 2011 Java explicitly supports "static" functions that are not part of an
- Andrei Alexandrescu (3/8) Nov 15 2011 Would be great to also post when you feel you could help with something.
- Jeff Nowakowski (5/6) Nov 15 2011 My criticism is intended to be helpful, just like it is when other
- Miles Stoudenmire (8/17) Nov 15 2011 Would it be possible to add little plus signs to the "See example"
- Timon Gehr (4/6) Nov 15 2011 Well, I am not strictly against it. It is as I wrote in that other post,...
- Peter Alexander (7/14) Nov 15 2011 To me, multi-paradigm is another way of saying "not dogmatic", i.e. you
- Nick Sabalausky (3/18) Nov 15 2011 "Pragmatic" is always the term I think of as a one-word description of D...
- Daniel Gibson (6/27) Nov 15 2011 While "pragmatic" fits D, it does not really describe features D offers,...
- Somedude (3/8) Nov 17 2011 That's giving the stick to be beaten. Most C++ die-hard fans would sneer
- Somedude (7/11) Nov 17 2011 I don't see the problem with using the term multi-paradigm. This page is
- Jeff Nowakowski (7/12) Nov 17 2011 My opinion is that most programmers don't give a shit if a language
- Andrei Alexandrescu (3/15) Nov 17 2011 Half a dozen... :o)
- Michel Fortin (17/41) Nov 14 2011 Very true. I wasn't really suggesting we use the words from this list,
- Walter Bright (9/17) Nov 14 2011 Yes.
- Peter Alexander (38/42) Nov 15 2011 I think we need a short description of the language rather than those 3
- Andrei Alexandrescu (5/8) Nov 15 2011 "The D programming language. Modern convenience. Multi-paradigm power.
- Nick Sabalausky (23/30) Nov 15 2011 That's not bad, but I think it's an absolute shame to loose this, which ...
- Andrei Alexandrescu (7/37) Nov 15 2011 But that adds more text to the "wall of text". How do we address that?
- Jacob Carlborg (5/32) Nov 15 2011 I miss those paragraphs too. I always basically quote those paragraphs
- so (5/43) Nov 15 2011 Contrary to some (not surprisingly), i *really* like "golang.org".
- Andrei Alexandrescu (9/13) Nov 19 2011 To me it looks like the connection dropped and the page hasn't loaded.
- Nick Sabalausky (3/19) Nov 20 2011 Looks fine in FF2... (Heh, yea, I know...)
- Jeff Nowakowski (3/4) Nov 20 2011 There's nothing funny about running a browser that stopped getting
- Nick Sabalausky (5/10) Nov 20 2011 All Mozilla has to do is put out a browser with a UI that can be configu...
- Jeff Nowakowski (7/8) Nov 20 2011 Mozilla doesn't have to do anything. Why should they care that *you* are...
- Nick Sabalausky (9/18) Nov 20 2011 Well, whether Mozilla or not, some people obviously do care, considering...
- Andrei Alexandrescu (3/17) Nov 20 2011 Not if you increase the font size.
- Peter Alexander (13/21) Nov 15 2011 I don't feel that those few words adequately introduce D.
- Andrei Alexandrescu (22/47) Nov 15 2011 I don't think "letting the language speak for itself" works. People who
- Peter Alexander (23/42) Nov 15 2011 By "letting the language speak for itself" I mean that we shouldn't
- Andrei Alexandrescu (6/38) Nov 15 2011 Because three is an excellent number for this kind of stuff as has been
- Daniel Gibson (17/22) Nov 15 2011 I like this (but maybe a short note that manual memory management and
- Andrei Alexandrescu (7/30) Nov 15 2011 I understand this objection, and how it reminding of hackneyed ads can
- Jude Young (18/51) Nov 15 2011 I see one camp that is against using multi-paradigm on the basis that
- Daniel Gibson (11/14) Nov 16 2011 I'm not against calling D "multi paradigm", I'm just against the style
- Paulo Pinto (8/23) Nov 17 2011 Hi,
- Andrei Alexandrescu (3/30) Nov 17 2011 At any rate, I wouldn't want the D intro page to mention any other langu...
- Sean Kelly (9/47) Nov 17 2011 If you compare your product to another one you're implying that the othe...
- Daniel Gibson (7/16) Nov 18 2011 Ok, agreed.
- Nick Sabalausky (6/10) Nov 18 2011 I used to do a fair amount of C# and...no, it isn't ;) At least not with...
- Nick Sabalausky (3/15) Nov 18 2011 It's better than Java though: At least C# actually *has* pointers.
- Paulo Pinto (4/20) Nov 18 2011 Sure, but I don't remember the last time I really needed to use pointers...
- Nicolae Mihalache (22/49) Nov 18 2011 Hello,
- Jude Young (8/19) Nov 18 2011 Something I just realized not too long ago,
- Walter Bright (2/4) Nov 20 2011 Try implementing a garbage collector without pointers!
- Andrea Fontana (6/21) Nov 18 2011 e"=20
- Paulo Pinto (10/22) Nov 18 2011 Sorry to say, but with your description I can only say "blame the
- Nick Sabalausky (46/50) Nov 18 2011 I know that's become an enormously popular thing to say, but to be bruta...
- Paulo Pinto (11/19) Nov 18 2011 But does it matter if the application is already executing fast enough
- Nick Sabalausky (9/32) Nov 19 2011 That's not the issue though. The question was "Is the efficiency of nati...
- Paulo Pinto (35/72) Nov 19 2011 Hi,
- Nick Sabalausky (31/63) Nov 19 2011 Hmm, I'm impressed that it does appear to be possible. And it's not even...
- Paulo Pinto (22/40) Nov 20 2011 Sure you are right, but that is because most developers nowadays don't
- bearophile (4/6) Nov 20 2011 My small experience tells me otherwise: with Haskell you are able to app...
- Paulo Pinto (2/8) Nov 20 2011 That is what I meant with a "completely different mindset".
- Nick Sabalausky (18/55) Nov 20 2011 I still think there's more to it than just that, but I do share your
- Paulo Pinto (4/9) Nov 20 2011 We do large scale consulting projects, from 20 developers team size up
- Timon Gehr (11/24) Nov 19 2011 The fact that Nicks example works has no implications for the GC
- Paulo Pinto (15/26) Nov 20 2011 I am by no means a GC expert, but I was under the impression that D
- Timon Gehr (17/47) Nov 20 2011 I meant
- Walter Bright (6/9) Nov 20 2011 The ability to write "tricks" is important, because no language is perfe...
- Andrea Fontana (3/8) Nov 15 2011 early a=20
- Robert Clipsham (35/43) Nov 14 2011 Another point, partially based on things others have said that I've now
- Jacob Carlborg (7/52) Nov 14 2011 As I'm already a D user I'm looking first for Library reference and
- Robert Clipsham (8/12) Nov 15 2011 I used an ordered list because I was planning to refer to individual
- Kapps (31/39) Nov 14 2011 I rather like the way it looks currently, but there are a few fairly
- Jacob Carlborg (6/13) Nov 14 2011 Just use DVM to install the latest compiler, then it's only:
- Nick Sabalausky (8/19) Nov 15 2011 DVM really should be officially sanctioned and prominently recommended o...
- Jacob Carlborg (5/28) Nov 15 2011 Yeah, system-wide installation would be nice. Just takes some thought to...
- Nick Sabalausky (3/15) Nov 15 2011 What sort of specific potential problems do you see?
- Jacob Carlborg (13/30) Nov 15 2011 The thing is that I haven't thought about it that much. But on top my
- Ary Manzana (11/19) Nov 15 2011 // Defines a dictionary mapping string to int, type is int[string] auto
- Tobias Pankrath (4/4) Nov 17 2011 There is also an error in the language spec site for classes. Probably a...
- Trass3r (1/1) Nov 17 2011 https://github.com/D-Programming-Language/d-programming-language.org/pul...
- Xinok (13/21) Nov 17 2011 I would suggest adding a single paragraph at the beginning which
- Andrei Alexandrescu (5/14) Nov 17 2011 As opposed to other languages that have lower productivity, more bugs,
- bearophile (4/9) Nov 17 2011 But they care for some things more than other ones. Python core develope...
- Xinok (8/13) Nov 17 2011 When a person visits the site for the first time, there's two things
- Andrei Alexandrescu (4/17) Nov 17 2011 Because it has modern convenience, multi-paradigm power, and native
- Derek (27/33) Nov 18 2011 Still sounds like it was generated with a 'buzz-word' program.
- Andrei Alexandrescu (12/46) Nov 18 2011 It's all explained right after. As opposed to languages that don't take
- Derek (16/25) Nov 18 2011 When a minimum D program is compiled, the executable is huge compared to...
-
Bane
(7/7)
Nov 18 2011
- Andrei Alexandrescu (10/28) Nov 18 2011 Is that the language, compiler, environment, or website? I got a bit
- Bane (12/51) Nov 19 2011 Website problems I think should be sorted out:
- Peter Alexander (15/17) Nov 19 2011 I agree with this 100%. It is true that a lot of advertised features in
- Bane (3/24) Nov 19 2011 Yup. Learning D is just too difficult comparing to most other popular la...
- Walter Bright (2/5) Nov 19 2011 It would be nice to be more specific about what pain points you experien...
- Bane (3/9) Nov 19 2011 Main thing was with threading and shared vars. It was painful experience...
- Timon Gehr (10/34) Nov 19 2011 There is 'D' the language and 'DMD' the implementation. You confuse the
- Peter Alexander (12/51) Nov 19 2011 You are right, but DMD is the reference implementation and as such
- Timon Gehr (2/55) Nov 19 2011 I agree.
- Bane (4/18) Nov 19 2011 D1 is joy for me. It is simple and fairly nicely documented. With it I h...
- Timon Gehr (3/13) Nov 20 2011 Well, that does not answer my question since I am working exclusively
- a (1/3) Nov 18 2011 This just has to mean PHP :D
- Nick Sabalausky (4/9) Nov 18 2011 As opposed to other langauges that either don't have all those as major
- Andrei Alexandrescu (4/15) Nov 18 2011 These are too "motherhood and apple pie" kind of things, and too vague
- Xinok (25/41) Nov 20 2011 That's why you go into more detail in the following bullet points. There...
- Andrei Alexandrescu (4/30) Nov 20 2011 We're looking for a brief and memorable intro. Three long-winding
- Ary Manzana (3/17) Nov 18 2011 As opposed to other languages that have greater productivity, less bugs
- Gour (43/46) Nov 19 2011 On Sun, 13 Nov 2011 19:50:04 -0600
- Jude Young (32/35) Nov 19 2011 -----BEGIN PGP SIGNED MESSAGE-----
- Walter Bright (2/6) Nov 19 2011 This is valuable work, keep it coming!
- Jude Young (2/9) Nov 19 2011 Thank you
- Gour (35/35) Nov 19 2011 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMQ0KDQpPbiBT...
- Jude Young (21/38) Nov 20 2011 -----BEGIN PGP SIGNED MESSAGE-----
- Andrej Mitrovic (22/23) Nov 19 2011 I think you could add screenshots and links to D IDE's like
- Andrea Fontana (6/14) Nov 20 2011 I see that http://www.digitalmars.com/d/ redirect to
- Andrei Alexandrescu (3/8) Nov 20 2011 Request forwarded.
- Nick Sabalausky (3/12) Nov 20 2011 Hah! I see what you did there... ;)
- Andrei Alexandrescu (5/19) Nov 20 2011 Telling the truth is what I did. I don't have access to the the config
- Andrei Alexandrescu (5/25) Nov 20 2011 Got word back - this has been taken cared of. Except for newsgroups and
- Andrej Mitrovic (1/1) Nov 20 2011 Btw, DMD still ships web files from digitalmars.com instead of the new o...
- Nick Sabalausky (5/24) Nov 21 2011 Guess the irony wasn't deliberate then: "http 301"..."request
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
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, AndreiLooks good, but a compiler instead of that twitter thing would rock. Lets be unique! Being unique never been easier :)
Nov 13 2011
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
On 11/13/11 8:22 PM, Jonathan M Davis wrote:On Sunday, November 13, 2011 19:50:04 Andrei Alexandrescu wrote:No. AndreiWalter 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?
Nov 13 2011
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
On Sunday, November 13, 2011 20:27:27 Andrei Alexandrescu wrote:On 11/13/11 8:22 PM, Jonathan M Davis wrote: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 DavisNitpick: "all major D contrib tors, including..." should be "all major D contributors, including..."Not getting this... I see the right text.
Nov 13 2011
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.On 11/13/11 8:37 PM, bearophile wrote:Andrei Alexandrescu:What characteristic of D would you substitute as a major differentiating feature?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.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, bearophileNov 14 2011Andrei Alexandrescu wrote:On 11/13/11 8:37 PM, bearophile wrote: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.Andrei Alexandrescu:What characteristic of D would you substitute as a major differentiating feature?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.Nov 14 2011On 11/14/11 3:02 PM, Lutger Blijdestijn wrote:Andrei Alexandrescu wrote: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. AndreiOn 11/13/11 8:37 PM, bearophile wrote: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.Andrei Alexandrescu:What characteristic of D would you substitute as a major differentiating feature?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.Nov 14 2011-----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, AndreiI 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 2011On 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, AndreiNo mention of metaprogramming? May I suggest adding a "Fork me on GitHub" banner. -- /Jacob CarlborgNov 13 2011On 11/13/11 11:27 PM, Jacob Carlborg wrote:On 2011-11-14 02:50, Andrei Alexandrescu wrote:It's part of the multi-paradigm point, but it should be better substantiated.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, AndreiNo mention of metaprogramming?May I suggest adding a "Fork me on GitHub" banner.Good idea. AndreiNov 14 2011Andrei 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, AndreiThe "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 2011On 11/14/11 12:07 AM, Tobias Pankrath wrote:Andrei Alexandrescu wrote:Yes, we plan to migrate the groups and downloads page to d-p-l.org. Thanks, AndreiWalter 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, AndreiThe "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 2011On 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.netNov 14 2011On 11/14/2011 10:10 AM, Vladimir Panteleev wrote:On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:Very nice, but there is not really much more to say about Go (on a front page), because it is so small.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/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 2011On 11/14/11 1:10 AM, Vladimir Panteleev wrote:On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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. AndreiWalter 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/Nov 14 2011On 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.netNov 14 2011On 11/14/11 11:55 AM, Vladimir Panteleev wrote:On Mon, 14 Nov 2011 21:45:58 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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.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?I think that's an exaggeration. AndreiRegarding 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.Nov 14 2011On Mon, 14 Nov 2011 22:16:11 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:On 11/14/11 11:55 AM, Vladimir Panteleev wrote: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.netOn Mon, 14 Nov 2011 21:45:58 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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.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?Nov 14 2011Vladimir Panteleev wrote:I could easily do the technical partIf 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 2011Oh, 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 2011On 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.netNov 14 2011Vladimir 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 2011On Tue, 15 Nov 2011 06:50:54 +0200, Adam D. Ruppe <destructionator gmail.com> wrote:Vladimir Panteleev wrote:What VM software did you use? -- Best regards, Vladimir mailto:vladimir thecybershadow.netHow did you do the sandboxing?I used setrlimit() in a single purpose VM.Nov 15 2011Vladimir 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 2011On Tue, 15 Nov 2011 16:46:37 +0200, Adam D. Ruppe <destructionator gmail.com> wrote:Vladimir Panteleev wrote: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.netWhat VM software did you use?VMWare on the first server. My next setup is going to use kvm and qemu.Nov 15 2011Just 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 2011On 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.netNov 14 2011Vladimir 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-stuffI'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 2011On Monday, November 14, 2011 11:45:58 Andrei Alexandrescu wrote:On 11/14/11 1:10 AM, Vladimir Panteleev wrote: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 DavisOn Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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.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/Nov 14 2011"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: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.On 11/14/11 1:10 AM, Vladimir Panteleev wrote: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.On Mon, 14 Nov 2011 03:50:04 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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.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/Nov 14 2011On 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. AndreiNov 14 2011On 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 2011On 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 CarlborgNov 14 2011On 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, AndreiLooks 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 2011I 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:icWalter 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=20 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==20certainly 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==20D'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==20Metaprogramming, 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 =20Nov 14 2011On 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 2011On Monday, November 14, 2011 10:45:15 Timon Gehr wrote:On 11/14/2011 10:37 AM, Andrea Fontana wrote: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 DavisI 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 2011Ok, 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:=20I think most of programmers has an analytical mind.=20 I agree. =20So IMHO a comparison chart (with others programming languages) of features / benchmark / "how-tos" will work better than a page filled of words.=20 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==20be a link to some benchmarks where the text says that D compiles to fast==20native 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 2011On 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 2011On 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 do not agree, most programmers have only one thing in common, they all are programmers and even that is questionable.I think most of programmers has an analytical mind.I agree.Nov 14 2011On 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 2011On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright <newshound2 digitalmars.com> wrote:On 11/14/2011 1:37 AM, Andrea Fontana wrote:Not everyone, it was the first thing i checked, C++/C/C++0x comparison.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 2011On 11/14/2011 2:36 AM, so wrote:On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright <newshound2 digitalmars.com> wrote:Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.On 11/14/2011 1:37 AM, Andrea Fontana wrote:Not everyone, it was the first thing i checked, C++/C/C++0x comparison.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 2011On Mon, 14 Nov 2011 05:49:41 -0500, Walter Bright <newshound2 digitalmars.com> wrote:On 11/14/2011 2:36 AM, so wrote: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? -SteveOn Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright <newshound2 digitalmars.com> wrote:Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.On 11/14/2011 1:37 AM, Andrea Fontana wrote:Not everyone, it was the first thing i checked, C++/C/C++0x comparison.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 2011On 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:I mean 4 comments :P Started out with 2 comments, but forgot to go back and edit this... -SteveOn 11/14/2011 2:36 AM, so wrote:http://www.d-programming-language.org/new/comparison.html Although it's not comparing itself to anything. Two comments on this page:On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright <newshound2 digitalmars.com> wrote:Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.On 11/14/2011 1:37 AM, Andrea Fontana wrote:Not everyone, it was the first thing i checked, C++/C/C++0x comparison.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"Walter Bright" <newshound2 digitalmars.com> wrote in message news:j9qrpf$1lkt$1 digitalmars.com...On 11/14/2011 2:36 AM, so wrote:I found it to be a *huge* help when I first came across D. I always liked it.On Mon, 14 Nov 2011 12:06:52 +0200, Walter Bright <newshound2 digitalmars.com> wrote:Well, it's dead and will not be resurrected. The criticism of it was heavy, pitiless and unrelenting. And correct.On 11/14/2011 1:37 AM, Andrea Fontana wrote:Not everyone, it was the first thing i checked, C++/C/C++0x comparison.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 2011Andrea 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 regardsNov 18 2011On 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. AndreiNov 14 2011On 11/14/2011 08:47 PM, Andrei Alexandrescu wrote:On 11/14/11 1:15 AM, Timon Gehr wrote:hm, maybe call the them 'compatible comparable types'?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.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=68562. 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.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'.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.Nov 14 2011On 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: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.On 11/14/11 1:15 AM, Timon Gehr wrote:hm, maybe call the them 'compatible comparable types'?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.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>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.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'.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.Nov 14 2011On 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 2011Brad 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, bearophileNov 14 2011On 11/14/2011 11:30 PM, bearophile wrote:Brad Anderson: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();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, bearophileIf 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 2011Andrei, 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 regardsNov 14 2011On 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"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 2011On 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.netNov 14 2011"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: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.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.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.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.Nov 14 2011On 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. AndreiNov 14 2011On 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.netNov 14 2011On 11/14/11 12:09 PM, Vladimir Panteleev wrote:On Mon, 14 Nov 2011 22:01:49 +0200, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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.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.Yah, good point. That raises additional issues but probably needs to be done at some point. AndreiYou'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).Nov 14 2011Is the site source on the github? We could always go back and fix the code/script issues later with a pull request.Nov 14 2011On 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 CarlborgNov 14 2011On Mon, 14 Nov 2011 22:43:05 +0200, Jacob Carlborg <doob me.com> wrote:On 2011-11-14 21:09, Vladimir Panteleev wrote: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.netSpeaking 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.Nov 14 2011On 2011-11-14 22:05, Vladimir Panteleev wrote:On Mon, 14 Nov 2011 22:43:05 +0200, Jacob Carlborg <doob me.com> wrote:Doesn't sound like a good API from Twitter. But if I recall correctly they have a pretty good RESTful API. -- /Jacob CarlborgOn 2011-11-14 21:09, Vladimir Panteleev wrote: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.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.Nov 14 2011On 2011-11-14 22:05, Vladimir Panteleev wrote:On Mon, 14 Nov 2011 22:43:05 +0200, Jacob Carlborg <doob me.com> wrote: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 CarlborgOn 2011-11-14 21:09, Vladimir Panteleev wrote: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.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.Nov 14 2011The 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 2011On 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 CarlborgNov 14 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:j9rs4o$nrs$1 digitalmars.com...On 11/14/11 7:11 AM, Nick Sabalausky wrote: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.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.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 2011On 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 CarlborgNov 14 2011"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"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...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,..."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 2011On 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 2011On 11/14/11 10:11 AM, Andrej Mitrovic wrote:On 11/14/11, Nick Sabalausky<a a.a> wrote:We will take care of this. From an email I wrote on Sunday: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.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.AndreiNov 14 2011On 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 2011On 11/14/11 10:13 AM, Andrej Mitrovic wrote:On 11/14/11, Andrej Mitrovic<andrej.mitrovich gmail.com> wrote:I don't understand this. Andreiso 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 2011On 11/14/11, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:On 11/14/11 10:13 AM, Andrej Mitrovic wrote: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.On 11/14/11, Andrej Mitrovic<andrej.mitrovich gmail.com> wrote:I don't understand this. Andreiso 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 2011On 11/14/11 7:23 AM, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:j9ps5n$30nq$1 digitalmars.com...Good idea. AndreiWalter 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 2011On 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 2011On 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-wordedThe idea is that there'd be copious download links before that point (to be added).- inconsistent capitalization of (C|c)ompilerOK.- Definitely needs a "Fork us on github" banner of some sortOK.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! AndreiNov 14 2011On 14/11/2011 20:12, Andrei Alexandrescu wrote:On 11/14/11 11:04 AM, Robert Clipsham wrote:Well neither is ideal! It'll probably take some fine-tuning to get the right balance.- 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.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.- My advise here would be to *just* show the key bullet points, click for more information.Duly noted.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.- 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".It's only a couple of lines of code ;)- "See example." is actually show/hide example, the text should reflect this.Hm, that should change when expanded. More work for me, sigh.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/- 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.Nov 14 2011On 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 CarlborgNov 14 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:j9rso9$ov0$1 digitalmars.com...On 11/14/11 11:04 AM, Robert Clipsham wrote: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.- "See example." is actually show/hide example, the text should reflect this.Hm, that should change when expanded. More work for me, sigh.Nov 14 2011On 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 2011On 11/14/11 11:41 AM, Michel Fortin wrote:On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> said:It's a good idea to keep the top message as is and then eliminate the goals from the bullet points.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 - EfficiencyBut 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. AndreiNov 14 2011On 2011-11-14 20:14:22 +0000, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> said:On 11/14/11 11:41 AM, 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. 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/On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> said:It's a good idea to keep the top message as is and then eliminate the goals from the bullet points.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 - EfficiencyBut 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.Nov 14 2011On 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. AndreiNov 14 2011Le 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. AndreiI 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 2011On 11/14/2011 08:41 PM, Michel Fortin wrote:On 2011-11-14 01:50:04 +0000, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> said:+1. Gets us rid of the buzzy 'Multi-paradigm' in the title too.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 - EfficiencyBut 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 2011On 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: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/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.)Nov 14 2011"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 - NativeYes, 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 2011On 11/14/2011 11:41 AM, Michel Fortin wrote:- Convenience - Power - EfficiencyMy 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 powerMany 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 efficiencyMost (nearly all?) new languages are targeted at a VM. Being native is clearly a distinguishing feature of D.Nov 14 2011On 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 2011On 11/14/11 5:01 PM, Jeff Nowakowski wrote:On 11/14/2011 04:52 PM, Walter Bright 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).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?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. AndreiNov 14 2011On Monday, November 14, 2011 17:05:19 Andrei Alexandrescu wrote:On 11/14/11 5:01 PM, Jeff Nowakowski wrote: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 DavisOn 11/14/2011 04:52 PM, Walter Bright 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).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?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.Nov 14 2011On 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 2011On 2011-11-15 04:20, Walter Bright wrote:On 11/14/2011 5:29 PM, Jonathan M Davis wrote:What would be necessary for you to call a language multiparadigm? -- /Jacob CarlborgI 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 2011On 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 2011Hi, 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 2011On 11/15/2011 12:28 AM, Paulo Pinto wrote:then following you description Go is also multiparadigm. Go: imperative, functional, component programmingSince 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 2011Hi, 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 programmingSince 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 2011On 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 2011On 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! AndreiNov 15 2011On 2011-11-15 09:25, Walter Bright wrote:On 11/14/2011 11:50 PM, Jacob Carlborg wrote:If you would consider at least two paradigms as multiparadigm then I would say that a lot of languages are multiparadigm. -- /Jacob CarlborgWhat 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 2011On 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_languageNov 15 2011On 2011-11-15 10:16, Walter Bright wrote:On 11/15/2011 12:43 AM, Jacob Carlborg wrote:Yeah, I guess there is not point of this discussion.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".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_languageAccording 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 CarlborgNov 15 2011On 11/15/11 1:33 AM, Jacob Carlborg wrote:On 2011-11-15 10:16, Walter Bright wrote:How does this agreement...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.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_. AndreiNov 15 2011"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 2011On 11/15/11 5:54 AM, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:j9tpsf$1k7f$1 digitalmars.com...Sorry, I had "procedural" in mind when I wrote that. AndreiJava 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 2011On 2011-11-15 14:35, Andrei Alexandrescu wrote:On 11/15/11 1:33 AM, Jacob Carlborg wrote:I agree with: "... D supports an unusually large number of paradigms for a programming".On 2011-11-15 10:16, Walter Bright wrote:How does this agreement...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.I'm just listing what's on the wikipedia page, as Walter did. -- /Jacob CarlborgAccording 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_. AndreiNov 15 2011Am 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 2011If using multiple paradigms is reasonably natural and convenient in that language. D: imperative, OOP, metaprogramming, functional, assembler, scriptZero-paradigm? In the sense that the D language supports almost all popular paradigms.Nov 15 2011On 11/15/11 12:01 PM, RivenTheMage wrote:That's quite an interesting angle. AndreiIf using multiple paradigms is reasonably natural and convenient in that language. D: imperative, OOP, metaprogramming, functional, assembler, scriptZero-paradigm? In the sense that the D language supports almost all popular paradigms.Nov 15 2011Am 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 DavisScala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language) Cheers, - DanielNov 15 2011On 15/11/11 9:31 PM, Daniel Gibson wrote:Am 15.11.2011 02:29, schrieb Jonathan M Davis:But wait, there's more! http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languagesI 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 DavisScala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language) Cheers, - DanielNov 15 2011On 11/15/2011 1:52 PM, Peter Alexander wrote:But wait, there's more! http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languagesI think those characterizations are rather generous. Just try and make a data structure that is not OOP in Java.Nov 15 2011On 15/11/11 9:57 PM, Walter Bright wrote:On 11/15/2011 1:52 PM, Peter Alexander wrote: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.But wait, there's more! http://en.wikipedia.org/wiki/List_of_multi-paradigm_programming_languagesI think those characterizations are rather generous. Just try and make a data structure that is not OOP in Java.Nov 15 2011On 11/15/11 1:31 PM, Daniel Gibson wrote:Am 15.11.2011 02:29, schrieb Jonathan M Davis:I'd agree with that characterization. AndreiI 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 DavisScala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language)Nov 15 2011On 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 2011Am 15.11.2011 22:54, schrieb Walter Bright:On 11/15/2011 1:31 PM, Daniel Gibson wrote: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, - DanielScala 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 2011On 11/15/2011 11:16 PM, Daniel Gibson wrote:Am 15.11.2011 22:54, schrieb Walter Bright: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.On 11/15/2011 1:31 PM, Daniel Gibson wrote: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 D2Scala 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.- 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 2011On 2011-11-16 00:54:17 +0300, Walter Bright said:On 11/15/2011 1:31 PM, Daniel Gibson wrote: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.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 2011On 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 2011On 15/11/11 9:54 PM, Walter Bright wrote:On 11/15/2011 1:31 PM, Daniel Gibson 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 :-) 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?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 2011On 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 2011On Wednesday, November 16, 2011 00:23:09 Walter Bright wrote:On 11/15/2011 10:55 PM, Peter Alexander wrote: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 DavisScala 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!Nov 16 2011On 11/16/2011 12:34 AM, Jonathan M Davis wrote:On Wednesday, November 16, 2011 00:23:09 Walter Bright wrote: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.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.Nov 16 2011Le 15/11/2011 22:31, Daniel Gibson a écrit :Am 15.11.2011 02:29, schrieb Jonathan M Davis:And Ocaml too: functional + generic + OOPI 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 DavisScala is also termed a "multi-paradigm programming language", see http://en.wikipedia.org/wiki/Scala_(programming_language) Cheers, - DanielNov 17 2011On 11/17/2011 11:00 AM, Somedude wrote:And Ocaml too: functional + generic + OOPTo me, multi-paradigm means I can switch paradigms. Ocaml is functional, there's no switching away from that.Nov 19 2011On 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 2011On 11/19/2011 3:41 PM, Jeff Nowakowski wrote:On 11/19/2011 03:21 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, 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.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 2011On 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 fromThis 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 2011On 11/19/2011 4:49 PM, Jeff Nowakowski wrote:On 11/19/2011 07:02 PM, Walter Bright wrote: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.If a language has all variables being immutable, then the functional aspect of it is not something you can move away fromThis 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 2011On 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 2011On 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 2011On 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 2011On 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 2011On 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 2011Walter: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 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, bearophileNov 20 2011On 11/20/11 5:05 PM, bearophile wrote:This is an interesting discussion topic. Scala is widely regarded as 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, AndreiNov 20 2011On 2011-11-21 00:31, Andrei Alexandrescu wrote:On 11/20/11 5:05 PM, bearophile wrote: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 CarlborgThis is an interesting discussion topic. Scala is widely regarded as 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.Nov 20 2011On 11/21/11 1:47 AM, Jacob Carlborg wrote:On 2011-11-21 00:31, Andrei Alexandrescu wrote:Type inference was not one of the things I mentioned. AndreiOn 11/20/11 5:05 PM, bearophile wrote: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.This is an interesting discussion topic. Scala is widely regarded as 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.Nov 20 2011On Sun, 20 Nov 2011 11:02:14 +1100, Walter Bright <newshound2 digitalmars.com> wrote:... all variables being immutable ...LOL, nice oxymoron. -- Derek Parnell Melbourne, AustraliaNov 19 2011On 11/20/2011 07:20 AM, Derek wrote:On Sun, 20 Nov 2011 11:02:14 +1100, Walter Bright <newshound2 digitalmars.com> wrote:http://en.wikipedia.org/wiki/Variable_%28mathematics%29... all variables being immutable ...LOL, nice oxymoron.Nov 20 2011On 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 2011On 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 2011Am 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 2011On 11/14/11 7:15 PM, Jeff Nowakowski wrote:On 11/14/2011 08:05 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. 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".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.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. AndreiNov 14 2011On 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 2011On 11/15/11 5:43 AM, Jeff Nowakowski wrote:On 11/14/2011 10:55 PM, Andrei Alexandrescu wrote:That would mean "allowed", not "supported".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.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.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.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?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. AndreiNov 15 2011On 11/15/2011 09:31 AM, Andrei Alexandrescu wrote:On 11/15/11 5:43 AM, Jeff Nowakowski wrote: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.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".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 2011On 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. AndreiNov 15 2011On 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 2011Would 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:--=20 =A0=A0 -=3DMiles Stoudenmire=3D- =A0=A0 miles.stoudenmire gmail.comOn 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. AndreiNov 15 2011On 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 2011On 15/11/11 7:30 PM, Timon Gehr wrote:On 11/15/2011 05:13 PM, Jeff Nowakowski wrote: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.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"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:"Pragmatic" is always the term I think of as a one-word description of D.On 11/15/2011 05:13 PM, Jeff Nowakowski wrote: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.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 2011Am 15.11.2011 21:11, schrieb Nick Sabalausky:"Peter Alexander"<peter.alexander.au gmail.com> wrote in message news:j9uftl$v0q$1 digitalmars.com...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, - DanielOn 15/11/11 7:30 PM, Timon Gehr wrote:"Pragmatic" is always the term I think of as a one-word description of D.On 11/15/2011 05:13 PM, Jeff Nowakowski wrote: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.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 2011Le 15/11/2011 23:17, Daniel Gibson a écrit :I still think the best description for D is "C++ done right" ;-) Cheers, - DanielThat's giving the stick to be beaten. Most C++ die-hard fans would sneer at this description.Nov 17 2011Le 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 2011On 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 2011On 11/17/11 3:10 PM, Jeff Nowakowski wrote:On 11/17/2011 02:12 PM, Somedude wrote:Half a dozen... :o) AndreiIt'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 2011On 2011-11-14 21:52:30 +0000, Walter Bright <newshound2 digitalmars.com> said:On 11/14/2011 11:41 AM, Michel Fortin wrote: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.- Convenience - Power - EfficiencyMy 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.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 2011On 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 2011On 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 2011On 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. AndreiNov 15 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:j9tpa6$1icu$1 digitalmars.com...On 11/15/11 12:37 AM, Peter Alexander wrote: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.)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.Nov 15 2011On 11/15/11 6:09 AM, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:j9tpa6$1icu$1 digitalmars.com...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. AndreiOn 11/15/11 12:37 AM, Peter Alexander wrote: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.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.Nov 15 2011On 2011-11-15 15:09, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:j9tpa6$1icu$1 digitalmars.com...I miss those paragraphs too. I always basically quote those paragraphs when explaining to someone what kind of language D is. -- /Jacob CarlborgOn 11/15/11 12:37 AM, Peter Alexander wrote: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. --------------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.Nov 15 2011On 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...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.On 11/15/11 12:37 AM, Peter Alexander wrote: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.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.Nov 15 2011On 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. AndreiNov 19 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:jaac0l$1keu$1 digitalmars.com...On 11/15/11 12:57 PM, so wrote:Looks fine in FF2... (Heh, yea, I know...)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. AndreiNov 20 2011On 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"Jeff Nowakowski" <jeff dilacero.org> wrote in message news:jab7i5$o4t$1 digitalmars.com...On 11/20/2011 10:03 AM, Nick Sabalausky wrote: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.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 2011On 11/20/2011 01:49 PM, Nick Sabalausky wrote:All Mozilla has to do isMozilla 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"Jeff Nowakowski" <jeff dilacero.org> wrote in message news:jaboq8$269f$1 digitalmars.com...On 11/20/2011 01:49 PM, Nick Sabalausky wrote: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.All Mozilla has to do isMozilla 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 2011On 11/20/11 9:03 AM, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:jaac0l$1keu$1 digitalmars.com...Not if you increase the font size. AndreiOn 11/15/11 12:57 PM, so wrote:Looks fine in FF2... (Heh, yea, I know...)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.Nov 20 2011On 15/11/11 1:25 PM, Andrei Alexandrescu wrote:On 11/15/11 12:37 AM, Peter Alexander wrote: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.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. AndreiNov 15 2011On 11/15/11 11:51 AM, Peter Alexander wrote:On 15/11/11 1:25 PM, Andrei Alexandrescu wrote: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? AndreiOn 11/15/11 12:37 AM, Peter Alexander wrote: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.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. AndreiNov 15 2011On 16/11/11 1:19 AM, Andrei Alexandrescu wrote:On 11/15/11 11:51 AM, Peter Alexander wrote: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 speakI 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.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 2011On 11/15/11 11:21 PM, Peter Alexander wrote:On 16/11/11 1:19 AM, Andrei Alexandrescu wrote:Like.On 11/15/11 11:51 AM, Peter Alexander wrote: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 speakI 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.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. AndreiNov 15 2011Am 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, - DanielNov 15 2011On 11/15/11 2:41 PM, Daniel Gibson wrote:Am 15.11.2011 09:37, schrieb Peter Alexander: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. AndreiA 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.Nov 15 2011On Tue 15 Nov 2011 07:07:11 PM CST, Andrei Alexandrescu wrote:On 11/15/11 2:41 PM, Daniel Gibson wrote: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.Am 15.11.2011 09:37, schrieb Peter Alexander: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. AndreiA 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.Nov 15 2011Am 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 Cheers, - DanielNov 16 2011Hi, the only issue with your sentence is that the "efficiency of native code" is also -- 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 Cheers, - DanielNov 17 2011At 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 -- 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 Cheers, - DanielNov 17 2011If 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=e.=20 Andrei =20 On 11/17/11 8:05 AM, Paulo Pinto wrote:isHi, =20 the only issue with your sentence is that the "efficiency of native code"=falso =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 =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=20=20 Cheers, - Daniel=20 =20Nov 17 2011Am 17.11.2011 19:34, schrieb Andrei Alexandrescu:"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 bad.At any rate, I wouldn't want the D intro page to mention any other language. AndreiOk, agreed. The point was that these "buzzwords" don't sound that buzzwordy to me when used in proper sentences. Cheers, - DanielNov 18 2011"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 alsoa 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"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 alsowithout 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 2011Am 18.11.2011 17:12, schrieb Nick Sabalausky:"Nick Sabalausky"<a a.a> wrote in message news:ja6042$230j$1 digitalmars.com...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."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 alsowithout 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 2011Hello, 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:d"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 alsowithout a world of hurt. For example, try to read in a block of data an=gimpose a structure over it without any unnecessary copying or processin=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.and you'll see what I mean.Nov 18 2011On 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 2011On 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 2011And 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...e"=20Hi, the only issue with your sentence is that the "efficiency of native cod=ut=20is also=20a world of hurt. For example, try to read in a block of data and impose a==20structure over it without any unnecessary copying or processing and you'l=l=20see what I mean.=20 =20 =20Nov 18 2011Sorry to say, but with your description I can only say "blame the programmer". 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 alsoa 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"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: 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 2011Am 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. during the weekend. -- PauloNov 18 2011"Paulo Pinto" <pjmlp progtools.org> wrote in message news:ja6mof$p0p$1 digitalmars.com...Am 18.11.2011 22:40, schrieb Nick Sabalausky:That's not the issue though. The question was "Is the efficiency of nativeFor 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. 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 some new versions since I left it, there might even be a new feature now that would change things.Nov 19 2011Hi, 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:That's not the issue though. The question was "Is the efficiency of nativeFor 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. 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 some new versions since I left it, there might even be a new feature now that would change things.Nov 19 2011"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 can do that? (But maybe the features involved are all more common knowlegeRegarding 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?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 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 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 2011Am 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 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 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. 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 2011Paulo 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, bearophileNov 20 2011Am 20.11.2011 12:30, schrieb bearophile:Paulo Pinto:That is what I meant with a "completely different mindset".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, bearophileNov 20 2011"Paulo Pinto" <pjmlp progtools.org> wrote in message news:jaafb1$1u20$1 digitalmars.com...Am 19.11.2011 21:22, schrieb Nick Sabalausky:I still think there's more to it than just that, but I do share your pessimism on the quality of most programmers.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 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.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.)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).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.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.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 2011Am 20.11.2011 16:22, schrieb Nick Sabalausky: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.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.Nov 20 2011On 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 2011Am 19.11.2011 21:49, schrieb Timon Gehr: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?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 20 2011On 11/20/2011 09:40 AM, Paulo Pinto wrote:Am 19.11.2011 21:49, schrieb Timon Gehr:I meant int* a = new int; here, just in case anyone is wondering.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 =...;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 notint 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; }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 2011On 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 2011I 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=early a=20distinguishing feature of D.Nov 15 2011On 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, AndreiAnother 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 2011On 2011-11-14 22:04, Robert Clipsham wrote:On 14/11/2011 01:50, Andrei Alexandrescu 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. -- /Jacob CarlborgWalter 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, AndreiAnother 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).Nov 14 2011On 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 2011On 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, AndreiI 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 2011On 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 CarlborgNov 14 2011"Jacob Carlborg" <doob me.com> wrote in message news:j9t5gq$88e$1 digitalmars.com...On 2011-11-15 03:18, Kapps 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..." recommended way of obtaining DMD. And installers should be based upon it.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/dvmNov 15 2011On 2011-11-15 15:23, Nick Sabalausky wrote:"Jacob Carlborg"<doob me.com> wrote in message news:j9t5gq$88e$1 digitalmars.com...Yeah, system-wide installation would be nice. Just takes some thought to figure out how it should work together with single-user installations. -- /Jacob CarlborgOn 2011-11-15 03:18, Kapps 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..." recommended way of obtaining DMD. And installers should be based upon it.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/dvmNov 15 2011"Jacob Carlborg" <doob me.com> wrote in message news:j9tueg$1rlo$3 digitalmars.com...On 2011-11-15 15:23, Nick Sabalausky wrote:What sort of specific potential problems do you see?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..." 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.Nov 15 2011On 2011-11-15 15:58, Nick Sabalausky wrote:"Jacob Carlborg"<doob me.com> wrote in message news:j9tueg$1rlo$3 digitalmars.com...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 CarlborgOn 2011-11-15 15:23, Nick Sabalausky wrote:What sort of specific potential problems do you see?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..." 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.Nov 15 2011On 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 2011There 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.htmlNov 17 2011On 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, AndreiI 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 2011On 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. AndreiNov 17 2011Andrei Alexandrescu: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, bearophileWhat 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.Nov 17 2011On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:On 11/17/11 11:48 AM, Xinok wrote: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.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.Nov 17 2011On 11/17/11 7:50 PM, Xinok wrote:On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:Because it has modern convenience, multi-paradigm power, and native efficiency. AndreiOn 11/17/11 11:48 AM, Xinok wrote: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?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.Nov 17 2011On Fri, 18 Nov 2011 17:38:49 +1100, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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, AustraliaOn 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:Because it has modern convenience, multi-paradigm power, and native efficiency.On 11/17/11 11:48 AM, Xinok wrote:Why D? What is D's purpose? What does it excel at? Why would I want to use it?Nov 18 2011On 11/18/11 2:16 AM, Derek wrote:On Fri, 18 Nov 2011 17:38:49 +1100, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote: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/.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.On 11/17/2011 9:21 PM, Andrei Alexandrescu wrote:Because it has modern convenience, multi-paradigm power, and native efficiency.On 11/17/11 11:48 AM, Xinok wrote:Why D? What is D's purpose? What does it excel at? Why would I want to use it?"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. AndreiNov 18 2011On 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: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.DPL has a large memory footprint.Compared to what?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, AustraliaI'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.Nov 18 2011<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 2011On 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, AndreiNov 18 2011Andrei Alexandrescu Wrote:On 11/18/11 1:15 PM, Bane wrote: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.<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.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.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.Well... we wouldn't be here if we don't find programming fun (too).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.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.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, AndreiNov 19 2011On 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 2011Peter Alexander Wrote:On 19/11/11 2:02 PM, 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. 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 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 2011On 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 2011Walter Bright Wrote:On 11/19/2011 11:33 AM, Bane wrote: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.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 2011On 11/19/2011 08:33 PM, Bane wrote:Peter Alexander 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. 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?On 19/11/11 2:02 PM, 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.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.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 2011On 19/11/11 8:22 PM, Timon Gehr wrote:On 11/19/2011 08:33 PM, Bane wrote: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.Peter Alexander 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.On 19/11/11 2:02 PM, 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.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 2011On 11/19/2011 10:16 PM, Peter Alexander wrote:On 19/11/11 8:22 PM, Timon Gehr wrote:I agree.On 11/19/2011 08:33 PM, Bane wrote: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.Peter Alexander 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.On 19/11/11 2:02 PM, 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.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 2011There 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?D1 is joy for me. It is simple and fairly nicely documented. With it I have no problems. D2 is whole different ball game.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.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 2011On 11/20/2011 02:23 AM, Bane wrote:Well, that does not answer my question since I am working exclusively with D2.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?D1 is joy for me. It is simple and fairly nicely documented. With it I have no problems. D2 is whole different ball game.Nov 20 2011As opposed to other languages that have lower productivity, more bugs, less speed and slower compilation as goals.This just has to mean PHP :DNov 18 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:ja4fhd$2amk$1 digitalmars.com...On 11/17/11 11:48 AM, Xinok wrote:As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.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.Nov 18 2011On 11/18/11 7:22 AM, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:ja4fhd$2amk$1 digitalmars.com...These are too "motherhood and apple pie" kind of things, and too vague to be useful. AndreiOn 11/17/11 11:48 AM, Xinok wrote:As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.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.Nov 18 2011On 11/18/2011 11:01 AM, Andrei Alexandrescu wrote:On 11/18/11 7:22 AM, Nick Sabalausky wrote: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."Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:ja4fhd$2amk$1 digitalmars.com...These are too "motherhood and apple pie" kind of things, and too vague to be useful. AndreiOn 11/17/11 11:48 AM, Xinok wrote:As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.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.Nov 20 2011On 11/20/11 3:07 PM, Xinok wrote:On 11/18/2011 11:01 AM, Andrei Alexandrescu wrote:We're looking for a brief and memorable intro. Three long-winding sentences are not that. AndreiOn 11/18/11 7:22 AM, Nick Sabalausky wrote: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.""Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:ja4fhd$2amk$1 digitalmars.com...These are too "motherhood and apple pie" kind of things, and too vague to be useful. AndreiOn 11/17/11 11:48 AM, Xinok wrote:As opposed to other langauges that either don't have all those as major goals, or do a poor job of them.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.Nov 20 2011On 11/17/11 11:21 PM, Andrei Alexandrescu wrote:On 11/17/11 11:48 AM, Xinok wrote:As opposed to other languages that have greater productivity, less bugs and don't need to be compiled.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.Nov 18 2011On 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: 52B5C810Nov 19 2011-----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 2011On 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 2011On Sun 20 Nov 2011 12:43:56 AM CST, Walter Bright wrote:On 11/19/2011 10:18 PM, Jude Young wrote:Thank youI'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 2011LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMQ0KDQpPbiBTdW4s 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-----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: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...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.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 2011On 11/14/11, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:Please take a look at http://d-programming-language.org/new/. TI 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 2011I 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, AndreiNov 20 2011On 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.. AndreaRequest forwarded. AndreiNov 20 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:jabkq4$1nu6$1 digitalmars.com...On 11/20/11 4:43 AM, Andrea Fontana wrote:Hah! I see what you did there... ;)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.. AndreaRequest forwarded.Nov 20 2011On 11/20/11 2:55 PM, Nick Sabalausky wrote:"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:jabkq4$1nu6$1 digitalmars.com...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. AndreiOn 11/20/11 4:43 AM, Andrea Fontana wrote:Hah! I see what you did there... ;)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.. AndreaRequest forwarded.Nov 20 2011On 11/20/11 4:03 PM, Andrei Alexandrescu wrote:On 11/20/11 2:55 PM, Nick Sabalausky wrote: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"Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:jabkq4$1nu6$1 digitalmars.com...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. AndreiOn 11/20/11 4:43 AM, Andrea Fontana wrote:Hah! I see what you did there... ;)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.. AndreaRequest forwarded.Nov 20 2011Btw, DMD still ships web files from digitalmars.com instead of the new one.Nov 20 2011"Andrei Alexandrescu" <SeeWebsiteForEmail erdani.org> wrote in message news:jabtgj$2jua$1 digitalmars.com...On 11/20/11 2:55 PM, Nick Sabalausky wrote: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."Andrei Alexandrescu"<SeeWebsiteForEmail erdani.org> wrote in message news:jabkq4$1nu6$1 digitalmars.com...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.On 11/20/11 4:43 AM, Andrea Fontana wrote:Hah! I see what you did there... ;)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.. AndreaRequest forwarded.Nov 21 2011