[HN Gopher] If Only Borland Had Stuck with Turbo Modula-2 for CP... ___________________________________________________________________ If Only Borland Had Stuck with Turbo Modula-2 for CP/M (2013) Author : nope96 Score : 70 points Date : 2022-07-31 19:32 UTC (3 hours ago) (HTM) web link (techtinkering.com) (TXT) w3m dump (techtinkering.com) | [deleted] | krallja wrote: | (2013) | sedatk wrote: | I dislike Modula-2's full upper-case reserved word syntax. I | understand the reasoning behind it: to make language constructs | consistent and stand out more, but then, upper-case is harder to | read. | | Make no mistake, I use that syntax when writing SQL, and it's | very fitting there because the queries are short and I can't | tolerate typos due to lack of a compilation step. But, in case of | a compiled language, especially with the advent of syntax | highlighting and edit-time analysis capabilities, I find it a | nuisance. | mananaysiempre wrote: | > [The reasoning behind] Modula-2's full upper-case reserved | word syntax [is] to make language constructs consistent and | stand out more | | I suspect it's just inherited from ALGOL 68, where you were | allowed to use names that coincide with language keywords at | the cost of using one of a number of "stropping" conventions[1] | to distinguish one from the other: surround each keyword with | apostrophes (whence the term) or precede it with a period (if | you're using a single-case character set), type keywords in | uppercase (if you're not), or typeset them in bold (if you're | writing a paper--recall the original ALGOL problem statement | was "like pseudocode from our papers but executable"). | | [1] https://en.wikipedia.org/wiki/Stropping_(syntax) | sedatk wrote: | That might as well be the case, but Wirth did Pascal eight | years before Modula-2, yet the former feels way more modern. | yarg wrote: | > to make language constructs consistent and stand out more | | That sort of thing also makes parsing easier from the compiler | side; you can look at the string token and know without context | whether or not it's a keyword. | FullyFunctional wrote: | Nope, compilers couldn't care less - it's much faster to hash | keywords into the symbol table and just do a single lookup. | | The upper case is all about human readability. I suspect | ALGOL's heavy reliance on named keywords (unlike C's more | extensive use of symbols) relates to the inconsistencies of | character sets etc at the time of the ALGOL's definition. | | IMvhO, Turbo Pascal (and Turbo Modula-2) would have been much | nicer with a C-like (or Rust-like) syntax. | | Disclaimer: I worked professionally in Turbo Pascal for a few | years. | int_19h wrote: | Algol (both 60 and 68) had various representations. The | reference one, used in the spec, would use formatting to | indicate things such as keywords, and used the conventional | mathematic and engineering symbols where they were | appropriate. Here's a bit of Algol-60 grammar: | <arithmetic operator> ::= + | - | | / | / | | | <relational operator> ::= < | <= | = | >= | > | | [?] <logical operator> ::= [?] | | | [?] | [?] | ! | | Most of these characters were not in contemporary character | sets (although some later charsets would have symbols added | specifically for Algol after it became more common). Given | how much variation there was at the time, Algol designers | didn't even try to solve that problem - they simply said | that specific implementations of Algol would map the | reference representation to some hardware-specific form, to | be documented by the implementation. Those hardware | representations would often use keywords for some of the | operators. | int_19h wrote: | Uppercase for keywords was a fairly common style at the time | even in languages where they were case-insensitive (e.g. | Pascal, BASIC, dBase). Which makes sense when you consider that | syntax highlighting was still several years away, and it would | take even longer for it to become widespread. Turbo Pascal | wouldn't get syntax highlighting until version 7.0 - that's | 1992! | xioxox wrote: | There were other Modula-2 compilers for CP/M. I used Hisoft FTL | Modula-2 quite a bit on my Amstrad PCW to get a speedup from | Mallard Basic. | [deleted] | bruce511 wrote: | >> Why TM-2 made such a fleeting appearance is shrouded in | mystery. It was released in 1986 by Echelon under license from | Borland and then quickly withdrawn. | | I wasn't there, but dots can be drawn. Niels Jensen, Borland | founder, and his team created turbo pascal, then added Philippe | Kahn to the mix to head the US company. Niels and his team also | wrote a Modula 2 and C compiler, but Philippe instead chose to | buy Wizard C, and market that as Turbo C instead. | | This lead to a split inside Borland, Niels and the rest leaving | to form JPI which released their work as Topspeed C, and Topspeed | Modula 2. | | My speculation is that Modula 2 was killed at Borland as a direct | result of the split. | pjmlp wrote: | Martin Odersky of Java generics (Pizza compiler) and Scala | fame, worked on Modula-2 compiler at Borland. | dbrower wrote: | Part of it is that by 1986, CP/M was dead for new development | of anything, and Modula-2 was also on fumes. | | It would have been business malpractice to spend money on | CP/M products at that point. | pjmlp wrote: | There were a couple of Modula-2 vendors for MS-DOS and | Amiga. It was TP on MS-DOS, Object Pascal on Mac OS and | stuff like BASIC compilers on the Amiga side that made them | lose market share. | tengwar2 wrote: | Depends on the country. In the UK, the Amstrad 8256 and | 8512 were very popular, and they were only launched in | 1985. They were much cheaper than PCs of the time, and came | with wordprocessor package and CP/M 3.0. We had about 25 of | them in our lab, including one floating at 4000V in a | perspex cage, used to control a C14 accelerator. | | From memory, I used TP and them TM2 on CP/M to run an | automated thermoluminescence rig, then FTL Modula 2. I | wasn't very professional at the time, but then no-one was - | most of us were working in isolation. Speaking from that | perspective, I was not very impressed with Modula 2. The | issue was not with the fundamentals, but the way that it | was case sensitive and forced you to use caps for all the | keywords, so that it was _really_ annoying to type. As a | lesser issue, the names used for type conversions between | numeric types seemed to have no rationale, so they were | easy to forget. I don 't remember exceptions in TM2, and | they would not have been part of the standard language. | They appear to have come in with Modula-2+. | FullyFunctional wrote: | So? TP real success came with the port to DOS, but TM2 | couldn't have been much harder to port. | bonzini wrote: | They probably reused a lot of ideas in Turbo Pascal 4.0. | It had units which were very similar to Modula 2 modules, | except that interface and implementation were in a single | file. | pjmlp wrote: | Most of those ideas come from USCD Pascal, and the later | Object Pascal introduced in Turbo Pascal 5.5 came from | Apple's Object Pascal, which was derived from Clascal and | developed in collaboration with Wirth. | FullyFunctional wrote: | Probably, but there were many other language differences | in Modula-2 that made it a better language. I suspect the | real reason was the usual one: inertia. A lot more people | knew Pascal and thus more bought TP than TM2. <something | something about technical merit and popularity contests> | ThinkBeat wrote: | (wikipedia) | | The Turbo Pascal compiler was based on the Blue Label Pascal | compiler originally produced for the NasSys cassette-based | operating system of the Nascom microcomputer in 1981 by Anders | Hejlsberg. Borland licensed Hejlsberg's "PolyPascal" compiler | core (Poly Data was the name of Hejlsberg's company in | Denmark), and added the user interface and editor. Anders | Hejlsberg joined the company as an employee and was the | architect for all versions of the Turbo Pascal compiler and the | first three versions of Borland Delphi.[2] | tomcam wrote: | The PC Turbo Pascal compiler was written in assembly by Anders | Hejlsberg, of C# and Typescript fame. | neilv wrote: | I don't recall ever seeing the branding "Turbo Modula-2", but I'd | been a Turbo Pascal fan (even owned Turbo Pascal original 8-inch | floppy for generic MS-DOS, and used it on an 3.x MHz 8086/8088 | that had no PC BIOS), and used Modula-2 in school. | | I recall there were multiple Modula-2 implementations for the PC | at the time. The one I used didn't have as much PC-specific | access as Turbo Pascal (at the time, I had my own libraries for | video RAM direct writes, mouse, etc., and GUI I'd built atop | that). | | And the Modula-2 language felt a bit clunkier to use, since I was | favoring terseness on 80x25-character screens at the time. | | Where Modula-2 and pedagogy around interface vs. implementation | in team software engineering class paid off, for me, was that I | became a professional C programmer right after, and some of those | practices enforced by Modula-2 were a useful perspective to bring | to cross-platform Unix .c and .h files at the time. | int_19h wrote: | Modula-2 had somewhat more verbose syntax for derived types | (e.g. POINTER TO X rather than ^X), but given that it didn't | require a BEGIN for every END, wouldn't it be more terse | vertically overall? | mrlonglong wrote: | I just did some googling and it turns out Borland did do a | version for MS-DOS but it was sadly never released. Dare I hope | it's still out there somewhere waiting to be out in a museum? | atombender wrote: | I love reading about the history around legendary companies like | this. I was an avid Turbo Pascal user starting in 1990 or so. | This sent me into a rabbit hole of research. | | I thought I knew a lot about Borland's history, but what I didn't | know was that the original team left Borland in 1987 to form JPI | (Jensen & Partners), headquartered in London, taking a bunch of | in-progress code with them that they bought from Borland for | $1.7m. JPI made a range of development tools called TopSpeed, | which I remember hearing about back then. Unlike Borland's | language tools, TopSpeed was a unified compiler backend with a | frontend compiler for each language. | | JPI eventually merged with Clarion, which made a "4GL" IDE with | its own crude Pascal-esque programming language that at one point | competed with Microsoft Access, as well as with database-focused | IDEs like Microsoft's Visual Basic and Borland's own Delphi. | Clarion still exists, though it's now owned by a company called | SoftVelocity, and is built on .NET, and looks like it's barely on | life support. | | Of the original Borland founders, I don't know what happened to | Niels Jensen, but Ole Henriksen [1] started a business that | designs technology for prefab "pod" houses, and Mogens Glad [2] | became a movie producer. | | [1] https://www.linkedin.com/in/ole-henriksen-a731323a/ | | [2] https://www.linkedin.com/in/mglad/ | MrMan wrote: | clarion was good | mrlonglong wrote: | I actually worked with TopSpeed Modula-2 to develop software | for air traffic control training simulators in the late 90s. | Interesting language, wouldn't mind finding a copy to play with | in my MS-DOS VM some day. | atombender wrote: | I found a version of Topspeed Modula 2 from 1993 [1], which | is after the JPI-Clarion merger. | | Someone also reverse-engineered Turbo Modula-2 [2], which | apparently was the original codebase. | | [1] https://vetusware.com/download/Topspeed%20Modula%202%203. | 10/... | | [2] https://github.com/Oric4ever/Turbo-Modula-2-Reloaded | nope96 wrote: | Previously posted: | | Use Turbo Modula-2 Instead of Turbo Pascal Under CP/M? (2013) | https://news.ycombinator.com/item?id=16704733 [2018, 21 comments] | | Also interesting: | | Turbo Pascal: A Great Choice for Programming Under CP/M (2013) | https://news.ycombinator.com/item?id=25956128 [2021, 115 | comments] | yawaramin wrote: | Just for fun, here's the Modula-2 example converted into OCaml in | a few minutes of effort: let size = 8191 | let flags = Array.make size false let prime = ref 0 | let k = ref 0 let count = ref 0 let () = | print_endline "Type Return"; ignore (input_char stdin); | print_endline "10 iterations"; for iter = 1 to 10 do | count := 0; for i = 0 to size - 1 do flags.(i) <- | true done; for i = 0 to size - 1 do if | flags.(i) then prime := i + i + 3; | k := i + !prime; while !k < size do | flags.(!k) <- false; k := !k + !prime; | done; incr count; done; | done; Printf.printf "%d primes\n%!" !count | | If one didn't look closely it could easily be mistaken for | Pascal/Modula-2. OCaml lifts a lot of imperative constructs | directly from that lineage while adding its own FP flavour i.e. | immutability by default meaning that mutable values must be ref | or array values. | | Another aspect that OCaml lifts pretty directly from Modula-2 is | the engineering of its separate compilation via its module | system. By comparing the compiled interface files, a build system | like dune or ReScript can figure out the least amount of | recompilation needed to build a project from a dirty state. | linspace wrote: | > Should I Switch From Turbo Pascal to Turbo Modula-2? | | The million dollar question. | | More seriously, I love Pascal and similar. My first two books | were Algorithms + Data Structures = Programs (Pascal) and | Algorithms and Data Structures (Modula 2), both by Nicklaus | Wirth. | mananaysiempre wrote: | Pascal and Modula-2 themselves are by Wirth as well :) ___________________________________________________________________ (page generated 2022-07-31 23:00 UTC)