# What fields of computer science would change in a world with mechanical computers?

In this world, after Babbage designed his analytical engine, research lead to developpement of mechanical computers based on Babbage's model but with tinier and tinier metal pieces (going on the nanoscopic scale in the twenty-first century).

Assuming that all computers in widespread use follow this mechanical model (more or less improved on during the centuries) would the field of theoretical computer science have developped differently and if so what areas would be different?

• Mechanisms with moving parts are suffering much more from wear and tear than mechanisms without them. Modern CPU with over a billion transistors can run for years non-stop. Similar mechanical device is virtually guaranteed to have multiple mechanical failures at any given time. Sep 29 '17 at 21:03
• @Alexander I wonder if it would be possible to design some sort of redundancy system to compensate for failures. Modern hard disks fail pretty often so we use RAID systems and just continually replace drives as they go down. I'm pretty sure mechanical computation devices would fail more quickly than modern hard disks do, but as long as they don't fail too fast it might be possible. Sep 29 '17 at 21:17
• @MozerShmozer Hard drives are already considered a dead end technology today for those exact reasons. If they weren't cheaper than SSDs, almost nobody would use them. Sep 29 '17 at 21:21
• @MozerShmozer it all depends on rate of failure. With clock speeds in gigaherzs, steel parts should fail before the first second ends. Some exotic zero-friction nanomaterials should fare better. Sep 29 '17 at 21:29
• Mechanical calculating machines are slow and utterly, completely, totally unreliable. There is no way on this green Earth to make an electromechanical (or steam powered mechanical) computer even remotely approaching the vast computing power of a CP/M system with 64 kilobytes of RAM and a 2 MHz Intel 8080. Mechanics just doesn't work this way. Sep 29 '17 at 21:31

Computer Science would develop more or less in a similar way to ours. CS is more related to math, and theorical models (for example a Turing Machine, which is typically described as a mechanical device) but not necesarilly to specific implementations (for example: transistor based computing).

In that sense, CS would have evolved to take as much computing power from their machines as possible, considering their constrains and advantages (in the same way that we do).

In our case we don't invest too much resources thinking in algorithms or uses for those kinds of machines (because electronic machines are good enough for us), but we know some actually cool algorithms what are only viable on such kind of machine, for example Bead Sort ( https://en.wikipedia.org/wiki/Bead_sort ), which could implement sorting in $O(1)$ or $O(\sqrt{n})$. Also, for cryptography it may be somewhat useful, as ther would be random sources everywhere.

Also, probably an architecture that would be worth exploring could be an analog of FPGA: such kind of machines could reconfigure themselves easily, they even could transport logic parts between places in the machine.

I think that ther the uses of computers would focus on batched, not interactive, computing loads, where big machines compute large loads of data, slowly but with a high throughput. Probably similar to what we know as MIMD, in contrast to what we usually use (SIMD, SISD).

And as a final comment: most of our computers are Turing equivalent, and there are Turing Machines built using mechanical components, so they would capable of computing exactly the same algorithms as us (given enough time). Here is a mechanical Turing Machine for your delight: https://www.youtube.com/watch?v=vo8izCKHiF0

• +1, what I wanted to say. Computer Science is not about computers. Calling it Computer Science is really a misnomer, it is like calling Astronomy "Telescope Science". Sep 30 '17 at 2:36
• @Jörg W Mittag - and yet without telescopes, Astronomy would be vastly different. Sep 30 '17 at 23:39

Mechanical computers would never become as advanced as electronic ones.

Because of limitations that moving mechanical parts impose on design, mechanical computers can never reach speeds and memory volumes that even 1980s PCs were displaying. A large scale, multicore design may approach this level, but mechanical units would be failing at 1000s times faster rate than computer chips.

Probably, the most advanced mechanical computer will be at the level of 1962 Atlas, with multiple blocks needed to be replaced and repaired on continuous basis.

Given those limiting factors, computer science will be severely hampered. It would still excel at creating and implementing efficient algorithms, but large scale programs would be above its reach. Basically, human time would be cheaper than computer time, so the focus would be on developing bug-free programs before they see their first execution.

Putting mechanical computers on rockets experiencing high-g acceleration would also be out of question.

• Your 1000s times faster is out by a few orders of magnitude. :-) Sep 30 '17 at 13:51

I think there might be some advances, but they wouldn't be in the hardware. It would be in Algorithms.

I feel pretty sure that the limits of a purely mechanical system would be realized very quickly and a transition to electrical computers would happen in fairly short order.

Algorithms, however, are a different story. With your Babbage mechanical thinking engines you are putting the ability to perform complex mathematical functions reliably and quickly in to the public consciousness several decades before it happened in the real world.

It's kind of hard to put words clearly around the concept, but If you have ever known a computer science student at a University, you can almost see how their thought processes change from year to year, class to class. A simple sort program for a freshman may be fifty lines long, but the senior does the same thing in four lines. This is because they are conditioning themselves to think about problems in a certain way, to use algorithms. The ideas of what can be done sometimes runs ahead of the machinery that can do it. Now imagine what elegant solutions would be coming out today if the training to think in Algorithms had an extra 50 years to develop. I would guess that any given program would be more efficient than our worlds equivalent, on equivalent hardware.

Moore's law might still apply, but it's effects wouldn't be felt as much until the transition to electric machines.

I'm guessing the end result would be that If you take a machine from our world vs. one from your world with equivalent clock speeds and such, you world's machine would act like it's a faster machine because of more elegant and efficient software.

(Apologies if I'm not being really clear, I can see the answer, but am having a hard time expressing it well)

• I disagree that there would be better algorithms given 50 years of advancements. The algorithms depends on the hardware too much for there to be standard development from pure algorithms to advance much faster than hardware. An example would be almost all modern machine learning/data analytics are using the principles laid out decades ago. We only got such a rapid advance because we now have hardware to run them and thus refine them, the the decades in between, very little could be done to accelerate the designs without working machines simply working from theory. Sep 29 '17 at 22:56

Assuming that you mean mechanical computers were pretty much all there was in your world by the 21st century, then everything runs a lot slower than we're used to.

Modern transistor based computers have billions of circuits that run almost as fast as the speed of light. A mechanical computer will never get anywhere close to that. I don't think a binary mechanical computer would ever ge much faster than the valve based machines we saw soon after WW2.

Then there's the physical aspect. A mechanical computer will always be a lot bigger and heavier than its digital counterpart. Good luck getting one of them inside an Apollo era space capsule, so your space program will be very primitive if it even exists at all.

This would also have a big impact on military technology which I don't think would progress much beyond our level in the 1950s. Missiles, combat aircraft, tanks, subs all make extensive use of small but powerful computers.

Power demands would be much higher too, in fact it'd probably be prohibitively expensive for anyone but corporations and very rich individuals to run and maintain them.

A more subtle change would be the lack of any sort of GUI. The computers themselves wouldn't have the computational power to run anything but text based menus. If you've played the Fallout games think of their Pip-Boy interface. There'd be no WWW and without that then the Internet wouldn't have gone mainstream. It'd exist but the userbase and use cases would be like 1970s IRL.

There's a lot of knock on affects. No space program and a relatively primitive military would mean that technological progress in general would've slowed to a crawl. So if the kids aren't playing video games (coz there aren't any), there's no Faceborg, no smartphones and no endless march of CGI assisted "blockbusters" in theatres every couple of weeks, then what are they doing ? They're probably more culturally inclined than in our world, probably more outdoorsy too.

• You talk about some of these knock off effects like they are a bad thing..... Sep 30 '17 at 1:40

Ironically enough, high performance computing (HPC). Mechanical computers would be millions of times slower than electronic ones, and HPC is the field of trying to get the most out of ANY kind of computer, from the 20 cent processors to the \\$5000 processors. It is finding the algorithms and code organization to use the hardware at its peak efficiency to get the most work done per second.

Other fields would be the death of Compilers; nobody would write anything except in the assembly language of the computer, because that is one way to get the most out of it. Mid level languages like C or Fortran typically run at around 10% of peak; the same computation written in assembler (with some knowledge of how the computer processes instructions) can achieve 75%, and with tuning, sometimes 95% of theoretical peak.

High level languages (Javascript, python, Swift, C++, C#) and object oriented languages would simply not exist, they often achieve less than 1% of peak. The whole field of Compiler theory and optimization would likely not exist.

Likewise for AI, we would have few if any games (or only simplistic games like Pong). No cell phones. Communications would still exist, but Internet entertainment would not.

Realistic physics simulations for fluid flow, weather, etc would probably not exist or would be quite simplistic (and therefore of very rough precision).

I am talking about literally a million times slower, perhaps more, with the very best possible mechanical computers. They would not be for the public; they would be now what they were for in the 1950's and 1960's, big business accounting and record keeping, glorified calculators for solving physics and math problems.

• Got a reference for your efficiency claims of mid level languages? Because the whole point of optimising compilers is to produce code more efficient than we can.
– Phil
Sep 30 '17 at 7:39
• @Phil my PhD in Computer Science, like some of those at this link quora.com/… -- and you can google other answers your self. Compilers aren't better than skilled humans at assembly; they are optimized to be better then their own very general methods of producing code, from something easy for a human to write. The compiler only makes YOU fast at coding, with less error and quicker changes: they don't make fast code, they chase pointers, they spill registers to memory unnecessarily, and generally their code runs at- (cont) Sep 30 '17 at 10:08
• -Cont: The speed of memory, not the speed of numerical computation, which is hundreds of times faster. that is because to run at the speed of the floating point engine or register level operations with single cycle latency requires a synthetic pipeline of cache levels to supply the data; from memory to L3 or L2, then L1, with an order of magnitude more cycles of latency for each. Compilers can't do that because they don't understand the code they compile; they do keyhole optimizations to elim obviously unnecessary inst, Then interpreted or bytecode languages are even worse, yet another layer. Sep 30 '17 at 10:16
• I laughed at C++ being called "high level" Sep 30 '17 at 11:06
• @Wlerin All object oriented languages are inefficient, because they chase pointers: Objects are passed as memory pointers (addresses) which must be read and resolved to a real page address, in order to read or execute anything contained by the object (a variable or routine), which may be another pointer, and lead to another... resolving an address to finally get something into a register can take numerous round trips to memory. Which programmers can't really structure reliably for high perf, whilst they have 100% control of organizing memory in assembler. Less maintainable, but much faster. Sep 30 '17 at 11:12

The computer hardware side would be vastly different, but that doesn't necessarily mean the code would be different at all. Theoretically if it were possible to make fast mechanical computers they would likely also work by preforming vast strings of binary calculations.

Unless they were to design a computer where each switch had more than an on/off state, instead having three or more states.

• In the beginning there were decimal computers, and some tricky Russians even studied computers working in the balanced-3 base (with digits minus 1, 0, and 1). If you read the original Art of Computer Programming by Donald Knuth you will see to what lengths he goes to make sure that the example MIX code works in the same way on a binary and a decimal computer. Sep 29 '17 at 21:35

Computer science would be the same because the field is more about math than computers or science. Mechanical computers would eventually have to go digital anyways as analogue systems are just not easy to manipulate and design logic around. Eventually digital mechanical computers would get ousted by electronic digital computers we have today because they are just simply less efficient.

• Well that or the mechanical computers would be replaced by bio-chemical computers like the human brain. These could be better than traditional electronics. Sep 29 '17 at 21:14
• Considering that we aren't at biochemical computing, it's impossible to know if that is inevitable. They do offer advantages today but it might just be that digital computing will eventually outperform biological brains anyways. Sep 29 '17 at 21:17
• The biological elements of the human brain are far more analogue than digital, but orders of magnitude more complex and efficient than any analogue devices we have developed so far. Sep 30 '17 at 1:42

Unfortunately we will never get to the level of speed that we are now, and things will be incredibly complicated to do. Now, once any known programming language and (by some miracle) a monitor is implemented to work with a mechanical computer that runs exactly one program at a time on it written in that language we are essentially at a level relative to (I believe) that mid-60's early 70's in terms of computer science. The reason for this is that computer science does not care about hardware. It only cares about what basic operations the hardware performs, which make up its machine code.

The core problem here is one that plagued early computers that were mechanical rather than digital, which is that you cannot have binary. Now don't get me wrong, you could compute the binary representation of some number or vice versa. The issue is that memory was encoded via gears. Have you ever seen a 2 sided gear? It's a bad idea. This means that things like adding circuits and other basic operations have to be done for several cases. However, when we do it in binary we can think of everything as a series of component wise boolean operations on vectors of true/false values. This is essentially the great benefit of electrical computing and it's great hurdle. When people thought to make the switch they were forced to do binary because of there were only two wavelengths that the hardware could produce. That led to a somewhat better way of thinking about such things. Ironically most routers use 32 or sometimes 64 different waves to compress the data down since it is now feasible to do that sort of thing.

Now turing machines, automata, algorithms, programming languages and a lot of the other more design oriented concepts might advance the same. They are still concepts interesting to study and they lie more on the end of computational theory rather than actually implementing concepts or testing them on a machine.

Unfortunately regardless of mechanical speed or durability you have a fatal flaw in your mechanical machines which mean that computers will never develop to where they are now without a switch to electrical or some augmentation.

Light consists of photons which can be produced/released by a release of energy. Light is how computers communicate (wi-fi, cellular signals, radio waves, etc.). It also how we are able to see the monitor. The fundamental flaw is that machines without electricity will not be able to produce light waves like this. It just doesn't happen. Otherwise ordinary fires and humans walking around could create interference. You need electricity to do that. Therefore your mechanical computer world will not develop computer science to the strength it is today. The reason why that will happen is because there will be no monitors. There will be no personal computers. There will be no internet. Taking this out of the picture will reduce your world's level of advancement in every field drastically. Plus, without people taking an interest in computer science that are not in government positions or in large research facilities... you've heavily limited the number of people who might advance the field by a large number. It might even be considered nothing more than what it was meant for, which was a tool for performing mathematical computation. Nothing more, and nothing less.

There will also be no sophisticated flying machines to speak of. Without the advanced systems there are now, passenger jets would be off the table. This also heavily drops the level of advancement in your world.

There would be no word processors, no hand calculators to speak of, and no databases. Even if the latter two existed, the former would be limited to complex series of operations being entered into a typewriter to be read back through and print a document.

Ultimately, anything can be made with your mechanical computers that anyone else can make with an electrical computer assuming the former is turing-complete. However, the issue isn't one of capability. It's an issue of it being unfeasible and uninterpretable. Imagine computing a number and a series of pegs raising into the air to represent the binary version of the number. It would be a very strange calculator. Without monitors, editing documents of any form would be challenging.

Interesting enough though, the only issue for blind users would be the lack of a sound interface. However, I could see such people adapting quite well to a mechanical interface that uses raised and lowered portions to form a "monitor".

In fact, I will correct myself from earlier. We can have monochrome screens, but that is it. Essentially we can raise and lower portions of a flat plane to make an image.

Ultimately though without the invention of the internet, this site wouldn't exist. And therefore there it one thing that your mechanical computers will never have.

• There's no need to link to the question at the end. :-) Sep 30 '17 at 13:57
• @wizzwizz4 indeed there is. It ruins the joke to not have it there. Sep 30 '17 at 22:23
• It was the switch to digital/binary that made all this possible, not the switch to electronic per say. As Attanasoff found, without digital/binary, there is no efficient electronic. Oct 4 '17 at 13:52
• @JustinThyme the only reason we switched to binary was because electricity required it. Digital only resulted from the usage of electricity. Unless you mean radio when you refer to digital? However, last I checked radios and things using digital signals only developed because of electricity. You cannot produce light waves without electricity or some form of radiation. Oct 4 '17 at 16:58
• @ Typhon You are absolutely correct. Attanasoff wracked his brains, trying to figure out how to store numbers in decimal, using electricity. He got in his car and just drove and drove. Stopped at a pub when he got thirsty. The idea hit him out of the blue - on.off. Without this 'aha' moment,we would not have the computers of today. At the time, everyone dismissed Boole's ideas on binary and logic as poppycock - a curiosity at best. Oct 4 '17 at 18:40

Babbage's 'computer' was basically a programmable calculator, that used base ten, not binary. We would probably not have formulated our concepts of digital logic and binary. Some early, powerful computers (the PDP line) were analogue, base ten. They would be great for arithmetic, but a lot of our AI is based on binary concepts (true/false, yes/no) and truth tables, which Babbage's calculator did not handle.

The first programmer is recognized as Augusta Ada King-Noel, Countess of Lovelace, who worked with Babbage to write program code algorithms for a programmable calculator that was never built, and therefore the code was never used.

Ada Lovelace's notes were labelled alphabetically from A to G. In note G, she describes an algorithm for the Analytical Engine to compute Bernoulli numbers. It is considered the first published algorithm ever specifically tailored for implementation on a computer, and Ada Lovelace has often been cited as the first computer programmer for this reason.[66][67] The engine was never completed so her program was never tested.[68]

link For insight into the potential for mathematicians that such a programmable calculator as Babbage's could ascribe to, follow the link.

They would be great for engineering, for example, or financial applications, or for creating tables (artillery tables, for example).

• I am adding this as a comment. Arguably the single most important advancement in contemporary computer science was the switch from analogue decimal to digital binary. The first persons to do this built the Atanasoff-Berry Computer. Interestingly, this was discovered by a lawyer doing research to nullify the Sperry-Rand patent on using binary for computers. Legend has it the idea came to Atanasoff while in the process of getting drunk in a pub after a frustrating day in the lab. Sep 30 '17 at 1:54