SlideShare a Scribd company logo
1 of 41
Download to read offline
Programming, Languages
An inComplete, inAccurate and Poignant reCAP!
(with apologies and thanks to James Iry)
(all pictures sourced from Wikipedia)
1801 : Jacquard’s head
Building on some preceding work, Joseph Marie Jacquard invents a method to use the
same loom to weave different patterns on cloth, by simply feeding different “chains of
punched cards” to it.
Each position on the card corresponds to a “raise” or a “lower” control for a weft
thread, depending on whether the position was punched or not.
IBM and Unix nerds of the time are not impressed, because the size of Jacquard’s
punched cards is not one of 80x10, 80x24 or 80x25!
Jacquard’s punched cards
Most famous image of early computing
1837 : Babbage’s design for Analytical Engine
Original Difference Engine intended to compute series of values of polynomial
functions automatically. But, it could not be completed.
Analytical Engine is designed as the first general-purpose computer with arithmetic
logic unit, branching, looping and memory. The design even has a printer and a curve
plotter for output! [This could not be completed by Babbage, as well!]
While the design is grand, Go programmers of those days find its lack of select
statement too limiting!
1842 : Ada Lovelace’s first algorithm
Ada translates Babbage’s lecture transcript from French to into English.
She then writes the world’s first algorithm: a sequential logic for the Analytical Engine
to compute Bernoulli numbers.
Unfortunately, the Analytical Engine is not yet available to actually run it.
Nonetheless, Martin Richards and Brian Kernighan are displeased to find that Ada’s
first algorithm is not written to print “Hello, World!”
1931 : Gödel’s and his Incompleteness
A maverick 25-year old Kurt Gödel publishes Über formal unentscheidbare Sätze der
"Principia Mathematica" und verwandter Systeme (On Formally Undecidable
Propositions of "Principia Mathematica" and Related Systems).
He proves that no computable axiomatic system could be both consistent and
complete. Moreover, the consistency can not be proved within the system.
Leading philosophers revel in the theorem’s ability to interpret life!
Conspiracy theorists, however, conjecture that his undecidability does not refer to
Russell’s work, but to the upcoming tabs vs. spaces debate!
1936 : Church’s lambda calculus
Alonzo Church comes up with a formal system in mathematical logic named “lambda
calculus” that invents all future programming languages!
It describes how any computation can be represented and performed using variable
binding and substitution. α-conversion, β-reduction, η-conversion and several non-
parseable symbolisms are distilled as the building blocks of all languages for
programming, humans, great apes and dolphins!
Lambda calculus is, however, condemned to obscurity because it does not follow the
syntax and the stylistic conventions of the yet-to-be-created Algol.
1936 : Turing and his Completeness
Not to be left behind, Alan Turing invents paper tape and brings back a machine from
future that reads and prints one prehistoric symbol per cell. The resulting universal
computing machine also invents all programming languages that will ever be.
Desirous of avoiding mutual patent litigation, Church and Turing then get together,
and publish the Church-Turing thesis. This establishes a duopoly in the field of
programming languages.
However, before an anti-trust case could be brought against the pair, Turing consumes
cyanide and goes into cryogenic freezing. [The ACM resurrects his spirit in 1966.]
1946-8 : ENIAC and SSEM
The Electronic Numerical Integrator and Computer (ENIAC) is announced to the
public as the world’s first general-purpose, programmable, digital computer. Lacking
storage, it requires the programmers to learn the machine code by heart, and shout the
sequence into it -- for every run.
Widespread protests and strikes by the budding Programmers’ Union result in the
development of the Manchester Small-Scale Experimental Machine (SSEM).
Nicknamed “Baby”, it can run stored programs.
Mainstream psychoanalysts expect that its nickname will play a role in soothing the
post-war subconscious anxieties of the members of the Union.
ENIAC
SSEM
1952 : UNIVAC I
Eckert and Mauchly create the UNIVAC I mainframe computer the previous year.
They show off its computing capability by predicting a 100-1 odds for Eisenhower to
win the US Presidential election. Mainstream media roots for Adlai Stevenson.
CBS’ news boss - unconvinced - decides to enact stage theatrics, and pretend that the
computer is not responding. Later, CBS says that the computer predicted 8-7 for
Eisenhower. Actual results are within 1% of UNIVAC I’s original prediction!
Luddites immediately denounce the creation of UNIVAC I as a big mistake, since it is
UNIVAC I that most likely evolved into Multivac, Planetary AC, Galactic AC, and
finally into Skynet.
UNIVAC I
1954 : The George system
Laning and Zierler decide that any computer that is not capable of performing algebra
computations is a dud. So, they create “George”, a compiler for algebra that provides
symbolic variables and automatic memory allocation.
To prove how good George was, Laning and Zierler decide to solve an aeronautics
problem that requires 7 differential equations. They write it in 2.5 hours, and it runs
correctly on the first attempt!
Tier 1 contractors lobby against George until it is removed, since programs that run
successfully on the first attempt could lead to gangs of unemployed programmers.
1957 : FORTRAN
SUBROUTINE BACKUS(I,B,M)
INTEGER I,M
DO 10 J=I-1,1,-1
10 B=B+(I*J)/M
RETURN
Engineering, weather, fluid dynamics, physics, chemistry, biology, …
R programmers of the time are overjoyed, because in FORTRAN R is real.
1957 : FORTRAN
1958 : LISP
(defun LISP (lambda-calculus ipl)
(progn (mc-carthy designs)
(let ((meta-circular (lambda (eval) (apply)))
(prim (car (cdr (atom list cons)))))
(steve-russell implements-eval))))
“This does not mean that I fail to recognise that Lisp is still #1 for key algorithmic
techniques such as recursion and condescension.” - Verity Stob
1958 : ALGOL
Not satisfied with FORTRAN, Backus drums up international support for a new
language in both the US and across the Atlantic. The result is International Algebraic
Language - the grandfather of a large branch of programming languages.
However, the research community involved in the international discussions of this
international language thinks so much in closed rooms, that it takes no input and
generates no output. The international language, thus, becomes academic!
In addition to the language itself, gives birth to Backus-Naur form.
Suspicious onlookers link its continuing influence - on the syntax and the structure of
modern programming languages - to mysterious activities of Illuminati.
1960 : COBOL
Government and industry pour their minds into a small hulk, to discuss a new
programming language.
The ingredients precipitate Cantankerous, Onerous, Boilerplate-Oriented Language
that cannot be parsed unambiguously, because it is too much like English.
By 1970, COBOL becomes the most used programming language in the world! In
1997, Gartner estimates that 80% of world’s businesses use over 200 billion lines of
COBOL code everyday!
"The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a
criminal offense." - Edsger Dijkstra
Generations
HARDWARE SOFTWARE
Mid-1940s : Thermionic vacuum tubes -
IBM 650
Machine languages
1956 : Transistors and the beginning of
miniaturisation - IBM 7090, Burroughs
B5000
Assembly languages
1964 : Integrated Circuits and unheard-of
logic densities - IBM 360/91
High-Level languages : FORTRAN, LISP,
ALGOL, COBOL
1964 : BASIC
10 Despite being experts in type theory and statistics, Kemeny and Kurtz decide that
non-scientists needed a programming language.
20 For this language for non-scientists, they choose scientist languages FORTRAN II
and ALGOL 60 as their inspirations.
30 The result is Boisterous, Animated Symbolic Instruction Code.
40 Survives through modern times (e.g. Microsoft Visual Basic.NET).
50 GOTO 10
60 RUN
1964 : APL
Inspired by Backus-Naur’s specification, Iverson imagines a multidimensional array at
the foundation of an unwieldy skyscraper.
In the interest of safety, A Programming Language is kept out of the hands of mere
mortals, by describing computation using a large range of symbols from mathematics
and modern art.
Nonetheless, it heavily influences modeling, spreadsheets, functional programming
and math software packages.
Psychologists attribute high enrolments of programmers into sanatoriums to early
exposure to APL.
1964 : APL
Pick 6 random numbers in ascending order
x[⍋x←6?40]
All prime numbers from 1 to R
(~R∊R∘.×R)/R←1↓ιR
Entire Conway’s Game of Life
life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
1965 : Simula
Nygaard and Dahl wish to describe the vast and deep heterogeneity of computer
simulations, mental imbalances and cosmic vibrations.
They decide to build a language - based on ALGOL 60 - introducing classes, objects,
subclasses, virtual procedures, coroutines and discrete event simulation.
The list is so big that it overflows into C++, Object Pascal, Java and C#. [Stroustrup
acknowledges that Simula 67 was the greatest influence on C++.]
Programmers continue to debate whether Simula’s name played a role in business
software vendors not showing interest in it.
1970 : Scheme
Steele and Sussman publish a series of “Lambda Papers” culminating in the web site
“Lambda the Ultimate Kitchen Sink”.
They Scheme together to introduce lexical scope, full recursion, tail-call optimisation
and strong functional programming support into LISP.
Unwittingly, they go on to introduce first-class continuations with :
(((call/cc (lambda (k) k)) (lambda (x) x)) "HUH!")
Steele and Sussman are still untangling their recursively tail-call-optimised ganglia
continuations to exactly understand why the above answers “HUH!”.
1970 : Pascal
Niklaus Wirth writes a book Algorithms + Data Structures = Programs. When
challenged to prove his point, he creates Pascal based on his ALGOL-W.
Pascal is an imperative and procedural programming language for structured
programming. Its fully nested structure means that a program, a procedure and a
function are described identically.
Features include records, enumerations, subranges, dynamically allocated variables
with associated pointers, and sets.
Critics, however, dismiss Pascal immediately, because it uses “:=” for assignment
instead of “=” like the not-yet-created C.
1972 : C
Ritchie invents a modern boomerang that has the shape of the English letter “C”.
Eager to provide maximum efficiency, he makes a cutting-edge of each edge of the
boomerang.
Consequently, all programmers who use the “C” boomerang have their fingers
chopped off, or suffer other severe maimings.
Pleased with the outcomes, Ritchie creates a programming language - also called “C” -
modeled on the “C” boomerang.
1972 : Prolog
Desirous of representing programs using Horn Clauses, Colmerauer and Roussel lift
first-order logic into a programming language.
Prolog is invented as a declarative language with program logic represented in the
form relations: facts and rules. The language attempts to prove the given query using
these relations.
Its performance is dismal, despite the Fifth Generation initiative’s push.
It shows the signs of a death by a thousand “cut”s. In the process, it degenerates into a
logical state that answers “No” to every query!
1973 : ML
Robin Milner creates ML, a language based on the M&M type theory.
ML begets SML which has a formally specified semantics.
When asked for a formal semantics of the formal semantics Milner's head explodes.
Other well known languages in the ML family include OCaml, F#, and Visual Basic.
-- James Iry
1980 : Smalltalk
After Smalltalk-71, Smalltalk-72, Smalltalk-75, …, Alan Kay and team finally release
Smalltalk-80.
Kay remarks that Smalltalk is “object-oriented”. To explain that, he says “Smalltalk
programs are objects, and their executions are activation records, which are themselves
objects.” When asked what objects are made of, he replies “Objects, of course!”
In Smalltalk, “3 + 4” means: the object 3 receives a message called “+” with one
argument, which is another object “4”.
Industry experts are so thrilled by the beauty of its concepts, that they have not yet
recovered enough to actually use Smalltalk.
1980 : Ada
Ichbiah’s Ada is a structured, statically typed, imperative, wide-spectrum, and object-
oriented high-level computer programming language, extended from Pascal and other
languages.
It has built-in language support for design-by-contract, extremely strong typing,
explicit concurrency, offering tasks, synchronous message passing, protected objects,
and non-determinism.
Its list of features being so long, people have not yet had time to learn enough of the
language to complete any large software project in Ada.
DoD declares the language a success, nevertheless.
1983 : C++
Bjarne Stroustrup comes across a humongous clay oven. He is seized by a powerful
desire to collect a large body of programming language features into it.
He then brews the contents in C, giving rise to C++.
C++ is so complex that he - and all the programmers in the world - fail(s) to write a
compiler for it.
Fortunately, Stroustrup discovers a wormhole that opens into a supercomputer from
future. He quickly writes a compiler facade for the wormhole. All C++ programs are
now sent into that wormhole for compilation.
Leagues of innocent C++ programmers puzzle over why their builds take so long!
1986 : Objective C
Cox and Love ponder the question of software reusability. Strongly aware of their
need to interoperate with C, they bolt on Smalltalk-like message-passing to C.
Accomplished initially as Object-Oriented Pre-Compiler, their creation has “all the
memory safety of C combined with all the blazing speed of Smalltalk.”
Historians suspect that an inadvertent word-level Spoonerism may have slipped into
that description of Objective C.
NeXT and, decades later, Apple give it an unexpected longevity.
1986 : Erlang
When field technicians refuse to travel to godforsaken corners in order to conduct
repairs of Ericsson telecom systems, Joe Armstrong, Robert Virding and Mike
Williams decide to write software that would never go down.
A new programming language is created. Initial interpreter, written in Prolog, wakes
up the next morning every time it is launched.
Bogdan and Björn write a new VM, titled Bogdan/Björn's Erlang Abstract Machine
(BEAM), which runs 40 times faster.
General industry outside telecom is not excited because of Erlang’s Prolog syntax.
1987 : Perl
Sorry to see APL’s legacy of beautiful symbols used all over programs go, Larry Wall
decides to reincarnate it in a UNIXy fashion.
The resultant scripting language soon begins to have a mind of its own, letting strings
be added to numbers, etc. The world hails the text processing capabilities of Perl.
Eric Raymond nicknames it “the Swiss Army chainsaw of scripting languages” because
of its flexibility and power, and also because of its “ugliness”.
Larry Wall serves a rejoinder describing Perl as the duct tape holding Internet
together, in a possible reference to its future role in serving CGI web pages.
1990 : Haskell
A large team of type theory nerds get accidentally shut in a cave. Their discussions
give rise to the design of a new programming language.
Haskell is born as a pure functional language with non-strict evaluation.
Normal programmers fail to understand its pure semantics and monads. Wadler
pacifies their apprehensions by answering “Nothing to get confused about: a monad is
nothing but a monoid in the category of endofunctors.”
A Haskell program written to interpret that explanation continues to evaluate lazily
(in true non-strict fashion). Its completion time is, by definition, not determinable.
Languages & Broad Families
● Imperative
○ Procedural
○ Object-oriented
● Functional
○ Strict
○ Non-strict
● Logic
● Message-passing
○ Synchronous
○ Actor-based
Languages & Performance
Rough buckets of performance
1. Tree-walk interpreters : Ruby <= v1.8.7, Io, the interpreter that you wrote when in
college
2. Bytecode interpreters : Python, Ruby >= v1.9, Lua, early JavaScript, Erlang
3. JIT compiled dynamically-typed VMs : modern JavaScript VMs, PyPy, LuaJIT,
Dart
4. JIT compiled statically-typed VMs : Java, C#
5. AOT compiled statically-typed : C, C++, D*, Go*, Rust
* Presence of GC reduces performance to Bucket 4 levels, usually.
sigma.ml@gmail.com
Discussion

More Related Content

Similar to Programming Languages: A Concise History

object oriented-programming
object oriented-programmingobject oriented-programming
object oriented-programmingRajendran
 
IT315B
IT315BIT315B
IT315Bearl86
 
Foundation of computing history final
Foundation of computing history finalFoundation of computing history final
Foundation of computing history finalRajith Pemabandu
 
CST 20363-Session 1.2-A Brief History of Computing
CST 20363-Session 1.2-A Brief History of ComputingCST 20363-Session 1.2-A Brief History of Computing
CST 20363-Session 1.2-A Brief History of Computingoudesign
 
Abriefhistoryofcomputers 121009151031-phpapp01
Abriefhistoryofcomputers 121009151031-phpapp01Abriefhistoryofcomputers 121009151031-phpapp01
Abriefhistoryofcomputers 121009151031-phpapp01Ishmael Ople-Oporto
 
2 evolution of computer systems
2 evolution of computer systems2 evolution of computer systems
2 evolution of computer systemsNymphea Saraf
 
EVOLUTION OF COMPUTER
EVOLUTION OF COMPUTEREVOLUTION OF COMPUTER
EVOLUTION OF COMPUTERfhemrosacia
 
Journey of computing
Journey of computingJourney of computing
Journey of computingTushar B Kute
 
GROUP5_REPORT (1).pptx
GROUP5_REPORT (1).pptxGROUP5_REPORT (1).pptx
GROUP5_REPORT (1).pptxRamirCuevas1
 
Assignment of History of Computer(F21-1872).pdf
Assignment of History of Computer(F21-1872).pdfAssignment of History of Computer(F21-1872).pdf
Assignment of History of Computer(F21-1872).pdfAtifmalik70
 
Timeline of Computer History
Timeline of Computer HistoryTimeline of Computer History
Timeline of Computer Historywizbee
 
Behind every invention there is a person who may be a dreamer, an el.pdf
Behind every invention there is a person who may be a dreamer, an el.pdfBehind every invention there is a person who may be a dreamer, an el.pdf
Behind every invention there is a person who may be a dreamer, an el.pdffashionbigchennai
 
CT1101 - Computer Technology
CT1101 - Computer TechnologyCT1101 - Computer Technology
CT1101 - Computer TechnologyPratik Pradhan
 

Similar to Programming Languages: A Concise History (20)

Pascal programming language
Pascal programming languagePascal programming language
Pascal programming language
 
Evolution4
Evolution4Evolution4
Evolution4
 
object oriented-programming
object oriented-programmingobject oriented-programming
object oriented-programming
 
IT315B
IT315BIT315B
IT315B
 
Foundation of computing history final
Foundation of computing history finalFoundation of computing history final
Foundation of computing history final
 
A brief history of computers
A brief history of computersA brief history of computers
A brief history of computers
 
CST 20363-Session 1.2-A Brief History of Computing
CST 20363-Session 1.2-A Brief History of ComputingCST 20363-Session 1.2-A Brief History of Computing
CST 20363-Session 1.2-A Brief History of Computing
 
Abriefhistoryofcomputers 121009151031-phpapp01
Abriefhistoryofcomputers 121009151031-phpapp01Abriefhistoryofcomputers 121009151031-phpapp01
Abriefhistoryofcomputers 121009151031-phpapp01
 
Computer History
Computer HistoryComputer History
Computer History
 
Rc 10.computers
Rc 10.computersRc 10.computers
Rc 10.computers
 
A brief history of computers
A brief history of computersA brief history of computers
A brief history of computers
 
2 evolution of computer systems
2 evolution of computer systems2 evolution of computer systems
2 evolution of computer systems
 
history.ppt
history.ppthistory.ppt
history.ppt
 
EVOLUTION OF COMPUTER
EVOLUTION OF COMPUTEREVOLUTION OF COMPUTER
EVOLUTION OF COMPUTER
 
Journey of computing
Journey of computingJourney of computing
Journey of computing
 
GROUP5_REPORT (1).pptx
GROUP5_REPORT (1).pptxGROUP5_REPORT (1).pptx
GROUP5_REPORT (1).pptx
 
Assignment of History of Computer(F21-1872).pdf
Assignment of History of Computer(F21-1872).pdfAssignment of History of Computer(F21-1872).pdf
Assignment of History of Computer(F21-1872).pdf
 
Timeline of Computer History
Timeline of Computer HistoryTimeline of Computer History
Timeline of Computer History
 
Behind every invention there is a person who may be a dreamer, an el.pdf
Behind every invention there is a person who may be a dreamer, an el.pdfBehind every invention there is a person who may be a dreamer, an el.pdf
Behind every invention there is a person who may be a dreamer, an el.pdf
 
CT1101 - Computer Technology
CT1101 - Computer TechnologyCT1101 - Computer Technology
CT1101 - Computer Technology
 

More from GeekNightHyderabad

Testing strategies in microservices
Testing strategies in microservicesTesting strategies in microservices
Testing strategies in microservicesGeekNightHyderabad
 
Scaling enterprise digital platforms with kubernetes
Scaling enterprise digital platforms with kubernetesScaling enterprise digital platforms with kubernetes
Scaling enterprise digital platforms with kubernetesGeekNightHyderabad
 
FreedomBox & Community Wi-Fi networks
FreedomBox & Community Wi-Fi networksFreedomBox & Community Wi-Fi networks
FreedomBox & Community Wi-Fi networksGeekNightHyderabad
 
Rendezvous with aucovei (autonomous connected car)
Rendezvous with aucovei (autonomous connected car)Rendezvous with aucovei (autonomous connected car)
Rendezvous with aucovei (autonomous connected car)GeekNightHyderabad
 
Role of AI & ML in beauty care industry
Role of AI & ML in beauty care industryRole of AI & ML in beauty care industry
Role of AI & ML in beauty care industryGeekNightHyderabad
 
Design lean agile_thinking presentation
Design lean agile_thinking presentationDesign lean agile_thinking presentation
Design lean agile_thinking presentationGeekNightHyderabad
 
Hardware hacking and internet of things
Hardware hacking and internet of thingsHardware hacking and internet of things
Hardware hacking and internet of thingsGeekNightHyderabad
 
Spring to Cloud - REST To Microservices
Spring to Cloud - REST To MicroservicesSpring to Cloud - REST To Microservices
Spring to Cloud - REST To MicroservicesGeekNightHyderabad
 
Building Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring CloudBuilding Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring CloudGeekNightHyderabad
 
Progressive Web Applications - The Next Gen Web Technologies
Progressive Web Applications - The Next Gen Web TechnologiesProgressive Web Applications - The Next Gen Web Technologies
Progressive Web Applications - The Next Gen Web TechnologiesGeekNightHyderabad
 
Scaling a Game Server: From 500 to 100,000 Users
Scaling a Game Server: From 500 to 100,000 UsersScaling a Game Server: From 500 to 100,000 Users
Scaling a Game Server: From 500 to 100,000 UsersGeekNightHyderabad
 
Big Data - Need of Converged Data Platform
Big Data - Need of Converged Data PlatformBig Data - Need of Converged Data Platform
Big Data - Need of Converged Data PlatformGeekNightHyderabad
 
Understanding the Intelligent Cloud
Understanding the Intelligent CloudUnderstanding the Intelligent Cloud
Understanding the Intelligent CloudGeekNightHyderabad
 
Geek Night 17.0 - Artificial Intelligence and Machine Learning
Geek Night 17.0 - Artificial Intelligence and Machine LearningGeek Night 17.0 - Artificial Intelligence and Machine Learning
Geek Night 17.0 - Artificial Intelligence and Machine LearningGeekNightHyderabad
 

More from GeekNightHyderabad (20)

Testing strategies in microservices
Testing strategies in microservicesTesting strategies in microservices
Testing strategies in microservices
 
Metaprogramming ruby
Metaprogramming rubyMetaprogramming ruby
Metaprogramming ruby
 
Scaling enterprise digital platforms with kubernetes
Scaling enterprise digital platforms with kubernetesScaling enterprise digital platforms with kubernetes
Scaling enterprise digital platforms with kubernetes
 
FreedomBox & Community Wi-Fi networks
FreedomBox & Community Wi-Fi networksFreedomBox & Community Wi-Fi networks
FreedomBox & Community Wi-Fi networks
 
Rendezvous with aucovei (autonomous connected car)
Rendezvous with aucovei (autonomous connected car)Rendezvous with aucovei (autonomous connected car)
Rendezvous with aucovei (autonomous connected car)
 
Role of AI & ML in beauty care industry
Role of AI & ML in beauty care industryRole of AI & ML in beauty care industry
Role of AI & ML in beauty care industry
 
Breaking down a monolith
Breaking down a monolithBreaking down a monolith
Breaking down a monolith
 
Design lean agile_thinking presentation
Design lean agile_thinking presentationDesign lean agile_thinking presentation
Design lean agile_thinking presentation
 
Scaling pipelines
Scaling pipelinesScaling pipelines
Scaling pipelines
 
Blockchain beyond bitcoin
Blockchain beyond bitcoinBlockchain beyond bitcoin
Blockchain beyond bitcoin
 
Http/2
Http/2Http/2
Http/2
 
Hardware hacking and internet of things
Hardware hacking and internet of thingsHardware hacking and internet of things
Hardware hacking and internet of things
 
Spring to Cloud - REST To Microservices
Spring to Cloud - REST To MicroservicesSpring to Cloud - REST To Microservices
Spring to Cloud - REST To Microservices
 
Serverless
ServerlessServerless
Serverless
 
Building Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring CloudBuilding Cloud Native Applications Using Spring Boot and Spring Cloud
Building Cloud Native Applications Using Spring Boot and Spring Cloud
 
Progressive Web Applications - The Next Gen Web Technologies
Progressive Web Applications - The Next Gen Web TechnologiesProgressive Web Applications - The Next Gen Web Technologies
Progressive Web Applications - The Next Gen Web Technologies
 
Scaling a Game Server: From 500 to 100,000 Users
Scaling a Game Server: From 500 to 100,000 UsersScaling a Game Server: From 500 to 100,000 Users
Scaling a Game Server: From 500 to 100,000 Users
 
Big Data - Need of Converged Data Platform
Big Data - Need of Converged Data PlatformBig Data - Need of Converged Data Platform
Big Data - Need of Converged Data Platform
 
Understanding the Intelligent Cloud
Understanding the Intelligent CloudUnderstanding the Intelligent Cloud
Understanding the Intelligent Cloud
 
Geek Night 17.0 - Artificial Intelligence and Machine Learning
Geek Night 17.0 - Artificial Intelligence and Machine LearningGeek Night 17.0 - Artificial Intelligence and Machine Learning
Geek Night 17.0 - Artificial Intelligence and Machine Learning
 

Recently uploaded

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Programming Languages: A Concise History

  • 1. Programming, Languages An inComplete, inAccurate and Poignant reCAP! (with apologies and thanks to James Iry) (all pictures sourced from Wikipedia)
  • 2. 1801 : Jacquard’s head Building on some preceding work, Joseph Marie Jacquard invents a method to use the same loom to weave different patterns on cloth, by simply feeding different “chains of punched cards” to it. Each position on the card corresponds to a “raise” or a “lower” control for a weft thread, depending on whether the position was punched or not. IBM and Unix nerds of the time are not impressed, because the size of Jacquard’s punched cards is not one of 80x10, 80x24 or 80x25!
  • 4. Most famous image of early computing
  • 5. 1837 : Babbage’s design for Analytical Engine Original Difference Engine intended to compute series of values of polynomial functions automatically. But, it could not be completed. Analytical Engine is designed as the first general-purpose computer with arithmetic logic unit, branching, looping and memory. The design even has a printer and a curve plotter for output! [This could not be completed by Babbage, as well!] While the design is grand, Go programmers of those days find its lack of select statement too limiting!
  • 6. 1842 : Ada Lovelace’s first algorithm Ada translates Babbage’s lecture transcript from French to into English. She then writes the world’s first algorithm: a sequential logic for the Analytical Engine to compute Bernoulli numbers. Unfortunately, the Analytical Engine is not yet available to actually run it. Nonetheless, Martin Richards and Brian Kernighan are displeased to find that Ada’s first algorithm is not written to print “Hello, World!”
  • 7. 1931 : Gödel’s and his Incompleteness A maverick 25-year old Kurt Gödel publishes Über formal unentscheidbare Sätze der "Principia Mathematica" und verwandter Systeme (On Formally Undecidable Propositions of "Principia Mathematica" and Related Systems). He proves that no computable axiomatic system could be both consistent and complete. Moreover, the consistency can not be proved within the system. Leading philosophers revel in the theorem’s ability to interpret life! Conspiracy theorists, however, conjecture that his undecidability does not refer to Russell’s work, but to the upcoming tabs vs. spaces debate!
  • 8. 1936 : Church’s lambda calculus Alonzo Church comes up with a formal system in mathematical logic named “lambda calculus” that invents all future programming languages! It describes how any computation can be represented and performed using variable binding and substitution. α-conversion, β-reduction, η-conversion and several non- parseable symbolisms are distilled as the building blocks of all languages for programming, humans, great apes and dolphins! Lambda calculus is, however, condemned to obscurity because it does not follow the syntax and the stylistic conventions of the yet-to-be-created Algol.
  • 9. 1936 : Turing and his Completeness Not to be left behind, Alan Turing invents paper tape and brings back a machine from future that reads and prints one prehistoric symbol per cell. The resulting universal computing machine also invents all programming languages that will ever be. Desirous of avoiding mutual patent litigation, Church and Turing then get together, and publish the Church-Turing thesis. This establishes a duopoly in the field of programming languages. However, before an anti-trust case could be brought against the pair, Turing consumes cyanide and goes into cryogenic freezing. [The ACM resurrects his spirit in 1966.]
  • 10. 1946-8 : ENIAC and SSEM The Electronic Numerical Integrator and Computer (ENIAC) is announced to the public as the world’s first general-purpose, programmable, digital computer. Lacking storage, it requires the programmers to learn the machine code by heart, and shout the sequence into it -- for every run. Widespread protests and strikes by the budding Programmers’ Union result in the development of the Manchester Small-Scale Experimental Machine (SSEM). Nicknamed “Baby”, it can run stored programs. Mainstream psychoanalysts expect that its nickname will play a role in soothing the post-war subconscious anxieties of the members of the Union.
  • 11. ENIAC
  • 12. SSEM
  • 13. 1952 : UNIVAC I Eckert and Mauchly create the UNIVAC I mainframe computer the previous year. They show off its computing capability by predicting a 100-1 odds for Eisenhower to win the US Presidential election. Mainstream media roots for Adlai Stevenson. CBS’ news boss - unconvinced - decides to enact stage theatrics, and pretend that the computer is not responding. Later, CBS says that the computer predicted 8-7 for Eisenhower. Actual results are within 1% of UNIVAC I’s original prediction! Luddites immediately denounce the creation of UNIVAC I as a big mistake, since it is UNIVAC I that most likely evolved into Multivac, Planetary AC, Galactic AC, and finally into Skynet.
  • 15. 1954 : The George system Laning and Zierler decide that any computer that is not capable of performing algebra computations is a dud. So, they create “George”, a compiler for algebra that provides symbolic variables and automatic memory allocation. To prove how good George was, Laning and Zierler decide to solve an aeronautics problem that requires 7 differential equations. They write it in 2.5 hours, and it runs correctly on the first attempt! Tier 1 contractors lobby against George until it is removed, since programs that run successfully on the first attempt could lead to gangs of unemployed programmers.
  • 16. 1957 : FORTRAN SUBROUTINE BACKUS(I,B,M) INTEGER I,M DO 10 J=I-1,1,-1 10 B=B+(I*J)/M RETURN Engineering, weather, fluid dynamics, physics, chemistry, biology, … R programmers of the time are overjoyed, because in FORTRAN R is real.
  • 18. 1958 : LISP (defun LISP (lambda-calculus ipl) (progn (mc-carthy designs) (let ((meta-circular (lambda (eval) (apply))) (prim (car (cdr (atom list cons))))) (steve-russell implements-eval)))) “This does not mean that I fail to recognise that Lisp is still #1 for key algorithmic techniques such as recursion and condescension.” - Verity Stob
  • 19. 1958 : ALGOL Not satisfied with FORTRAN, Backus drums up international support for a new language in both the US and across the Atlantic. The result is International Algebraic Language - the grandfather of a large branch of programming languages. However, the research community involved in the international discussions of this international language thinks so much in closed rooms, that it takes no input and generates no output. The international language, thus, becomes academic! In addition to the language itself, gives birth to Backus-Naur form. Suspicious onlookers link its continuing influence - on the syntax and the structure of modern programming languages - to mysterious activities of Illuminati.
  • 20. 1960 : COBOL Government and industry pour their minds into a small hulk, to discuss a new programming language. The ingredients precipitate Cantankerous, Onerous, Boilerplate-Oriented Language that cannot be parsed unambiguously, because it is too much like English. By 1970, COBOL becomes the most used programming language in the world! In 1997, Gartner estimates that 80% of world’s businesses use over 200 billion lines of COBOL code everyday! "The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense." - Edsger Dijkstra
  • 21. Generations HARDWARE SOFTWARE Mid-1940s : Thermionic vacuum tubes - IBM 650 Machine languages 1956 : Transistors and the beginning of miniaturisation - IBM 7090, Burroughs B5000 Assembly languages 1964 : Integrated Circuits and unheard-of logic densities - IBM 360/91 High-Level languages : FORTRAN, LISP, ALGOL, COBOL
  • 22. 1964 : BASIC 10 Despite being experts in type theory and statistics, Kemeny and Kurtz decide that non-scientists needed a programming language. 20 For this language for non-scientists, they choose scientist languages FORTRAN II and ALGOL 60 as their inspirations. 30 The result is Boisterous, Animated Symbolic Instruction Code. 40 Survives through modern times (e.g. Microsoft Visual Basic.NET). 50 GOTO 10 60 RUN
  • 23. 1964 : APL Inspired by Backus-Naur’s specification, Iverson imagines a multidimensional array at the foundation of an unwieldy skyscraper. In the interest of safety, A Programming Language is kept out of the hands of mere mortals, by describing computation using a large range of symbols from mathematics and modern art. Nonetheless, it heavily influences modeling, spreadsheets, functional programming and math software packages. Psychologists attribute high enrolments of programmers into sanatoriums to early exposure to APL.
  • 24. 1964 : APL Pick 6 random numbers in ascending order x[⍋x←6?40] All prime numbers from 1 to R (~R∊R∘.×R)/R←1↓ιR Entire Conway’s Game of Life life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
  • 25. 1965 : Simula Nygaard and Dahl wish to describe the vast and deep heterogeneity of computer simulations, mental imbalances and cosmic vibrations. They decide to build a language - based on ALGOL 60 - introducing classes, objects, subclasses, virtual procedures, coroutines and discrete event simulation. The list is so big that it overflows into C++, Object Pascal, Java and C#. [Stroustrup acknowledges that Simula 67 was the greatest influence on C++.] Programmers continue to debate whether Simula’s name played a role in business software vendors not showing interest in it.
  • 26. 1970 : Scheme Steele and Sussman publish a series of “Lambda Papers” culminating in the web site “Lambda the Ultimate Kitchen Sink”. They Scheme together to introduce lexical scope, full recursion, tail-call optimisation and strong functional programming support into LISP. Unwittingly, they go on to introduce first-class continuations with : (((call/cc (lambda (k) k)) (lambda (x) x)) "HUH!") Steele and Sussman are still untangling their recursively tail-call-optimised ganglia continuations to exactly understand why the above answers “HUH!”.
  • 27. 1970 : Pascal Niklaus Wirth writes a book Algorithms + Data Structures = Programs. When challenged to prove his point, he creates Pascal based on his ALGOL-W. Pascal is an imperative and procedural programming language for structured programming. Its fully nested structure means that a program, a procedure and a function are described identically. Features include records, enumerations, subranges, dynamically allocated variables with associated pointers, and sets. Critics, however, dismiss Pascal immediately, because it uses “:=” for assignment instead of “=” like the not-yet-created C.
  • 28. 1972 : C Ritchie invents a modern boomerang that has the shape of the English letter “C”. Eager to provide maximum efficiency, he makes a cutting-edge of each edge of the boomerang. Consequently, all programmers who use the “C” boomerang have their fingers chopped off, or suffer other severe maimings. Pleased with the outcomes, Ritchie creates a programming language - also called “C” - modeled on the “C” boomerang.
  • 29. 1972 : Prolog Desirous of representing programs using Horn Clauses, Colmerauer and Roussel lift first-order logic into a programming language. Prolog is invented as a declarative language with program logic represented in the form relations: facts and rules. The language attempts to prove the given query using these relations. Its performance is dismal, despite the Fifth Generation initiative’s push. It shows the signs of a death by a thousand “cut”s. In the process, it degenerates into a logical state that answers “No” to every query!
  • 30. 1973 : ML Robin Milner creates ML, a language based on the M&M type theory. ML begets SML which has a formally specified semantics. When asked for a formal semantics of the formal semantics Milner's head explodes. Other well known languages in the ML family include OCaml, F#, and Visual Basic. -- James Iry
  • 31. 1980 : Smalltalk After Smalltalk-71, Smalltalk-72, Smalltalk-75, …, Alan Kay and team finally release Smalltalk-80. Kay remarks that Smalltalk is “object-oriented”. To explain that, he says “Smalltalk programs are objects, and their executions are activation records, which are themselves objects.” When asked what objects are made of, he replies “Objects, of course!” In Smalltalk, “3 + 4” means: the object 3 receives a message called “+” with one argument, which is another object “4”. Industry experts are so thrilled by the beauty of its concepts, that they have not yet recovered enough to actually use Smalltalk.
  • 32. 1980 : Ada Ichbiah’s Ada is a structured, statically typed, imperative, wide-spectrum, and object- oriented high-level computer programming language, extended from Pascal and other languages. It has built-in language support for design-by-contract, extremely strong typing, explicit concurrency, offering tasks, synchronous message passing, protected objects, and non-determinism. Its list of features being so long, people have not yet had time to learn enough of the language to complete any large software project in Ada. DoD declares the language a success, nevertheless.
  • 33. 1983 : C++ Bjarne Stroustrup comes across a humongous clay oven. He is seized by a powerful desire to collect a large body of programming language features into it. He then brews the contents in C, giving rise to C++. C++ is so complex that he - and all the programmers in the world - fail(s) to write a compiler for it. Fortunately, Stroustrup discovers a wormhole that opens into a supercomputer from future. He quickly writes a compiler facade for the wormhole. All C++ programs are now sent into that wormhole for compilation. Leagues of innocent C++ programmers puzzle over why their builds take so long!
  • 34. 1986 : Objective C Cox and Love ponder the question of software reusability. Strongly aware of their need to interoperate with C, they bolt on Smalltalk-like message-passing to C. Accomplished initially as Object-Oriented Pre-Compiler, their creation has “all the memory safety of C combined with all the blazing speed of Smalltalk.” Historians suspect that an inadvertent word-level Spoonerism may have slipped into that description of Objective C. NeXT and, decades later, Apple give it an unexpected longevity.
  • 35. 1986 : Erlang When field technicians refuse to travel to godforsaken corners in order to conduct repairs of Ericsson telecom systems, Joe Armstrong, Robert Virding and Mike Williams decide to write software that would never go down. A new programming language is created. Initial interpreter, written in Prolog, wakes up the next morning every time it is launched. Bogdan and Björn write a new VM, titled Bogdan/Björn's Erlang Abstract Machine (BEAM), which runs 40 times faster. General industry outside telecom is not excited because of Erlang’s Prolog syntax.
  • 36. 1987 : Perl Sorry to see APL’s legacy of beautiful symbols used all over programs go, Larry Wall decides to reincarnate it in a UNIXy fashion. The resultant scripting language soon begins to have a mind of its own, letting strings be added to numbers, etc. The world hails the text processing capabilities of Perl. Eric Raymond nicknames it “the Swiss Army chainsaw of scripting languages” because of its flexibility and power, and also because of its “ugliness”. Larry Wall serves a rejoinder describing Perl as the duct tape holding Internet together, in a possible reference to its future role in serving CGI web pages.
  • 37. 1990 : Haskell A large team of type theory nerds get accidentally shut in a cave. Their discussions give rise to the design of a new programming language. Haskell is born as a pure functional language with non-strict evaluation. Normal programmers fail to understand its pure semantics and monads. Wadler pacifies their apprehensions by answering “Nothing to get confused about: a monad is nothing but a monoid in the category of endofunctors.” A Haskell program written to interpret that explanation continues to evaluate lazily (in true non-strict fashion). Its completion time is, by definition, not determinable.
  • 38. Languages & Broad Families ● Imperative ○ Procedural ○ Object-oriented ● Functional ○ Strict ○ Non-strict ● Logic ● Message-passing ○ Synchronous ○ Actor-based
  • 39. Languages & Performance Rough buckets of performance 1. Tree-walk interpreters : Ruby <= v1.8.7, Io, the interpreter that you wrote when in college 2. Bytecode interpreters : Python, Ruby >= v1.9, Lua, early JavaScript, Erlang 3. JIT compiled dynamically-typed VMs : modern JavaScript VMs, PyPy, LuaJIT, Dart 4. JIT compiled statically-typed VMs : Java, C# 5. AOT compiled statically-typed : C, C++, D*, Go*, Rust * Presence of GC reduces performance to Bucket 4 levels, usually.