Spring 2012 CS 214 Programming Languages
Details Moodle! REQUIRED text: Sebesta, Programming Language Concepts, 9ed. Important dates: February 17: Project language choice March 2: Project proposal March 16: Midterm (registrar’s test day) May 7-9: Final project presentations May 12, 1:30p: Final Exam
Course Objectives Gain an understanding of those features all programming languages have in common Understand the differences between imperative, object- oriented, and functional languages Be introduced to some of the formalisms that underlie programming languages Demonstrate the ability to master a new programming language on your own
Chapter 1 Objectives Be able to name, describe, compare and contrast the criteria used to evaluate a language Be able to name and give at least one distinctive property of each programming language paradigm Be able to name, describe, compare and contrast language implementations
Chapter 2 Objectives Be able to list pros and cons of binary, assembly and high-level languages (notes) Understand the importance of compilers Be able to name a key player in programming language design Be able to put the programming language paradigms in chronological order based on their development
Programming Language History In the beginning… Binary machine language Difficult to write Prone to programmer errors Difficult to debug
Assembly Languages Mnemonic for each operation Symbolic names instead of memory addresses Programs called assemblers automate translation MOV ADD STO MOV I ADD J STO K IJKIJK
Assembly Languages Pros: Not quite so cumbersome Somewhat less error prone Cons: Not portable Not intuitive
High Level Languages Rear Admiral Grace Hopper 1952: Develops first compiler called, simply, A The Idea: Write code independent of the machine-level details Use a compiler to translate into machine language k = i + j; MOV I ADD J STO K compiler assembler
Edsger Dijkstra Quotes The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense. It is practically impossible to teach good programming to students who have had prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.