The Story of Coding
From all our posts, articles and also the name of our organization: Turing Ninjas, you might make an educated guess as to what we are all about. And if this is the first article you’re reading, then no we don’t create AI-powered Android Hacker Ninjas ;). We teach programming to children and as part of our mission to increase technology literacy, we felt it is important to talk about how the world got here.
We wanted to show everyone the people who are responsible for the steps that led us to windows, android and AI, videogames. So here is a brief history of programming.
The first design of a computer and the first program.
It all began in the year 1843 when Charles Babbage, the proclaimed Father of Computer, journeyed to the University of Turin, Italy to discuss his designs for an Analytical Engine, the first mechanical general-purpose computer, with the Italian mathematicians. A young Italian mathematician named Luigi Federick Manabrea published the report of the discussion as an Italian article called “A Sketch of the Analytical Engine Invented by Charles Babbage, Esq”.
The Analytical Engine was a machine that read its instructions from punched cards. Different cards lead to different functions. This idea was based on the Jacquard Loom which was a device fitted to looms and could use instructions punched cards to print specific complex designs. The Analytical Engine used different cards to perform mathematical calculations instead.
This article was translated back into English by Ada Lovelace, a disciple of Babbage, who added her own notes to it. The notes themselves were almost thrice as long as the article and contained an algorithm to use the Analytical Engine to calculate a sequence of Bernoulli Numbers. In doing so, Lovelace became the world’s first computer programmer.
The Jump from completely mechanical to electromechanical systems.
We now jump into a different country and time, 1880s America. Following the “Reconstruction” period of time after the civil war, the new census had been taken. Back then, every person and all of their attributes (assets, diseases, etc.) were noted and grouped i.e. processed manually, which led to the process of finishing up all the statistics taking around 8 years each time and census had to be taken every 10 years which led to a lot of pressure to crunch the numbers as soon as possible.
Enter Herman Hollerith, an American businessman, inventor, and statistician, who at that time was a 19-year-old fresh out of the Columbia University School of Mines with an “Engineer of Mines” degree. He was a gifted statistician who pondered over how to make the census duration shorter.
One day, while traveling, he noticed how the train conductor noted the passengers’ characteristics like gender and skin color on their tickets using pliers to punch holes beside the printed text and got the brilliant idea to use this on a huge scale.
This led to the invention of the Herman Hollerith Tabulating Machine in 1890 which would punch cards that had 12 rows and 14 columns and consisted almost every characteristic needed. The people who took the census would punch cards for each person and their attributes and the cards would be fed into the machine. The Tabulating Machine would then read the cards by setting down small contacts onto the cards. Where there was a hole, the contact would meet another electric contact which was connected to a counter that would note down how many people had the characteristic.
Using the HHTC, the census could be taken and processed in a span of 2 years which reduced the original time taken by 6 years.
This was one of the earliest ways to explain programming where a set of conductors and counters would be used to input and store data based on prior instructions provided to the machine.
This also introduced the world to the use of electric tabulating machines in accounting and inventory. Herman later established his own company named “Tabulating Machine Company” or TMC which later joined up with four other companies to form the “Computing-Tabulating-Recording Company” or CTR. In the year 1924, CTR was renamed to “International Business Machines” or as we generally know it, IBM.
A control panel was added to later computers developed by IBM which let people reprogram their tabulating machines for different purposes. This has been continued down the generations onto the very early electronic computers as well.
How do we store the instructions as well as data electronically i.e fully electronic computing machines?
Another jump in time around 40 years ahead to the year 1936, on the campus of Princeton University, two men were discussing what would be the early research into AI. Alan Turing and John von Neumann met when the former had come there to get his Ph.D. and the latter was his math professor.
The next year, Turing went back to Cambridge and later was responsible for hacking the German communications during world war II. To know more about his story and contributions to mankind, click here.
John von Neumann, during the Second World War, was a part of the Manhattan Project which was responsible for the creation of the atomic bomb. After the war ended in 1945, an incomplete 101-page document written in ink by him called “First Draft of a Report on the EDVAC” was distributed by one of the security officers of a classified project called ENIAC which was trying to invent the general-purpose reprogrammable computer. The paper contained many ideas that were Dr.Turing’s.
The paper, along with many other ideas, had two concepts that directly affected the course of computer programming. The Stored-Program Concept or von Neumann Architecture spoke of how hardware should be kept simple and not be used for reprogramming. The software loaded inside would be tailored to have Instructions and Data and reprogramming would be done by loading different instructions. The Condition Control Transfer was the concept behind the later written IF, THEN and FOR statements. It spoke of how code could be divided into groups and that a program would not need to go in order but jump between blocks of code. This way, the process could be modified mid-execution depending on the result of previous blocks of code.
Both these concepts were realized in later Programming languages.
The next year, Dr. Alan Turing presented a paper on a stored-program computer similar to the one John von Neumann wrote about. But this paper was complete with detailed designs for a feasible computer called Automated Computing Engine(ACE). A pilot version was built in 1950 in his absence which was one of the first Stored-Program computers.
It’s no longer about using on 0s and 1s: The Second generation language i.e The Assembly Language.
An assembly language is the most basic of the human-readable languages. Until then all code was written in a series of 0s and 1s. They are exclusive to their systems i.e one language cannot be used for two different computers. Kathleen Britten developed the first assembly language at Birkbeck College in 1946 after she had returned from Princeton where she and her supervisor, and later her husband, Andrew Booth had met von Neumann (yup, small world).
We still use these languages for many things but they still remain machine exclusive. The code for things like device drivers, encryption algorithms, firmware for telephones, automobile fuel and ignition systems, air-conditioning control systems, security systems, sensors, real-time programs such as simulations, flight navigation systems, and medical equipment, Computer viruses, bootloaders, Reverse-engineering and modifying program files such as cracking copy protection of proprietary software or modding videogames is all assembly language.
Here, you can borrow my code for your machine: Third generation languages i.e. High-Level Programming Languages
Technically, the terms “first-generation languages” and “second-generation languages” weren’t coined until the arrival of the third-generation of programming languages. These languages are machine independent and favor the programmer more than the previous generations.
The first third-generation programming language was actually written by Konrad Zuse between 1942–1945 and was called Plankalkül(Plan Calculus). Sadly, it wasn’t implemented until the year 2000. He couldn’t pay the entry fee for his dissertation which caused a long delay before it was published.
In the year 1949, John Mauchly who worked along with von Neumann on the ENIAC and its successors created the Short Code. It worked with mathematical expressions and operations instead of computer instructions. But it still was better than the assembly languages before.
At the University of Manchester, Alick Glennie (the man to whom Turing’s chess program lost if you remember from our earlier article on him) developed a compiler called Autocode in the 1950s for the Mark 1 computer which was built by the university. A compiler translates one programming language to another and Autocode could be used as a programming language that translated higher-level code into lower-level automatically thus achieving great speeds of processing.
Back at IBM, in the year 1954, A computer scientist named John Backus who felt programming was quite difficult at the time assembled a team and built his own language called FORTRAN (FORmula TRANslation) which became the first widely used higher-level language and is still used in areas like numerical weather prediction, geophysics, computational physics and computational chemistry. It is optimized for high performance and is used to benchmark and rank the world’s fastest supercomputers. It was released publicly in the year 1956.
Two years later, in 1958, LISP (List Processor) was created as a practical mathematical notation for computer programs by John McCarthy. LISP’s source code is made of lists. It quickly became the favored program for AI research.
Grace Hopper, a US navy marine in the year 1959, proposed her design for an English-based computer language that would focus on businesses at a two-day conference named Conference on Data Systems Languages (CODASYL). The language was named COBOL (COmmon Business Oriented Language) and was used in business, finance, and administrative systems for companies and governments. It isn’t present as much today due to the decline in its popularity and number of experienced COBOL programmers but the old systems like military and security systems along with numerous banking systems still use the same language which is leading to many companies trying to train more COBOL Programmers
BASIC (Beginner’s All-purpose Symbolic Instruction Code) was created by John G. Kemeny and Thomas E. Kurtz and released at Dartmouth College in 1964. It was aimed to be used by people other than computer scientists and mathematicians as well. It is an easy-to-understand programming language that was popular until 1980. It is not professionally used currently but it is used to teach the fundamentals of programming, even in schools.
Building on BASIC, Visual Basic was created in 1991. It has a beginner-friendly and graphic interface with objects that can be dragged and repositioned and is particularly useful in the creation of visuals.
A language known for its graphic capabilities, Logo, alternatively referred to as Turtle Graphics, was created by Seymour Papert in 1967. Logo is often used for young school children as a basic method of programming instructions into a computer to create a graphic. The turtle being used as the cursor is a tribute to the turtle toys that would draw things based on their programming back in the day.
1971 saw the creation of Pascal, a language designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal. It wasn’t in the market for that long with the C programming language completely displacing it during the late 1980s.
The Iconic C Programming Language was created at Bell Labs by Dennis Ritchie and Brian Kernighan the following year. It was the successor of the B language created by Ritchie and Ken Thompson. C was created to run on the Unix operating systems which was created by Dennis and Brian. During the 1980s, C gradually gained popularity. It has become one of the most widely used programming languages, with C compilers from various vendors available for the majority of existing computer architectures and operating systems. It is now the standard programming language.
C++ was developed by Danish computer scientist Bjarne Stroustrup at Bell Labs insince 1979 as an extension of the C language; he wanted an efficient and flexible language similar to C that also provided high-level features for program organization. The “++” comes from the ++ operator which means to increase by 1.
C# was developed in the year 2000 by Microsoft as a way to contend with Java. It is more object-oriented than C++ and is not backward-compatible, unlike its predecessors. It is understood that the “#” comes from two ++ stacked on each other.
James Gosling, Mike Sheridan, and Patrick Naughton released the Java language in June 1995. Java was originally designed for interactive television, but it was too advanced for the digital cable television industry at the time. The language was initially called Oak after an oak tree that stood outside Gosling’s office. Later the project went by the name Green and was finally renamed Java, from Java coffee, the coffee from Indonesia.
Python is another famous beginner programming language that lets users execute commands directly and freely without having to compile their language into lower levels. It was developed by Guido van Rossum and first released in 1991.
The Specialists of the Programming Language gang: The Fourth Generation Languages
The fourth generation of programming languages includes those that were built especially for specific areas of interest i.e. domains. For example,
SQL (Structured Query Language) was developed at IBM by Dr. Edgar F. Codd in the year 1974. It was built specifically to handle its databases. It was released commercially in 1979.
Unix Shell was developed to give Linux and other Unix-based-OS users a way to bridge the gap between computer scripts and user commands. It can be used to directly interact with the basic functions of the operating system. The original Unix shell was written in the mid-1970s by Stephen R. Bourne while he was at the AT&T Bell Labs in New Jersey. Bourne shell was the first shell to appear on Unix systems, thus it is referred to as “the shell”.
Oracle Reports was created by the company to develop reports against the data stored in their database. It came a long way from not even having edit functions to impressive GUI and comfort
Let me handle this, you do something better: The Fifth Generation Languages
The latest line of programming languages is being used in the AI field. These languages do the coding for the programmer and all the programmer has to do is ask the right questions. The fifth-generation programming languages are rule-based/production system problem-solving tools that convert normal human language into code by themselves. Some examples of these are:
OPS5 is the 5th version of the OPS developed by Charles Forgy in the late 1970s. It is the first language to be used in a successful Expert System (An AI that emulates a human with expertise in a field). It works by scanning the “working memory elements” which are the new temporary information you give to it and matching them with its rules in “Production” memory.
Mercury was developed at the University of Melbourne by Fergus Henderson, Thomas Conway, and Zoltan Somogyi and released on April 8, 1995. It is a functional declarative logic program i.e it follows a set of rules based on logic and assigns functions to various commands like call, store, add, multiply, etc. being declarative means it won’t show its work and will only give you the end result.
Phew, programming has a long history, doesn’t it?
Many, many people contributed to the evolution of programming and programming languages that brought us the screen of the device you are currently using. Sometimes people made remarkable inventions but were unheard of due to numerous reasons, for example, the case of Konrad Zuse who had invented a better programming language but couldn’t publish it soon enough.
We hope to accomplish two things from this article:
- Make sure credit and recognition are given where they need to be.
- Make our readers understand how many small steps were taken to make big leaps.
There is still a lot more advancement which the field of programming is yet to see. There’s still a lot more development to do in the field of programming. There still are people who can change the very methods we employ to take our world into the future. We teach our Ninjas programming languages not to prepare them for a slog of software jobs but to bring out the creativity that can be used to design multitudes of things. Want to know how children can create with the power of programming and technology, visit us at https://turingninjas.com/.
— — — — — — — — — — — — —
At Turing Ninjas it is our mission to help kids create with technology and make them future-ready. We offer a wide range of coding and robotics programs for young Ninjas aged 6 to 14 years of age. Our curriculum has been designed by qualified instructors and is project-based. We provide a unique and personalized learning experience that is tailored to your child’s needs as one-size might not fit all. Join us and give your child an opportunity to discover the world of programming!
Check out our Facebook page to see what parents have to say about our programs