Hacker News new | past | comments | ask | show | jobs | submit login

Go is designed to be a language with a low conceptual barrier to entry; that’s quite evident from its design. That doesn’t mean it’s just a “teaching languge”, or if it does, you’ll have to explain that to all the people happily using it in production.



>or if it does, you’ll have to explain that to all the people happily using it in production.

Easy concurrency.

Good tooling.

A handy standard library.

Static compiles.

The hype of a "Google language".

You don't need "low conceptual barrier" or anything particularly beautiful about its design to explain its success.

Those are the reasons I use it too.


Some of those things are a direct result of Go's simplicity.

Good tooling in particular is available because Go syntax is deliberately simple. It's simple for humans and simple for tools.

Go shipped with Go parser in standard library from day 1. Go syntax hasn't changed from that day.

Having Go parser in standard library means that building tools like go get, linters, auto-formatters, code coverage tools etc. is very simple.

Contrast that with C++ or Rust or Swift.

A C++ parser alone (clang) is probably a bigger project than the whole Go compiler. Rust and Swift don't even have a stable syntax yet and as far as I know they don't have the equivalent of Go's ast package.

If Go didn't aggressively tame complexity then it would have ended the same way as Rust or Swift. Sure, it would have generics, but also slow compilation time, language that takes years to reach stability, tooling that is exponentially more difficult to write etc.

That's engineering: making decision about what is more important and accepting that less important things have to be dropped.

If features are most important, then you accept complexity. See Rust or Swift.

If simplicity is most important, then you accept less features. See Go.

I for one am glad that I have a choice.

I would rather have Go than a third language driven by the same ideas and priorities as Rust or Swift.


Rust does have a stable syntax, or at least, by "stable" I mean it only changes in backwards compatible ways.

https://crates.io/crates/syn is the most popular parser crate at the moment.


"Google language" is Dart and it does have generics. So low conceptual barrier seems reasonable reason for success. Rust does have all features you listed and of course generics. Both started around 2009 so it is about same age as Go but not as popular among developers.


>"Google language" is Dart and it does have generics.

Only Google never made a good job at promoting it, and it's a dynamic language meant as a better-JS, so not the same market as Go.

>Rust does have all features you listed and of course generics. Both started around 2009 so it is about same age as Go but not as popular among developers.

Rust took until 2-3 years ago to finalize its design and be stable. Go was already stable for years by that point.

And Rust comes with an uncommon, and hard to grasp at first, memory management model which stops many in their tracks -- it's not the presence of generics (or traits, or option types or whatever) that's the issue.


I like programming in Go, but I don't understand the downvote on your comment. And I agree that Rust adoption is slowed more by the memory management model than type parametricity.


There are other factors, like Go compiles to bare metal while Dart was targeted to replace JavaScript on the web, which is pretty much impossible.

Additionally Dart was betrayed by Google's own teams that decided to invest in TypeScript instead.


> Both started around 2009 so it is about same age as Go but not as popular among developers.

They didn't hit 1.0 (and the corresponding backwards compatibility guarantees) at the same time.


Of course you can find people using all manners of languages/systems in production. That doesn't mean they are well designed. And I don't think it's necessary for me to reiterate at this point why Go is poorly designed.


And yet Go is used by more and more large project / compagnies where supposing superior languages are nowhere because way too complex.


Well, it's used by 1/10 to 1/100 the number of large project/companies that C++, Java, and C# are used.

So there's always that.


It's also a MUCH younger language than those you listed, that said I don't think Go or any other of the 'new languages on the block' will reach anything near the wide use of languages like C++ or Java, atleast not in my lifetime.


Well, Java had that wide an adoption (in the enterprise) already 10 years after it was introduced. It appeared on 1995 -- but 2005 it was already the de-facto enterprise backend language.

Ditto for C#, but of course C# was pushed by MS as the native solution for Windows, a platform that already had 95% market share.


1995-2005 was the time when traditional IT industry grew to such humongous proportion. Global delivery model, offshore development and so on were developed during that time. So either way Java/C# came at right time or IT industry grew due to them. Lots of new software and users were created which did not exist before and not the wholesale rewrite of pre-existing software else e.g. COBOL could have gone from banking sector.

So asking Go to be popular as Java in 10 years is to live up to expectation that past languages weren't asked.


It's more than anything because of Google's clout, and secondarily the general worse-is-better fetish in tech.

Go actually just pushes all the complexity into the code you write with it, so I don't buy that that is the reason.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: