CSE3302 Programming Languages (things to say) Dr. Carter Tiernan Programming Languages
Programming Language Paradigms A programming paradigm is a paradigmatic style of programming (compare with a methodology which is a paradigmatic style of doing software engineering). A programming paradigm provides (and determines) the view that the programmer has of the execution of the program. The relationship between programming paradigms and programming languages can be complex since a programming language can support multiple paradigms. Programming Languages
Analysis of Paradigms Name structures Data structures Control structures Programming Languages
Paradigms Procedural Object-oriented Functional Logic What differentiates these paradigms? Programming Languages
Paradigm Definitions Focusing on actions in a program with control handled through subprograms elements of a system to be modeled and the behaviors of those elements application of functions with little distinction between program and data defining the program logic and not explicitly handling program control Programming Languages
Issues with Paradigms One language = one paradigm? “Programming” vs. “Computer” language? Languages that don’t ‘fit’ in the four paradigms discussed Programming Languages
Other Paradigms (?) Programming Languages
Paradigm questions Why have different language paradigms developed? Which comes first - a new language or a new paradigm? How does a paradigm help us? Programming Languages
CSE3302 Questions Why do we have you study languages? (Have you learned anything that might be useful?) Should we make a distinction between “programming” and “computer”languages as MacLennan does? Should we teach both? Using the language structure? Programming Languages
CSE3302 Questions “concepts” approach versus the “comparison” approach (MacLennan) Would you prefer the concepts approach? Would it be easier or harder to compare languages? Topics that could be added to CSE3302? In other schools, PL covers the material is a different fashion - discussing languages by concepts; name structures including binding, scoping (static and dynamic), etc. then data structures and so on. This is typically illustrated with a small number of programming languages This approach could be categorized as the “concepts” approach versus the “comparison” approach used in our book. Programming Languages