The History of Computer Software and Programming Languages
Hardware and software must work together in order for computing technology to function properly. The hardware is the physical body of the computer system, while the software is the code that controls the hardware. Without software, or a computer program, hardware could do nothing at all, and without hardware, the software could not function, as it needs hardware to store it. Hardware and software are often tied to each other in that software is designed to run on certain computers or peripheral devices. However, in many cases, modern forms of computer code can be compiled into software that runs across different types of computer platforms. Computer hardware is created by hardware engineers such as computer engineers, while software is created by computer programmers, also sometimes called software engineers. Hardware engineers and programmers almost always work together to create computing technology, as the hardware and software must work with each other to create a functioning system.
- Useful Links for Computer Programming
- Introduction to Writing Computer Software
- Hardware and Software Learning Tools for Middle-School Students
- Altman Web Programming Resource
- Rich's Links Page
- Technical Resource Added
- Bob Bowman's Free Educational Technologies: Programming Links
- CMSC216: Introduction to Computer Systems
All computer software is created using some form of programming language. A programming language contains sets of instructions, usually human-readable, that direct hardware to perform actions of some sort. The most fundamental and low-level programming language is machine language, which is a set of instructions in binary (base-2) or hexadecimal (base-16) form that computing devices can read directly. Software is made of machine language, or machine-readable code, that computers can load and run directly. Most languages consist of code that must be processed by compilers, which turn the code into machine-readable language. Computer languages are typically classified into low-level and high-level languages. Code written in low-level languages, such as assembly language, are more hardware-dependent, more difficult to write and debug, and less likely to be portable between different systems. Assembler software uses this code to produce software that runs faster and uses less memory than software made from compiled code. High-level languages use code that is more readable by humans and enable programmers to avoid complicated low-level tasks such as working with specific hardware memory addresses and registers. Instead, programmers using high-level language can concentrate on things like subroutines and functions, variables, Boolean expressions, and other concepts. Examples of high-level languages include Basic, Perl, Python, and PHP. Interpreted languages like BASIC and Perl are even higher level in that they are compiled on the fly, which means they can be run immediately as soon as the code is written. Interpreter software must be written that runs on individual systems and architectures in order to run BASIC or Perl. Other languages, such as C, are considered to be mid-level languages due to their ability to work with assembly language and thus interface directly with computer chips.
- Computer Museum
- Computer History Studies
- Computer and Software-Related Links
- Apple II History
- UDP for Games: Encryption and DDoS Protection Software
- What Every Software Programming Project Needs
- PHP DriLL
- Monthly Read: Programming-Related Posts
- This Week in #Scala
- C++ Programming Techniques: Ultra-Fast Serialization of C++ Objects
The first mechanical computer was invented by an English mathematician named Charles Babbage in the 1800s. The Difference Engine, as he called it, was designed to be a calculator that worked with polynomial functions. It was followed by Babbage's Analytical Engine, which used punched cards to provide instructions for its operation. Fellow mathematician Ada Lovelace studied the Analytical Engine and wrote the world's first computer program for the device in the form of notes that explained an algorithm to calculate Bernoulli numbers.
In 1890, an American inventor named Herman Hollerith, founder of what would later be known as IBM, developed a system for using punch cards to more efficiently process United States census data. John Atanasoff and Clifford Berry developed the first digital electronic computer, the Atanasoff-Berry Computer, which they first conceived of in 1937 and demonstrated successfully in 1942. This computer, which used punched cards for input, was the first to use binary, or base-2, digits, and it used electronics to process calculations. These computers used low-level languages that worked only for those specific computers.
High-level languages began to appear in the 1950s with Fortran (short for "formula translation") and COBOL. These languages were the first to use code based on the English language to produce software for computers. BASIC, an interpreted high-level language designed for a wider range of computer users beyond the research world, first arose in the 1960s. Various implementations of BASIC became the primary language of the first microcomputers designed for home use, such as the Altair 8800, the Apple II, and the Commodore PET. The C language appeared in the late 1970s, and it and its descendants, C+ and C#, were designed to be portable, with compilers tailored to process the code into software that runs on individual systems. Perl was developed in 1987 as an interpreted, scripting language that functions like an advanced version of BASIC and has proven useful for many tasks, particularly producing certain applications for the Web, which first appeared in 1991.
- Computer Network Architects
- Programming Languages: CSCI-GA.2110-001
- Overview of Programming Languages
- CSC 447: Concepts of Programming Languages
- Microsoft Developer Network Academic Alliance (MSDNAA)
- The Sun Developer Network
- Welcome to the Application Development Network
- Network Applications Developer
- IT Network Specialist
Some form of training is required to be employed in the computer hardware or software industry. For hardware, formal training and at least a Bachelor of Science degree in an engineering field will be necessary. Those seeking employment as a software engineer will also need a college degree in a relevant field, although some inventors still start their own hardware design businesses without formal training. Also, a significant portion of programmers and software authors either find employment or even run their own software businesses without first acquiring a college degree in the field. They may make money developing and selling apps on the open market for computers and mobile devices. Professionals who take the informal route tend to learn on their own and make use of a wealth of online educational resources to hone their craft.
- Scientific Web Developer/Designer
- Can Your Programming Language Do This?
- Programming Languages Research at Penn
- Benjamin D. Serrette
- Computer and Information Technology
- Network Specialist
- Network System Developer
- SNAP Library 4.0, Developer Reference Documentation
- Java SE 7 Networking-Related APIs and Developer Guides