Download presentation
Presentation is loading. Please wait.
1
Programming Language Design
Computer Science 312 Programming Language Design
2
Computer Science Data structures Computer organization
Theory of computation Algorithm analysis Programming language design Database management Artificial intelligence Operating systems Web and mobile apps Graphics and image processing Networks
3
Course Goals Experience the functional and concurrent programming styles Learn to program in Haskell, Erlang, and functional Java Learn to write scanners and parsers for different languages Have some FUN!
4
Computer as a Layered System
Memory ALU Control Unit I/O Devices Transistors Logic Circuits Multiplexors Etc. Hardware A program and its data are patterns of voltage levels
5
Computer as a Layered System
Machine language Hardware A program and its data are patterns of 1s and 0s
6
Computer as a Layered System
Assembly language Hardware in length in width load length mul width store area out area halt A program and its data are patterns of mnemonic symbols
7
Computer as a Layered System
High-level language while x > 0: if x % 2 == 0: evens = evens + 1 else: odds = odds + 1 x = x - 1 Hardware A program and its data are patterns of arbitrary symbols, with lots of syntactic structure for the programmer
8
Software Tools File manager Debugger Editor Profiler Compiler
Linker Loader Run-time system Debugger Profiler CASE tools Hardware
9
History of Programming Languages
Fifth Fourth Third Second First Hardware To a certain extent, the layers of programming languages mirror their historical evolution
10
History and Evolution First Second Third Fourth Fifth 1950 Machine
Assembly FORTRAN ALGOL LISP COBOL PASCAL, C PROLOG Modula Smalltalk Ada Erlang Haskell C++, Java, and Python are hybrids of fourth and fifth
11
First Generation Languages
Machine language Assembly language FORTRAN (FOrmula TRANslation Language)
12
First Generation Languages
Programs have a linear structure, isomorphic with the underlying machine structure But FORTRAN allows algebraic notation
13
Second Generation Languages
ALGOL (ALGOrithmic Language) COBOL (COmmon Business-Oriented Language) PL/1
14
Second Generation Languages
Programs are hierarchical in structure Recursion Wide variety of data types and strong type checking
15
Third Generation Languages
Pascal C
16
Third Generation Languages
Hierarchical data structures (arrays, records) Dynamic memory (pointers)
17
Fourth Generation Languages
Modula Ada
18
Fourth Generation Languages
Support for information hiding in packages or modules Support for concurrency
19
Fifth Generation Languages
LISP (LISt Processing Language) Smalltalk PROLOG (PROgramming in LOGic) Haskell, Erlang
20
Fifth Generation Languages
Support for new paradigms of programming: Function-oriented (LISP) Object-oriented (Smalltalk) Logic-oriented (PROLOG) Concurrency-oriented (Erlang)
21
Multiple Models of Computation
Functions Objects Gens 1-4 Hardware von Neumann Processes Logic
22
For next time: Read the Introduction of the Haskell book.
Download and install the Haskell Platform for your computer. Bring it to class.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.