]> git.llucax.com Git - personal/website.git/blob - source/blog/posts/2009/11/11-go-nuts.rst
Add post
[personal/website.git] / source / blog / posts / 2009 / 11 / 11-go-nuts.rst
1 Title: Go nuts
2 Tags: en, go, language, d, google, compiler, software
3
4 I guess everybody (at least everybody with some interest in system programming
5 languages) should know by now about the existence of Go_, the new system
6 programming language released__ yesterday by Google_.
7
8 __ http://google-opensource.blogspot.com/2009/11/hey-ho-lets-go.html
9
10 I think this has a huge impact in D_, because it's trying to fill the same
11 hole: a modern high-performance language that doesn't suck (hello C++!). They
12 have a common goal too: be practical for business (they are designed to get
13 things done and easy of implementation). But there are still very big
14 differences about both languages. Here is a small summary (from my subjective
15 point of view after reading some of the Go_ documentation):
16
17 +-------------------------------------+-------------------------------------+
18 | Go_                                 | D_                                  |
19 +=====================================+=====================================+
20 | Feels more like a high-level high-  | Feels more like a real close to the |
21 | performance programming language    | metal system programming language.  |
22 | than a real system programming      |                                     |
23 | language (no asm, no pointer        |                                     |
24 | arithmetics).                       |                                     |
25 +-------------------------------------+-------------------------------------+
26 | Extremely simple, with just a very  | Much more complex, but very         |
27 | small set of core features.         | powerful and featureful.            |
28 |                                     |                                     |
29 +-------------------------------------+-------------------------------------+
30 | Can call C code but can't be        | Interacts very well with C in both  |
31 | called from C code.                 | directions (version 2 can partially |
32 |                                     | interact with C++ too).             |
33 +-------------------------------------+-------------------------------------+
34 | Feels like a very well thought,     | Feels as a bag of features that     |
35 | cohesive programming language.      | grew in the wild.                   |
36 |                                     |                                     |
37 +-------------------------------------+-------------------------------------+
38 | FLOSS_ reference implementation.    | Reference implementation is not     |
39 | Looks very FLOSS_ friendly, with    | FLOSS_. Not very FLOSS_ friendly    |
40 | proper code review, VCS, mailing    | (it's just starting to open up a    |
41 | lists, etc.                         | little but it's a slow and hard     |
42 |                                     | process).                           |
43 +-------------------------------------+-------------------------------------+
44 | Supported by a *huge* corporation,  | Supported by a very small group of  |
45 | I expect a very large community in  | volunteers, small community.        |
46 | very short time.                    |                                     |
47 +-------------------------------------+-------------------------------------+
48
49 I really like the simplicity of Go_, but I have my doubts about how limiting it
50 could be in practice (it doesn't even have exceptions!). I have to try it to
51 see if I will really miss the features of more complex programming languages
52 (like templates / generics, exceptions, inheritance, etc.), or if it will just
53 work.
54
55 I have the feeling that things will just work, and things missing in Go_ will
56 not be a problem when doing actual work. Maybe it's because I had a very
57 similar feeling about Python_ (indentation matters? Having to pass ``self``
58 explicitly to methods? No ++? No assignment in ``if``, ``while``, etc.? I hated
59 all this things at first, but after understanding the rationale and using then
60 in real work, it works great!). Or maybe is because there are is extremely
61 capable people behind it, like `Ken Thomson`__ and `Rob Pike`__ (that's why you
62 can see all sort of references to `Plan 9`__ in Go_ :), people that **knows**
63 about designing operating systems and languages, a good combination for
64 designing a *system programming language* ;)
65
66 __ http://en.wikipedia.org/wiki/Ken_Thompson
67 __ http://en.wikipedia.org/wiki/Rob_Pike
68 __ http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs
69
70
71 You never know with this things, Go_ could die in the dark or become a very
72 popular programming language, only time will tell (but since Google_ is behind
73 it, I guess the later is more likely).
74
75
76 .. _Go: http://golang.org/
77 .. _Google: http://www.google.com/
78 .. _D: http://www.digitalmars.com/d/
79 .. _FLOSS: http://en.wikipedia.org/wiki/FLOSS
80 .. _Python: http://www.python.org/
81
82
83 .. vim: set et sw=4 sts=4 :