4 ms·
I appreciate the shout-out to the “Imprecise Interrupt” found only in the 360/91: “You divided by zero somewhere in there, but we’re not going to tell you where
by drfuchs 8y ago
I appreciate the shout-out to the “Imprecise Interrupt” found only in the 360/91: “You divided by zero somewhere in there, but we’re not going to tell you where, and if you’ve done a Branch/Jump by the time we detected it, the current Instruction Pointer won’t give you much of a clue, either.” Fun times.
- monocasa 8y agoThe 360/91's FPU was the first full on Tomasulo's algorithm OoO pipeline. Recovering from exceptions and unwinding state is one of the most difficult parts of those cores, so I don't really blame them for punting on that part
- graycat 8y agoI learned PL/I on the 360/91 at the JHU/APL. Later I used PL/I on CP67/CMS in Stamford to save FedEx the first time, to schedule the full planned 33 planes to cover the planned 90 cities. Founder, COB, CEO Smith's remark at the staff meeting was 'An amazing document, solves the most important problem facing Federal Express." Our two guys from BoD Member General Dynamics looked over the schedule and said "It's a little tight in a few places, but it's flyable." The BoD doubts were defeated; the BoD was pleased; crucial funding was enabled; and FedEx was saved. PL/I is a nice language. When I got a phone interview from Google and they asked me what my favorite language was, of course I said PL/I. Apparently way wrong answer and they were looking for at least C and hopefully C++. I was later in the IBM Watson lab research group that did KnowledgeTool, a rule based pre-processor to PL/I. Some of my knowledge of PL/I internals let me do a trick that saved much of the language -- I got an award for that. PL/I based structures are nearly as nice as C# objects and for addressing use essentially only generalized array addressing so are really fast. If want methods, then have some entry variables in the structure. For a light version of inheritance, use the attribute Like. For something like polymorphism, use Generics, or whatever it was called then, that is, the right version of the code is called depending on the types of what is passed. The scope of names support is terrific stuff. Similarly for the exception condition handling via On conditions and how they work with scope of names and the stack of dynamic descendancy. There's a lot of good stuff in PL/I. Sorry people at Google didn't know about PL/I!
- pjmlp 8y agoAnd from all the papers I have read, a much safer option to write systems software on than C ever was.
- msla 8y agoMuch harder to write compilers for, though.
- pjmlp 8y agoSure, but that was already a solved problem outside Bell Labs, at least by reading IBM papers and interviews with well known compiler implementers from the 60 - 80's.
- walshemj 8y agoAnd PR1ME used pl1 as its system programming language
- graycat 8y agoOkay, okay, I give up; you win! I used to be a Prime customer and was going to post that! Gotta type fast at HN or get scooped! And what was the role of PL/I in Multics?
- unused0 8y agoThe bulk of Multics is written in PL/I. See https://multicians.org/pl1.html https://multicians.org/pl1.html for details.
- pjmlp 8y agoNot the OP, but you can find quite a good collection of info at https://www.multicians.org/ https://www.multicians.org/, specially interesting is the B2 Security Evaluation (https://www.multicians.org/b2.html https://www.multicians.org/b2.html) with the pearl that none of the UNIX known exploits, possible due to C's lack of safety where possible to take advantage of on Multics, thanks PL/I.
- mrich 8y agoSo like COMEFROM debugging? https://en.wikipedia.org/wiki/COMEFROM https://en.wikipedia.org/wiki/COMEFROM