Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yes, we had Pascal and C in the 80s. But what kid growing up in the 80s would go out of their way to purchase a Pascal compiler and learn an academically oriented language when their home computer comes with a very accessible built in programming language, providing direct access to sound and graphics and all the things they need to program their very own game? That most of their friends also had access to and for which the computer magazines at the time provided program listings with detailed explanations? The rare kid that wanted to wring out more performance than BASIC could provide was happy to explore the depths of programming in assembly. I know I had my share of fun making a connect-4 player in Z80 assembly that used the color attribute memory on the ZX Spectrum to search all variations. Learning Pascal a few years later in my CS studies was early enough for me.


> But what kid growing up in the 80s would go out of their way to purchase a Pascal compiler and learn an academically oriented language

Me, and most of my friends pirated Turbo Pascal and had a blast with it. This was the early 90s mind you. Rapid Windows GUI prototyping, inline assembly and compile to .EXE, way better than qbasic / gwbasic of before. And it took years for Visual Basic to catch up (if it ever did).


The 90s is significantly later though. In the mid-1980s I had (access to) a computer with 4096 bytes of RAM. Few enough that you could have a printed chart of what they're all for because that's just 64 x 64 grid.

Because the BASIC interpreter lives in ROM, that's "free". Some of the 4096 bytes is house keeping data for the system, but most of it can be used by your program and your data. Whereas Pascal doesn't live in the ROM, so if we're going to run Pascal software the entire Pascal runtime must fit in RAM before our program and data.

By the late 1980s I had a computer with 128kB of RAM, and sure that might have been a good place to try Pascal, if I'd been aware of Pascal, but I was not.


Yes, to anyone who was there the difference between computing in 1980 vs 1989 is night and day. Personal computing changed completely and you really either wanted assembly or BASIC (OK Fourth if you're kinky) in the early 80s with 4k of RAM... because that's what other people had. TurboPascal was released about '84, but I didn't see anyone using it until '86.

I feel like Pascal was a nice gateway into C from Fortran/BASIC, but it arrived so late I'm not sure it was really efficient in terms of learning.


In 1986 and early 1987, PC's did not have more than 640kb of RAM, just about all the programming tools for IBM PC's were limited to 64kb program size, and there were all kinds of really mickey-mouse ways to try to get around those limits. There were 80286 computers that could use 16 MB without too much trouble, but in 1987 programming tools that could use the full 640 kb of the 8086 and link separately compiled code showed up (e.g. Turbo Pascal 4.0), the same year the the 32-bit 80386 desktop PC's were launched. Borland's Pascal and Delphi pretty much matched the capabilities of Microsoft's C and C++ through those first disorienting years of change.


I definitely had Turbo Pascal in the 80's as a 16/17 year old. Started with version 2.0, in 1985. I still have a Turbo Pascal 3.0 manual and a set of 5.5 manuals (the latter of which included a nice little booklet intro to OOP.) Just checked, the copyright page of the 3.0 manual is copyright 1983, 1984, 1985. The 5.5 manual is 1987,1988. I managed to get a summer job programming in Turbo Pascal in 1987.


In 1980s I used (pirated) Hisoft Pascal on a Zx Spectrum clone (48 KB of memory). It wasn’t as nice as Turbo Pascal but it was great for computations - by 8 bit standards it was very fast. I learned about Pascal from a computer magazine article that disparaged Basic and encouraged “structured” programming.


>> But what kid growing up in the 80s would go out of their way to purchase a Pascal compiler

On the IBM PC, Turbo Pascal was cheap and hugely popular in the late 80's and early 90's for hobbyists. Mind-blowingly faster than BASIC and you could mix in assembly. Lots of demos and games (and BBS doors) were written in Pascal.

http://archive.gamedev.net/archive/reference/listed82.html?c...


In 1983 Turbo Pascal sold for about $50.00 meaning some 40 years later that price would be equivalent to about $250.00 given an inflation figure at about 3.5% per annum. By comparison, a very expensive IBM PC shipped with a free version of Microsoft BASIC burnt into the ROM.


True, but by comparison Microsoft BASIC was, for lack of a better word, useless for anything serious.

Plus, don't forget hobbyists would 'borrow' software from each other, you'd get a free (possibly older version) of a compiler with a book...

I think I paid $69 for Turbo Pascal (spent all my birthday money in 1992), previous to that I had an old version of Microsoft Quick Pascal that was only $14.95 from Surplus Software. As well as Turbo C 1 that came with a book from SAMS publishing.


Not contradicting you, just adding the context that there was BASIC compilers that could speed things up significantly. Not sure of the cost or the the relative performance, but it was fast enough to build commercial products with.


This is a very good description of precisely what happened. People forget that Pascal & C compilers were not only unusual/academic, they were also very expensive - $300-$500 or more, and C was not ubiquitous then, pascal was more common, and (like C) there were several incompatible variants competing for marketspace. For a young person who has (perhaps only barely) been able to afford a Commodore, Atari 400/800, TRS-80 or the more expensive Apple ][, and additional huge expense for a compiler was very likely out of the question.

I was in a computer club and I remember a big bearded guy from IBM (one of the club founders) introducing a new programming language called "C", and thinking "why bother, when you can just code in assembly?"

My experience was with the Apple ][.

Instead of Pascal or C, almost everyone went from Applesoft Basic straight to assembly, with LISA being the tool of choice. (Laser Systems Interactive Symbolic Assembler - https://en.wikipedia.org/wiki/Lazer%27s_Interactive_Symbolic... written by Randy Hide, a noted Apple 2 expert who also wrote this guide: http://www.appleoldies.ca/anix/Using-6502-Assembly-Language-...)

We had 1Mhz. One "core". 48kilobytes of addressable ram (actually less, once the buffers for video space were subtracted). That's an extremely limited space.

Of course the workflow was awful. boot up. Open your editor. Edit your source code. Save to disk. Quit your editor. Run the assembler. No errors? quit and exit to DOS. Reboot & run your new code. (If the program were large, boot to DOS tools disc and copy the code from one floppy to another, then boot that new floppy.) Lather, rinse, repeat.

Applesoft Basic and Assembly were enough for me, until I took my first professional programming job in the 80s and learned Pascal to code for the Lisa and then the Macintosh. I learned C in the late 80s for Windows 2.1, 3.0 and then C++ (beginning with the Microsoft C++ beta compiler distributed on something like 20 5.25" floppy disks. I moved to C# as soon as Microsoft introduced DotNet and others in the decades since, but I never had as much pure joy as the time I spent on my Apple ][. I still have it, and remarkably it still runs 100%, and most of my floppy discs (memorex! gorilla!) still work, even though I used a "nibbler" tool and used both sides. At $5 each (!!) for 80k of storage we had to stretch the budget.


Many people's (including mine) first experience with Pascal was with Apple Pascal on the Apple II. This was a port of the UCSD Pascal system by Apple itself and was basically its own operating system with its own editor and even disk format. It compiled to "P-code" which meant in theory you could run your compiled software on the various big machines UCSD was developed for (not that I ever tried that). Yes, it was pricey if purchased legally, but as with almost all Apple ][ software, that wasn't how people generally obtained software.

https://en.wikipedia.org/wiki/Apple_Pascal


I also finally got to try out UCSD Pascal for the Atari 400/800. It was an awful experience using multiple floppies and having too many phases or whatever to edit, compile, run a program. That cured me of any programming language FOMO for decades. There was a cool Action![0] language cartridge for the Atari 8-bit which was awesome, it was lower level than C and felt like writing high-level assembly.

Using MS C (version 3 and onward) on PC and Megamax C on Atari ST were great though. I didn't run into C++ until the 90s on Windows, NT and OS/2.

[0] https://en.wikipedia.org/wiki/Action!_(programming_language)


> Yes, we had Pascal and C in the 80s. But what kid growing up in the 80s would go out of their way to purchase a Pascal compiler and learn an academically oriented language when their home computer comes with a very accessible built in programming language, providing direct access to sound and graphics and all the things they need to program their very own game?

Me... I saved and bought a pascal compiler for my C=64.


You would buy, or rent from the local library, a book for ZX Spectrum and type that Pascal compiler source code in.

https://worldofspectrum.net/pub/sinclair/books-pics/p/Pascal...


That never happened. At least, not in my circles. The progression was typically Basic of some variety (whatever your system shipped with), peek & poke, machine code, assembler and later on either C or Turbo pascal assuming enough time had passed.

Pascal on 8 bit was just too damn slow compared to the alternatives to be very useful and compile times were horrendous. Even the university students that had access to Pascal compilers for the most part only used them to turn in their assignments and avoided it for everything else.

I did a little contest with a friend: we both wrote a chess program, he wrote his state of the art with a ton of optimizations in Pascal, I wrote mine in assembler. His program never stood a chance against a very simplistic implementation that only had minimax and a greedy (strictly material based) evaluation routine.

Good times :)


I had a TRS-80 color computer that had BASIC built in and the first alternative language I got was a “editor/assembler” ROM cartridge.

By the mid 1980s they came out with an operating system called OS-9 which was a multitasking OS inspired by UNIX.

https://en.wikipedia.org/wiki/OS-9

You could get a few languages for that, including a C compiler. A lot of people were using C on CP/M so I would type in programs from Byte magazine. I wrote a FORTH (in assembly language) for OS-9 that was subroutine threaded and unusually had a C like API to access files instead of the block based I/O most FORTHs had.

By the late 1980s I had a 80286 machine and wrote a lot of Assembly, C and Turbo Pascal. I thought Turbo Pascal was better than C but switched to C when I got to college because it was portable to the Sun workstations they had. By the time I got to grad school I got a 486 and switched to Linux.

Personally I liked 8086 assembly a lot and even though the segmentation scheme it used could be awkward I thought it was fun to code.


I chose C (Turbo-C) because it was much better at strings than Pascal: specifically it had strdup() and their length was not limited to 255 characters. Also C had escape sequences- actually Turbo Pascal had them, not sure about standard Pascal.

I think earlier versions of Pascal had only fixed length space padded strings.

Yeah, 6809 and 8088 (arguably an 8-bit CPU) supported C just fine. The other 8-bits, not so much. I wish the CoCo had been a better computer than it was (crappy keyboard, not a real serial port, terrible video). My Atari 800XL was better except for its CPU.


Strings with maximum length are a bummer but null terminated strings have their own problems and are part of the whole "unsafe at any speed" nature of C.

The thing about the CoCo was that Radio Shack sold an absurd number of peripherals for it.

I got a "multi-pak" which would let me plug in four devices to the cartridge slot and I had a real UART for it. The built-in sound was awful but you could get an Orchestra-90, a speech synthesizer cartridge, etc. Most of the hardware and software at the time supported hardware flow control which made the bit-banger serial report more reliable than you might think at low speeds.

The video was a real problem, I think a lot of software didn't get ported to the Coco because everybody thought 40 column text was bad enough, who wants to deal with 32? For instance I never saw the Infocom games being available for the Coco although I found out just recently that Infocam had made a Z-Machine interpreter for it. Eventually they came out with a Coco 3 that had 80 column text and high resolution modes with a lot of colors but it was getting late at that point.


We (my friend and myself who had identical machines) managed to squeeze 64x32 (256x192, so the font (4x6!) wasn't exactly spectacular but it worked well enough for real use) out of the 'high res' monochrome graphics mode (PMODE 4) and that really made life easier.


The fixed string were a thing in ISO Pascal, most dialects had better string support, and even ISO Extended Pascal ended up improving them, although by then no one cared.


There was a UK clone of the CoCo that had a half decent keyboard, the Dragon 32 (actually: it had 64K if you tickled it just so).


I'm currently running CP/M, on a Z80 single-board computer with 64k RAM.

Compiling a simple snake, or tetris game, takes about two seconds. CP/M with turbo pascal is pretty fast.

I started my journey with ZX Spectrum BASIC, then z80 assembly, before jumping to MS-DOS and x86 assembly. Learning C, and other languages, didn't start until my 16-bit days.

(Though I have a memory of receiving a FORTH system for the ZX Spectrum I don't think I did anything useful with it, or fully understood it given that I was about 15 at the time.)


Very nice, what are you running, one of Ciarcia's boards or something else entirely? And what do you use for mass storage?

When I was in 8 bit territory the best I could get was 360K floppies and running any kind of serious compiler required multiple floppy swaps to get the passes in. 6809 with 64K RAM was the best 8 bit system that I had, the next best was a BBC Model B with a very much maxed out Solidisk (more than maxed out, we ran more banks than were officially supported).


A random board I came across by accident - low production run, but decent despite that.

The board uses an USB-stick for storage, formatted as a FAT filesystem which makes exchanging files between this and another system easy - though of course you can transfer files over the serial port.

The biggest issue is that the board has only 62k of RAM so I'm stuck with CP/M 2.2, rather than 3.0 which requires paging-support. Still I can run infocom games, BASIC, Turbo Pascal, and other retro things.


I'd love to know more about your board, it sounds like a very interesting one. Is it in S100 bus format or something bespoke?


Something bespoke.

My code repository contains a link to a youtube channel where the board was discussed, and where I found it randomly. But sadly the upstream site of the provider and the (useful) forums it hosted are gone unless you use the wayback machine:

https://github.com/skx/z80-playground-cpm-fat


As an alternative - Agon Light 2 (eZ80 CPU). By default it comes with BBC BASIC modified to take advantage of 24 bits addressing, but it can run CP/M if you want. The nice thing about Agon is that it can run standalone if you add to it a keyboard and a VGA display.


Writing complicated software in assembly is a pain. The famous "Wizardry" (one of the earliest CRPGs released in 1981 for the Apple ][ and eventually ported to other systems) was written in Pascal. Making all the code to support the various character classes, weapons, monsters, etc. was far easier in a reasonable structured language rather than either Basic or assembly.


Hm. I actually found assembly to be quite manageable. It required a lot of discipline but then again, that goes for most programming languages. The bigger problem is the use of local variables and parameters in assembly isn't exactly a 'free abstraction', but once you have a mechanism for that (relatively easy to set up using macros) it all becomes much more manageable (but then you're 20% on the road to writing a C compiler...).


I remember more than once disassembling pieces of C code and loudly complaining about the poor quality of it while hand optimising it by deleting about half the instructions even after I got my Amiga. On the C64 the notion of C or Pascal didn't cross my mind - a few BASIC compilers were somewhat moderately popular.

E.g. Oasis Software had White Lightning FORTH ad Basic Lightning[1] and a few others. I never tried the FORTH version, but Basic Lighting and the successor Laser Basic and Laser Basic Compiler started with a bunch of BASIC extensions and eventually added compilation on top of that. The extensions did things like install raster interrupts to virtually increase the number of sprites and provide sound routines, as well as add pre-emptive multitasking(!) on the C64. If I remember correctly, 3-5 BASIC tasks + sprite animations could run concurrently - I don't recall seeing much point, because around then I started with assembler and cycle-counting raster interrupts was suddenly where it was at.

I vividly remember the demo programs the screenshots on the page linked below are from, though...

Who'd want Pascal when you had stuff like that, though? My introduction to Pascal came on my dads boring and slow ITT XT PC, mostly out of curiosity as to how anyone could use a machine that was so obviously inferior to my Amiga - monochrome, no bitmap graphics, no proper sound, less memory (I had a 512KB expansion, for a full megabyte)... Of course it had a harddrive, but it also costs 3 times as much... But I did end up experimenting with Turbo Pascal and some dBase for a while.

[1] https://www.jimbrooks.org/archive/programming/forth/WhiteLig...


When I bought Turbo Pascal in 1987, the retail price was $59.95 (USD), IIRC. A little earlier it was less, $39.95 IIRC. Pascal was an academically-oriented language, which would only let you use variables correctly according to their declared type, but Borland Pascal included a very useful and sensible set of loopholes for getting around all that in the many cases when that was necessary to make a program useful in the real world. It was a non-academic implementation of an academic language.


My first programming language was Commodore BASIC. It was already there when you booted up the machine, loading another compiler never crossed my mind.


You are spot on, was there. The Ataris and ostensibly the Timex/Sinclair's were doing graphics from the very beginning, with their built in BASICs; typing in programs from the popular magazines. The Atari MAC/65 assembler came in 1982; the cartridge in 1984. Manx C in 1986 for Amiga. My school taught BASIC from "Micro-Soft" on an Altair. I went directly to doing bit level ops on Burroughs mainframes directly afterwards. And I still have all my Lattice C software for my Amiga circa 1990.


By the way, the original Atari models, the 400 and 800, did not have BASIC built in. (They may have been bundled with the BASIC cart, I don’t know.) Subsequent models had it built in.


> what kid growing up in the 80s would go out of their way to purchase a Pascal compiler and learn an academically oriented language

I learned Pascal on my Atari ST as a 18yo. I had already done commercial games for years in assembly for the ZX Spectrum and had learned m68k, but writing GUI programs for the ST in assembly seemed very annoying. Purchasing the compiler, though... was not really what happened.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: