Live data from Hacker News

Ask HN: Go programming language is over ten years old. What do you think of it?

news.ycombinator.com

271–280 of 310 posts

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#271
post #97

Earlier quoted context omitted.

Boring is actually what a lot of people look for.

I never understood why people are looking for things which are boring and I think it is mostly employers who do. They should look for something which is good and solves their problems. I don't know how something with the attribute boring is of interest here as other attributes for a technology/PL might be much more important... Actually they mean something different with "boring": It is just a lack of courage for sim…

In order to have a meaningful discussion, let me expand on what I mean by "boring".

To me, a boring language is one that is easy to learn, easy to read and which encourages somewhat homogenous code - through coding style and common idioms. It has few surprises and few dark corners.

If a language still has major aspects that practitioners struggle with after 2-3 years, it isn't "boring". If you have to expect every codebase in the same language to have different coding standards, it isn't boring.

A boring language is one where what you've learnt on one project has a high probability of being usable in a completely different company or on a project that does something entirely different from what you've done before. It is a language that disappears because you spend more time talking about how to solve problems and less time talking about how to express those solutions in a language.

Now I can understand that some people like the excitement of exploring new languages. And you should. On average you should try to learn at least one new language each year. Even if it is on your own time if your employer is stingy.

However, asking your employer to let you use some language on a project because you find it "exciting" is a big ask. Projects tend to have deadlines, they have quality targets, many projects are built by teams, so entire teams have to be conversant in the language. What if you need to scale up with more developers? How easy is it to recruit programmers in a given language and at a given level of proficiency? How about maintenance after you have left the company or grown tired of whatever language you were once very excited about? And what happens when a language goes out of fashion but the company running the code still depends on it?

People with responsibilities are not scared of talent. Rather the opposite. They depend on talent.

They may, however, be somewhat scared of "specialists" (in the sense of programmers who will insist on niche languages or niche technologies) because if you pay someone to write code, you don't want to have to search for "specialists" to maintain it or limit the size of your recruiting pool. You have an investment to manage.

As for mediocrity: I think you would need to back that argument up with something. Do you really think the choice of language is what makes a programmer brilliant or mediocre? Then why doesn't reality agree with that view? If that were true then for every Donald Knuth, Fabrice Bellard, Jeff Dean and John Carmack there should be lots of even better programmers that do all their work in "exciting" languages. Where are they? They should be far easier to enumerate than the people who use "boring" languages?

If you think caring about the long term value of code is "boring": try to start your own company and bet your own money. If you are that convinced of how "exciting" languages lead to brilliance it shouldn't be a tough choice to make.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#272

Earlier quoted context omitted.

I never understood why people are looking for things which are boring and I think it is mostly employers who do. They should look for something which is good and solves their problems. I don't know how something with the attribute boring is of interest here as other attributes for a technology/PL might be much more important... Actually they mean something different with "boring": It is just a lack of courage for sim…

This, plus it enables them to fire and replace developers without much difficulty because there's a great number of people who know these languages (see Java...).

You are actually arguing for mediocrity. If someone needs to protect their employment by making their work more obscure so they won't be replaced then they probably aren't a very good hire. Companies tend to want to retain highly competent talent - not mediocre people or incompetents.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#273
post #264
post #196

Earlier quoted context omitted.

Go is carefully designed to be adequate for the large majority of problems that don't need much, meant for use by the large majority of programmers who don't know or need much, whose attention is elsewhere. It is hard to get too deep into the weeds by accident. It builds fast, so programmers who code by successive approximation, making more or less random changes until something works can get there quickly. It runs p…

> so programmers who code by successive approximation, ... > making more or less random changes until something works can get there quickly. ??? First clause doesn't logically match second.

Successive approximation does not imply optimal successive approximation. A random walk that gets there qualifies: a succession of steps. A linear search is generally more efficient than a random walk, but depends on an accurate assessment of the direction and magnitude of each step. A binary search also depends on a global ordering criterion. All that would too much to ask of many users of Go.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#274
post #230

Earlier quoted context omitted.

> Go's designers have very different goals from others. They did not set out to design a language they would, themselves, like to program in. They meant to make a language that very distracted programmers would still be able to get things done using, and other distracted programmers could read and maintain. They never said that. They said they wanted a language for programming at Google scale. But their preferences a…

Actually they said something else, "The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand an…

They said what I said, but perhaps more diplomatically.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#275
post #91

Earlier quoted context omitted.

Could you elaborate on why you think it doesn't scale well for teams?

Imho because it is highly opinionated and the designers of the language also suggests best practices. They don’t do anything wrong in suggesting best practices although some of those best practices only work when you write infrastructure code and not micro services (with business logic) and some programmers cannot really compute that and they stick with the religion. I also had the same experience of not scaling for…

> Imho because it is highly opinionated and the designers of the language also suggests best practices.

In my experience this is actually a plus. I've lead a department that made the transition from Java to Go, and one of the really noticable things were entire classes of fruitless (and frankly, unnecessary) discussions disappeared. Having an opinionated language that comes with a canonical formatter and lots of established idioms made it easier to scale up to more people because more of the code looked homogenous more of the time.

However, with any new language someone takes up there is the risk that people will try to bring along their old habits from other languages and be unhappy if they can't just continue writing C/C++/Java/Python/C#/JavaScript/Lisp in Go. If this takes hold, you will waste a lot of time having fruitless discussions.

It is easier to adapt to a coding style that is shared than it is for every project and every team to invent their own. For instance, I've worked for only one company where using C++ was even somewhat pleasant: and it was in large part because a) the company had a very strictly enforced code standard for C++ (and other approved languages), and b) you had to demonstrate you could stick strictly to the code standard before you were able to approve changelists. At the time that company had some 7000 developers, of which probably 3-4000 had "C++ readability" rating.

The upshot being that after getting used to it, it was pretty easy to understand other people's code. And you would spend a lot of time reading other people's code.

I suspect Go being opinionated is a direct result of this experience.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#276
post #273
post #264

Earlier quoted context omitted.

> so programmers who code by successive approximation, ... > making more or less random changes until something works can get there quickly. ??? First clause doesn't logically match second.

Successive approximation does not imply optimal successive approximation. A random walk that gets there qualifies: a succession of steps. A linear search is generally more efficient than a random walk, but depends on an accurate assessment of the direction and magnitude of each step. A binary search also depends on a global ordering criterion. All that would too much to ask of many users of Go.

>Successive approximation does not imply optimal successive approximation. A random walk that gets there qualifies: a succession of steps.

Your first sentence (quoted above) is right.

But IMO, the two sentences quoted above, together, are not right. Because, even if not optimal, successive approximation means getting closer at each step, which is unlikely or impossible with a random walk.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#277
post #265

Earlier quoted context omitted.

Can you go into more detail about how java would make the program shorter?

Some examples: * Exceptions for error handling * Streams (map/filter/etc.) * Generics * Superior collections library (Set, ConcurrentHashMap, LinkedHashMap, etc.) * Records * Enums * Upcoming feature: pattern matching

This is not really what I had in mind. I know java has these features, but how would they make your program shorter? Could you be more specific? Maybe share an example of a real problem that is made easier by these features?

Often people will give made up examples, but the trouble with made up examples is you can't tell if they actually matter in practice or not. Sure, if we invented a way to turn popcorn into gum, itd be easier to turn popcorn into gum, but no one wants to do that in reality. I'm after real examples.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#278
post #276
post #273

Earlier quoted context omitted.

Successive approximation does not imply optimal successive approximation. A random walk that gets there qualifies: a succession of steps. A linear search is generally more efficient than a random walk, but depends on an accurate assessment of the direction and magnitude of each step. A binary search also depends on a global ordering criterion. All that would too much to ask of many users of Go.

>Successive approximation does not imply optimal successive approximation. A random walk that gets there qualifies: a succession of steps. Your first sentence (quoted above) is right. But IMO, the two sentences quoted above, together, are not right. Because, even if not optimal, successive approximation means getting closer at each step, which is unlikely or impossible with a random walk.

With each step, you get closer in time to when you will stop. You don't know, at any step, how far you are from a solution, until after the last one.

You may laugh, but more code is written this way than not.

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#279
post #231

Nonsense language. We've only had problems with it historically, both writing and deploying it. It's threading model sounds great in theory, but we've found that bounding most programs to one system thread improves performance in nearly all cases we've come across. The tooling and ecosystem are ridiculous, the dependency management is a nightmare, and the fact it's backed by an incredibly evil company doesn't help ei…

How is Go a toy language?

Re: Ask HN: Go programming language is over ten years old. What do you think of it?

#280
Great language. Easy to learn, makes sense, good documentation, good tooling support, great core packages, fast, consistent, etc.

The only thing I dislike is the CSP concurrency paradigm the community and language try to push. Every time you ask someone how to implement something more complex using locks or atomics, they just parrot the "share memory by communicating" lemma.

Post reply on HN