Hacker Newsnew | past | comments | ask | show | jobs | submit | usrnm's commentslogin

For some weird reason people like to simplify that war to "Napoleon vs. Russian winter", completely overlooking Kutuzov. Kutuzov was dealt a bad hand but he played his cards very well

> Scala is comparable in popularity to Go or Rust

Do you have any numbers to back you up? That statement sounds very, very wrong to me


Not good ones, and Scala devs are keenly aware they have been going in the wrong direction compared to Go/Rust, in part because of articles like this.

RedMonk shows Scala is comparable to Go and Rust [0] You can see in this chart which plots the number of projects on Github and tags on StackOverflow (ha ha.)

The upper right most cluster has the most popular languages (C++, Java, Python, JS, PHP, TypeScript) then the next cluster has Scala with Rust, Go, Kotlin, R, Swift, etc... That cluster is clearly separate from the next less popular one which has Haskell, Lua, Ocaml, Groovy, Erlang, Fortran, etc... and then you can see the long tail is a big cluster covering the entire lower left half of the chat with a clear gap between it and the upper right half.

I don't think it is a "very, very wrong" statement.

[0] https://redmonk.com/sogrady/files/2025/06/lang.rank_.125.wm_... which comes from https://redmonk.com/sogrady/2025/06/18/language-rankings-1-2...


The trajectories of Go and Scala here tell a much different story (and one that matches my personal experience looking at job postings): https://innovationgraph.github.com/global-metrics/programmin...

That is very different from my experience with git. I know that the kernel uses branches a lot, but that's probably because of git's history with the project. At every company I worked git is used exactly the same way as CVS or SVN was used many years ago: you make some local changes, you push these local changes to the central store, you forget about it. Branches make local switching between tasks easier, but apart from that nobody cares about branches and they're definitely not treated as an important part of the repo. In fact, they're usually deleted immediately after the change is merged.

I think you have it swapped around. This is exactly the kind of workflow that git provided better support for - lightweight branches, not integral part of master history, deleted after merge.

> how common is it for go devs to experience leaking goroutines

About as often as leaking memory in C++


F. again i have minimal experience actually ever needing it in go, but guessing this is just generally the exercise of managing the lifecycle of a goroutine well in your code? proper handling so things dont get orphaned in buffer, fire and forget woopsies, etc.

early on i do feel like go kinda advertised batteries included concurrency but i kinda wished they advertised the foot-shooting-mechanisms and gaps in the abstraction a little more. overall i prefer to have enough control to choose how to manage the lifecycle. mem leaks bum me out and kill my steam, at least from my experience with c/cpp.


Browser engines are probably some of the most optimized pieces of software in existence, so it doesn't surprise me at all.

Love2D uses Luajit and directly calls established game libraries. The CPU usage should be far better for 2D games, luajit is faster than a browser's javascript jit. You can also create single exe games that are a few megabytes and not a few hundred megabytes.

Optimized abstraction layer is still an abstraction layer. The web is like two or three of those.

Explain this to electron haters.

Browser engines are optimized for displaying web pages, not for applications.

60MB+ for a calculator is not optimal.


explain that to my webgl TypeScript browser game running at 180+ FPS while rendering a large RPG tiled world with infinite procedurally JIT generated biomes, with heavy processing delegated to webworkers.

As you aren't posting code or stats I can't say much, but I'd bet a native app would still be smaller and more efficient, since you have to wrap what you're doing in an entire Chromium instance and deal with a web stack designed for documents, which is definitionally less efficient than a native alternative. Tiles aren't exactly cutting edge technology.

"Heavy processing delegated to webworkers?" That just sounds like threads but worse.


yep, native is faster for sure.

but webgl + web workers is good enough these days.

I can't share code sorry, the project got big and I have commercial plans.

But you can tell Gemini 3.1, Opus 4.6 or GPT 5.4 High to generate a demo and they do a decent job most of the times.

that's how I got started, seeing how it was possible to have good game performance with multi threaded workloads on a browser.


Nobody ever said in the thread that web is the most efficient platform, stop with your “designed for documents” trauma already.

The first post in this subthread was literally a statement that "A web-based solution is usually better performing, despite all the bloatware necessary." And you literally joined in to support that assertion against "the Electron haters."

And it isn't trauma, it's literal fact. Electron isn't used because it's technically superior to native applications, it's used because web devs are a dime a dozen. It's popular for business reasons, not technical reasons. It works "well enough," but only because computers are really fast but there's only so much slack an OS can take up when even parts of it are Electron apps, and probably vibe-coded to boot.


Meanwhile that same computer could probably run Counter Strike at 400 FPS.

step 1 htop

there isnt step 2, explain is over


Ever heard of hamam?

Hammam is not as hot as sauna and not as dry. Sauna's air temperatures can reach above 100 degress Celsius and humidity is usually relatively low (around 20%).

[1] https://en.wikipedia.org/wiki/Sauna

Hammam's temperatures are around 40-50 degrees Celsius and humidity is close to 100%.

These are very different conditions, with very different body response.


> Hammam's temperatures are around 40-50 degrees Celsius and humidity is close to 100%.

Which makes it absolutely unbearable. By the way, that combination of temperature + humidity will cause severe hyperthermia (which can be deadly) faster than people think.


There is also a World Championship with up to 130°

https://en.wikipedia.org/wiki/World_Sauna_Championships

:-D


Was - there was a world championship

The last time it was held, a Russian died and a Finn ended up in hospital with severe burns.

The problem is that staying as long as possible in a sauna can be fatal.


So, you’re telling me the Finn won?

They were both disqualified as they did not leave the sauna unaided.

A different Finn won.


> The problem is that staying as long as possible in a sauna can be fatal.

One used to read regularly (like a few times a year) about someone who came home drunk and went to (electric) sauna and passed out... and died.

Saunas in new construction now all have timers.


I have not, what is it?

A steam sauna originating in Turkey, popular in many Arabic countries.

It may originate from Roman's thermae: https://en.wikipedia.org/wiki/Thermae

They are not supposed to produce code that doesn't compile, why would they?

Debugger positions on the other hand are a pain with these things.

Uh yes, that's what I meant ;)

In C/C++ you have the #line preprocessor directive. It would be nice if Go had something similar.


Go has apparently got //line directives, and this project uses them.

What are you talking about, there is actually too much unicode awareness in C++. Unicode is not the same thing as utf-8. And, frankly, no language does it right, I'm not even sure "right" exists with Unicode


Too much unicode in standard C++? Where?


c++20's u8strings took a giant steaming dump on a number of existing projects, to the point that compiler flags had to be introduced to disable the feature just so c++20 would work with existing codebases. Granted that's utf-8 (not the same thing as unicode, as mentioned) but it's there.


And yet, unicode support is still abysmal throughout the standard library. I don't disagree though.


Things like char32_t, std::u32string for storing UTF-32 characters.


And yet, none of them work with std::regex etc.


I once spent several days debugging that same mistake. Stuff worked perfectly in tests but broke misteriously in production builds. Couldn't stop laughing for a few minutes when I finally figured it out.


Atomic operations, especially RMW operations are very expensive, though. Not as expensive as a syscall, of course, but still a lot more expensive than non-atomic ones. Exactly because they break things like caches


Not only that, they write back to main memory. There's limited bandwidth between the CPU and main memory and with multithreading you are looking at pretty significantly increasing the amount of data transferred between the CPU and memory.

This is such a problem that the JVM gives threads their own allocation pools to write to before flushing back to the main heap. All to reduce the number of atomic writes to the pointer tracking memory in the heap.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: