The axe and the knife are considered the most important inventions in human history. What are the software equivalents? With software, there’s a blur between the conceptual (something like Formal Logic) and the actual (an IDE), so it’s harder to answer this question as categorically as I would like without broadening the boundaries to computing in general. Never deterred by inadequate specs, however, a few candidates come to mind:
Compilers: the process of transforming one high-level language into a low-level equivalent is vital in enabling the rapid advancement of computing and lowering the barriers to entry to the point where programmers actually constitute a large workforce instead of rare specialist interest.
The Internet: not exactly software, but the collection of protocols which qualify it under the fluid non-definition given above. I have to swear by the dissemination of information and communication and information harvesting as pivotal enablers in software development.
Public key encryption: the Internet and peer communication in general would be decisively hobbled were in not for the ability to establish trusted relationships between computers.
The OS: bootstrapping and a run-time environment for assembly files are indispensable to both user and developer alike, lowering development and usage skill barriers to the point where computing could actually become a public industry.
The GUI: Mouse- and windows-based interfaces have not only accelerated the speed at which we can use computers, but transformed our mental conceptualizing of the abstract relationships in information technology.
