Introduction%20to%20Programming%20Languages - PowerPoint PPT Presentation

About This Presentation
Title:

Introduction%20to%20Programming%20Languages

Description:

Communicates only an algorithmic idea ... 1994 James Gosling, Sun Microsystems. OOP. Virtual machine. Both interpreted and compiled ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 30
Provided by: mathUaa
Category:

less

Transcript and Presenter's Notes

Title: Introduction%20to%20Programming%20Languages


1
Introduction to Programming Languages
  • CS331

2
What is a Programming Language?
  • Formally, a set of finite sequences of elements
    of the alphabet
  • E.g., abcd
  • It has a syntax and a semantics
  • We will define these in great detail shortly
  • Communicates only an algorithmic idea
  • A programming language makes it easier and
    efficient for people to communicate with
    computers

3
Principles of Language Design
  • The major principles that underlie the design of
    modern programming languages are
  • Syntax
  • Type systems (semantics)
  • Memory Management
  • Exception Handling
  • We treat these categories formally instead of
    just comparing features of different languages to
  • Apply more rigor (needed for example in writing a
    compiler)
  • Understand future languages better (formalisms
    universal)

4
Syntax
  • Tells us what constitutes a correctly written
    program
  • Vocabulary
  • Alphabet
  • Not unlike work with spoken languages
  • Borrows from linguistic theory, grammar
  • Most programming languages use a context-free
    grammar

5
Type Systems and Semantics
  • If the syntax is correct
  • What kind of values can we manipulate?
  • Is a 32 bit value an integer, a float, 4 ASCII
    characters, etc.
  • Semantics applies meaning to the data values
  • What is the exact effect of a statement on the
    state of computation?
  • What happens next?
  • These must all be defined somehow we will use a
    formal abstract definition for semantics

6
Memory Management
  • Collection of techniques to map values and data
    structures to memory
  • Static vs. Dynamic memory
  • Use of the heap
  • Garbage collection and reclamation
  • Numerous algorithms and strategies have been
    designed to manage memory

7
Exception Handling
  • An exception is an unexpected event
  • Division by zero
  • Overflow
  • Illegal memory access
  • How can these be trapped and handled?
  • (will mostly skip this chapter in the class)

8
Tower of Babel of Programming Languages
  • What programming languages do you already know or
    can think of the names?

9
Why so many languages?
  • Application domains
  • Levels of Languages
  • Different philosophies to solve problems
  • Language improvement
  • Standards

10
Application Domains
  • Scientific Computing
  • Mathematical, Parallel, Historically FORTRAN
  • Management Information Systems
  • Database, SQL
  • COBOL for business systems
  • Client/Server approach popular
  • Artificial Intelligence
  • Intelligent behavior, deduction
  • Roots of functional and logical programming
  • Systems
  • Compilers, OS, network, etc.
  • Typically low level languages, Assembly/C
  • Web
  • Overlap with other applications
  • Client/Server, often interpreted
  • Education
  • PASCAL, ALICE

11
Programming Paradigms
  • Paradigm Model or mental framework for thinking
    about something
  • Procedural/Imperative
  • Programs are a series of steps assignments,
    loops, sequences, conditional statements
  • Object-Oriented
  • Collection of interacting objects inheritance,
    polymorphism
  • Functional
  • Program is a collection of mathematical functions
    using functional composition
  • Logic
  • Program is a collection of logical declarations
    states what the outcome should be rather than how
    to accomplish the outcome
  • Event-Driven
  • Continuous loop responding to events
  • Concurrent
  • Collection of cooperating processes issues for
    parallelism

12
Pragmatic Considerations
  • Architecture constraints
  • Stuck with the von Neumann model?
  • Instruction set matches with Imperative model
  • Contextual constraints
  • Relates back to application area, levels of
    languages
  • General purpose vs. special purpose
  • Compiled vs. interpreted

13
Virtual Machine
  • This text uses the virtual machine model for a
    language called Clite
  • Interpreter is Java, so Clite is really
    doubly-interpreted! (or Just-In-Time Compiled)
  • By doing so, we avoid details of mapping a
    language to a specific machine architecture

14
Standards
  • Standardization process of defining a
    machine-independent definition to which all
    implementors of the language must adhere
  • Used to be bottom-up and standardization only
    took place if a language was used enough
  • Process is becoming top-down with larger
    companies (e.g. Microsoft, Sun)
  • Major standards organizations, ANSI, ISO, ECMA
  • Slow process, e.g. ANSI/ISO C (1999)

15
Brief history of PLs
16
FORTRAN
  • FORmula TRANslation
  • IBM 1957 John Backus
  • First high level language
  • Designed to support numerical computation
  • Still used today in scientific computing
  • Code snippet
  • 10 IF (NUMBER .LT. 0) GO TO 20
  • READ (,) NUMBER
  • GO TO 10
  • 20
  • Early versions used GOTO
  • A simple FORTRAN error resulted in errors for
    NASAs Project Mercury sub-orbital flights (myth
    for Mariner Venus probe)
  • DO 3 I 1,3 was mistyped as DO 3 I 1.3 which
    was accepted by the compiler as assigning 1.3 to
    the variable DO3I

17
COBOL
  • Common Business Oriented Language
  • Designed for business needs payroll, accounting,
    etc.
  • Responsible for huge amounts of legacy code
  • Designed to be English-Like to make it easy to
    program
  • ADD A TO B GIVING SUM

18
Pascal
  • 1970 Nicklaus Wirth
  • Designed to enforce good programming techniques
    as a teaching language, easy to learn
  • Taught in most schools/universities in the 80s
  • Not embraced as an industrial language instead
    they used C
  • But offshoot language Delphi (Borland) is used
    commonly and commercially today competitor to
    Microsofts Visual Basic

19
C
  • 1970 Dennis Ritchie, Bell Labs
  • Originally designed to write UNIX
  • Close to assembly, allows speed efficiencies
  • Led to its popularity today, the basis for just
    about every operating system (including Windows)
  • One of the most popular choices when it comes to
    real-time systems

20
C
  • 1980 Bjarne Stroustrup, Bell Labs
  • Superset of C
  • Adds object-oriented programming on top of C
  • Standardized by ANSI/ISO
  • One of the most popular commercial languages
    today, allows low-level access of C together with
    OOP
  • Well examine C in this class

21
C
  • Relatively new language developed by Microsoft
  • ECMA standard, on fast track for ISO standard
  • Combines aspects of C/Java/Visual Basic
  • OOP
  • Uses concept of virtual machine (CLI) - .NET
  • Easy integration with web services
  • Easy development of GUI via IDE
  • Cleans up some messiness of previous languages
  • We will also examine C in this class

22
ADA
  • Named after Ada Lovelace
  • Daughter of Lord Byron
  • Mathematician, Scientist
  • 1979 US Armed Services
  • Intended as a common language for all government
    contractors
  • Powerful OOP, Multiprocessing, structures for
    efficiency and re-usability
  • Criticized for being difficult to learn
  • Dont see much ADA around nowadays

23
Java
  • 1994 James Gosling, Sun Microsystems
  • OOP
  • Virtual machine
  • Both interpreted and compiled
  • Rise of the web has been attributed to its
    success
  • No ISO/ECMA standard of Java
  • Sun pulled out of the standards process in 1999
    for more control
  • Does have Java Community Process

24
Lisp
  • 1958 John McCarthy
  • LISt Processing
  • Based on Alonzo Churchs Lambda Calculus
  • Computing with symbolic expressions rather than
    numbers
  • List structure as the key data structure
  • Composition of functions as a tool for forming
    more complex functions
  • Sample
  • (defun list-of (n elt)
  • (if (zerop n)
  • nil
  • (cons elt (list-of (- n 1) elt))))
  • Well study Scheme, an offshoot of Lisp

25
SML
  • 1980s Standard Meta Language
  • Edinburgh Lab, Robin Milner
  • Fully formal definition
  • Close to mathematics (sets, tuples, functions)
  • No declarations as in imperative languages
  • No side effects
  • Type of variables is computed by inference,
    depending on context
  • 1,4,5 list of integers
  • (1,1) is a tuple of integers
  • fun square(x) xx

26
Prolog
  • 1972 - Alan Colmeraurer
  • PROgramming LOGic
  • ISO standard 1995
  • A Prolog program is a set of facts and a set of
    logical rules
  • speaks(mary, russian).
  • speaks(bob, english).
  • speaks(mary,english).
  • talkswith(P1,P2) - speaks(P1,L), speaks(P2,L),
    P1\P2.
  • Program that defines people that speak Russian
    and that you talk to someone that speaks the same
    language.
  • Queries speaks(mary,X). Xenglish, russian

27
Special Purpose Languages
  • Languages designed for specific tasks
  • SQL
  • Retrieval from relational databases
  • PERL
  • Practical extraction and report language
  • Processing strings, regular expressions
  • HTML
  • Markup of hypertext
  • When we get to PHP we will assume you know some
    HTML

28
Programming Language Qualities
  • Simplicity and clarity
  • How easy is it to write in the language?
  • Different definitions some minimize keystrokes
  • Binding
  • How are values bound to variables?
  • Definition, compilation, runtime, early vs. late
    binding
  • Orthogonality
  • Do features combine in a predictable way? E.g.
    meaning of
  • Reliability
  • Behave the same way each time it is run?
  • Applicability
  • How well does the language map to its
    applications?
  • Abstraction
  • Low or high level?
  • Efficiency
  • Practical and efficient on a von Neumann machine?

29
Conclusions
  • There are lots of programming languages out there
  • Different paradigms
  • Different applications
  • Different levels of computing
  • There will probably continue to be even more
    programming languages in the future
  • By studying formal properties of programming
    languages and a sampling of paradigms, you will
    be well prepared to face these new languages
Write a Comment
User Comments (0)
About PowerShow.com