←back to thread

118 points mariuz | 1 comments | | HN request time: 0.201s | source
Show context
garganzol ◴[] No.45655857[source]
Pascal was the first structured high-level language I learned when I was a kid.

After I learned C and started using it, I noted that I experience five times more memory-related issues in C programs than in an equivalent Pascal code I was writing before.

During that era, Pascal had a remarkable advantage few other languages could match: it used a single-pass compiler that generated machine code as it parsed the source code. No intermediate representations or syntax trees - just a direct translation from source to machine code, all thanks to the well thought-out language syntax invented by Nicolas Wirth. That feature made Pascal compilers incredibly fast.

In turn, it allowed to tighten up a typical development cycle of the day: (edit -> compile -> run) x N times. Given typical CPU speeds of the time, it made a night and day difference. For example, given the same piece of software under development with a comparable number of lines, Turbo Pascal development cycle was about 5 seconds, while Turbo C gave you 40 seconds of a round-trip time at best.

Pascal was the right tool at the right time. Both Apple and Microsoft initially used Pascal to develop their operating systems.

When available CPUs started to become faster and faster, that particular Pascal advantage began to fade out and other languages commenced eating away its market share. Somewhere between 1986 and 1992, software houses were switching to C in flocks.

replies(6): >>45656515 #>>45656649 #>>45656681 #>>45657264 #>>45660151 #>>45660334 #
acqq ◴[] No.45656649[source]
Another advantage of Pascal is that the programs written in it crashed much less, which also allowed for a much safe development on the machines of that time which didn't have any "memory write" protections. And safety in development actually translated in less crashy product too.
replies(1): >>45656705 #
garganzol ◴[] No.45656705[source]
Pascal is very much like a managed language but without GC or borrow checker. It's not formally memory-safe, but its syntax discourages a developer from playing with fire unless it's really needed.
replies(1): >>45659363 #
pjmlp ◴[] No.45659363[source]
Additionally all the flaws regarding it being designed for teaching and the raise of dialects, were already fixed by 1978 with Modula-2, which Niklaus Wirth than created, with the learnings from Mesa at Xerox PARC.

Later, we also got the managed language genealogy, via Modula-2+ branch, and Niklaus Wirth own Oberon variants, or inspired dialects from it.

Nowadays GCC has Ada, Modula-2 and Algol 68 as official frontend, we have Free Pascal and Delphi.

Then we also have all the other modern ones that somehow got some inspiration out this history.

Thus we as an industry aren't lacking alternatives.

replies(1): >>45660354 #
jacquesm ◴[] No.45660354[source]
Modula-2 is the road not taken for me. It's such a pity that language didn't get the chance that it deserved.
replies(1): >>45662505 #
kjs3 ◴[] No.45662505[source]
It sorta did as Ada, tho Ada is a much bigger language than M2 (or Pascal)[1]. There was at least one Ada-83 compiler for DOS (Janus), but it was a tight fit and a miserable experience. To me, the missed opportunity was Modula-3; much of what was nifty about Ada (and other things) in a smaller package.

[1] People often forget how compact a language Pascal (and somewhat M2) is. It comfortable self-hosts on 8-bit machines with a few dozen K (not M) of memory. It does an OK job even on the 6502 (admittedly, p-code). There was even a cross compiler for the 8051.

replies(1): >>45665620 #
1. pjmlp ◴[] No.45665620[source]
I think that D and C# are the right descendents to Modula-3, and many aren't still unaware of how much C# has improved for low level programming tasks.

Unfortunely its adoption window has passed by, although there is a guy keeping it going on Github, from the official Critical Mass compiler that once existed,

https://github.com/modula3/cm3