14

A while ago I did read on the web a page whose topic was more or less:

Real men write [insert lowest level language here]

(a similar page would be this Reddit thread)

If we quickly tour some of the rudimentary methods:

  • assembly, yes
  • machine code and binary, certainly
  • punch cards and mechanical switches, yes

I can't find anything more rudimentary than mechanical switches but I don't know in the end.

What is the most rudimentary input method a platform has ever been programmed in?

Clarification:

I am asking about what used to be the most tedious way to program a machine, whether it would be a programming language difficult to read for human beings, a physical approach such as using punch cards, or even at the electrical level such as directly connecting cables or soldering.

  • 12
    xkcd.com/378 – JeremyP Apr 30 at 9:05
  • 3
    I have a hard time to understand what exactly you ask, as switches can mean anything from switches to enter digital data - which in that case is close to the possible minimum (sans serialisation) or switches/plugs within a machine (think analogue computer). So you may have to clarify this a bit. – Raffzahn Apr 30 at 9:28
  • 3
    I agree, emacs :) – dashnick Apr 30 at 11:13
  • 2
    I think Babbage's Analytical Engine would have used a hand-powered drill to make holes in wooden punch cards. – Brian H Apr 30 at 14:53
  • 3
    I had to get up in the morning at ten o'clock at night, half an hour before I went to bed, drink a cup of sulphuric acid, work twenty-nine hours a day down mill, and pay mill owner for permission to come to work, and when we got home, our Dad and our mother would kill us, and dance about on our graves singing 'Hallelujah.' But you try and tell the young people today that, and they won't believe you. – Tommy Apr 30 at 17:16
31

ENIAC was programmed by physically wiring the "program" on a plugboard:

enter image description here (picture from Wikipedia: https://upload.wikimedia.org/wikipedia/commons/7/7e/Eniac_Aberdeen.jpg)

And since the question is not limited to digital computing, analog(ue) computers were often purpose-built; there is probably nothing more rudimentary than directly building your machine to perform whatever it is you need it to perform.

Or, if they were "programmable", you "programmed" (speaking about electronic ones) them by connecting and adjusting parameters of electronic components, amplifiers etc; often (but not necessarily) using a plugboard:

enter image description here

(picture from Wikipedia: https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/EAI_580_analog_computer_plugboard_at_CHM.jpg/249px-EAI_580_analog_computer_plugboard_at_CHM.jpg)

  • 4
    This answer reminds me of a list I once saw: It was a list of around thirty different machines that claimed the title "first computer ever built." Of course Eniac was on that list. But there were others, that came after Eniac, whose sponsors would claim that Eniac wasn't really a computer because it wasn't a stored program computer. – Solomon Slow Apr 30 at 13:13
  • Had this been split into two answers, I would have to upvote building a new analog computer every time. However, I would also nonvote the plugboard answer, as I agree with @user's reasoning. – DrSheldon Apr 30 at 16:02
  • 1
    There's actually a level "lower" than plugboard - wire wrap. – Tacroy Apr 30 at 19:34
  • Seems like we'll hardly find lower-level than that! – Aybe May 1 at 4:59
  • 2
    Interestingly, ENIAC switched away from that programming model a few years after it was built. The plugboard-style rewiring model programming was based on a scheme that used the switchboards (constant tables) to hold a rudimentary sequential language, and later punchcards. – mschaef May 2 at 13:58
21

On many early machines it was common to enter a minimal bootloader via switches on the front panel. The switches represented binary bits, with another switch to enter each word and advance the address counter.

Of course any arbitrary code could be entered that way. It was, for example, possible to load a BASIC interpreter that way.

I'd say that was more rudimentary and laborious than even the plug boards mentioned by Radovan, given that plug boards are non-volatile but the switches needed to be flipped hundreds of times every time the computer was powered up or the memory was overwritten.

enter image description here

  • 4
    Having done code entry this way on an IMSAI back in the day, let me just say it was awful. I didn't do it twice. – Will Hartung Apr 30 at 21:09
  • Lee Hart's 1802 Membership Card (a simple computer currently sold in kit form) is programmed in similar fashion. – supercat May 6 at 20:04
12

The Apollo Guidance Computers stored their programs in Core Rope Memory. These read-only program memories were manufactured with the program fixed in them, and could not be changed after being manufactured. Manufacturing consisted of workers meticulously weaving wires through magnetic cores. A machine controlled by punched tape positioned a guide and the operator passed a sense line through the core (to store a 1) or around the core (to store a 0). Each core stored 192 bits (12 words) so there were potentially 192 sense lines threaded through each core.

From Wikipedia:

Software written by MIT programmers was woven into core rope memory by female workers in factories. Some programmers nicknamed the finished product LOL memory, for Little Old Lady memory.

The cores in core rope memory were not the ferrite cores used in core memory, but formed from Permalloy ribbon wound around a non-magnetic steel bobbin. The cores were 0.249" in diameter, much larger than ferrite cores.

The program memory (in six core rope modules) had 36,864 words of 16 bits, or 589,824 bits. That's a lot of weaving!

  • 1
    @KenShirriffn Thanks for the very helpful edit. – Wayne Conrad May 7 at 19:38
9

I'll vote diode ROM matrices, soldered in place.

Arguably, hardwiring the data bus to NOP to free run the CPU counts as well, but some may consider that an outlier as it's just "one instruction".

But, yea, hardwiring your code, "coding with sparks", doesn't get more basic than that.

4

Much of the Atlas supervisor (i.e., what we'd now call the kernel of the OS) was stored in 'fixed store', which was constructed of ferrite and copper slugs inserted into a mesh. 8K words x 48 bits.

This might make you think a little harder before deploying your latest kernel update :-)

4

Two entries. The Jacquard Loom. Or the IBM 407.

The Jacquard loom could be "programmed" by a sequence of punched cards to produce the same woven pattern over and over again. The punched cards were not made out of cardboard, but the idea is similar. Wikipedia Article.

The IBM 407 was a punch card driven accounting machine. The data was on punched cards, but the "program" was not. A removable plugboard carried a collection of wire patchcords that connected the electronics in a certain way. By removing one plugboard and replacing it with another, the behavior of the machine could be radically altered. This could be thought of as "loading a different program". Wikipedia Article. Plugboards for different standard functions of the machine were kept available for operators to make use of. Coming up with a new plugboard is analogous to "programming the 407".

Other answers make reference to the use of plugboards in early computers, like the ENIAC.

  • 1
    Care to expand on this? – Mark Apr 30 at 21:54
  • 3
    It is amazing that there is almost a century between the Jacquard loom (1804) and the book organ (1892), although the analogy seems obvious nowadays. – Leo B. Apr 30 at 22:05
  • Indeed, there is a restored Jacquard loom at the Herbert Museum in Coventry, UK and the punch cards used to programme it look remarkably like those used in the early days of computing. – Mark Williams May 7 at 15:58
3

What about the teacher calling out instructions in English for this "computer" processor made from a classroom of children?

From about 1:00 https://youtu.be/f1DtY42xEOI

  • 1
    This is interesting, since although the actual input mechanism appears primitive, the storage cells (bits) are nevertheless capable of independent processing :-) – another-dave May 7 at 22:08
2

A number of entries here could be classified as "blind programming", where the people actually inputting a program have no understanding of what the program does. Probably a group of people (programmers and verifiers) had to plan out a step-by-step sequence of what the computer is to do (the program) Someone then, probably with a pen, pencil, or typewriter, wrote a procedure for them (an implementation), and other people had to produce it. Pretty rudimentary indeed, with the people at the top of the design having no idea if it will work until it is all put together.

This would not be an answer without offering another such scheme, perhaps the most commonly implemented of all. Consumer computer magazines of the 70s, 80s, and 90s (e.g. Creative Computing, Compute!, and RUN) would offer their readers programs to type in. These started out as BASIC programs, providing modifiable examples of how to program. To save magazine space, these BASIC programs seldom included any significant comments, and often no structural formatting such as indentation. Still, a lot of us appreciated the working examples.

The next step, clearly less rustic than other answers, and my actual blind programming answer, was for the magazines to offer type-in hex machine code for assembly language programs. Sometimes they didn't use hex, but some extended alpha-numeric sequence encoding the program in a typeable format. Either way, the audience had no idea of program logic, they were just typing in often many pages of arbitrary sequences. Likely, each line of input data would include some sort of checksum value, helping to reduce the likelihood in input mistakes. The magazine also offered either a typable BASIC program or a downloadable program one could get from the magazine's BBS. These would accept the long stream of hex or general alpha-numeric values, verify the data lines during input, and build an executable program. When done, subscribers would store this final program to tape or floppy, and run it. (You could also save partially typed-in programs.)

  • 1
    When we were teenagers, my friend had a C116. One day he bought a magazine. In turns we read out and hacked in (rubber minikeys!) an amalgam of BASIC code, inverted control characters and HEX values, printed in fuzzy typeface on recycled paper. It didn't run. We cross checked the code on the blurry TV but didn't figure it out. We felt like idiots. Months later and we were presented two missing lines. This time the datasette failed. We fiddled around with the tape head and finally loaded and fixed the code. We felt like real men. The next day Chernobyl went up in smoke and we called for mum. – Uli May 7 at 2:04
  • 1
    @Uli Cool anecdote. Just to be clear, though, are you blaming Chernobyl on yourselves, the computer magazine, or the C116 – RichF May 7 at 2:14
  • (cont'd -- couldn't figure out how to edit comment with Android) ... or the C116? 😏 – RichF May 7 at 2:19
  • We lived in West Germany. We put on the TV to hook up the C116 and saw the breaking news. We were terrified. The day before we jumped for joy, because we fixed the code against all odds. Now there's something one can't fix. A nightmare of a nuclear power plant and a radioactive cloud over Europe. We realized how small and helpless we were. Life went on though. A few weeks later he bought a C64. For the rest of the year the din of datasette fastloaders drowned the constant crackle of geiger counters. Seemed like we'd only wasted an extra life... – Uli May 7 at 11:40
1

Even when programming in "high-level" languages (aka FORTRAN IV), input devices could be quite rudimentary. As an after-school activity, I got to punch code using an IBM Port-A-Punch, which was simply a plastic frame holding a pre-perforated 80-column card, with a stylus that you used to push out the chads to write statements in IBM card code.

Though the cards were 80-column format, they only had 40 usable columns; I think it was the even columns. This meant that every other column was effectively a space character, i.e., no holes punched. For FORTRAN code that doesn't matter [1] since spaces are ignored, except in Hollerith constants, so you doubled up the count.

Actually, we only had one actual Port-A-Punch to share between a half-dozen nerds, so I made my own: straighted-out paperclip expoxied into an old BIC barrel, polystyrene (styrofoam) backing pad. Totally crap, but totally available.

Programs were submitted by post office mail to be run on a 7094 under IBSYS using the PUFFT compiler. Half-a-week later you learned of your mismatched parentheses.

Kids today and their IDEs - huh! :-)

[1] Except that comment cards -- punched in column 1 -- were not possible with even-column pre-perforation. We had special cards with a machine-made hole in addition to the pre-perforation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.