Hacker News new | ask | show | jobs
by xxchan 4366 days ago
Every single thing listed in the article can be added to Go at any point, since it currently has a very minimal feature set. Once something like generics are added, they have to support it until the end of time or risk having an unstable API like Rust did for a while there.
3 comments

> or risk having an unstable API like Rust did for a while there.

Every language, including all the languages described in this article, goes through a period of instability while it figures out what works and what doesn't.

Sure, I'd just say that Go has been extremely stable since before 1.0 (~2 years).

Author's point was that we should not use "not good" languages for the fear that we might be stuck with them for next 20 years. I'd rather be stuck with a language whose designers are very resistant to change vs one that gets features haphazardly bolted on every few years (PHP comes to mind).

>I'd rather be stuck with a language whose designers are very resistant to change vs one that gets features haphazardly bolted on every few years (PHP comes to mind).

I absolutely agree! However, I don't think Rust will continue to go through wild changes for much longer. My guess is that it will settle and become pretty fixed.

And Haskell certainly doesn't introduce breaking changes very often.

> However, I don't think Rust will continue to go through wild changes for much longer. My guess is that it will settle and become pretty fixed.

We're shooting for the end of the year, in fact. You can view the list of backwards incompatible language changes here: https://github.com/rust-lang/rust/issues?labels=P-backcompat...

And Haskell certainly doesn't introduce breaking changes very often.

Actually, I'd say instability is one of the significant challenges with adopting Haskell for long-lived production code. For example, there have been a few discussions in various forums and blogs recently about how much of Real World Haskell no longer even compiles on the latest GHC and current versions of libraries. RWH is a book that rapidly became the go-to text for new Haskell developers only a few years ago, so we're not talking about either bleeding edge functionality or a length of time where software written back then has probably been retired here.

So stability is perhaps an area where Go does have an advantage over the likes of Rust and Haskell today. Rust is still evolving as a new language inevitably will; it has not yet reached the level of stability needed for long-term production use by the general programming community. Haskell is also still evolving, but for a different reason: it is valued as much for being a test bed of bleeding edge programming language design as it is for being a practical programming language.

To be fair Real World Haskell was written in November 2008, and IIRC that syntax was valid up to GHC 7.6.3 (needs citation) or 21 April 2013.
>And Haskell certainly doesn't introduce breaking changes very often.

Perhaps Haskell the core language doesn't but ghc certainly does, in every major version.

>Every single thing listed in the article can be added to Go at any point

Every single thing listed in this article could be added to TI BASIC at any point. It would just require a complete re-formulation of the language into something completely unrecognizable.

> Once something like generics are added

The <> notation in id<T>(item for generic bracketing is harder to read than other bracketing symbols, e.g. () [] and {}. Unlike those others, angles are used for comparison ops and arrow heads also. If Go ever introduces generics, the Scala-like [] notation looks cleaner and would fit into Go's existing grammar.

The only point of confusion I can see out of using [] is:

    type Foo[T] T
versus

    type Foo []int
for example.

    type Array[T] []T
Yes please. You'd also avoid some icky non determinism in your parser.