⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 history.otx

📁 inger小型c编译器源码
💻 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 + -