Introduction P L COS 301. Fall School of Computing and Information Science University of Maine. Introduction COS 301.

Similar documents
General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

Programming Languages 2nd edition Tucker and Noonan"

Com S 541. Programming Languages I

Concepts of Programming Languages

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

Discovering Computers Chapter 13 Programming Languages and Program Development

Introduction to Engineering Using Robotics Experiments. Dr. Yinong Chen

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

Chapter 1. Preliminaries

Introduction. A. Bellaachia Page: 1

Principles of Programming Languages. Lecture Outline

Concepts in Programming Languages

What is a programming language?

Using Data Science to deliver Workforce & Labour Market Insights. Gary Gan Co-Founder, JobKred

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo

Organization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful?

CS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University

Chapter 1. Preview. Reason for Studying OPL. Language Evaluation Criteria. Programming Domains

Chapter 1. Preliminaries

Programming Languages, Summary CSC419; Odelia Schwartz

Simply-Typed Lambda Calculus

Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008.

New Programming Paradigms

CSc 372 Comparative Programming Languages

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

IA010: Principles of Programming Languages

INFORMATION TECHNOLOGY COURSE OBJECTIVE AND OUTCOME

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented

Chapter 11 Program Development and Programming Languages

Objective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming

JavaScript Context. INFO/CSE 100, Spring 2005 Fluency in Information Technology.

Syllabus INFO-GB Design and Development of Web and Mobile Applications (Especially for Start Ups)

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo

! Broaden your language horizons. ! Study how languages are implemented. ! Study how languages are described / specified

Technology in Action. Chapter Topics (cont.) Chapter Topics. Reasons for Software Programming. Information Systems 10/29/2010

Discovering Computers 2008

Why study Programming Language Concepts? Chapter One. Language Evaluation Criteria. Programming Domains. Readability Writability Reliability Cost

Chapter 1 Preliminaries

LECTURE 1. Overview and History


Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (Swift, Apps, Javascript, PHP, Python, Sql, HTML) By Os Swift

1) What is the first step of the system development life cycle (SDLC)? A) Design B) Analysis C) Problem and Opportunity Identification D) Development

The C# Programming Yellow Book Free Ebooks PDF

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

CSCI 3136 Principles of Programming Languages

Design & Implementation Overview

Introduction. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill

Programming the World Wide Web by Robert W. Sebesta

Programming Languages and Program Development

MSc(IT) Program. MSc(IT) Program Educational Objectives (PEO):

CSE 498 CSE Courses and Skills Inventory Fall Name:

CMPUT Language Paradigms. Programming Paradigms. Dr. B. Price & Dr. R. Greiner. 7th September Real languages draw upon multiple paradigms

Multi-Paradigm Approach for Teaching Programming

Announcements Tues., Aug and 2. to call them ( ) ! For next time, read Learning Computing with Robots, chs.

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

Ph.D. in Computer Science (

CPSC 427: Object-Oriented Programming

SOFTWARE ARCHITECTURE 6. LISP

CS508-Modern Programming Solved MCQ(S) From Midterm Papers (1 TO 22 Lectures) BY Arslan

Programming Languages and Program Development Life Cycle Fall Introduction to Information and Communication Technologies CSD 102

Welcome to. Instructor Marc Pomplun CS 470/670. Introduction to Artificial Intelligence 1/26/2016. Spring Selectivity in Complex Scenes

DIABLO VALLEY COLLEGE CATALOG

PROGRAM OUTLINE. Information Technology with Co-op, System Programming. PROGRAM DESCRIPTION Concentration 1: DELIVERY METHODS PROGRAM DURATION

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)

Technology in Action. Chapter Topics. Scope creep occurs when: 3/20/2013. Information Systems include all EXCEPT the following:

Chapter 5. Names, Bindings, and Scopes

CPSC 427a: Object-Oriented Programming

COMP 201: Principles of Programming

Chapter 2. Evolution of the Major Programming Languages

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Chapter Twelve. Systems Design and Development

Programming/Network Programming

Personalised Learning Checklist ( ) SOUND

Chapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages

Strand CS Standard Aligned Standard Aligned Standard

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

8/23/18. Programming Language Genealogy The Evolution of Programming Languages. Zuse s Plankalkül. Plankalkül Syntax. Machine Code

CodeValue. C ollege. Prerequisites: Basic knowledge of web development and especially JavaScript.

Introduction to Scientific Computing Languages

Programming Paradigms

CIS 086 : Week 1. Web Development with PHP and MySQL

Developer Internship Opportunity at I-CC

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona

Introduction to Computer Science I

Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an with the URL Grading:

What is programming? Elements of Programming Languages. From machine code to programming languages. What is a programming language?

Introduction to Scientific Computing Languages

Descriptions for CIS Classes (Fall 2017)

COSC 2P90 Programming Languages & Object-Orientation

CS 3304 Comparative Languages. Lecture 1: Introduction

OHIO ASSESSMENTS FOR EDUCATORS (OAE) FIELD 010: COMPUTER INFORMATION SCIENCE

Low-Level Languages. Computer Programs and Programming Languages

ASSOCIATE DEGREE REQUIREMENTS

Second-generation: Assembly language. Figure 6.1 Generations of programming languages. Assembly Language Characteristics.

Read & Download (PDF Kindle) A First Book Of C++ (Introduction To Programming)

Is Functional Programming (FP) for me? ACCU Conference 2008 Hubert Matthews

CPSC 427: Object-Oriented Programming

CTI Higher Certificate in Information Systems (Internet Development)

CSE373: Data Structure & Algorithms Lecture 23: Programming Languages. Aaron Bauer Winter 2014

Transcription:

s? School of Computing and Information Science University of Maine Fall 2018

Outline s? 1 2 s? 3 4

s?

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

The course s? s Design issues/trade-offs Types of s Comparison of s Language implementation

Course objectives s? Good understanding of what a is Understanding of major Grasp of issues having to do with syntax and semantics of programs and s Knowledge of how control and data types are handled in a variety of s Knowledge of the commonalities and differences between s A basis for understanding how to select a for a problem Deeper insight into s you already know Better professional written communication skills

Syllabus s? 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

Homework s? 1. Make sure that you can access the website and Blackboard area 2. Project part 1: selection for the project Due 9/14

s? s?

Expressing solutions to problems s? Can view PL as for expressing solutions to problems L constrain what can be expressed what can be solved Studying PL learn/create new ways to express/solve problems

Choosing right PL for problems s? All PLs are theoretically equivalent in power ( Turing equivalent ) PLs are tools: some better for some jobs

Choosing right PL for problems s? 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,...

Choosing right PL for problems s? 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 s even if you are proficient

Choosing right PL for problems s? 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 s even if you are proficient More s you know more ways to express solutions Can choose with feature you need If you know about a feature that doesn t have implement it in the

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

Implementing PLs s? 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

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

Understanding computer science s? 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 s are more popular than others

s?

What is a paradigm? s? 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 s Main PL : Imperative (or procedural) Object-oriented Functional Logical Declarative

Imperative/procedural paradigm s? Oldest Based on the von Neumann computer architecture

Imperative/procedural paradigm s? Oldest Based on the von Neumann computer architecture This is the paradigm s ontological commitment

Imperative/procedural paradigm Program = series of instructions s?

Imperative/procedural paradigm s? Program = series of instructions State = contents of memory location

Imperative/procedural paradigm s? Program = series of instructions State = contents of memory location Program and data both in memory, indistinguishable

Imperative/procedural paradigm s? 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

Imperative/procedural paradigm s? 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,...

Object-oriented paradigm s? 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,...

Functional paradigm s? 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 Some s from other have functional aspects Examples: ML, Scheme, Haskell, Lisp,...

Logic paradigm s? 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)

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

s?

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

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

Scientific applications s? 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++,...

Business applications s? Business applications gained importance in 1950s ( special-purpose computers) Floating point not very important I/O capacity and sophistication very important First business : 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 in world (in lines of code) Contemporary COBOL has OOP, other modern features Other s used, too: RPG, general-purpose s

Databases & big data s? Database management systems (DBMS) require: Fault tolerance for data Efficient storage and retrieval mechanisms Relational databases, OO databases L 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 s (e.g., Pig framework w/ Pig Latin statements)

Healthcare applications s? Requirements from DBMS, business, science Additional requirements on /frameworks: privacy protection security assurance of correctness L: Many general-purpose s In 2013, CIO.com lists these among hottest healthcare skills for healthcare computing professionals: SQL Java JavaScript C C++ C# PHP XML/HTML ASP.net (HTML, XML, and ASP.net aren t s)

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

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

Artificial intelligence & data mining s? 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

Systems s? Systems operating systems, drivers, networking, compilers,... Language requirements: Need access to raw machine Need extreme efficiency Helpful if assembly can be mixed w/ HLL L: Reason C was created Trades safety for speed Low-level HLL PL/S: version of PL/I, IBM s systems

Internet/Web s? Markup s (XML, HTML): Not s 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 of 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

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

Consumer apps s? Wide range of applications: desktop, laptop, mobile Wide range of requirements: many of preceding L: Many: C, C++, C#, Swift, Objective C,...

Military applications s? Wide range of applications Virtually all of the preceding L: C, Ada, C++,...