Microservices being used as the hammer for all nails spelled doom for at least one project I’ve worked around.
Just use your head and not the hype. The real value provided is modularity but you cannot forget the need to trace across a system when things go wrong or how performance might be impacted negatively.
I found that in Modula-2 and Oberon, however times have changed.
For me the best version of Oberon linage is Active Oberon, while I appreciate Wirth I think he went too far on his quest for language simplification. Even Go has more features than Oberon
-07.
As for Modula-2, it is now a standard language on GCC, otherwise Zig and Odin are relatively similar for the curly bracket folks.
I found Modula-2 to be annoying to use, not for any deep reason, but because of its use of block capitals for keywords, and a confusing nomenclature for casting. It does actually matter that a language is comfortable to write.
Keywords were never an issue to me, because I love tools, and most proper Modula-2 IDEs supported automatic formatting, just like I write SQL in lower case and let my tools work for me.
People should stop designing languages for notepad and classical UNIX V6 vi as editor experience.
Casts well, each language has its own nomenclature for type conversions.
That is true now, but remember how far back this was. I was programming Modula-2 on CP/M - our lab standardised on the Amstrad 8512 for control / data acquisition for cost reasons. Early PCs existed, running MS/DOS, so you could probably get Micro-Emacs - I don't remember when that came out. I remember seeing one Sun 3, but they were not common equipment. This was at Oxford. So in brief, it didn't work well with the operating systems of the period.
Can you fix that problem now? Yes, but the window for Modula-2 closed decades back. It doesn't have any significant selling points now.
I think Wirth said something like "I am a programmer who is a professor, and a professor who is a programmer." Definitely a huge inspiration to me, both for the elegance and compactness of his system designs as well as the idea that research could and should affect practice, and vice-versa.
At least with -fbounds-safety clang is finally catching up with what Pascal (including UCSD, Apple, and Turbo Pascal) and Ada (a rather more complicated descendant of Pascal) compilers had in the 1980s. (Delphi and Free Pascal still have range checking today.)
This sounds like a modern Linda which is itself a coordination language between parallel actors reduced down to a very simplified model of pattern matching and "pub/sub".
This kind of parallel programming fell out of favor with PVM and MPI kind of taking over the space in the late 90s, but I suspect Tuplespaces were just a bit ahead of their time.
Things like this can potentially really help with the observability of distributed systems, which has been a huge pain especially in areas of eventual consistency.
Agree. I thought the concept of tuplespaces was super interesting and, unfortunately and definitely, ahead of its time. IBM had some decent papers on it.
I see eventual consistency here as a bit of copout. it really does limit the applicability of the approach by making really not obvious when things are starting to decohere. Someone else mentioned Alvaro in this thread, and I think thats a really fruitful body of work to look for answers that don't require a strong central serialization agent. Monotonicity, vector clocks, multi-panos style domain partitioning, these are partial answers for making this kind of thing be a foundation you can reason about and still scale.
reply