4 ms·
I feel that it's hard to be mad at Go if you look at it as "python 4.0."
by alrs 1y ago
I feel that it's hard to be mad at Go if you look at it as "python 4.0."
- stared 1y agoNot sure if "Python 4.0" is the best comparison. Go is compiled, Python - interpreted. Go focuses on concurrency, Python on making it easy to do things with code. Many things that are a one-liner in Python (but itself or with a library), in Go take quite a lot of lines or boilerplate. For example, there is no built-in string templates in Go.
- 9rx 1y ago> Not sure if "Python 4.0" is the best comparison. Or is it Python that is not best compared to "Python 4.0"? Python doesn't live up to the guiding principles of Python, such as preferring only one obvious way to do something. Go is, in many ways, more Python than Python. > Many things that are a one-liner in Python Case in point. Many of those one-liners are just as obviously expressed as multi-liners (e.g. list comprehension vs. traditional 'for' loop). > no built-in string templates in Go. Another good example. There is no special syntax, but the standard library provides. Special syntax would give two obvious ways to do it.
- pjmlp 1y agoHardly, given that it isn't as expressive as Python, that role belongs to Mojo. The only reason so many folks leave Python for Go, is the usual problem of writing C libraries instead of finally having a proper JIT in CPython, and having PyPy being largely ignored by the community.
- whizzter 1y agoGo's structural typing allows for quite a lot of flexibility often otherwise only found in scripting languages (I would suspect that this was the single biggest reason as to why the TypeScript folks started to move to Go for the ported compiler rather than something like dotnet based like C#).
- pjmlp 1y agoGo's strucutural typing already existed in languages of the ML linage, nothing new. F# can do that just fine, if the team actually cared about using .NET.
- snickerdoodle12 1y ago.net is also a pain to distribute since it typically isn't packaged as a single static binary and requires a separately installed runtime
- pjmlp 1y agoMono AOT has existed for quite a while, .NET Native also existed, and it isn't .NET fault if people cannot know about Native AOT. I don't buy any of reasoning why Typescript team adopted Go, first of all the authors are more than knowledgeable about .NET AOT capabilities. Second as Anders Hejlsberg went through his BUILD 2025 talk, turns out they had to redesign the data structures around Go's weaker type system anyway, as they couldn't easily map what they were doing with TypeScript types. Third, Azure teams are using AI to convert C++ projects into Rust, as described by Mark Russinovich at RustConf UK 2025, which shows it is up to the challenge at hand.
- snickerdoodle12 1y agoAll I know is that, as a user, whenever I encounter a .net project I have to put in more effort to run it versus a golang project. This matters for these tools because they're usually distributed via npm packages and then invoked by a javascript wrapper. So you want something with a small binary that runs on pretty much every windows/mac/linux system no matter the configuration.
- pjmlp 1y agoI bet those Go projects did not used CGO, and if they did would you blame the users or Go?
- justin66 1y ago> Hardly, given that it isn't as expressive as Python, that role belongs to Mojo. Such a strange thing to write. Mojo doesn't even have classes yet.
- pjmlp 1y agoMojo also supports Python of its tooling. It is like praising Go, while ignoring CGO and and the Assembler that come with the toolchain.