Live data from Hacker News

Russ Cox is stepping down as the Go tech lead

groups.google.com

351–360 of 396 posts

Re: Russ Cox is stepping down as the Go tech lead

#351
post #329
post #308

Earlier quoted context omitted.

There were certainly buggy tests that relied on the old behavior. We didn't find any actual code that relied _correctly_ on the old behavior. https://go.dev/wiki/LoopvarExperiment

Love it, even though it must have been incredibly confusing when old tests failed at first. The assumption being that the tests were correct. They _passed_ all those months or years! I'm just also watching your YT video on testing and enjoying it very much!

The tests are in the simplest forms, there are more complex use cases of traditional "for" loops. The complex cases are never explored by the authors of the change.

And there are a large quantity of private Go code in the world.

Re: Russ Cox is stepping down as the Go tech lead

#352
post #27

rsc, thank you very much for all the hard work on the language that brought me into software engineering. Despite playing around with several programming languages, Go still feels like home. The development experience is terrific and I really appreciate how unapologetically simple and responsible the language and its creators have been. Good luck and all the best in all your endeavours!

> rsc, thank you very much for all the hard work on the language that brought me into software engineering. You're quite welcome, and thank you for this comment. I never expected when we started that Go would have such a positive impact on people's lives, bringing new people into programming and software engineering. That's definitely the impact I'm most proud of.

Thank You rsc. This is sad because Go is one of the few language that is good and conservative instead of hype and feature creep. And that is primarily because you say No to a lot of things.

I do wonder, if you could re-do Go or another programming language again. What feature / changes would you add or take out.

Re: Russ Cox is stepping down as the Go tech lead

#353

Earlier quoted context omitted.

The semantics are always complex. The same type of question arises for all basic types. For example, what does adding a string to an integer produce? Or do you give up on answering that and simply prevent adding strings and integers? When one wants to add them they can first manually apply an appropriate type conversion. That is certainly a valid way to address your question – i.e. don't allow incrementing said type.…

I think you're confusing the type and value level. The original statement was about a range type , that is something like an integer that is statically constrained to a range of, say, 1..4 (1, 2, 3, 4). To work with this as a type you need to have type level operations, such as adding two ranges (which can yield a disjoint range!), adding elements to the range, and so on, which produce new types. These all have to wo…

[deleted]

Re: Russ Cox is stepping down as the Go tech lead

#354

Earlier quoted context omitted.

> Can you name 3 apps/projects that use COBOL? Does this imply that you see COBOL as having a trustworthy future, making it a great choice for a new greenfield application?

the part of your sentence before the comma is not fully related to the part after it. iow, the first part does not imply the second part. a lang could have a trustworthy future for maintenance of existing apps, like in terms of support from vendors, while not being a very good choice for greenfield applications, due to not having modern language features and libraries. but there is so much cobol in critical infrastru…

[flagged]

Re: Russ Cox is stepping down as the Go tech lead

#355
post #350
post #299

Earlier quoted context omitted.

> since Go 1.22, every freshly-declared loop variable used in a for loop will be instantiated as a distinctive instance at the start of each iteration. In other words, it is per-iteration scoped now. So the values of the i and v loop variables used in the two new created goroutines are 1 2 and 3 4, respectively. (1+2) + (3+4) gives 10. I think you are assuming more guarantees than are actually guaranteed. You have a…

:D It looks you don't understand the change at all. The statement "since Go 1.22, you should try to specify a Go language version for every Go source file" is made officially, not by me. > You have a well-documented history of making incorrect claims about Go compiler and runtime behaviors, so this isn't surprising. The claim is totally baseless. All my opinions and articles are based on facts. If you have found ones…

> The statement "since Go 1.22, you should try to specify a Go language version for every Go source file" is made officially, not by me.

Please provide a link to documentation on golang.org. Note: not a comment in a GitHub issue, not a blog article -- official stuff only.

> baseless

It should be evident by the consistent responses to your GitHub issues that nobody takes you seriously. Which is unsurprising, when you make recommendations like

> Anyway, since Go 1.22, you should try to specify a Go language version for every Go source file, in any of the above introduced ways, to avoid compiler version dependent behaviors. This is the minimum standard to be a professional Go programmer in the Go 1.22+ era.

Re: Russ Cox is stepping down as the Go tech lead

#356
post #355
post #350

Earlier quoted context omitted.

:D It looks you don't understand the change at all. The statement "since Go 1.22, you should try to specify a Go language version for every Go source file" is made officially, not by me. > You have a well-documented history of making incorrect claims about Go compiler and runtime behaviors, so this isn't surprising. The claim is totally baseless. All my opinions and articles are based on facts. If you have found ones…

> The statement "since Go 1.22, you should try to specify a Go language version for every Go source file" is made officially, not by me. Please provide a link to documentation on golang.org. Note: not a comment in a GitHub issue, not a blog article -- official stuff only. > baseless It should be evident by the consistent responses to your GitHub issues that nobody takes you seriously. Which is unsurprising, when you…

I think it is best to let rsc answer your questions. :D

Re: Russ Cox is stepping down as the Go tech lead

#357
post #356
post #355

Earlier quoted context omitted.

> The statement "since Go 1.22, you should try to specify a Go language version for every Go source file" is made officially, not by me. Please provide a link to documentation on golang.org. Note: not a comment in a GitHub issue, not a blog article -- official stuff only. > baseless It should be evident by the consistent responses to your GitHub issues that nobody takes you seriously. Which is unsurprising, when you…

I think it is best to let rsc answer your questions. :D

:D :D I don't have any questions :D except to you :D

Re: Russ Cox is stepping down as the Go tech lead

#358

Earlier quoted context omitted.

> non-nilness Ah, I still remember this thread: https://groups.google.com/g/golang-nuts/c/rvGTZSFU8sY/m/R7El...

Everyone just keeps repeating the same old gripe, without bothering to read the responses. Go needs a null-like thing because the language forces every type to have a zero value. To remove the concept of zero value from Go would be a major change.

The responses from Ian and the Go fans are not very well-thought.

To begin with, zero values were never a great idea. It sounds better than what C does (undefined behavior), but zero values can also hide subtle bugs. The correct approach is to force values to always be initialized on declaration or make use-before-initialization an error.

Having said that, it was probably too late to fix zero values by 2009, when Go was released to the public, and this is not what the thread's OP suggested. He referred to Eiffel, which is an old language from the 1990s (at least?) that didn't initially have null-safety (or "void-safety" in Eiffel's case), but released a mechanism to do just that in 2009, shortly after Tony Hoare's talk at QCon London 2009 (no idea if they were influenced by the talk, but they did mention the "Billion Dollar Mistake" in the release notes).

Eiffel's added nullability and non-nullability markers to types (called "detachable" and "attached"), but it's also using flow-sensitive typing[1] to prevent null-dereferencing (which is the main cause for bugs).

The thread OP didn't ask to eliminate zero values or nullable types, but rather requested to have a non-nullable pointer type, and flow-sensitive typing.

If structs need to be zero-initialized, a non-nullable pointer could be forbidden in structs, or alternatively Go could make explicit initialization mandatory for structs that have non-nullable pointers. At the very least, Go could support non-nullable pointers as local stack values, and use flow-sensitive typing to prevent null dereference.

[1] https://en.wikipedia.org/wiki/Flow-sensitive_typing

Re: Russ Cox is stepping down as the Go tech lead

#359
post #347
post #254

Earlier quoted context omitted.

Never seen CORBA and COM written in C, I guess. Enterprise Architects will do their beloved architectures with whatever languages are the tool of the day.

Ohhhh boy have I seen that. Like I say, it’s a skill issue, but those people tend to be in Java and C#, not Go and Rust.

Go has Kubernetes ecosystem for that, and Rust is yet to take off as application programming language embraced by Enterprise Architects at big corp.

Re: Russ Cox is stepping down as the Go tech lead

#360
post #156

Earlier quoted context omitted.

Can anyone familiar with Go explain why not return sayThanks(thanksStr) I've seen this "if err != nil" pattern before, but I can't help thinking that it's not necessary. "return ret, nil" ignores err's value, which is nil anyway. "return nil, err" ignores ret's value, but why? If the caller checks for err before doing anything with ret, it doesn't hurt having ret always passed up. 4 extra lines only to lose the value…

It's not needed if it's just on its own, but Go's error handling makes it necessary when chaining functions, which is why you see it so often. Imagine in Java or Python or C# or ... many languages that use exceptions to handle errors: return a(b(c(arg))); ...where a(), b(), and c() can throw some kind of exception, so you don't have to handle them then and there. In Go there aren't exceptions, all error handling is e…

Thanks a lot for taking the time to explain!
Post reply on HN