7 ms·
I def have a soft spot for Pascal. And I think Niklaus Wirth deserves more recognition in broader circles for his foundational work with pcode, compilers, Obero
by runlaszlorun 3y ago
I def have a soft spot for Pascal. And I think Niklaus Wirth deserves more recognition in broader circles for his foundational work with pcode, compilers, Oberon, etc. I learned Pascal like many of us growing up in the early PC era and never could look at BASIC the same way again (or respect Gates for his love of it, lol). I think having such a highly structured language at a young age did wonders.
But these days folks are mostly used to the C style syntax. And I'm not even arguing that it is a better language than C or others. But the whole industry has gone overall into believing that anything newly 'invented' is good and anything that's been around a while is passé. Ironically, at the same time as the core technologies we use are based on decades old tech like Unix, relational databases, TCP/IP, etc. And many others like Lisp and Smalltalk fell by the wayside at least partly due to performance issues that were made irrelevant by Moore's law long ago.
Oh humans... :)
Btw, Logo is another one that's under appreciated. Seymour Papert was brilliant in making programming more visual and intuitive for kids. And I didn't actually know until recently it's actually a Lisp based language with a lot of power. Who knew?
In some parallel universe, I'd love to see folks like those, along with many others from that era, as the ones we heap recognition on instead of our worship of current tech billionaires. Those guys generally understood the hardware, software, and core theory. Given the mess that is computing and the internet, it's a shame that we'll be losing them over the next few decades.
- wolfi1 3y agoWirth's disdain for C++ leads sometimes to chuckles in the audience at public lectures("C with 2 plusses")
- JAlexoid 3y ago> C with 2 plusses I read it as "C with two pulses"... Which is how I feel about C++ - unnecessarily complicated.
- msla 3y agoI don't understand the joke you're making. How does "pulse" equate to complicated?
- theonething 3y agosame here
- brnt 3y agoC++ isn't really one language, but a language family with dozens if not more dialects. If you read some codebases from different places, you will sometimes, or even often, barely recognise what's going on (unless you are an advanced user). In C++, people very much tend to pick a subset, so different pulses beat concurrently, if you will.
- a1369209993 3y agoTwo redundant cardiovascular systems that don't work together, presumably in such a way that a heart attack or exsanguination in either is lethal (as opposed to modular redundancy for improved reliability, which mostly isn't relevant at the software level).
- PumpkinSpice 3y agoI'm surprised that you draw a sharp distinction between C and Pascal syntax. They have a shared lineage and are really very close to each other. Yeah, curly braces won over "begin" and "end", but that's not a matter of some huge conceptual rift, just convenience. There are numerous languages today, including Haskell and Ocaml, that are far more removed from the Algol lineage than these two. Heck, the differences between Rust and C are probably more pronounced than between C and Pascal.
- zozbot234 3y agoHistorically, the point of writing 'begin' and 'end' instead of using curly braces was mostly support for non-ASCII character sets where the curly braces are not included. It's why C also has an alternate syntax using <% and %> and COBOL goes as far as writing out arithmetical operators as English text, such as DIVIDE x INTO y GIVING z.
- KerrAvon 3y agoI was under the impression that COBOL's English syntax was intended to be a more human-readable approach, not so much a workaround for character set limitations.
- pavlov 3y agoMaybe both? COBOL predates the first draft of ASCII by several years. Character sets were far from standardized in those days.
- noizejoy 3y agoLots (most?) of classic COBOL used EBCDIC[0] [0] https://en.wikipedia.org/wiki/EBCDIC https://en.wikipedia.org/wiki/EBCDIC
- andomizczzz662 3y ago[dead]
- switchbak 3y agoWell some of the great ideas of yesteryear are having a bit of a rebirth. Many of the safety concerns of Ada are being brought into the limelight with Rust. And of course Erlang blew up a while back after spending forever in the (relative) shadows. Overall we're still stuck in a bit of a near-monoculture of JS(TS) and Python, but it's a far cry from back in the day where there was very little openness to the sole blessed corporate stack (Typically Java or C#/CLR). I think we can only handle so many mainstream languages, but I do love all the experimentation and openness going on.
- livrem 3y agoMy impression from my limited experience with Pascal (more recently only playing around a bit with Free Pascal) is that much of the basic parts of the language, that a beginner like me is mostly exposed to, is very safe with strong typing and range-checking on all arrays. I do not know how far you can get in practical programming while sticking to those parts of the language, or how unsafe it gets once you start playing with pointers? I think the pointers are supposed to at least be safer than in C, unless you go out of your way to break things?
- sixthDot 3y ago> But these days folks are mostly used to the C style syntax. And I'm not even arguing that it is a better language than C or others. But the whole industry has gone overall into believing that anything newly 'invented' is good and anything that's been around a while is passé Problem of the Pascal syntax is that it prevents adoption of certain constructs, which are just not nice. A few examples - lambda expression: `begin` ... `end`, say goodbye to nice one liners; - binary assign: FPC has `+=` `-=` but obviously not `mod=`, `and=`, etc; On top of that there are other things like - shortened boolean evaluation (e.g `if someInt` => `if someInt != 0` is not possible because `and` is a two headed creature - locals are still not default initialized I use to like Pascal (actually Delphi then ObjFPC) much but nowaday I think the only good parts are in certain semantics, e.g no fallback in the `case`...`of` construct, manual memory management BUT ref counted arrays. I would tend more to like a C like syntax with certain semantics coming from the Pascal world.
- KerrAvon 3y agoBEGIN/END needn't be a showstopper for one-line lambdas. Ruby has nice one-line lambda expressions where you can substitute `{` ... `}` for `do` ... `end`. A Pascal implementation can't do exactly that, but it could use an alternative syntax.
- zem 3y agoelixir allows one-line lambdas with `fn ... end`. they don't look as nice as they would have with braces but the parser handles them fine.
- deleted 3y ago[deleted]
- StillBored 3y agoThe problem with "one liners" and other coding is that its generally to clever. One of the things I like about python (despite not liking it that much) is for certain constructs there is "the one true way", for example the required formatting trains people to all read the same code. With C/etc languages there are dozens of different but in the end identical ways to express and format the same construct its crazy. And it creates unnecessary mental overhead, nevermind the if..fi..else ambiguities that aren't even standardized behavior. So, much of what you are complaining is largely pointless syntactic sugar issues, like people complaining about the difficulty of typing "begin" vs "{" when any modern editor can autocomplete, and nevermind the difficult parts of programming are rarely the limit on how fast one can type 5 characters vs 1. I might even go so far as to say, slowing down a bit probably actually increases the code quality. (PS: I've programmed professionally in pretty much every mainstream language and quite a number that aren't mainstream. IMHO Object Pascal strikes a far better balance of performant code, ease of development and maintenance, and developer safety than most of the languages in modern use, maybe all of them. Its frankly a shame that more places don't take it more seriously and would rather invent yet another poor half baked language that takes another few thousand man years of effort for the compiler writers and the users to overcome as they are discovered).
- zozbot234 3y agoUnfortunately, LOGO uses dynamic scope. It could easily be a viable language aside from that one misfeature.
- cmrdporcupine 3y agoSo does ELisp, by default :-)
- Clubber 3y ago>But the whole industry has gone overall into believing that anything newly 'invented' is good and anything that's been around a while is passé. I think this is partially accepted to keep wages down. New languages allow fresh developers to be on a level playing field with more senior developers. Both have say 2 years experience in said new language. Fresh developers are cheaper and therefore push down wages.
- kaba0 3y agoIt’s almost like there are improvements in PL design. Also, at better places the language itself is a tool - someone will be a senior in any other language as well.
- Clubber 3y ago>It’s almost like there are improvements in PL design. Eh, not really, at least not in the last 10+ years. I'm sure some obscure hotness does something neat, but mostly inconsequential for the vast, vast majority of shops. >someone will be a senior in any other language as well. While I agree with you, that often isn't the opinion of people hiring. If someone is looking for 2 years of java, in most places, 10 years of C# isn't what they are willing to hire.
- djha-skin 3y ago> But these days folks are mostly used to the C style syntax. Mostly, but I'm told the new Austral[1] language has syntax very similar to that of Pascal's. 1: https://austral-lang.org/ https://austral-lang.org/
- darigo 3y agoDuring home school my daughter was learning about how data structures are represented in memory, which gave us the opportunity to explore how to represent strings as arrays, and thus: Pascal strings vs C strings