Hi, @mjd totally agree.
Given your desires, you might like #Wirth's #Oberon, both as a language and operating system (I do not know if it needs a MMU, though, but to be honest a MMU looks like a quite reasonable hw requirement to me, even just for security reasons).
As for your "free" language of choice, I used to agree more in the past. #Lua is likely a good choice because it's possible to study its implementation in a week, but can we say the same about #C and #Python?
I used to like both a lot but
- Python is complex and its standard library is huge
- C is quite simple (I have no issue with pointers, more with it's syntax, too arcane for beginners) but its standard includes a crazy standard library
In general we should consider any program that requires more than a month to be completely understood in a month broken by design as locked to a few vendors OR an élite.
Thus how broken are #GCC, #Clang, #CPython, #NodeJS and so on?
I'm concerned about a few things with modern development, and this is why my languages of choice right now are lua, python, and C; with Forth and Lisp in the "would like to use more ideas from" area:
Vendor lock-in, and Vendor "OURS. NOT YOURS. YOU MAY NOT USE ANY LONGER. ALSO: NO LONGER SUPPORTED" things. Java, Go, and Rust are all encumbered by being non-free (no, really, they aren't. They're OWNED by a vendor. You can use the language, but it's not OPEN. It's "free and open" the Ajit Pai way: "lie about it.")
Then Javascript is being absorbed by Microsoft; so it's out of the question also... better said here: https://clarity.kleydints.com/a-post-mortem-in-5-acts-of-how-microsoft-privatized-open-source-killing-javascript-in-the-process-62ee5fc77d9e?%20gi=2c12df284732&gi=413aed166008 )
Ability to be used in smaller environments: Yes, I know, 32GB is the minimum acceptable thing today. That's insane and "what if someone can't afford that?" The poor exist. They should have the same abilities people with some money do. And we ALL should have the same amount of access/abilities as those who make a billion dollars by sitting on their ass and doing nothing while the financial systems give them bonuses for being at the top of the mountain.
But I like my older machines, and there's nothing inherently WRONG with them. The whole "buy a new thing because the old things are useless!" attitude feeds into the whole "crush right to repair" thing, at least I see similarities. Sure, new is neat, but when new becomes old, tossing it makes... environmental waste...
And things like Javascript cross-platform "applications" (which are just Chrome instances in a "sandbox" - but is it a good sandbox? I somehow doubt it, given the vendors... ) and on top of that, the memory footprint... and yes, I've done things like this as well in python, where I'm using the memory that I have to solve an issue, rather than using something less memory intensive... but then I'm doing that to solve an immediate problem, and not releasing that code for others. I.e. I'm "coding for the device I have" not "coding for a wide variety of different devices."
I'm seeing far too many things being developed in the vendor locked languages, and there aren't alternatives.
I'm concerned that at some point we'll lose those tools, or we'll be in a situation where we'll have to deal with NOT having those tools until they're rewritten in another language.
I'd very much like a truely "owned by the people" language that doesn't have the problems of C pointers, which would be able to be used on processors that aren't from this age. i.e. if it works on 6502,z80, and 68000: I'd be happier. And yes, that means no mmu things. "MMU if you have it, this extension if you do not" would be ok. After all, if you don't HAVE an MMU, you probably aren't looking at needing to manage memory automatically...
Anyway just thoughts, based on seeing yet another project written in JS, Go, or Rust, with no "backwards compatible" vision. I'm worried those will suddenly be removed from us by a hostile vendor.
Because all vendors are hostile.
In 1916 everybody were reading the same propaganda.
Now people read propaganda tailored to their culture, class, psycological bias and to the people surrounding them.
This produces a much stronger cultural hegemony and it was made possible by technology.
A technology designed to reinforce the wealth differences while dividing the poors around identitarian tales.
Nice hack! 😃
Sad it's using (thus spreading) the Mercatore's map that draw the equator at 1/3 of the height, magnifying the rich north of the world and depicting the poorest continents (South Ameica and Africa) way smaller than they are.
It's so biased that US and Canada together look bigger than Africa while they are way smaller!
The Peter's map would have been better (but I have no idea of how it would "play" at the piano).
US imperialism as usual. 🤷♂️
Yet, still a nice hack.
To be honest I was thinking about 4 mandatory spaces (no tab, no different amount of spaces, possibly no more than one way to express a computation).
But I'm also thinking of no `if` only match/switch.
Holy shit, are you reading my mind?
A WASM OS sounds like a very dystopic nightmare.
#Wirth's #Oberon is another attempt into this direction.
I think the biggest advantage of these systems (far ahead of their times) is that they assume no difference between user and programmer.
Also (afaik) they were all single-user systems and I'm unable to say if the two aspects are related or this characteristic is just derived by the hardware/culture of the time.
On the other hand, I would not say that #Unix operating systems belongs to the same family, despite being mostly written in C.
It looks like they actually assume/impose a strong separation between user and programmer even just in their perception of the system.
Maybe the multi-user approach is just a further application of this separation.
Nice thread, @natecull, but is this really about programming languages or more precisely about execution environment (either vìrtual machines or operating systems)?
I learnt about #TempleOS after his death and I was very sad.
I think that TempleOS is probably one of the best #hack, of the most valuable #FreeSoftware we have right now.
On par with #Oberon or #9front.
Davis had a unique perspective, none of us "sane people" could have. I guess we'll find gems everybody overlooked, in his code.
Ultimately, he was a fellow #hacker. He was talking with #God in a weird way.
But all hackers are weird and we really need more hackers like him.
@hansbauer @mmu_man @grainloom
#Haiku is a very interesting #hack.
Others you might like to try are
#TempleOS https://templeos.org/
#Oberon http://www.projectoberon.com/
#HelenOS http://www.helenos.org/
#ToaruOS https://toaruos.org/
#Inferno http://www.vitanuova.com/inferno/
#9front http://9front.org/
Complimenti! 🎉
"What have I learnt?" asks Niklaus #Wirth.
"#Programs must not be regarded as #code for #computers, but as #literature for #humans"
I hope that one day people will really understand and embrace Wirth's legacy.
We will have a better cybernetic world then.
https://video.ethz.ch/conferences/2014/wirth/d40b0ce9-b9fa-4ba3-8dee-cf9d0c6f01a4.html
Nice series on #Oberon
I did.
But if you try to unite activists' leaders towards the removal of structural issues they will find way to fight you as an enemy.
Their status, power and visibility come from fighting such issue.
If it was fixed for real, they would loose any role.
Totally agree, in #FreeSoftware forks should be the norm!
Now tell me a fork that preserve the original project name while still in use by the original one, please.
I'd say that most of current day software complexity is unneeded but it's always either accidental or actively pursued to gain one sort of artificial and undue power over people (reduced to "users") or another.
But both accidental and pursued complexity usually stem from underlying systems (hardware included) that do not provide orthogonal abstractions to build upon.
Imagine if you had to define circles on a plane but with non-orthogonal axes.
The simple x²+y²=r² would not work anymore and you'd have to invent the weirdest tricks to get a formula that works.
And anything you'd have to build on top of such formula would be even more complex.
So the pursuit for simplicity is first and foremost a pursuit for orthogonal axes that can effectively describe any computation (a space that is way more complex than a plane) in the simplest (but exahustive) possible way.
That was what I was looking with #Jehanne, but I'm still unhappy of it.
Not just because of the lack of time to work on it or because of plain (but very expensive) errors like GCC.
It's still too complex and arcane. 😥
I'm reasoning about this topic too.
I was wondering how to teach #Jehanne to my daughters (it's pretty simple compared to other OS) but it's still full of arcane words, with ugly syntax and weird semantics.
I'm pretty sure we should know better: what wrong assumptions arr poisoning the future of computing?
(Yeah, capitalism apart...)
Why we cannot even think simpler languages (and systems) without so much glibberish?
All programming languages use weird syntax, one way or another, to "maximize programmer productivity" (for some definition of it, if any) with multiple equivalent ways to express a computation.
All use complex type systems (as system F and derivatives) that most people cannot really understand.
Or they use complex runtime rules to counter-balance the lack of any type system.
All scripting languages use different syntaxes, all use different data format (converging to json, that sucks in many ways...), all have different command line switches...
We can do better for sure!
I really like Fexl ( https://github.com/chkoreff/Fexl ) but I'm not sure it's quite what I want. Not quite data-friendly enough? It's doing very good things with syntax though - I love the ; for list pivot. Very very useful - it makes all the difference between "parenthesis spaghetti" and "actually readable code". PicoLisp can do something similar.
PicoLisp, Retro Forth, Fexl, Dialog, and maybe Red seem like a handful of languages that "get" the idea of radical simplicity. But there's room for more.