CS 424/524 PROGRAMMING LANGUAGES. Overview. Course Organization. Class meetings: MW 3:55pm-5:15pm TH N326 Instructor Information: Dr. Mary Ellen Weisskopf Email: [email protected] Phone number: (256) 824-6306 Office: Technology Hall, N300A.
A good programming language is a conceptual universe for thinking about programming.
1.3 Special Topics
1.4 A Brief History
1.5 On Language Design
1.5.1 Design Constraints
1.5.2 Outcomes and Goals
1.6 Compilers, Interpreters, and Virtual Machines
Programming languages have several properties:
For any language:
When studying syntax, we ask questions like:
Various kinds of entities in a program have names:
variables, functions, parameters, classes, objects, …
Named entities are bound in a running program to:
A type is a collection of values and a collection of operations on those values.
A language’s type system can help to:
A program’s meaning is called its semantics.
In studying semantics, we ask questions like:
A programming paradigm is a pattern of problem-solving thought that underlies a particular category of programs and languages.
There are four main programming paradigms:
Follows the classic von Neumann-Eckert model:
Large programs use procedural abstraction as a way to organize individual imperative statements.
Example imperative languages:
An OO Program consists of a collection of objects that interact by passing messages that transform object state.
OO languages are characterized by
Example OO languages: Smalltalk, Java, C++, C#, and Python
Functional programming models a computation as a collection of mathematical functions.
Functional languages are characterized by:
Example functional languages:
Logic programming declares what outcome the program should accomplish, rather than how it should be accomplished.
When studying logic programming we see:
Example logic programming languages: Prolog
How and when did programming languages evolve?
What communities have developed and used them?
1.5.1 – Design Constraints
A language element is bound to a property at the time that property is defined for it.
So a binding is the association between an object and a property of that object
A language is reliable if:
Compiler – produces machine code
Interpreter – executes instructions directly