News for hackers. Stuff that matters.
Re:Lies we tell ourselves to keep using Golang by kitd on Friday April 29, 2022 @10:19AM (#31205474)
The author obviously doesn't like Go. Ok, he can have his own opinions.

I've been coding professionally since 1987, using everything from mainframe assembler, Fortran, C, VB, Java, C++, to most recently Go. IMHO, the language itself plays a smaller role in its usefulness than most think. As important is the tooling, stdlib, ecosystem, community and "StackOverflow"-ability.

Go has a few warts, like every language, but not that many, and they are more than made up for by how easy it is to assemble and run a project using it. It's that that makes it the most productive language I've used so far.

Re:Lies we tell ourselves to keep using Golang by 14113 on Friday April 29, 2022 @10:45AM (#31205845)
From the article: "[...] as developers get more and more senior, they tend to ignore more and more problems, because they've gotten so used to it. That's the way it's always been done, and they've learned to live with them, so they've stopped questioning it any more."
Re:Lies we tell ourselves to keep using Golang by AnimalMuppet on Friday April 29, 2022 @12:53PM (#31207606)
As developers get more and more senior, they have a different perspective on what constitutes a "serious" problem. Also, as developers get more experience with a language, they get better at doing things in ways that are idiomatic for that language - they work with the language instead of against it.

Take Haskell. If I were a Haskell novice, and tried to do everything procedurally with do notation, and then complained that Haskell had all these problems, would that make Haskell a bad language? No. Would it mean that all Haskell programmers were telling themselves lies in order to keep using it? No. It would mean that I was using it badly.

If I were a brand new programmer, and took up Java, I might well complain about "public static void main(String[] args)". But an experienced programmer would brush that off, telling me that that's just syntax - there are real problems with Java, but that isn't one.

So this particular statement, that senior and more experienced devs ignore more and more problems, isn't proof of anything. It's particularly not proof that developers have to keep lying to themselves in order to keep using Go. (They may, but this isn't proof.)

Re:Lies we tell ourselves to keep using Golang by tracerbulletx on Friday April 29, 2022 @01:12PM (#31207911)
As developers get more and more senior they tend to ignore more and more problems because they realize the majority of them actually don't matter very much to doing useful work.
Re:Lies we tell ourselves to keep using Golang by mumblemumble on Friday April 29, 2022 @05:20PM (#31210692)
Or, perhaps more frequently, they can quickly see that any possible fix for it would be penny wise and pound foolish.
Re:Lies we tell ourselves to keep using Golang by hnlmorg on Friday April 29, 2022 @12:57PM (#31207672)
He made some good points in the article but this particular paragraph stuck out as being hypocritical. The entire motivation of him writing this was because he felt people dismissed his previous article out of hand. And then he makes a remark that preemptively dismisses any rebuttal out of hand (and as others have pointed out, can equally apply to any language so hardly a point worth complaining against Go specifically).
Re:Lies we tell ourselves to keep using Golang by randomdata on Friday April 29, 2022 @01:46PM (#31208467)
> as developers get more and more senior, they tend to ignore more and more problems, because they've gotten so used to it.

I've been coding professionally since the 90s. The last project I worked on was in Go. It was pleasant and surprisingly productive. A few warts, like the parent said, but all told it was a great experience. I'm now working on a Typescript project. It is painful. Typescript itself is quite nice, but the deep problems with the rest of the ecosystem have not gone unnoticed.

Re:Lies we tell ourselves to keep using Golang by yegle on Friday April 29, 2022 @11:21AM (#31206290)
Hmm won't this apply to any language and therefore not a valid argument? A: language FOO is a great language! B: You are telling lies because you are fluent in this language and ignore the problems in the language.
Re:Lies we tell ourselves to keep using Golang by formerly_proven on Friday April 29, 2022 @02:22PM (#31208886)
IME there are sort of two kinds of people here. People who are "fans" and defend "their" toy and people who don't. For example, I've been using Python for a very long time. I'm a "Senior Python Developer" so to speak. I quite like it for various purposes, but I can also talk your ear off about problems with Python.

I'd say if you run into someone who says they're experienced with X or love X etc., but they can't give criticism of it, they're most likely either not that experienced with X, or fanboys.

Re:Lies we tell ourselves to keep using Golang by sophacles on Friday April 29, 2022 @12:55PM (#31207645)
Yes. This is true of any environment. That's why I ask new hires to write down every WTF moment, every question and every idea for improvement they have as they get up to speed on our systems. Just because I'm used to avoiding a problem doesn't mean the problem must exist.
Re:Lies we tell ourselves to keep using Golang by xtracto on Friday April 29, 2022 @12:02PM (#31206911)
It seems to me there are two ways to evaluate the "beauty" of a language: there's the people who love the language theoretically (well constructed, coherent, nice typing, etc) and then there's people who love the usefulness/utility of the language.

For example, I hate python as a language (spaces syntax? Self,self,self, lack of static type, etc) but I've been using it lately and it's nice using it due to libraries, community,etc.

Re:Lies we tell ourselves to keep using Golang by jayd16 on Friday April 29, 2022 @11:56AM (#31206820)
Just speaking abstractly, whether problems are ignored has no bearing on the existence, size or count of the problems.
Re:Lies we tell ourselves to keep using Golang by adhoc_slime on Friday April 29, 2022 @10:37AM (#31205726)
This has perhaps been my biggest pain-point with Golang..

Woe unto those who do not follow the idiosyncrasies of how golang handles versioning, package management, tooling etc.

if this is really your most important part of a language I would whole-heartedly recommend looking at rust which has been a breathe of fresh air in terms of package management and tooling.

Re:Lies we tell ourselves to keep using Golang by busterarm on Friday April 29, 2022 @11:37AM (#31206512)
As an operations person who cares about deploying repeatable systems at scale, Rust's package management (and the toolchain's "packaging" itself) is an absolute nightmare. But at least I with MUSL can I have a 100% statically linked binary, which really should have been easier but that's another argument.

Seriously though, Rust team needs to have its Come To Jesus moment about not piping shit off the internet to sh.

Re:Lies we tell ourselves to keep using Golang by conradludgate on Friday April 29, 2022 @12:22PM (#31207208)
I'm interested if you could elaborate on that?

My company deploys many Rust (web) applications to production and I've not experienced these issues with cargo

Re:Lies we tell ourselves to keep using Golang by busterarm on Friday April 29, 2022 @12:37PM (#31207387)
It's either a problem that you have or you don't, but also one that you have to have a specific mindset to even recognize.

To start off with, please read this: https://lwn.net/Articles/889924/

As you start having to worry about deploying to 10^5 scale machines you want your mindset to be more like the longtime kernel development folks. You want minimal dependencies. You want to build with minimal pulls to the internet. You want repeatable static binaries built from a source tree you can reasonably audit.

At that scale of deployment your "business risk" goes up significantly.

Rust's approach to tooling/packages looks very similar to the Node.js ecosystem. It's a total free for all and dependencies are managed really poorly (in the sense that they grow in number completely out of control).

Re:Lies we tell ourselves to keep using Golang by zozbot234 on Friday April 29, 2022 @01:14PM (#31207947)
You can use cargo vendor to import specific versions of your dependencies into your project for easy auditing, or cargo fetch to simply be more explicit about when to download from remote repositories (when combined with the --offline flag). The typical Rust "dependency" is small; it's more like a single .c or .cxx file than a conventional "library", except that it also plays nice with generic code unlike these languages.
Re:Lies we tell ourselves to keep using Golang by conradludgate on Friday April 29, 2022 @01:18PM (#31208009)
I agree that Rust does suffer a similar problem to NPM where there are many small packages that people will use together.

I do wonder what the solution is though because Go has the same problem as far as I can tell. It has a bigger stdlib so there's less need to reach out. But when you do, you're in the same state with lots of tiny packages that do 1 thing well.

I don't have much experience outside of Go/Rust/Node so I can point to maybe a few languages which I can see being the opposite:

C++ has a large stdlib, and boost. With C++ managing dependencies is your problem so I guess it's easier to have few megapackages.

Python feels the same for mathematical computing. Numpy, TF, Pandas are all huge. Conda is an event bigger bundle, again I think because using the standard pip tools is rather cumbersome and usually not what people want to do

So as far as I can see, it's either easy to share code for others to use, in which case you get dependency hell, or you make it hard to share dependencies, but you have larger more refined ones as a result.

Hard to say what's better

Re:Lies we tell ourselves to keep using Golang by myrrlyn on Friday April 29, 2022 @12:58PM (#31207673)
rustup is available in your package manager's repository
Re:Lies we tell ourselves to keep using Golang by busterarm on Friday April 29, 2022 @01:02PM (#31207755)
No, it isn't. There is a package but it just symlinks to rustc & cargo. You still need to have run the installation manually.

And if you're still running something like CentOS 7, everyone just tells you to go download a Snap for it. eff that.

Re:Lies we tell ourselves to keep using Golang by Thaxll on Friday April 29, 2022 @02:12PM (#31208764)
Go tooling is awesome compared to other language ( Rust included ). Everything is built it and you don't need something external, everything works out of the box dependencies included, it has been the case for 4 years with go mod.

The fact that you can cross compile a win10 .exe on a raspberry pi with a single command as easy as "GOARCH=amd64 GOOS=win go build ." it's very powerful and I don't know a single language that does it out of the box like go does.

Go tooling is one of the strongest point of Go you have all of that built-in:

- compilation

- testing

- benchamark

- dep managment

Re:Lies we tell ourselves to keep using Golang by formerly_proven on Friday April 29, 2022 @02:26PM (#31208940)
> it's very powerful and I don't know a single language that does it out of the box like go does.

zig build -Dtarget=x86_64-windows

Re:Lies we tell ourselves to keep using Golang by Thaxll on Friday April 29, 2022 @02:30PM (#31208978)
I'm talking about mainstream language not stuff in dev. And go has been doing that for 10years+
Re:Lies we tell ourselves to keep using Golang by kristoff_it on Saturday April 30, 2022 @06:17AM (#31214802)
well, not exactly. Zig is also crosscompiling C/C++ code, not just Zig. CGo doesn't do cross-compilation.
Re:Lies we tell ourselves to keep using Golang by jeroenhd on Friday April 29, 2022 @11:57AM (#31206837)
I love Rust as a language but its packaging mechanism is as flawed as all the others. I don't really see what breath of fresh air it brings.

I suppose you can define feature flags in your Cargo.toml but that's about it.

Re:Lies we tell ourselves to keep using Golang by yen223 on Friday April 29, 2022 @11:06AM (#31206105)
Golang has the most hilarious approach to date formatting
Re:Lies we tell ourselves to keep using Golang by lenkite on Friday April 29, 2022 @01:56PM (#31208589)
Lol, I thought it was some sort of Joke when I first learnt it. And kept hunting for the 'proper' way. When I realised this was serious, I banged my head against the wall.
Re:Lies we tell ourselves to keep using Golang by Karrot_Kream on Friday April 29, 2022 @09:10PM (#31212433)
+100. I found a lot of the points in the post pretty silly/arbitrary, but if he had talked about date formatting I would be all aboard.
Re:Lies we tell ourselves to keep using Golang by thegeekpirate on Monday May 02, 2022 @11:10AM (#31236123)
You might enjoy https://golangti.me which I wrote to help with my inability to remember it!
Re:Lies we tell ourselves to keep using Golang by paskozdilar on Friday April 29, 2022 @10:29AM (#31205610)
For me, the goroutines + channels + select is what makes Go leagues above any other popular language.

As far as I know, no other popular language allows you to read from multiple queues at the same time, which is an extremely useful pattern in concurrent programming. The only way to "select" from multiple sources in other languages is to use some kind of poll/select syscall on file descriptors - and even that is very limited, since kernel (at least Linux) does not allow userspace programs to create private file descriptors for intra-process communication - they must always be bound to some file/pipe/socket.

Re:Lies we tell ourselves to keep using Golang by fasterthanlime on Friday April 29, 2022 @10:42AM (#31205794)
> As far as I know, no other popular language allows you to read from multiple queues at the same time

Off the top of my head, that's certainly possible in Rust, C++ and Java - probably many others I just don't know about.

That particular bit of concurrency goodness comes from the 70s, so you can be sure other languages picked it up.

Re:Lies we tell ourselves to keep using Golang by npe on Friday April 29, 2022 @11:16AM (#31206229)
As I understand it, he's talking about select/alt (i.e. guarded commands from CSP) being a native feature of the language rather than callback-based approaches. It's possible to implement CSP channels in most languages, but they're not first-class like go.
Re:Lies we tell ourselves to keep using Golang by samhw on Friday April 29, 2022 @11:31AM (#31206445)
> It's possible to implement CSP channels in most languages, but they're not first-class like go.

But does that matter? In all my experience, I can't think of any instances where that wouldn't be a distinction without a difference. (Perhaps I'm missing something, though.)

Re:Lies we tell ourselves to keep using Golang by npe on Friday April 29, 2022 @11:52AM (#31206749)
It matters a lot IMO. Most systems programming languages can implement whatever concurrency primitives you care to use, but most people default to whatever is provided by the OS/language because concurrency is hard. Having first-class syntactic sugar over a concurrent runtime bakes in a certain programming style in the language, which strongly determines how the language is used and the programming style. Go comes out of the Newsqueak/Aleph/Limbo family which has a very different style of programming compared to a lot of other languages.
Re:Lies we tell ourselves to keep using Golang by samhw on Friday April 29, 2022 @01:48PM (#31208483)
I think there's a difference between 'in the standard library' and 'in the language', though. They seem to be praising Go for doing the latter. And the technical language in which it was expressed gave me to think there was some technical motivation for that, as opposed to sociological - but if what they meant is what you said, then I certainly wouldn't disagree with that.
Re:Lies we tell ourselves to keep using Golang by npe on Friday April 29, 2022 @04:06PM (#31210036)
I'd argue that Go is explicitly sociological. Most of the novel ideas in Go (process calculi/guarded commands in a concurrent language) were originally embedded in Cardelli and Pike's Squeak back in the 80s. The rest is trying to standardize the way scalable web applications are built.
Re:Lies we tell ourselves to keep using Golang by fasterthanlime on Friday April 29, 2022 @11:37AM (#31206517)
Defaults matter because friction matters, but friction there is largely removed by having a decent package manager, so I personally don't think it matters (though the topic of "what batteries should be included" has far from run its course).
Re:Lies we tell ourselves to keep using Golang by npe on Friday April 29, 2022 @11:56AM (#31206814)
The minute you put language constructs in the base syntax and runtime of the language, it's a lot more than friction. Love it or hate it, Go is inextricably tied to CSP.
Re:Lies we tell ourselves to keep using Golang by Mawr on Friday April 29, 2022 @06:47PM (#31211487)
It's the opposite - pointing out that X can just as well be implemented in language Y is the irrelevant point because anything can be implemented in any turing complete language.

Where languages differ is what they make easy to use, or first class.

As an example consider Go's autoformatter gofmt. It got released with the language, pushed and marketed as the way to format your code - first class. As a result, virtually all Go code is uniformly formatted. Contrast that with autoformatters in other languages pre-Go. They existed, but often multiple per language, each with hundreds of configuration options, all with minimal uptake in their ecosystems.

Re:Lies we tell ourselves to keep using Golang by paskozdilar on Friday April 29, 2022 @11:21AM (#31206289)
If you could spare some time, would you please demonstrate an example? Any language of those mentioned would be OK.
Re:Lies we tell ourselves to keep using Golang by fasterthanlime on Friday April 29, 2022 @11:45AM (#31206629)
Here's a Rust example, with tokio: https://play.rust-lang.org/?version=stable&mode=debug&editio... - I don't have time to come up with Java/C++ examples, but I'm sure others will.

(If your point was about it being _built into the language_, then it definitely stands, see the other discussion in the parent comment thread)

Re:Lies we tell ourselves to keep using Golang by paskozdilar on Friday April 29, 2022 @02:35PM (#31209026)
Yeah, I guess I overestimated the complexity of such mechanisms. I mean, still, you need some kind of runtime for the asynchronicity, but the Rust version seems fairly OK (apart from the function coloring, but that's another story).

I guess I just like it being built into the language. Plus no function coloring (everything is asynchronous, but appears synchronous) really makes it easy to build complex systems.

Re:Lies we tell ourselves to keep using Golang by autarch on Friday April 29, 2022 @12:05PM (#31206956)
Re:Lies we tell ourselves to keep using Golang by thestoicattack on Friday April 29, 2022 @11:19AM (#31206267)
Ada too, I think.
Re:Lies we tell ourselves to keep using Golang by pyjarrett on Friday April 29, 2022 @11:52AM (#31206745)
Ada has had this built-in for decades, and even allows selecting from one of multiple waiting queues (entries) using a `select` keyword.
Re:Lies we tell ourselves to keep using Golang by lalaithion on Friday April 29, 2022 @11:22AM (#31206310)
If that's all you want, Haskell has had goroutines (forkIO, yes it's called "fork" but it doesn't spawn an OS level process, that's forkOS), channels, and select since 1996. https://www.microsoft.com/en-us/research/wp-content/uploads/...
Re:Lies we tell ourselves to keep using Golang by otterley on Friday April 29, 2022 @11:34AM (#31206486)
People also want a programming language they can easily read and that has enough market share to work well in team environments.
Re:Lies we tell ourselves to keep using Golang by aidaman on Friday April 29, 2022 @09:34PM (#31212574)
nobody should ever write haskell
Re:Lies we tell ourselves to keep using Golang by jcelerier on Friday April 29, 2022 @11:21AM (#31206297)
here's some documentation on how to do it in C++ with boost in 2008, before go even existed: in this example two threads pull events from a single queue.

https://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio/tu...

(of course it was possible before)

Re:Lies we tell ourselves to keep using Golang by paskozdilar on Friday April 29, 2022 @11:27AM (#31206372)
I'm not really experienced with Boost so I'm having a hard time understanding what that snippet does. Is there any example that is completely self-contained (or at least limited to STL)?
Re:Lies we tell ourselves to keep using Golang by jcelerier on Friday April 29, 2022 @12:17PM (#31207138)
Boost's io_service (since then renamed as io_context) is an implementation of a thread-safe event queue. Threads can put events in the queue (timer events, asynchronous read and write requests for networking, but one can also just push a generic lambda).

This example sets up two timers which will regularly push events in the queue, while two threads processes these events. It's from before c++ had lambdas - nowadays it can be written much more tersely.

I'll try to write a short example after when I'm not on my phone - it should be reduceable to 5-6 lines of setup at most

Re:Lies we tell ourselves to keep using Golang by jcelerier on Saturday April 30, 2022 @09:39AM (#31215999)
=> very dumb example of processing messages from ten threads

    #include <boost/asio.hpp>
    
    #include <atomic>
    #include <iostream>
    #include <thread>
    
    int main() {
      boost::asio::io_context io;
    
      using work_guard_type = boost::asio::executor_work_guard<boost::asio::io_context::executor_type>;
      work_guard_type work_guard(io.get_executor());
    
      std::vector<std::jthread> t;
      for(int i = 0; i < 10; i++)
        t.emplace_back(std::jthread([&io] { io.run(); }));
      
      std::atomic_int counter{};
      while(counter < 100)
        io.post([&] { 
            std::cerr << std::this_thread::get_id() << '\n'; 
            counter++; 
        });
      
      io.stop();
      return 0;
    }
Re:Lies we tell ourselves to keep using Golang by moralestapia on Friday April 29, 2022 @11:06AM (#31206106)
>read from multiple queues at the same time

That's a trivial thing in javascript.

Re:Lies we tell ourselves to keep using Golang by paskozdilar on Friday April 29, 2022 @11:21AM (#31206296)
If you could spare some time, would you please demonstrate an example?
Re:Lies we tell ourselves to keep using Golang by vbezhenar on Friday April 29, 2022 @12:07PM (#31206999)
You can use Promise.race to wait for the first resolved promise.
Re:Lies we tell ourselves to keep using Golang by moralestapia on Friday April 29, 2022 @11:31AM (#31206450)
Abusing notation a bit,

var a = new Queue();

var b = new Queue();

a.read(() => some callback);

b.read(() => some callback);

And code continues here without blocking.

To be honest, I think you could do the same in any (slightly) modern language.

Re:Lies we tell ourselves to keep using Golang by paskozdilar on Friday April 29, 2022 @02:45PM (#31209135)
Is the read() call running a task in the background? In that case, that's equivalent to launching two threads. For n queues, you'd need n tasks, and they'd hang in the background in case they never get a result and take up memory.
Re:Lies we tell ourselves to keep using Golang by metadat on Friday April 29, 2022 @11:14AM (#31206199)
How? Javascript is single threaded run loop.
Re:Lies we tell ourselves to keep using Golang by lalaithion on Friday April 29, 2022 @11:27AM (#31206373)
Re:Lies we tell ourselves to keep using Golang by metadat on Friday April 29, 2022 @11:47AM (#31206650)
>read from multiple queues at the same time

Agreed, and things happening "at the same time" are possible only with parallelism. Hence my question =)

Re:Lies we tell ourselves to keep using Golang by moralestapia on Friday April 29, 2022 @12:10PM (#31207034)
I interpreted "at the same time" as "without blocking",

But sure you could also add parallelism using a few built-in Node modules (there's cluster and worker threads, also don't know if atomics are already in Node, they are in V8),

It's not trivial anymore but also not that hard. A newcomer could figure it out in ~30 mins from the docs.

Re:Lies we tell ourselves to keep using Golang by metadat on Friday April 29, 2022 @12:25PM (#31207249)
Gotcha, sounds like we interpreted it differently. I appreciate you taking the time to clarify, I am an old hand as JS but didn't know true parallelism had become feasible these days. Thank you, sincerely!
Re:Lies we tell ourselves to keep using Golang by moralestapia on Friday April 29, 2022 @12:33PM (#31207350)
Don't worry, JS has come a long way.

During my PhD we had to crunch some numbers and my group usually makes use of C++ with libs for that. I tried doing it in Node using cluster and let it spread through our whole cluster of nodes (funny how it plays on words) and performance was worse obv. but not that bad, it was about 2x slower, but with that I was able to write code and test it in hours instead of days, and it didn't matter to me if a program that was going to take 2 hours was now taking 4 as I was going home anyway and check it out next morning ¯\_(ツ)_/¯. Plus, my experiment had a REST API for free (well, like 8 lines of code) and when I showed that to them they were :O.

Re:Lies we tell ourselves to keep using Golang by jayd16 on Friday April 29, 2022 @11:59AM (#31206859)
Lots of languages have similar async, channel and pattern matching syntax these days. Kotlin, C#, off the top of my head. Probably a lot more.
Re:Lies we tell ourselves to keep using Golang by alyandon on Friday April 29, 2022 @10:38AM (#31205731)
Yeah, it's pretty obvious to me the author doesn't like Go and some of the arguments raised really aren't concerns in (my very limited part of) the real world.

I've written a fair amount of Go and I am not bothered at all by the general ergonomics of the language. Some of the issues the author points out (like accidentally copying structs with embedded synchronization primitives) are caught by linters which you should be using regardless of what language you are coding in.

Edit: I dabble with Rust from time to time as well.

Re:Lies we tell ourselves to keep using Golang by innagadadavida on Friday April 29, 2022 @10:33AM (#31205683)
A couple of things to add to this: the language spec is like a page long and very readable. Also the entire compiler toolchain and everything is written in Go and doesn’t depend llvm etc. This doesn’t help the developer but is a pretty unique aspect of Go.
Re:Lies we tell ourselves to keep using Golang by atombender on Friday April 29, 2022 @12:16PM (#31207117)
The language spec (https://go.dev/ref/spec) is about 96 pages when printed on A4 paper. Certainly not a page long.
Re:Lies we tell ourselves to keep using Golang by josephcsible on Friday April 29, 2022 @10:44AM (#31205830)
If a language spec is only a page long, it's leaving a bunch of important things unspecified.
Re:Lies we tell ourselves to keep using Golang by metadat on Friday April 29, 2022 @11:16AM (#31206222)
Can you clarify further? Otherwise this seems like a shallow dismissal, which is against our HN community guidelines, and makes for uninteresting discussion.
Re:Lies we tell ourselves to keep using Golang by alice-i-cecile on Friday April 29, 2022 @11:24AM (#31206339)
Programming languages have a large amount of irreducible complexity. A page long spec for a language more complex than Brainfuck cannot represent the critical distinctions correctly.

Without that clarity, you end up with incompatible, spec-compliant implementations. This is a disaster, and so below a certain point relative to language complexity a shorter spec is simply wrong.

Re:Lies we tell ourselves to keep using Golang by randomdata on Friday April 29, 2022 @11:42AM (#31206584)
> Without that clarity, you end up with incompatible, spec-compliant implementations.

The Go team officially maintains two implementations, gc and gccgo, to ensure that implementation doesn't end up ruling over the specification as has happened in other languages. There are also other third party implementations, including tinygo.

Which spec-induced incompatibilities across these implementations are you referring to?

Re:Lies we tell ourselves to keep using Golang by oxnrtr on Sunday May 01, 2022 @10:20AM (#31225211)
Go doesn't have a one-page spec, so what do you expect the GP to point to? You are proving his point.
Re:Lies we tell ourselves to keep using Golang by randomdata on Sunday May 01, 2022 @03:09PM (#31227747)
Looks like one page to me: https://go.dev/ref/spec
Re:Lies we tell ourselves to keep using Golang by oxnrtr on Sunday May 01, 2022 @08:56PM (#31230273)
Yeah, no.
Re:Lies we tell ourselves to keep using Golang by randomdata on Monday May 02, 2022 @09:51AM (#31235107)
Feel free to show us the second page.
Re:Lies we tell ourselves to keep using Golang by josephcsible on Tuesday May 03, 2022 @01:44AM (#31245057)
It starts about 2/3 of the way through the table of contents.
Re:Lies we tell ourselves to keep using Golang by randomdata on Tuesday May 03, 2022 @12:12PM (#31250044)
A link is fine.
Re:Lies we tell ourselves to keep using Golang by josephcsible on Tuesday May 03, 2022 @08:51PM (#31255535)
Re:Lies we tell ourselves to keep using Golang by randomdata on Wednesday May 04, 2022 @08:22AM (#31259462)
That points to the same page.
Re:Lies we tell ourselves to keep using Golang by josephcsible on Wednesday May 04, 2022 @06:23PM (#31266643)
It's now become abundantly clear to everyone that you're using a different definition of "page" than everyone else in this conversation.
Re:Lies we tell ourselves to keep using Golang by randomdata on Wednesday May 04, 2022 @08:28PM (#31267791)
The only other person in this conversation is you, so not exactly the most representative of samples, but it is an interesting perspective. I've not heard anyone else consider the same HTML resource to be more than one page before. In fact, the term "single page application" hinges on a single HTML resource in the same way. The application may have more than one screen of content, but it is still considered one page.
Re:Lies we tell ourselves to keep using Golang by josephcsible on Thursday May 05, 2022 @02:34AM (#31270271)
oxnrtr is in this conversation too. And when describing the length of a document, "pages" universally means the number of printed pages it would occupy, not the number of computer files it's stored in.
Re:Lies we tell ourselves to keep using Golang by randomdata on Thursday May 05, 2022 @08:02AM (#31272246)
There is no sign of anyone else participating in this conversation. Else we'd have heard their input by now. A page referring to a single HTML resource is standard nomenclature. Paper is antiquated technology, not how the Go specification is distributed, and carries no relevance to this discussion.
Re:Lies we tell ourselves to keep using Golang by oxnrtr on Sunday May 08, 2022 @11:23AM (#31304877)
I hope you receive the help you need and deserve.
Re:Lies we tell ourselves to keep using Golang by metadat on Friday April 29, 2022 @11:30AM (#31206423)
Are there nasty divergences between official go and cgo?
Re:Lies we tell ourselves to keep using Golang by josephcsible on Friday April 29, 2022 @11:59AM (#31206854)
As it turns out, Go's spec is 105 pages long, not just one as was claimed upthread: https://go.dev/ref/spec

So the answer to your question is "not that I know of", but that's not evidence that a one-page spec is workable after all.

Re:Lies we tell ourselves to keep using Golang by hajile on Friday April 29, 2022 @01:30PM (#31208221)
Can you describe a coherent and consistent multithreaded model completely in 100 pages?
Re:Lies we tell ourselves to keep using Golang by metadat on Friday April 29, 2022 @12:05PM (#31206953)
Thank you for showing us the light, jospehcsible!
Re:Lies we tell ourselves to keep using Golang by randomdata on Friday April 29, 2022 @10:39AM (#31205756)
> Also the entire compiler toolchain and everything is written in Go and doesn’t depend llvm etc.

Depends on which implementation you're talking about. One of the stated goals of the Go project is that there must not be just one implementation. gc does not, but tinygo depends on llvm. gccgo depends on gcc.