12 ms·
Technical Time Travel: On Vintage Programming Books
- mysterydip 5y agoI love vintage game programming books. Just finished "Gardens of Imagination" by Christopher Lampton, and "The Black Art of 3D Game Programming" by Andre Lamothe. Lots of good info in both for my raycaster pet project.
- ModernMech 5y agoI love vintage programming books. Interlibrary loan has been my best friend in getting books you can’t find easily, or if you do they might be over $100 to buy.
- dhosek 5y agoI remember being in high school in the 80s and discovering that there was source code for a C compiler on the IBM mainframe at UIC. Then when I started digging into it, I found that parts of it were written in SNOBOL. Fortunately, the local public library's collection of computer books was hopelessly outdated and they had a book that covered SNOBOL on their shelves.
- criddell 5y agoWould Knuth's TAOCP series be considered a vintage programming books?
- tomcart 5y agoThere is surely a distinction between vintage and timeless, where the first is representative of the time it was written (and may offer relevant insight for today), and the second offers some universal truth, regardless of when it was written. I'd say Knuth is squarely in the latter category
- decebalus1 5y agoI'm gonna have to go against the grain here and completely disagree with this. While TAOCP is lauded and celebrated as one of the best (and at the same time unread) CS books of all time, the fact that it uses an assembly language is a strong indicator that it's 'vintage'. It still has that 'universal truth' but at the same time, as you said 'is representative of the time it was written', considering MIX is picked for teaching people how to program.
- dhosek 5y agoThe newer volumes use a newer version of MIX, MMIX¹ based on RISC architecture, which will also appear in the "ultimate" revisions of Vols I–III. And while you might think that assembly language is ipso facto an indicator of vintage, I think having at least one assembly language² in one's experience is helpful for having some idea of what the computer is actually doing. ⸻ 1. https://www-cs-faculty.stanford.edu/~knuth/mmix.html https://www-cs-faculty.stanford.edu/~knuth/mmix.html 2. For people targeting a platform like JVM or CLR (dot net), understanding how those machines are implemented might also be useful, although I've found my ancient memories of 6502 and 370 assembler are sufficient for having a mental model of how the code works.
- decebalus1 5y ago> And while you might think that assembly language is ipso facto an indicator of vintage, I think having at least one assembly language² in one's experience is helpful for having some idea of what the computer is actually doing. These two statements are not contradictory. We've stopped teaching CS using assembly language a long time ago, but we still do teach assembly in OS or computer architecture contexts, which is totally fine and should continue.
- dhosek 5y agoI also should provide DEK's own reasoning about why assembly and not a higher-level language: >Many readers are no doubt thinking, ``Why does Knuth replace MIX by another machine instead of just sticking to a high-level programming language? Hardly anybody uses assemblers these days.'' >Such people are entitled to their opinions, and they need not bother reading the machine-language parts of my books. But the reasons for machine language that I gave in the preface to Volume 1, written in the early 1960s, remain valid today: >• One of the principal goals of my books is to show how high-level constructions are actually implemented in machines, not simply to show how they are applied. I explain coroutine linkage, tree structures, random number generation, high-precision arithmetic, radix conversion, packing of data, combinatorial searching, recursion, etc., from the ground up. >• The programs needed in my books are generally so short that their main points can be grasped easily. >• People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird. >• Machine language is necessary in any case, as output of many of the software programs I describe. >• Expressing basic methods like algorithms for sorting and searching in machine language makes it possible to carry out meaningful studies of the effects of cache and RAM size and other hardware characteristics (memory speed, pipelining, multiple issue, lookaside buffers, the size of cache blocks, etc.) when comparing different schemes.
- chungy 5y agoFirst editions, probably. The current ones not so much. Although I guess Volumes 1-3 haven't yet had their MIX code replaced with MMIX, so perhaps even the current ones are vintage.
- crims0n 5y agoNot only is it an interesting pastime, it can be quite useful for older languages. I am currently working my way through some of the recommendations in "The Definitive C Book Guide and List" from StackOverflow and a lot of the selections are from decades past. https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list https://stackoverflow.com/questions/562303/the-definitive-c-...
- tluyben2 5y agoI read many computer books and magazines from the 60s, 70s and 80s. It is really interesting from many sides; some logic explanation books from that era I find better programming beginner explanations than modern books. Modern books usually skip rigid logic introductions but are more about tooling, hello world and then more examples of practically implementing working solutions with that knowledge. Which contains a lot of plumbing including logic but gives the beginning programmer the idea that low level stuff is somehow mashed in with the high level stuff. I had many juniors crash on that; they cannot keep them apart at first and worry about implementation details while the actual logic/algo basically has in no way at all formed in their head. Even in asm books they would show flowcharts of the logic first and then try to implement those flowcharts while many modern things assume you have that global idea and jump right into the details. I never sweat the details until I need to which seems to make me a child of those times, which I am of course. On the flip side, these old books also discuss far more low level stuff, some to the gates level.
- agumonkey 5y agoSimilarly, vintage army videos about analog computers, mechanical couplings (hydraulic, differential) or even waves are extremely high quality. Practical yet precise enough.
- hnthrowaway0315 5y agoExactly. I found myself fascinated about these vintage army videos. Vintage training videos from the 70s/80s are also very good. Compact, effective, no bullshit, and occasionally a sense of humor.
- Enginerrrd 5y agoI also find a common theme in vintage training videos: They don't assume the audience is an idiot. I find that the more dumbed-down the information is, the less trust they placed in the audience, the more they felt complled to entertain rather than inform the audience, the worse the result is typically. I find this to be true and very relevant in modern education. You don't need to gamify mathematics. You need to clearly communicate just how awesome and interesting mathematics itself is.
- Klaster_1 5y agoCan anyone help me find the book? I remember it vividly as a child in 90s, translated into russian, so not new. It had very distinct illustrations with lots of pointing fingers rolling on wheels (pointers?) and samples of same program in different programming languages, like Lisp or Fortran.
- EdwardCoffin 5y agoI'm trying to find a book that sounds similar, one I read in the mid-1980s, in English. Can you recall any more details? I don't particularly recall distinct illustrations from mine, but they could have been there. I am sure the one I read had Fortran, Basic, Assembler, Forth, Apl, and PL/1. I'm not sure mine had the same program for each language, but the theme seemed to be giving a taste of each language, but not getting too deep into any of them. I think the one I am trying to find had a mostly orange cover and was a hardcover-sized paperback.
- Klaster_1 5y agoI don't really remember much about the contents, it was too advanced and foreign for me back then. It was hard cover, pages of about A4 size, the cover was gray with thin white horizontal lines. One of the pages contained the famous photo of "first actual case of a bug". The illustrations were in the 80s corporate style with subtle gradients.
- markus_zhang 5y agoGreat post! I'm wondering if the original BIOS manual still useful for today's, say, malware reaearchers?
- bombcar 5y agoSometimes original codepaths (such as BIOS) are still present in modern machines, but basically forgotten. In those cases you may be able to execute code that hasn't been tested/expected in quite awhile. However, I think the raw BIOS functions don't work in extended mode, but I may be wrong.
- hnthrowaway0315 5y agoThanks, I know nothing about the BIOS and other related hardware topics. Does "extended mode" mean UEFI? I guess an introductory OS lecture is going to be helpful.
- bombcar 5y agoExtended mode means - 32 or 64 bit mode, once "thunked" into that I believe you can no longer access the BIOS directly. So even if there are exploits lurking, they wouldn't affect modern OSes which are all at least 32 bit now. This is specifically to the x86 family, it's possible that some other chip still has original code ready to go even in 32 or 64 bit mode.
- hnthrowaway0315 5y agoThanks for the explanation! I Googled a bit and found the topic fascinating (especially the ones regarding malwares that are particularly difficult to remove)
- sillyquiet 5y agoTangentially (?) I would not underestimate the impact the manuals of various early computers had on young programmers. I wore my Vic 20 manual out copying out programs from it while learning not only BASIC but some pretty fundamental stuff about computer architecture. It was so significant to me I had to buy a copy from eBAY decades later to keep on my shelf.
- kjellsbells 5y agoi assert that the very practice of typing listings from books and magazines back in the day was exactly the sort of slow paced repetition that was required for really deep memorization. i can still remember PEEK and POKE from BBC Basic 40 years later.
- BaseballPhysics 5y agoA bit of an aside: > "Clean-room design" was an underhanded way to legally reverse engineer and clone a competitor's product. It works like this: engineer A produces a specification after studying the competing product, a lawyer signs off on the spec not including copyrighted material, and engineer B re-implements the product from the spec A created. A and B have the same employer, but since they're not the same person there's technically no copyright infringement. This technique was used during the fiercely-competitive market rush of early personal computing. What a weird way to position this. There's nothing "underhanded" about it. There is literally no copyright infringement in this case. It's pure reverse engineering as is done in many other industries and fields. And the outcome is increased interoperability and improved competition by eliminating artificial barriers of entry in the market. Without it, the computing world would be a very different place, and I doubt anyone would like it. In fact, the market was far from "fiercely competitive" prior to the IBM BIOS being reverse engineered. Before that work was done, IBM basically had a lock on the PC market. It wasn't until the clone rush of the 80s that prices came down and computing became accessible to everyone. Hell, IBM valued that near-monopoly so much they introduced the MCA bus in the hopes of locking the PC back down. Fortunately their competitors succeeded in establishing open alternatives, including PCI and so forth, and the rest is history. I wonder how this author feels about the Google v Oracle lawsuit regarding Google's reimplementation of a bunch of core Java APIs...
- teh_klev 5y agoEISA was the rest of the industry's middle finger response to IBM's MCA: https://en.wikipedia.org/wiki/Extended_Industry_Standard_Architecture https://en.wikipedia.org/wiki/Extended_Industry_Standard_Arc... As a former field engineer I was glad to see the back of MCA.
- BaseballPhysics 5y agoAh! Thank you! I knew PCI was a later standard, but I'll be damned if I could remember the one that preceded it...
- 5y ago
- drittich 5y agoI had that exact BIOS Interface Technical Reference manual, which (along with one describing the FAT, I think) were the only technical books that came with my PCjr. I spent the 10 hour drive home after purchasing it reading them, assuming that was the stuff I needed to know. I subsequently had a quite granular mental map of how higher-level software interacts with the hardware through BIOS and DOS interrupts, and knew a lot more than I generally needed to about where the MBR is stored, disk cluster size, etc. It was difficult times to learn about computers - no friends used them, there was no internet, so any knowledge acquired was hard-earned, and tended to really stick.
- tsumnia 5y agoI actually started a small collection of old children's programming books [1, 2] a few years back. I've done some research regarding "typing practice" for programmers and how older generations did not have the luxury of copy/paste. I think one of the aspects that helped students overcome the technical barrier was the fact they had to reimplement the code themselves, rather than cloning a git repo. [1] https://boingboing.net/2016/02/07/usborne-releases-free-pdfs-of.html https://boingboing.net/2016/02/07/usborne-releases-free-pdfs... [2] https://en.wikipedia.org/wiki/Micro_Adventure https://en.wikipedia.org/wiki/Micro_Adventure
- asciimov 5y agoOne of the problems I faced when my family got our first computer in '97 was there was no included programming environment on Win 95, not even a Basic interpreter. I remember my local library was full of those kids programming books with little games you could type in, and I had no way of putting them in and running them. Worse, the only programming books I could get running back then were those "Learn Java in 24 Hours" style books that came with a cd that included a compiler, but no IDE. I remember giving up after a lesson or two because all I had was notepad to type in the code, and the errors thrown were too complex to understand. (Probably a missed semicolon.)
- mysterydip 5y agoI believe win95 still had qbasic (with its built-in IDE and help/examples) in the Windows folder, but it wasn't in the Start menu anywhere. May have been on the CD instead.
- ghaff 5y agoThe FORTRAN Coloring Book is quite the amusing little programming book for the late 70s. https://www2.seas.gwu.edu/~kaufman1/FortranColoringBook/ColoringBkCover.html https://www2.seas.gwu.edu/~kaufman1/FortranColoringBook/Colo... What makes it even more amusing is that people on this forum, even if they don't know FORTRAN would find it ludicrously elementary considering it was actually the textbook for an MIT class at the time. (It was basically a programming course for non-CS/EE engineers and the assumption was basically that they had never touched a computer before.)
- DerArzt 5y agoThat brings to mind the kind of thing that the Poignant Guide to Ruby[1] or Land of Lisp[2] were going for. [1] https://poignant.guide/book/ https://poignant.guide/book/ [2] http://landoflisp.com/ http://landoflisp.com/
- decebalus1 5y agoI sometimes wonder if in the near future we'd have programming historians to dig up old brilliant but forgotten ideas, which were not feasible back then, but might add value now with our new computing capabilities.
- Jtsummers 5y agoArtificial neural networks, which underlie most of deep learning, is an example of that. Maybe not totally forgotten, but set aside multiple times in history due to issues around practicality. There are probably a few more of these out there, but it's one of the best known ones.
- howard941 5y agoAdam Osborne from Osborne & Assoc. wrote a number of highly readable perfect bound books in the mid 70s in his Introduction to Microcomputers series. Volume I "Basic Concepts" covers everything from gates and truth tables to common assembly language instructions. Later volumes targeted assembly language for specific processors of the day such as the 8080 and 6502. I learned to program from these books (and K&R). Osborne & Associates went on to sell a portable CP/M machine that was very bulky and heavy but earned the right to be called portable.
- topkai22 5y agoThis made me think of “Head First Design Patterns”, a book whose content has aged fairly well, but whose cover and typesetting have not. https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124 https://www.amazon.com/Head-First-Design-Patterns-Brain-Frie...