Live data from Hacker News

I want off Mr. Golang’s Wild Ride (2020)

fasterthanli.me

281–290 of 477 posts

Re: I want off Mr. Golang’s Wild Ride (2020)

#281
What would be a good alternative to Go, with

- large and well maintained standard lib - great runtime characteristics - esp. reasonable memory usage - developer ergonomics - matureness - long term stability - preferably managed memory

I really have used a lot of languages. They all have some downsides. I like Kotlin a lot but the JVM is just to cumbersome and resource heavy. Grade is way to complex. Rust is way to cumbersome to write and lacks the standard lib. The only one that comes to my mind is actually .NET Core (C#). But I don't know mature it is on Linux for your standard backend.

Re: I want off Mr. Golang’s Wild Ride (2020)

#282
post #81

Earlier quoted context omitted.

> In my experience, people can't actually read everything on the screen at one time anyway, and the more dense/terse things are the harder it is to read (otherwise we would minify everything). Whether or not you can read everything on the screen at one time is missing the point entirely. The point is that context matters, and the more frequently you have to scroll to find it is more cognitive burden. > It's not likel…

> Whether or not you can read everything on the screen at one time is missing the point entirely. The point is that context matters, and the more frequently you have to scroll to find it is more cognitive burden. And I disagree. Scrolling IMO is a lot easier than squinting to parse dense code. We have visual structure (indentation blocks and so on) for a reason. The visual structure aids in readability, and indentati…

How is that different than an early return? Exceptions basically reuse the existing stack-oriented structure of programs - it will do the same thing as if you would have returned from that point, unless you use a try-catch block, which again guides the eyes very well. Compared to that repeating the same repeating pattern will just introduce useless noise that will make identifying the actually important greater pattern (e.g. manual bubbling up) harder to see.

Re: I want off Mr. Golang’s Wild Ride (2020)

#283

Earlier quoted context omitted.

> and indicate that the language you are using lacks the right abstractions for productive programming. Indeed go did not have generics, in fact that's explicitly stated in the post I was responding to: "at the time the lack of generics made it so that you either had to use reflection - or implement the same function N times over to support the different numeric data types" So, you unthinking prat, what do you recomm…

> So, you unthinking prat, what do you recommend he should have done, carried on coding much near-duplicate code by hand or get the computer to do the repetitive job infinitely faster and more safely? No, my recommendation would be to use a different language that doesn't need a preprocessor. Use any more insults and I'm just going to flag you.

You don't get always to choose your language, and even then there will be stuff that needs automated cut & paste at a level that the language can't provide (even down to the lexeme level). Which is why I use generated code for my C# work. I use python rather than a preprocessor but either would do.

Prepros and code generation in general are just tools, no more nor less, and not good or bad intrinsically. There is no code smell from using these. The bad smell comes only from misusing them.

Re: I want off Mr. Golang’s Wild Ride (2020)

#284
post #247

Earlier quoted context omitted.

The latter is a much stronger argument than the former (no idea why people get so worked up about character counts), but even then, "shit" is really strong considering how often one experiences exception traces when using an application written in Python or Java or some other exception-based language. Point being, we should probably evaluate error handling schemes based on results rather than ideology (even though I…

> no idea why people get so worked up about character counts Think of reading code as mining ore. If the ore is rich, you don't have to mine and process nearly as much of it to get the material you need. If the ore is poor, you have to invest extra effort to mine more ore to get the same amount of refined material. You might think Go is easy to read because lines are individually very easy to read, but Go code is so…

> Think of reading code as mining ore. If the ore is rich, you don't have to mine and process nearly as much of it to get the material you need. If the ore is poor, you have to invest extra effort to mine more ore to get the same amount of refined material.

Reading code and mining have nothing in common. In particular, mining technology works best on dense ore, human visual perception requires whitespace to operate efficiently.

> You might think Go is easy to read because lines are individually very easy to read, but Go code is so information-poor (partly because of error handling boilerplate) that you have to read a lot more lines of it to understand what a system does compared to other languages.

I think Go is easy to read because (1) it ranks at the top in my experiences with other languages and (2) because humans are very good at scanning visual structure and less good at parsing arbitrary syntax. Most languages tacitly acknowledge (2) by way of indentation and other syntactically irrelevant whitespace, but they don't apply the same rigor to error handling.

> Python and Java aren't particularly ambitious standards for a 21st-century language.

I was remarking specifically about exception handling. Has there been much innovation in exceptions among 21st-century languages?

Re: I want off Mr. Golang’s Wild Ride (2020)

#285
post #142
post #81

Earlier quoted context omitted.

> In my experience, people can't actually read everything on the screen at one time anyway, and the more dense/terse things are the harder it is to read (otherwise we would minify everything). Whether or not you can read everything on the screen at one time is missing the point entirely. The point is that context matters, and the more frequently you have to scroll to find it is more cognitive burden. > It's not likel…

> > in practice, Go seems to have fewer error handling bugs than exception-based languages > > This is based on? By explicitly annotating functions as fallible the language hints to the programmer that errors need to be accounted for. With exceptions, the hints only appear at runtime - when your program crashes. There's nothing that nudges you towards handling errors at the point of writing code, so you end up with b…

Checked exceptions are a thing. Java’s implementation is unfortunately not perfect, but exceptions themselves are analogous to basically Rust’s Result type, but it has in-built support on a language level which packs the stack trace into the error case and auto-bubbles up if not handled.

I believe a language where instead of subtypes you would get algebraic data types and could optionally mark whether a given exception is checked or not would be the ideal solution.

Re: I want off Mr. Golang’s Wild Ride (2020)

#286
post #47

Earlier quoted context omitted.

It requires several additional lines of code just to bubble up an error, for starters, and there's nothing stopping you from ignoring errors and continuing with what could easily be corrupt data.

> It requires several additional lines of code just to bubble up an error I mean people hate exceptions for a reason (other than in Java world).

And what is that reason?

Re: I want off Mr. Golang’s Wild Ride (2020)

#287
post #120

Earlier quoted context omitted.

Don't fall prey to an ad-hominem argument - I don't think your article negatively hints at any kind of 'this is a Rust fanboy-made praise text' and it saddens me that a genuinely legit article like this needs to have the author defend himself like this. Your points were well explained. Go has several serious warts which, in my own opinion, are showstoppers, and you are comparing it to a language which is somewhat new…

> Rust has its warts as well and the language spec is already starting to become somewhat... large It doesn't have a spec, so we don't know how gigantic it would be.

> It doesn't have a spec, so we don't know how gigantic it would be.

While it's not a formal spec, there is https://doc.rust-lang.org/reference/index.html which can give an idea of the size a Rust spec would have.

Re: I want off Mr. Golang’s Wild Ride (2020)

#288

What would be a good alternative to Go, with - large and well maintained standard lib - great runtime characteristics - esp. reasonable memory usage - developer ergonomics - matureness - long term stability - preferably managed memory I really have used a lot of languages. They all have some downsides. I like Kotlin a lot but the JVM is just to cumbersome and resource heavy. Grade is way to complex. Rust is way to cu…

I really like C#, and F# is one of my favorite languages. I just really hate having to manage csproj files, and I miss Go’s compilation speed and compact binaries. C# is pretty decent on Linux, though, so I’d at least kick the tires a bit.

Re: I want off Mr. Golang’s Wild Ride (2020)

#289

I miss Perl. It has everything I like in a language. Mystic runes that do really complex things with just 1 extra character of code. Switch between procedural, OO, and functional programming anywhere. Rewrite the language itself if you feel like it. C/ASM extensions for speed. Reusable, inheritable, extendable modules rather than quirkily-named modules that nobody can build on top of. Extremely thorough warnings, err…

What do you think of Raku?

Re: I want off Mr. Golang’s Wild Ride (2020)

#290
post #252

Earlier quoted context omitted.

What an extremely convenient template to dismiss any nuanced argument against "worse is better". You even get to question my credentials a couple times! (I apparently pick metrics that are convenient to my argument, and fundamentally misunderstand programming language design). Even if I accept the premise that "I'm challenging Go on things it doesn't promise to deliver" (which is disingenuous to begin with — correctn…

Can you see the value in being able to create software more quickly, at the expense of the software's stability?

No, the compiler needs to save us from ourselves. What if we get a runtime nil? Oh God, the horror!

I understand correctness, I do not understand why we're making languages a nanny state where if we're not completely focused on correctness and zero copy interfaces it's not worth using.

I don't want to always care about memory allocation strategies when I want to have some fun on a project. I don't understand why a vocal group tends to dismiss some languages because they're not always doing the PERFECT thing.

Post reply on HN