Introduction Why study programming languages? Programming - - PowerPoint PPT Presentation

introduction
SMART_READER_LITE
LIVE PREVIEW

Introduction Why study programming languages? Programming - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Introduction

COS 301

School of Computing and Information Science University of Maine

Fall 2018

COS 301 Introduction

slide-2
SLIDE 2

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Outline

1

Preliminaries

2

Why study programming languages?

3

Programming language paradigms

4

Programming domains

COS 301 Introduction

slide-3
SLIDE 3

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Preliminaries

COS 301 Introduction

slide-4
SLIDE 4

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Me

Roy M. Turner PhD: Georgia Tech Research: AI (intelligent agents, robot control, software agents, multiagent systems, computational ecology, computer science education)

COS 301 Introduction

slide-5
SLIDE 5

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

The course

Programming languages Design issues/trade-offs Types of languages Comparison of languages Language implementation

COS 301 Introduction

slide-6
SLIDE 6

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Course objectives

Good understanding of what a programming language is Understanding of major language paradigms Grasp of issues having to do with syntax and semantics of programs and programming languages Knowledge of how control and data types are handled in a variety of languages Knowledge of the commonalities and differences between 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

slide-7
SLIDE 7

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Syllabus

Office hours: MW 2-3 (or by appointment), 240 Boardman Hall Contacting me: rturner@maine.edu TA – Lwam Ghebreggergish Online: Course website + Blackboard (grades) Homework/project/class participation Academic honesty

COS 301 Introduction

slide-8
SLIDE 8

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Homework

  • 1. Make sure that you can access the COS 301 website and

Blackboard area

  • 2. Project part 1:

Programming language selection for the project Due 9/14

COS 301 Introduction

slide-9
SLIDE 9

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Why study programming languages?

COS 301 Introduction

slide-10
SLIDE 10

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Expressing solutions to problems

Can view PL as language for expressing solutions to problems Languages constrain what can be expressed ⇒ what can be solved Studying PL ⇒ learn/create new ways to express/solve problems

COS 301 Introduction

slide-11
SLIDE 11

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Choosing right PL for problems

All PLs are theoretically equivalent in power (“Turing equivalent”) PLs are tools: some better for some jobs

COS 301 Introduction

slide-12
SLIDE 12

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Choosing right PL for problems

All PLs are theoretically equivalent in power (“Turing equivalent”) PLs are tools: some better for some jobs Some example problem areas: computational biology, simulation, business data processing, GUIs, AI, data mining, statistical processing, CAD/CAM,. . .

COS 301 Introduction

slide-13
SLIDE 13

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Choosing right PL for problems

All PLs are theoretically equivalent in power (“Turing equivalent”) PLs are tools: some better for some jobs Some example problem areas: computational biology, simulation, business data processing, GUIs, AI, data mining, statistical processing, CAD/CAM,. . . Limited if only know a couple of languages – even if you are proficient

COS 301 Introduction

slide-14
SLIDE 14

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Choosing right PL for problems

All PLs are theoretically equivalent in power (“Turing equivalent”) PLs are tools: some better for some jobs Some example problem areas: computational biology, simulation, business data processing, GUIs, AI, data mining, statistical processing, CAD/CAM,. . . Limited if only know a couple of languages – even if you are 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

slide-15
SLIDE 15

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Learning new PL

Learning abstract concepts underlying languages helps learn new languages – vocabulary for talking/thinking about them Increases ability to read and understand unfamiliar languages Popularity of PLs change over time (e.g., Tiobe index). . . . . . but the theoretical underpinnings don’t

COS 301 Introduction

slide-16
SLIDE 16

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Implementing PLs

One view: PL defines a virtual machine for solving problems But VM has to run on real one Understanding PL concepts ⇒ essential if implementing compiler/interpreter Understanding PL implementation can also help: predict performance write more efficient programs avoid subtle bugs caused by the implementation Exploit any helpful features of the implementation

COS 301 Introduction

slide-17
SLIDE 17

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Improving your use of PLs

Programmer may not know or use all ways of using the language PLs usually very large ⇒ seldom use entire language May have different ways of programming (functional, imperative, OO) Studying PL ⇒ understand the language features better understand what features could be present ∴ better use of languages you already know

COS 301 Introduction

slide-18
SLIDE 18

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Understanding computer science

Knowing history of PLs ⇒ know what computer scientists have tried, used, discarded, etc. – and why Thus helps avoid making past mistakes, reinventing the wheel Helps understand current SOA: Trends in PL design and use Why some languages are more popular than others

COS 301 Introduction

slide-19
SLIDE 19

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Programming language paradigms

COS 301 Introduction

slide-20
SLIDE 20

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

What is a paradigm?

Dictionary (Kuhnian definition): paradigm is “a worldview underlying the theories and methodology of a particular scientific subject” [New Oxford American Dictionary] Looser usage in computer science: an archetype, category PL paradigm: way of thinking, pattern of characteristics that underlie a set of languages Main PL paradigms: Imperative (or procedural) Object-oriented Functional Logical Declarative

COS 301 Introduction

slide-21
SLIDE 21

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Oldest Based on the von Neumann computer architecture

COS 301 Introduction

slide-22
SLIDE 22

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Oldest Based on the von Neumann computer architecture This is the paradigm’s ontological commitment

COS 301 Introduction

slide-23
SLIDE 23

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Program = series of instructions

COS 301 Introduction

slide-24
SLIDE 24

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Program = series of instructions State = contents of memory location

COS 301 Introduction

slide-25
SLIDE 25

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Program = series of instructions State = contents of memory location Program and data both in memory, indistinguishable

COS 301 Introduction

slide-26
SLIDE 26

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Program = series of instructions State = contents of memory location Program and data both in memory, indistinguishable Language features: Variables (state), assignment Conditional execution Loops Procedure calls

COS 301 Introduction

slide-27
SLIDE 27

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Imperative/procedural paradigm

Program = series of instructions State = contents of memory location Program and data both in memory, indistinguishable Language features: Variables (state), assignment Conditional execution Loops Procedure calls Examples: Fortran, Python, Perl, parts of Java, C,. . .

COS 301 Introduction

slide-28
SLIDE 28

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Object-oriented paradigm

Ontological commitment: World consists of objects Objects have internal state Objects have encapsulated behavior Language features: Classes, instances, inheritance State: instance variables Behavior: methods or messages Polymorphism Examples: Smalltalk, Java, C++, C#, Python, Lisp,. . .

COS 301 Introduction

slide-29
SLIDE 29

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Functional paradigm

Ontological commitment: world consists of things (values) and functions on those things Language features: Functional composition Recursion No state (in “pure” FL) Some have aspects of other paradigms Some languages from other paradigms have functional aspects Examples: ML, Scheme, Haskell, Lisp,. . .

COS 301 Introduction

slide-30
SLIDE 30

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Logic paradigm

Ontological commitment: world consists of things and statements about things that are true/false Language features: Declarative style: make statement about what should be true Facts are stated in logic (usually Horn clauses) Usually contain theorem prover (e.g., resolution TP) Examples: Prolog (mainly), ToonTalk, OWL (sort of, with TP support)

COS 301 Introduction

slide-31
SLIDE 31

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Declarative paradigm

Ontological commitment: there are statements that can be made about the things in the world Logic languages ⊂ declarative languages Examples: database languages (SQL, e.g.), XPath (for XML)

COS 301 Introduction

slide-32
SLIDE 32

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Programming domains

COS 301 Introduction

slide-33
SLIDE 33

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Programming domains

Problems to be solved fall into domains – e.g., Scientific applications Business applications Databases, “big data” Healthcare applications Media applications & games Artificial intelligence & data mining Systems programming Internet/Web programming Embedded systems: IoT, industrial control, robotics Consumer apps Military applications Different domains ⇒ different requirements for the language(s)

COS 301 Introduction

slide-34
SLIDE 34

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Programming domains

Some languages: domain-specific (or created for a domain) Some languages: general-purpose

COS 301 Introduction

slide-35
SLIDE 35

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Scientific applications

First domain for computers (with military): 1940s Require floating-point operations Few sophisticated data structures or control structures needed Historically imperative (e.g., Fortran, C, Python), now OOP too (e.g., Java, C++, Python) Critical feature: efficiency Wide range in use: Fortran, C, Python (e.g., w/ NumPy), R, Java, C++,. . .

COS 301 Introduction

slide-36
SLIDE 36

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Business applications

Business applications gained importance in 1950s (⇒ special-purpose computers) Floating point not very important I/O capacity and sophistication very important First business language: COBOL (COmmon Business Oriented Language) – Adm. Grace Hopper Very verbose Supposedly easy for business people to learn Still in use – some estimates: possibly most common language in world (in lines of code) Contemporary COBOL has OOP , other modern features Other languages used, too: RPG, general-purpose languages

COS 301 Introduction

slide-37
SLIDE 37

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Databases & big data

Database management systems (DBMS) require: Fault tolerance for data Efficient storage and retrieval mechanisms Relational databases, OO databases Languages for DBMS: Efficiency Able to refer to persistent data Ability to express sophisticated queries to the database SQL (Structured Query Language): declarative, succinct, powerful access to relational algebra “Big data”: ↑↑ need for data storage, efficient retrieval Data framework (e.g., Apache Hadoop) rather than DBMS General- and special-purpose languages (e.g., Pig framework w/ Pig Latin statements)

COS 301 Introduction

slide-38
SLIDE 38

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Healthcare applications

Requirements from DBMS, business, science domains Additional requirements on language/frameworks: privacy protection security assurance of correctness Languages: Many general-purpose languages In 2013, CIO.com lists these among “hottest healthcare” programming skills for healthcare computing professionals: SQL Java JavaScript C C++ C# PHP XML/HTML ASP .net

(HTML, XML, and ASP .net aren’t programming languages)

COS 301 Introduction

slide-39
SLIDE 39

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Media & games

Media: movies (CGI), music, VR, . . . Efficiency Ability to manipulate binary data Access large amount of data Access hardware General-purpose languages, e.g., Python + libraries Games: Access hardware Languages: C++, e.g. (Unity, Unreal Engine) Extensions for games: e.g., C#, JavaScript, Boo (Unity), C++ (Unreal)

COS 301 Introduction

slide-40
SLIDE 40

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Artificial intelligence & data mining

Symbolic AI: Mostly symbolic, not numeric, processing Data structures: trees, lists Languages: Need easy support for symbols Linked list data structures useful First AI language: Lisp (LISt Processing language) – 1958 Symbols, linked lists - built-in data types Programs & data: both lists Easy introspection, program creation by programs Other languages: Scheme, Prolog, Haskell, general-purpose languages

COS 301 Introduction

slide-41
SLIDE 41

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Artificial intelligence & data mining

Deep learning (neural nets), other machine learning ⇒ numeric processing, speed C, C++, Python (NumPy, Theano, Tensorflow, Keras, . . . ) Data mining: shares requirements with AI and DB/big data

COS 301 Introduction

slide-42
SLIDE 42

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Systems programming

Systems programming – operating systems, drivers, networking, compilers, . . . Language requirements: Need access to raw machine Need extreme efficiency Helpful if assembly can be mixed w/ HLL Languages: Reason C was created

Trades safety for speed Low-level HLL

PL/S: version of PL/I, IBM’s systems language

COS 301 Introduction

slide-43
SLIDE 43

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Internet/Web programming

Markup languages (XML, HTML): Not programming languages For data, display description Need dynamic content Server side:

DB access, access to other programs, ability to create HTML PHP , Python, Perl, Ruby, Java, .NET

Client side:

Need access to DOM (document object model), control

  • f canvas

JavaScript, Flash, Java applets

AJAX (Asynchronous JavaScript and XML)

Group of technologies for client-server communication Display: HTML/XHTML + CSS Communication: XML, JSON, XMLHttpRequest JavaScript on client, PHP (etc.) on server

COS 301 Introduction

slide-44
SLIDE 44

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Embedded systems, etc.

Software as integral part of hardware system E.g., robotics, “Internet of Things” (IoT), industrial control Shares many similarities with systems programming Real-time requirement Languages: general-purpose – C, etc., even (especially?) Java

COS 301 Introduction

slide-45
SLIDE 45

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Consumer apps

Wide range of applications: desktop, laptop, mobile Wide range of requirements: many of preceding Languages: Many: C, C++, C#, Swift, Objective C,. . .

COS 301 Introduction

slide-46
SLIDE 46

Introduction COS 301 Preliminaries Why study programming languages? Programming language paradigms Programming domains

P L

rogramming anguages

Military applications

Wide range of applications Virtually all of the preceding Languages: C, Ada, C++,. . .

COS 301 Introduction