Hacker News new | ask | show | jobs
by bheadmaster 819 days ago
There are several features that can be considered neat on their own. Most of those features are probably derived from other languages, but together they form a very powerful language that simply takes away the pain that I feel using other modern languages, such as C++, Python, Java and NodeJS.

Here are a few on top of my head:

1) CSP concepts embedded deeply into the language (goroutines/channels/select) making concurrency easy to do correctly

2) Standard Library and Go toolchain providing everything that most languages use third party libraries for (formatting, testing, benchmarking, fuzzing, HTTP, crypto, etc...)

3) Compilation into a static binary that can just be copied from machine to machine without any dependencies whatsoever (even C struggles with that on Linux, due to glibc NSS fiasco)

4) Cross-compilation by changing two environment variables

5) Minimalistic distribution system - just write `import "github.com/person/repository"` - no need for packaging, pom.xml, requirements.txt, package.json, etc.

6) Interface-based modularity (structural typing), making code reuse much easier than the usual OOP-style abstract-class based modularity (nominal typing)

7) Extremely fast compilation, which makes read-modify-run development loop as fast as with interpreted languages

2 comments

1) Modula-2, Active Oberon, Erlang

2) .NET, Java, Smalltalk, Common Lisp

3) Any compiled language until the mid-1990's.

4) Amsterdam Compilers Toolkit, 1980

5) Until the repo changes, forbids distribution of binary libraries

6) Standard ML, Caml Light, OCaml, Haskell,...

7) Turbo Pascal on CP/M, MS-DOS computers running at 7 MHz, with 640KB.

If your post is intended to be a remark on how nothing in Go is "revolutionary", please read the first paragraph of my post, and notice how there isn't a single language in your list which is in all 7 categories.

Additionally:

- Erlang does not implement CSP, it implements Actor model

- Java does NOT have all the listed features included in its default toolkit - hence the existence of Gradle, Maven and all other packaging/testing/benchmarking solutions

- The "until mid 1990's" is the keyword here - I'm talking about modern languages and I explicitly pointed that out

- ACT is not part of any language, it is an external tool that may or may not be reliable, but definitely does not have toolchain/standard library level of quality/stability guarantee.

- "Until the repo changes" - packages can disappear from any system, see leftpad incident

- "forbids distribution of binary libraries" - not true, see [0]

[0] https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGh...

---

However, if I have misread your tone, and your post was intended to be an informative list of languages Go was inspired by, then thanks for the information. But some of it is misleading or false.

My opinion on Go's "innovation" is well known on HN, and gonuts back when I cared pre-1.0.

I could go over those points, one by one into detail, including Russ Cox point of view on disabling binary distribution, but not feeling motivated to press the further the wound.

I have no idea who you are nor do I care about internet pseudocelebrities, sorry. Your opinions, to me, are just words from a random stranger, whose merit is only insofar as I can learn something new from them.
No issues, I also don't care.
Unfortunately, the sort of soft trolling he keeps doing is allowed on here. It reflects extremely poorly on the mod team and is frankly just pathetic.
> and notice how there isn't a single language in your list which is in all 7 categories.

Implementing, sometimes quite poorly, all 7 categories does not a revolution make.

Golang looked at the past 60 years of programming evolution and decided it needed almost none of it, and ignored any developments in programming languages of the past thirty years or so. This is not revolutionary. It is, at best, reactionary.

Topics where Go has failed:

  - No tail call optimization
  - No meta-programming
Both do exist in Scheme since 1975.