CSC 408 PROGRAMMING LANGUAGES
Material covered:
Why a course about Programming Languages should be a part of the CS
curriculum?
understanding of languages
better utilization of languages
better selection of a "language for a job"
to learn additional languages easier
to understand significance of implementation
to design a language(?)
What factors influence language design?
available computer hardware
programming domains
scientific computing
business applications
artificial intelligence
system software
application software
special purpose
Internet/multimedia
theoretical studies
standardization
Programming language evaluation criteria
1. Clarity simplicity and unity
created once, or a victim of evolution?
clarity of syntax
length of names of variables
status of special words
relation between syntax and meaning
formalization of concepts (precision of definition)
readability (how many comments necessary to understand?)
availability of structured programming
2. Match between the language and the application that it is to be used
for
3. How good is the definition of implementation
how were the imprecisions inthe language definition "fixed"?
are there any special features that a vendor added to the
language?
what will the optimizing compiler do to your code?
4. Portability
5. Cost
learning curve
compilation and loading (rather old criterion, but...)
creation, verification and testing (editors, debuggers, visual
tools)
execution (how good is the compiler/interpreter)
maintenance
6. Availability of "canned" library procedures/modules.
HOMEWORK 1
Use the above programming language evaluation criteria to evaluate your
favorite programming language. Be fair, but critical. Should the list of
criteria be extended?
Due by: Wednesday, June 16th
Material covered (continued):
Programming Early Computers:
limited memory
slow machines
--> extremely tight coding
floating point opertions emulated
lack of indexing operations
invention of early interpreters and proto-compilers
Design of Pseudo-Code
necessary operations
instruction format
orthogonal design
program structure
Implementation
the read-execute cycle
decoding instructions
Evolution of pseudo-code
labels
variables
symbolic pseudo-code
HOMEWOK 2
Textbook, page 32, problem 8
Due by: Friday, June 25th
Material covered (continued):
Fortran
origins of Fortran
modularity of design -- subprograms
compilation and its phases
control structures
match between control structures and IBM 704 machine language
GOTO and its forms
IF statements
DO loops and their optimization
subroutines as abstractions
address based parameter passing
activation records
data structures
numeric data types and operations
pseudo-strings
arrays
array optimizations
name structures
bindings
declarations
scope
information sharing
parameters
COMMON blocks
EQUIVALENCE
syntactic structures
format
reserved words
algebraic notation and precedence
HOMEWOK 3
Textbook, page 97, problem 10
Due by: Friday, July 2nd
Reading assignment - pages ivv-79