📄 history.otx
字号:
% history.otx
% Practical Compiler Construction
% Chapter: Compiler History
\chapter{Compiler History}
\section{Procedural Programming}
The first programming languages evolved from machine code. Instead of
writing numbers to specify addresses and instructions you could write
symbolic names. The computer executes this sequence of instructions
when the user runs the program. This style of programming is known
as \emph{procedural} or \emph{imperative} programming.
\\
\\
Some of the first procedural languages include:
\begin{itemize}
\item FORTRAN, created in 1957 by IBM to
produce programs to solve mathematical problems.
\item Algol 60, created in the late fifties with to goal to
provide a ``universal programming language''. Even though
the language was not widely used, its syntax became the
standard language for describing algorithms.
\item COBOL, a ``data processing'' language developed by
Sammett introduced many new data types and
implicit type conversion.
\item PL/I, a programming language that would combine the best
features of FORTRAN, Algol and COBOL.
\item Algol 68, the successor to Algol 60. Also not
widely used, though the ideas it introduced have been
widely imitated.
\item Pascal, created by Wirth to demonstrate a powerful
programming langauge can be simple too, as opposed to
the complex Algol 68, PL/I and others.
\item Modula2, also created by Wirth as an improvement to
Pascal with modules as most important new feature.
\item C, designed by Ritchie as a low level language mainly
for the task of system programming. C became very popular
because UNIX was very popular and heavily depended on it.
\item Ada, a large and complex language created by Whitaker and
one of the latest attempts at designing a procedural language.
\end{itemize}
\section{Functional Programming}
Functional programming is based on the abstract model of programming
Turing introduced, known as the \emph{Turing Machine}. Also the
theory of recursive functions Kleene and Church introduced play
an important role in functional programming. The big difference
with procedural programming is the insight that everything can be
done with expression as opposed to commands.
\\
\\
Some important functional programming languages:
\begin{itemize}
\item LISP, the language that introduced functional programming.
Developed by John McCarthy in 1958.
\item Scheme, a language with a syntax and semantics very similar
to LISP, but simpler and more consistent. Designed by
Guy L. Steele Jr. and Gerald Lay Sussmann.
\item SASL, short for St. Andrew's Symbolic Language. It was created
by David Turner and has an Algol like syntax.
\item SML, designed by Milner, Tofte and Harper as a ``metalanguage''.
\end{itemize}
\section{Object Oriented Programming}
Object oriented programming is entirely focused on objects,
not functions. It has some major advantages over procedural
programming. Well written code consists of objects that keep
their data private and only accesible through certain methods
(the interface), this concept is known as emph{encapsulation}.
Another important object oriented programming concept is
emph{inheritance} --- a mechanism to have objects inherit state
and behaviour from its superclass.
\\
\\
Important object oriented programming languages:
\begin{itemize}
\item Simula, developed in Norway by Kristiaan Nyaard and
Ole-Johan Dahl. A language to model system, wich are
collections of interacting processes (objects), wich
in turn are represented by multiple procedures.
\item SmallTalk, originated with Alan Kay's ideas on
computers and programming. It is influenced by LISP
and Simula.
\item CLU, a language introduced by Liskov and Zilles to
support the idea of emph{information hiding} (the
interface of a module should be public, while the
implementation remains private).
\item C++, created at Bell Labs by Bjarne Soustroup as
a programming language to replace C. It is a
hybrid language --- it supports both imperative and
object oriented programming.
\item Eiffel, a stricly object oriented language wich
is strongly focused on software engineering.
\item Java, a object oriented programming language with
a syntax wich looks like C++, but much simpler.
Java is compiled to byte code wich makes it portable.
This is also the reason it became very popular for
web development.
\item Kevo, a language based on prototypes instead of
classes.
\end{itemize}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -