D vs Go on reddit

Nick Sabalausky a at a.a
Thu Feb 10 19:08:11 PST 2011


"Bruno Medeiros" <brunodomedeiros+spam at com.gmail> wrote in message 
news:ij1guf$694$1 at digitalmars.com...
> You guys are way on the wrong track here.
>
> I'm very much a fan of simple and orthogonal languages. But this statement 
> has a big problem: it's not clear what one actually considers to be 
> "simple" and "orthogonal". What people consider to be orthogonal can vary 
> not only a little, but actually a lot. Sometimes it can actually vary so 
> much as to be on opposite sides. I remember seeing that first hand here on 
> D: two people were arguing for opposing things in D (I don't remember the 
> particular issue, but one was probably a greater language change, the 
> other as for the status quo, or a minor change from the status quo), and 
> both explicitly argued that their alternative was more orthogonal! I 
> remember thinking that one was stretching the notion of orthogonality a 
> bit further than the other, but I didn't find any of them to actually be 
> incorrect.
>
> So people, please don't dismiss out of hand the principle that 
> orthogonality is a very worthwhile design goal. Rather, this principle 
> needs to be understood and applied in a more concrete and objective 
> manner. It cannot be described in a simplistic one-liner ("more 
> orthogonality is good." kthxbye!).
> For starters, it only makes sense to evaluate the orthogonality of a 
> language alongside the expressive power of the language. Otherwise the 
> family of languages used in Turing machines (P'', and even brainfuck) 
> would be the unmatched best languages in terms of orthogonality. (the 
> whole language can be described in a few paragraphs... so simple!)
>
>
> On 09/02/2011 13:01, Nick Sabalausky wrote:
> > "Walter Bright"<newshound2 at digitalmars.com>  wrote in message
> > news:iicfaa$23j7$1 at digitalmars.com...
> >>
> http://www.reddit.com/r/programming/comments/fdqdn/google_go_just_got_major_win32_treats_now/c1f62a0
> >
> > You'd think that things like JS, Haskell, LISP and Java circa v1.2 would
> > have taught people that extreme simplicity/orthogonality is a stupid
> way to
> > design a language that's intended to be used in the real world. But
> people
> > keep flocking to that silver bullet anyway.
> >
> >
> >
>
> Eh?? What exactly has "JS, Haskell, LISP and Java" taught us in terms of 
> "designing a language that's intended to be used in the real world"? You 
> seem to be implying these language did something massively wrong... 
> However Java became very popular and widespread (and the version of the 
> language when such happened, 1.3-1.4, was very similar to Java v1.2). 
> JavaScript is also quite popular and widespread, for a scripting language 
> at least (and not only in web/HTML). Only Lisp has widely been acknowledge 
> as a failure. Dunno about Haskell, maybe the jury is still out on that 
> one.
> But in any case your argument is already starting off in a bad way (in at 
> least a 50% fuzzy manner).
>
>
> Even if we were to imagine that all those 4 languages had been a failure, 
> or become obsolete, your argument still wouldn't be much useful. Because:
>
> Java - Yes, Java is simpler than it's predecessor (C/C++), but not in 
> orthogonality. Java has less capabilities/functionality (like manipulating 
> pointers, or creating structs), it is not more orthogonal.
>
> LISP - LISP syntax is very orthogonal, but it pushes it the extreme, 
> hurting readability. Also can one also say that LISP *semantics* are also 
> very orthogonal? Even with the macro system, I doubt that is entirely the 
> case for the generality of the language, although the true answer for this 
> would depend on the particular dialect of LISP (my experience has been 
> with Common Lisp and Scheme).
>
> Don't know enough about Haskell. (And probably neither do you. Or anyone 
> else for that matter, except /that/ handful of people in the whole world? 
> :P )
>
> As for JavaScript, well, this one I do agree, it is incredibly orthogonal, 
> one of the very few languages I would say that, and quite beautiful in 
> that way.
> But regardless of all this, Lisp and JavaScript are not comparable to D 
> with regards to trying to evaluate how much orthogonality is good or 
> bad... because they are not even statically typed languages (also in the 
> case of JavaScript there is no metaprogramming). Because of this, it will 
> be much, much, more easy for them to orthogonal. Yet, if they fail, can we 
> say it was the fault of being orthogonal? It could have been plenty of 
> other things in the language design. (or even something entirely outside 
> the design)
>
>
> In my view of the /worthiness of orthogonality/, it only is useful to 
> compare the simplicity of languages when the capabilities, functionality, 
> and expressive power of such languages are more or less comparable...
>

You seem to misunderstand. I never said that orthogonality or simplicity was 
bad. I just said that it was stupid to equate "more simple/orthogonal" with 
"better" and "less simple/orthogonal" with "worse". Ie, I was saying exactly 
the same thing about "orthoginality" as what you're saying. I beleive that 
as a consequence, it's dumb to make "simple/orthogonal" one of the primary 
design goals.

IMO, some examples of what happens when "simple/orthogonal" is given too 
much importance are Java2, JS, LISP and Haskell.

LISP: We seem to agree how having too much "simple/orthogonal" messed up 
LISP. LISP *is* emmensely popular in certain circles. But I believe that 
certain consquences of its over-emphasis on simple/orthogonal (ex: "Lost In 
Stupid Parenthesis") is a major part of what prevented it from ever finding 
its way outside its niche circles.

Haskell: Haskell has had *huge* buzz for awhile. Especially about 5 or so 
years ago, IIRC. And like a lot of people, I gave it a try. And like most 
people who did, I found its design to have such a strong emphasis on 
simple/orthogonal that it was too impractical to be worth the functional 
benefits it offered. Fast-forward to now, and there's *still* practically no 
one actually using it for real-world software development. Just some 
theoretical/academic stuff and that's about it.

JS: Widely-used != Good. I admit I'm also impressed by how much 
expressiveness it gets out of such few and simple rules (its handling of 
semicolons notwithstanding). But I find that to be largely academic. 
Granted, most of JS's biggest problems aren't direct consequences of its 
focus on simple/orthogonal, but there are things it could improve by 
shedding some of that focus. And more than that, it is a good example of the 
fact that "simple/orthogonal" doesn't necessarily imply "good".

Java circa-v1.2: I agree that fewer capabilites does not necessarily imply 
more orthogonality, and that LISP/JS are possibly more simple/orthogonal 
than Java's ever been. But I don't see how C++ can be considered anywhere 
near as simple/orthogonal as old-school Java. C++ is a giant cancerous web 
of rules, features and special cases. In old-school Java, you have GCed 
classes with member vars and member funcs...and that's about it.  No sugar 
at all: No 'foreach' because 'for' already handles that. No type inference 
because manually-tracked types can be used instead. It already had classes, 
so delegates had to be made out of them (ie, "functors" - and see that 
infamously idiotic paper Sun wrote defending this decision). It already had 
upcasting/downcasting, so generic code had to be constructed via those. 
Separate code-generating tools could be written (for instance, through the 
editor), so metaprogramming had to be done via that. Objects could have 
member functions, so it didn't bother allowing operator overloading - you 
could just use a named function instead. Etc...

All those features were missing because you could get the same effect with 
what few Java it did provide you - Ie, those extra features would have 
*decreased* orthogonality. It was immensely popular, but fitting everything 
into those few multi-purposed building blocks like that (ie, fairly 
simple/orthogonal components) also made it an immense PITA. Maybe not as 
much of a pain as C++ for certain things, but that's really more due to C++ 
being a giant anachronistic puss-filled wad rather than due to Java being 
more simple/orthogonal.

Regarding Java 1.3/1.4: They may very well have been closer to 1.2 than they 
were to 1.5/1.6 (I wouldn't know), but IIRC 1.3 was when it finally started 
to give people little bits of suger (ex: foreach).




More information about the Digitalmars-d mailing list