Luca's meaningless thoughts  

Go nuts

by Leandro Lucarella on 2009- 11- 11 15:14 (updated on 2009- 11- 11 21:48)
tagged compiler, d, en, go, google, language, software - with 11 comment(s)

I guess everybody (at least everybody with some interest in system programming languages) should know by now about the existence of Go, the new system programming language released yesterday by Google.

I think this has a huge impact in D, because it's trying to fill the same hole: a modern high-performance language that doesn't suck (hello C++!). They have a common goal too: be practical for business (they are designed to get things done and easy of implementation). But there are still very big differences about both languages. Here is a small summary (from my subjective point of view after reading some of the Go documentation):

Go D
Feels more like a high-level high- performance programming language than a real system programming language (no asm, no pointer arithmetics). Feels more like a real close to the metal system programming language.
Extremely simple, with just a very small set of core features. Much more complex, but very powerful and featureful.
Can call C code but can't be called from C code. Interacts very well with C in both directions (version 2 can partially interact with C++ too).
Feels like a very well thought, cohesive programming language. Feels as a bag of features that grew in the wild.
FLOSS reference implementation. Looks very FLOSS friendly, with proper code review, VCS, mailing lists, etc. Reference implementation is not FLOSS. Not very FLOSS friendly (it's just starting to open up a little but it's a slow and hard process).
Supported by a huge corporation, I expect a very large community in very short time. Supported by a very small group of volunteers, small community.

I really like the simplicity of Go, but I have my doubts about how limiting it could be in practice (it doesn't even have exceptions!). I have to try it to see if I will really miss the features of more complex programming languages (like templates / generics, exceptions, inheritance, etc.), or if it will just work.

I have the feeling that things will just work, and things missing in Go will not be a problem when doing actual work. Maybe it's because I had a very similar feeling about Python (indentation matters? Having to pass self explicitly to methods? No ++? No assignment in if, while, etc.? I hated all this things at first, but after understanding the rationale and using then in real work, it works great!). Or maybe is because there are is extremely capable people behind it, like Ken Thomson and Rob Pike (that's why you can see all sort of references to Plan 9 in Go :), people that knows about designing operating systems and languages, a good combination for designing a system programming language ;)

You never know with this things, Go could die in the dark or become a very popular programming language, only time will tell (but since Google is behind it, I guess the later is more likely).

Comment #0

by Tim Keating on 2009-11-11 16:22

Did you perhaps switch the two columns in the last item?

Comment #1

by Mike Wey on 2009-11-11 18:54

I didn't know D was supported by a huge corporation. ;)

Comment #2

by baxissimo on 2009-11-11 19:38

You mixed up the "FLOSS" and "Supported by" columns for Go vs D.

Comment #3

by baxissimo on 2009-11-11 19:41

... seems I wasn't the first to notice. Guess I shoulda hit f5 first.

Comment #4

by baxissimo on 2009-11-11 19:43

How much you want to bet that "nuts" will be the name of the package repository once go really gets going?

Comment #5

by Leandro Lucarella on 2009-11-11 21:51

Yeap, I fucked up the last 2 items, it's fixed now =/

About nuts as the package repository, I think you're probably right

Comment #6

by Pablo Antonio on 2009-11-12 06:33

On the "system programming" label. I don't quite get what they mean by that. Is the language suitable for writing operating systems with it?

Comment #7

by Dawid Ciezarkiewicz on 2009-11-12 16:49

The language looks lame at the moment, but they are starting in the right way. Proper corporate backing, Open Source infrastructure ready, proper names on the front and workable version available. Walter got it all backwards. :)

Maybe we could just join in and throw a bunch of good ideas that we've tested in D?

Comment #8

by Leandro Lucarella on 2009-11-13 19:19

Pablo: I couldn't find a definition of system programming language in the Wikipedia, but there is a definition of system programming:

System programming (or systems programming) is the activity of programming system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user (e.g. word processor), whereas systems programming aims to produce software which provides services to the computer hardware (e.g. disk defragmenter). It also requires a greater degree of hardware awareness.

So I guess that a system programming language should suitable to do system programming, but even by that definition, I'm not sure Google's Go (I won't call it just Go because there is a name clashing with another programming language called Go!) can be called a system programming language.


Dawid: I agree.

Comment #9

by Mason Green on 2009-11-15 14:18

Go may proove to be the final nail in D's coffin...

Comment #10

by Jeff Dickey on 2010-08-14 14:37

Mason Green (@9): Or, conversely, Go could be the kick in the pants that the D people need to finally get their thumb out and start doing things "right" (from an outside-Digital Mars perspective). I think Go is a nice little tool; it reminds me of a lot of "little" languages that have come out over the last 30+ years. D, on the other hand, is a kitchen-sink-at-minimum language in the grand tradition of PL/I, ALGOL 68 and J(2)EE; one wonders if its internal code name wasn't Ragú (as in, "it's in there.")

If one language has to be successful only at the expense of the other, I really do hope that D gets it right. We need a successor to C++ that is both saner/more self-consistent and capable. That need is why I do everything I can in Objective-C at the moment, but given the FLOSS community groupthink that defines it as an "Apple language," I don't see it getting nearly the cross-platform love it deserves.

In an ideal world, DM would work with the existing D community, throw their weight behind a FLOSS (ideally LVM-based) reference implementation, and then differentiate their commercial product line with enhanced libraries, professional training/support and so on. If they don't wake up and see that having, say, 40% of the revenue in a respectably-sized market is much, much better than having 99% of the revenue in a storefront-sized one, then D truly will be ALGOL for the 2010s, but not beyond.

Your comment

enter the 2nd word of the article's title
in \ RestructuredText format, please