7 ms·
I never got the big appeal of Wirth languages. When they weren't just vanilla Algol derivatives, they were making a virtue out of a performance hack (enforced d
by msla 4y ago
I never got the big appeal of Wirth languages. When they weren't just vanilla Algol derivatives, they were making a virtue out of a performance hack (enforced define-before-use to enable single-pass compilers) or relying on non-standard variants (Turbo Pascal/Delphi) to claim that uninspiring base languages were competitive.
As an aside, Oberon-2 isn't a C++ alternative because it apparently has mandatory garbage collection, which isn't acceptable to C++ programmers now (which is why they're going to Rust instead of Go) and damned well wasn't acceptable to them in 1997, else they would have moved to Java.
- kragen 4y agoin 01997 it was acceptable to them and that's why most of them did move to java, once hotspot came out if not earlier c++ projects today are very different from c++ projects in the 01990s when basically all 'serious' software was either c++ or c a lot of c++ projects in the 01990s were what we think of now as java projects or c# projects (or django projects): line-of-business systems full of boilerplate and shitty architecture, not streamlined mega-optimized aaa game engines or web browsers c++ projects today are the niche that was left over, which is, yeah, basically the cases where you can't afford gc — ⁂ — the appeal of wirth languages is that you get 90% of the value of a monstrosity like pl/i or c++ for about 5% of the complexity language complexity hurts you three times: when you are learning the language, when you are choosing a compiler, and when you are debugging your code so actually sometimes you get 200% of the value of a monstrosity like pl/i or c++ hopefully at some point someone will develop a wirthified version of rust, but i don't think wirth will do it this time
- midoridensha 4y ago>in 01997 it was acceptable to them >c++ projects today are very different from c++ projects in the 01990s >a lot of c++ projects in the 01990s You got the year wrong with that '0' prefix. The decade you're referring to is the 11990s.
- shadowofneptune 4y agoThis might be the finest criticism I've seen of attempts to extend the Christian epoch forward or backwards.
- deleted 4y ago[deleted]
- midoridensha 4y agoFor those that don't know, my comment is based on the Holocene Era calendar, aka Human era calendar (HE). Basically, human civilization started roughly 12k years ago, in ~-10000BCE. The HE calendar lets us express all human-era events using positive numbers, and does so in a way that just tacks a '1' onto the popular Gregorian calendar so it's very easy to convert.
- Dylan16807 4y agohttps://en.m.wikipedia.org/wiki/Holocene_calendar https://en.m.wikipedia.org/wiki/Holocene_calendar https://longnow.org/ideas/long-now-years-five-digit-dates-and-10k-compliance-at-home/ https://longnow.org/ideas/long-now-years-five-digit-dates-an... Good luck getting people to agree on anything.
- pavlov 4y agoMaybe we could start the epoch from when Homo erectus invented fire two million years ago and align with the Christian era for convenience. So this is now the year 2,002,023 FE (Fire Era).
- vidarh 4y ago> c++ projects today are very different from c++ projects in the 01990s when basically all 'serious' software was either c++ or c As an example, as late as '99, my first large web application was C++, and that was not an unusual choice at the time.
- usrnm 4y agoI worked on a greenfield web application in C++ last year. It still is a viable choice for web backend even today.
- pjmlp 4y agoDepends on how much effort is done in security. Most of the stuff I have exposed to the Internet written in C or C++, has done so by using a safer managed language and only accessing the native code via libraries. Naturally there is the issue of on which language those runtimes were written on, but even so, the trusted computing base is much smaller than having the application fully written in C++, with possible C idioms while parsing data coming out of the network.
- kragen 4y agoMy own reason for preferring lightweight languages like Python over C++ for web services is not security but flexibility: it takes more code to do things in C++, and it takes more work to debug that code when the program is small. The things you get in exchange (mostly performance, since callability from an FFI is not a consideration) are often not worth it. Most web services I've worked on have a much harder time meeting the demands on their flexibility than those on their performance.
- pjmlp 4y agoIt is acceptable to those that use Unreal C++ and C++/CLI. Many did move to Java (or .NET), that is one of the reasons C++ is hardly seen in distributed computing stacks 20 years later, or most CNCF projects, other than existing OSes and RDMS. Those targeting OSes like Android, or ChromeOS, hardly have an option, unless they feel like using their own OpenGL/Vulkan based GUI, and create JNI wrappers (or JS callbacks) for like 80% of the OS surface .
- vidarh 4y agoIt's very simple: Simplicity. A Wirth-style compiler for a Wirth-style language can be written fairly rapidly by a single person, and the languages, compilers and runtime systems can be easily understood. The Oberon-07 language report, including the grammar, is 17 pages. If simplicity doesn't matter to you, then this won't appeal to you, and that's fine. I mostly use Ruby these days, whose parser (in MRI anyway) is likely longer than the whole Oberon-07 language report alone (I haven't measured, but ca. Ruby 1.8.6 the parser alone was 6k lines+), so I've surrendered the simplicity, but it still stands out to me as an ideal and inspiration. Wirth was perhaps too ascetic in his insistence on keeping the compilers minimal, but you can fine less extreme versions carried on in extensions done in the PhD dissertations of students in his group.
- Nevermark 4y ago> Wirth was perhaps too ascetic Maybe too ascetic in terms of getting the most adopters, but a wonderful reminder to designers of development tools that most designs are probably far more complex than they need to be, even when optimizing for non-simplicity criteria. So not a wasted effort!
- HarHarVeryFunny 4y ago> It's very simple: Simplicity. Well, simplicity in a programming language is IMO only a virtue as long as it doesn't come at the cost of too much functionality, which with Pascal it surely did. There's a reason that of C and Pascal, C is the one that survived. It's the simplicity of Pascal that ultimately killed it, since it forced any practical implementation to heavily extend the language (Turbo Pascal, Apple's Clascal, etc). Even USCD's famous P-System extended as much as it subsetted the language. What this meant is there was in practice no Pascal standard, only these isolated ecosystems which eventually died one at a time. In contrast to Pascal, C (which was designed only a couple of years later) was functionally complete enough, even in original K&R form, that it was implemented as a standard, and the standard endured past the lifetime of any individual implementation. The simplicity of Pascal also came at extreme cost in terms of performance and usability. For example most non-trivial Pascal programs (certainly any use for systems programming) end up using the "variant record hack" for type casts (e.g. pointer to int). So, rather than not allow type casts, Pascal allowed it but made it have a runtime cost of load/store rather than being free. Or another example - Pascal only supported value or var (passed by reference) function parameters, so if you want to efficiently pass a record or array type you'd have to pass it as "var" to avoid being copied, even if the caller wasn't meant to modify it. Hmm.. or how about Pascal's "simple" for loops, which took the form "for i := x to y", which means you couldn't use it for "i = 0 to (N-1)" without the cost of calculating "N-1" and would have to use a while or repeat loop for that instead at the cost of readability/maintainability. Or how about Pascal's (variable sized) "conformant array" function parameters which the language didn't allow you to pass to another function... Or how about the fact that Pascal didn't support length-1 strings (length 0 and 2+ ok, though), since it made things "simple" by regarding 'a' as a char vs 'ab' as a string (incompatible types). Yes, it was simple, but very poorly thought out, and practically useless unless extended.
- kristianp 4y agoBack in the 90s when Modula 2 was that latest thing, the selling point was that it was as efficient as C (in theory), but safer. The Wirth languages were called 'bondage and discipline' languages for the safety they offered to beginning programmers. No buffer overflows, and you could specify a metres type and be assured that someone wouldn't accidentally cast an variable of type yards to it. It also offered modular programming with implementation hiding.