P rogramming L anguages Introduction COS 301 Preliminaries Introduction Why study programming languages? Programming language COS 301 paradigms Programming domains School of Computing and Information Science University of Maine Fall 2018 COS 301 Introduction
P rogramming Outline L anguages Introduction COS 301 Preliminaries 1 Preliminaries Why study programming languages? Why study programming languages? 2 Programming language paradigms Programming Programming language paradigms domains 3 Programming domains 4 COS 301 Introduction
P rogramming L anguages Introduction COS 301 Preliminaries Why study programming languages? Preliminaries Programming language paradigms Programming domains COS 301 Introduction
P rogramming Me L anguages Introduction Roy M. Turner COS 301 PhD: Georgia Tech Preliminaries Why study Research: AI (intelligent agents, robot control, software programming languages? agents, multiagent systems, computational ecology, Programming computer science education) language paradigms Programming domains COS 301 Introduction
P rogramming The course L anguages Introduction Programming languages COS 301 Design issues/trade-offs Preliminaries Why study Types of languages programming languages? Comparison of languages Programming language paradigms Language implementation Programming domains COS 301 Introduction
P rogramming Course objectives L anguages Introduction Good understanding of what a programming language is COS 301 Understanding of major language paradigms Preliminaries Grasp of issues having to do with syntax and semantics of Why study programming programs and programming languages languages? Programming Knowledge of how control and data types are handled in a language paradigms variety of languages Programming Knowledge of the commonalities and differences between domains programming languages A basis for understanding how to select a programming language for a problem Deeper insight into programming languages you already know Better professional written communication skills COS 301 Introduction
P rogramming Syllabus L anguages Introduction Office hours: MW 2-3 (or by appointment), 240 Boardman COS 301 Hall Preliminaries Contacting me: rturner@maine.edu Why study programming languages? TA – Lwam Ghebreggergish Programming language Online: Course website + Blackboard (grades) paradigms Programming Homework/project/class participation domains Academic honesty COS 301 Introduction
P rogramming Homework L anguages Introduction 1. Make sure that you can access the COS 301 website and COS 301 Blackboard area Preliminaries 2. Project part 1: Why study programming languages? Programming language selection for the project Programming Due 9/14 language paradigms Programming domains COS 301 Introduction
P rogramming L anguages Introduction COS 301 Preliminaries Why study programming languages? Why study programming languages? Programming language paradigms Programming domains COS 301 Introduction
P rogramming Expressing solutions to problems L anguages Introduction Can view PL as language for expressing solutions to COS 301 problems Preliminaries Languages constrain what can be expressed ⇒ what can be Why study programming solved languages? Programming Studying PL ⇒ learn/create new ways to express/solve language paradigms problems Programming domains COS 301 Introduction
P rogramming Choosing right PL for problems L anguages Introduction All PLs are theoretically equivalent in power (“Turing COS 301 equivalent”) Preliminaries PLs are tools: some better for some jobs Why study programming languages? Programming language paradigms Programming domains COS 301 Introduction
P rogramming Choosing right PL for problems L anguages Introduction All PLs are theoretically equivalent in power (“Turing COS 301 equivalent”) Preliminaries PLs are tools: some better for some jobs Why study programming languages? Some example problem areas: computational biology, Programming simulation, business data processing, GUIs, AI, data mining, language paradigms statistical processing, CAD/CAM,. . . Programming domains COS 301 Introduction
P rogramming Choosing right PL for problems L anguages Introduction All PLs are theoretically equivalent in power (“Turing COS 301 equivalent”) Preliminaries PLs are tools: some better for some jobs Why study programming languages? Some example problem areas: computational biology, Programming simulation, business data processing, GUIs, AI, data mining, language paradigms statistical processing, CAD/CAM,. . . Programming Limited if only know a couple of languages – even if you are domains proficient COS 301 Introduction
P rogramming Choosing right PL for problems L anguages Introduction All PLs are theoretically equivalent in power (“Turing COS 301 equivalent”) Preliminaries PLs are tools: some better for some jobs Why study programming languages? Some example problem areas: computational biology, Programming simulation, business data processing, GUIs, AI, data mining, language paradigms statistical processing, CAD/CAM,. . . Programming Limited if only know a couple of languages – even if you are domains proficient More languages you know ⇒ more ways to express solutions Can choose language with feature you need If you know about a feature that language doesn’t have ⇒ implement it in the language COS 301 Introduction
P rogramming Learning new PL L anguages Introduction Learning abstract concepts underlying languages helps learn COS 301 new languages – vocabulary for talking/thinking about them Preliminaries Increases ability to read and understand unfamiliar Why study programming languages languages? Programming Popularity of PLs change over time (e.g., Tiobe index). . . language paradigms . . . but the theoretical underpinnings don’t Programming domains COS 301 Introduction
P rogramming Implementing PLs L anguages Introduction One view: PL defines a virtual machine for solving problems COS 301 But VM has to run on real one Preliminaries Why study Understanding PL concepts ⇒ essential if implementing programming languages? compiler/interpreter Programming language Understanding PL implementation can also help: paradigms predict performance Programming domains write more efficient programs avoid subtle bugs caused by the implementation Exploit any helpful features of the implementation COS 301 Introduction
P rogramming Improving your use of PLs L anguages Introduction Programmer may not know or use all ways of using the COS 301 language Preliminaries PLs usually very large ⇒ seldom use entire language Why study programming May have different ways of programming (functional, languages? imperative, OO) Programming language Studying PL ⇒ paradigms Programming understand the language features better domains understand what features could be present ∴ better use of languages you already know COS 301 Introduction
P rogramming Understanding computer science L anguages Introduction Knowing history of PLs ⇒ know what computer scientists COS 301 have tried, used, discarded, etc. – and why Preliminaries Thus helps avoid making past mistakes, reinventing the Why study programming wheel languages? Programming Helps understand current SOA: language paradigms Trends in PL design and use Programming Why some languages are more popular than others domains COS 301 Introduction
P rogramming L anguages Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming language paradigms Programming domains COS 301 Introduction
P rogramming What is a paradigm? L anguages Introduction Dictionary (Kuhnian definition): paradigm is “a worldview COS 301 underlying the theories and methodology of a particular Preliminaries scientific subject” [New Oxford American Dictionary] Why study programming Looser usage in computer science: an archetype, category languages? Programming PL paradigm: way of thinking, pattern of characteristics that language paradigms underlie a set of languages Programming Main PL paradigms: domains Imperative (or procedural) Object-oriented Functional Logical Declarative COS 301 Introduction
P rogramming Imperative/procedural paradigm L anguages Introduction Oldest COS 301 Based on the von Neumann computer architecture Preliminaries Why study programming languages? Programming language paradigms Programming domains COS 301 Introduction
P rogramming Imperative/procedural paradigm L anguages Introduction Oldest COS 301 Based on the von Neumann computer architecture Preliminaries Why study programming languages? Programming language paradigms Programming domains This is the paradigm’s ontological commitment COS 301 Introduction
P rogramming Imperative/procedural paradigm L anguages Introduction Program = series of instructions COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains COS 301 Introduction
Recommend
More recommend