Old Unix programs running on modern computers
github.com
github.com
At the same time, I look into this plethora of web-and-AI-stuff that needs rewrite almost every year... just a massive facepalm situation.
We as a tech community really should go back to the basics when designing stuff, but it seems people just want to make on the highlights of the week for their startup to get some money to burn, and leave rubbish behind.
I was able, within a few seconds, navigate the system and find the 'moo' game in /usr/games/moo. In other words, I was functional with SECONDS. The staying-power of that kind of technology just blows my mind.
If the former, well... yeah. If the later, I'm impressed. I wasn't doing anything complex. I had it happen even with simple programs like a rust web scraper tool for web serials to epub and a rust FFT visualizer for software defined radio.
I guess Go is a systems programming language after all.
In the 1980's writing a compiler and linker would be considered systems as in operating systems, as it would targeting bare metal workloads, all of which available in Go today, via the way it is bootstrapped, gccgo, TinyGo and TamaGO.
It's all possible to do, but the practitioners don't know how.
Even though I don't really like most of Go's design decisions, I appreciate it can perfectly fine being used as C replacement, regardless of that anti-GC/RC folks say about it.
Perhaps a somewhat off-topic question but I'm early in my career and have found Go to be a rather pleasant language to work with so I'm really curious.
For example when I was working in a large microservice system, some of the java/typescript repos were a pain to work in because some of the developers had written crazy-looking oneliners. I mean it's possible to write difficult-to-read Go code as well, but I wasn't seeing it anywhere near as much.
Honestly I'm not sure it matters and depends upon other factors being balanced in the ergonomics of the language. I don't see any reason why you couldn't accomplish the objective in either style of language.
My point is that Go today, both as matter of language features and how it tends to be used via communal norms, incentivizes explicit error handling. The parent comment stated, "You are less likely to silently/accidentally drop an exception vs Go's tuple return values" and while I could easily imagine language features that discourage bubbling exceptions ... in practice, I think that tends to be more the norm than explicit handling of tuple returns.
http://lambda-the-ultimate.org/node/4554#comment-71504
You can take the point regarding supporting generic types out of the list.
Maybe printf will be eternal. But no window library is universal and eternal.
Perhaps we need eternal User interfaces and APIs to go along with them.
"Research Unix Sixth Edition (v6) kernel written in Go and using rsc.io/unix/pdp11 to run user-mode code"
For example, you can see the process struct definition starting here:https://github.com/rsc/unix/blob/main/v6unix/proc.go#L25-L67