Lecture 1. Programming II. Iztok Savnik, FAMNIT. February, 2019.
|
|
- Lorin Price
- 5 years ago
- Views:
Transcription
1 Lecture 1 Programming II Iztok Savnik, FAMNIT February,
2 Contents Course organization History of programmiing languages Concepts of programming languages Meta-Language ML Some benchmarks Method and aims of course What is happening in PL area?
3 Course organization Lectures Iztok Savnik Exercises Matjaž Krnc, László Hajdu Homeworks Writting programs in Ocaml 3 homeworks
4 Grading Written exam 40% Oral exam 30% Homeworks 30% Each part must be positive! 4
5 Literature 1. John Mitchell, Concepts in Programming Languages, Cambridge Univ Press, Iztok Savnik, Jan Karabas, Concepts of programming languages, Lecture notes (in English), FAMNIT, Michael L. Scott, Programming Language Pragmatics (3rd ed.) Elsevier,
6 Overview of PL Assembler Fortran IPL, Cobol Imperative languages Algol Prog.language C Pascal, Modula Functional languages Lisp ML Haskell Object languages C++, Objective C Java, Eifel Ruby High-level languages Electronics Information systems Integration languages Script languages System languages Web languages User interfaces Python, Perl, PhP, JSP, ASP Prolog Sicstus Prolog SWI-Prolog Datalog Lambda Prolog
7
8 Charles Babbage The origins of the digital programmable computer English mathematician, philosopher, inventor and mechanical engineer. In 1837 he has designed Analytical engine, the first mechanical computer, that led to the design of more complex electronic computers. The anlytical engine mechanical computation of arithmetic operations branching loops where the results of the previous computation are taken as an input to the following iterations. Turing-complete machine
9 Electronic computers The first electromechanical computer German civil engineer and inventor Konrad Zuse Z1, Z2, Z3, 1936 and 1945, totally independent Loops but no branching, shown to be Turing-complete General-purpose electronic computer University of Pennsylvania ENIAC (Electronic Numerical Integrator and Computer) 10 digit arithmetic, branching, loops, procedures
10 Electronic computers Mark 1, Mark 2, Mark 3 ASCC (Automatic Sequence Controlled Calculator) Developed by Harvard University in 1944 Original concept presented to IBM by H.Aiken in 1937 Following Charles Babbage, loops but no branching von Neumann architecture Princeton arhitecture, 1945 First Draft of a Report on the EDVAC Principal abstraction, representation of the basic function of computers central processing unit, main memory and input/output devices
11 Plankalkuel The first programming language Konrad Zuse German civil engineer and inventor Floating-point mechanical digital calculator Z1 Improved versions Z2 and Z3 in 1941 Telephone relays for memory Presented to the public Concepts Sequence of arithmetical operations Loops included No branching operation
12 First compiler A-O programming language Algorithmic Language version 0 UNIVAC I computer Grace Hopper in 1951, 1952 Program in A-0 language was a sequence of subrutine calls together with the parameters The compiler was merely a linker and a loader Followed by the A-1, A-2, A-3 ARITH-MATIC, MATH-MATIC, FLOW-MATIC
13 Fortran First complete compiler John W. Backus, 1953, IBM IBM 704 mainframe Mathematical FORmula TRANslating System IBM 360 Constructs of Fortran DO, GOTO, IF, SUBRUTINE, CALL Numeric processing Programs can be parallelized Followed by the imperative familiy C, Pascal, Modula Fortran II, Fortran 77, Fortran III, Fortran 90, Fortran 95, Fortran 2003,...
14 FLOW-MATIC Bussiness Language version 0, or, B-0. UNIVAC I at Remington Rand Grace Hopper in Bussiness does not like formulas English language Hopper team developed compiler by First language that made a clear distinction between the data definition section and the code section of the Strong influence on the development of the programming language COBOL.
15 Information Processing Language Information Processing Language (IPL) Allen Newell, Cliff Shaw and Herbert Simon Rand Corporation in Assembly language - operations manipulate lists IPL computer Set of symbols, set of cells, set of primitive functions Functions defined on the cells and lists primitive PL run-time environment AI language Abstract and suitable for expressing AI programs Programs are not efficient
16 Algol C.A.R. Hoare: "Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors." Developed in ETH Zuerich, Team of computer scientists from Europe and US Allan J. Perlis, Peter Naur, John McCarthy, and others Originally: Algebraic Language, or, IAL Avoided problems percived in FORTRAN Contributions John Backus developed BNF to specify ALGOL 58 Formal semantics, two parameter passing methods: cbv and cbr, code blocks, nested functions, lexical scope Imperative effect of cbr to lambda calculus studied Influence: Pascal, C, Modula, Java,...
17 Lisp Developed by John McCarthy at MIT, 1958 Lisp is based on lambda calculus Alonzo Church in 1930 ble Church's paper on undecidable problem Strongly influenced by IPL Lists used for representation of programs and data New concepts Automatic storage management, dynamic typing, selfhosting compiler, and others. AI language Second-oldest programming language that is still in use Common Lisp and Scheme.
18 Cobol Designed by CODASYL, 1959 Conference/Committee on Data Systems Languages Previous work of Grace Murray Hopper Programming language for bussiness applications Imperative and procedural Since 2002, object-oriented A compiled English-like programming language Awkward syntax Cobol pograms work today! Syntax has been changed
19 C Programming Language Dennis Ritchie, Bell Laboratories, 1972 C designed for Language B, based on BCPL Language constructs Algol family Still one of best languages (C++ =? C + object illusion) Close to hardware, system programming Arrays and references are closely related E1[E2] = ]*((E1)+(E2)) Adress arithmetic Ritchie wrote: C is quirky, flawed, and a tremendous success.
20 Pascal Niklaus Wirth, ETH Zürich, 1970 Very popular in Europa Structred programming language Algol family Data structures, pointers, arrays, variable records,... Many implementations VAX Pascal, Turbo Pascal, Delphi: nice programming environment Modula-2, Modula-3, Oberon
21 Language sequences Lisp Algol 60 Algol 68 Pascal ML Modula
22 Functional languages Rooted in logic Lambda calculus, 1930, Alonzo Church LISP John McCarthy Implementation of lambda calculus Meta-Language ML, Rob Milner Functional languages are more appropriate for teaching? Strong typing Program is proof Elements of declarative programming USA
23 History of ML Logic for computable functions (LCF) Robin Milner, Dana Scott Stanford , Edinburgh Meta-language for LCF system Automatization of logic reasoning Proofs Type systems Notation for programs Higher-order functions Programs that search for proof
24 Object-Oriented Languages First OO language is Simula. Simulation programming environment Smalltalk is one of the most famous OO languages Adele Goldberg, Xerox, Palo Alto Everything is object! Every object belongs to one class Class is prototype object Class is object! Complex inheritance hierarchies C++, Java, Objective C,... Java J.Gosling, B.Joy, G.Steele, G.Bracha The Java Language Specification
25 Script languages Web programming languages V zadnjih letih se je pojavila množica jezikov, za delo na Web strežnikih JSP, PhP, JavaScript, ASP, Reseources of Web server System programming languages Strong ties to OS C + Awk, Perl, Python System integration languages
26 High-level languages Information systems 4GL, PL/SQL, SQL3 UML (specifikacije) Electronics VHDL, EDIF,...
27 Prolog Programming in Logic, Robert Kowalski Predicate calculus Horn clauses Unification, resolution Strong, simple and abstract language Back-tracking Declarative and procedural semantics of Prologa Operator CUT (!) Database programming languages Datalog Sicstus, SB Prolog, SWI Prolog,
28 Concepts in programming languages Programming language is programming tool, defined in the form of language, that is used for design and implementation of computer programs. Concepts of programming languages are abstractions used for representation of structure and behaviour of modelled systems.
29 Abstraction In Philosophy Specific operation of the intellect consisting in detaching and retaining some property from a thing Aristotel Constructive mental process associated with the relation between forms (ideas) and concrete objects Human mind actively abstracts or extracts forms from the objects in which they are realized St. Thomas Aquinas Two kinds of abstractions Mind joins properties that are separate from each other Mind separates properties that are one
30 Concepts in programming languages Abstractions integrated into the language Function, object, method, class, abstract class,..., classification, specialization, aggregation,... Abstractions define language model Imperative languages: variables, loops, procedures,... Funtional languages: functions Object languages: object and classes
31 Classifications of PL concepts Algorithmic and data abstractions Algorithmic abstractions Itaration statements, patterns, recursion,... Data abstractions N-tuples, lists, recursive data structures Language and implementation concepts Language abstractions Functions, objects, methods, inheritance,... Implementation abstractions Memory management, parameter passing,...
32 Implementation concepts We learn about the implementation of PL constructs Representation of variables, data structures,... Memory management Memory organization Garbage collection Implementation of PL concepts Functions in C, Java, Ocaml,... Parameters in C, Java, Ocaml,... Classes in Java, OCaml,...
33 Properties of abstractions in PL Closer to hardware, more simple languages Simple abstractions: Numbers, characters, loops, routines,... Higher abstractions: Objects, modules,... Higher level of abstraction in PL: More directed language Very general abstractions - more specific language General programming language is in the middle: Wide applicability General-purpose PL Very complex languages
34 Abstractions Study of abstractions can improve learning process COMMUNICATIONS OF THE ACM April 2007/Vol. 50, No. 4 IS ABSTRACTION THE KEY TO COMPUTING?
35
36 Why to study concepts in PL? We learn about the possible ways of expressing ideas. We learn how to use given PL abstractions correctly. You have to know the tool It is good to have formal background It is good to have experiences with using tools
37 Meta-Language Meta Language (ML) Developed unintentionally while working on system for automatic theorem proving based on LCF Logic of computable functions. LCF is a version of lambda calculus Initially at Edinburg University Later in AI group of Stanford University Project leader was Robin Milner. Meta-Language was used as language for expressing mathematical proofs They would change the files with proofs to obtain better proof
38 Meta-Language Success story from functional branch of programming languages Standard ML, SML/NJ, Alice ML, Ocaml, Moscow ML, Mlton, MLKit, SML.NET,... Research related to ML Hindley-Milner type-checking algorithm Polimorfic lambda calculus (System F, Girard)
39 Lambda calculus Lambda calculus is the foundamental formalism for studying programming languages Theory of programming languages Using rule-based reasoning for: deriving expression types, evaluation of expressions, Prooving the properties of language, etc. Static and dynamic semantics of PL Prooving the properties of languages (determinism, strict typing, termination, etc.). Labda calculus is topic of one lecture
40 Objective Caml Objective Caml is reference language Caml core is pure lambda calculus. Theoretically well-studied language. Caml has strong typing. Imperative constructs. Parametric polymorphism Nice object model Modules and functors Ocaml offers more than one programming models Imperative + functional + object-oriented + modular programming model
41 communications of the acm november vo l. 5 4 n o. 1 1
42
43 Who uses OCaml Facebook Jane Street Bloomberg, Citrix, See:
44 Comparisons of PL Codeval comparison A Comparison of Programming Languages in Economics In-Deman Programming languages The Computer Language Benchmarks Game Githut TIOBE Index
45
46
47
48
49
50 A Comparison of Programming Languages in Economics, Aruoba and Fernandez-Villaverde, 2014
51
52
53
54
55 Kotkin: Java reconsidered Erlang: Functional programming for real-time systems Go: Simple and dynamic OCaml: Complex data hierarchy juggler TypeScript: JavaScript you ll like Rust: Safe and usable systems language...
56 The Computer Language Benchmarks Game 33 languages, 4 systems, 13 test programs
57
58 High-level programming languages can be very efficient Java and Ocaml are efficient languages
59
60
61 Energy Efficiency across Programming Languages: How does Energy, Time and Memory Relate?
62 Energy Efficiency across Programming Languages: How does Energy, Time and Memory Relate?
63 Speed, size and memory usage of PL 429 programs 13 test programs 33 PL Experiment: Guillaume Marceau
64
65 githut Programming languages on github, M active repositories Parameters No. of projects on github No. of push operations No. of push/repository operations No. of fork operations No. of opened issues No. of watchers 65
66
67
68 TIOBE Indeks: Indeks based on: Web search engines: Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube, Baidu TIOBE index is NOT: About best PL About the most used PL 68
69
70
71
72
73 Aims of course Concepts of programming languages Language is»conceptual universe (Perlis) Framework for solving problems Usefull concepts and constructs of PLs Learning more than one PL It is good to know the history! Learning concepts from sources Efficient usage of PL constructs 73
74 Methods Lambda calculus Formal foundation Basic principles of procedural PL Lisp: first programming language based on LC ML Mathematical foundations Strong typing Includes most PL constructs Java + C Languages to compare ML! C is still the most popular language Java uses clean object-oriented model Strong typing and dynamic typing 74
75 Methods First classification = language model Functional, imperative, object, module Some concepts will be put forward Functions, parameters, types, scope, control, data abstractions, inheritancem polimorphism, memory We will see diferent approaches Languages used: C, ML, Java Sometimes: Pascal, Fortran, C++, Ada Comparison of PL concepts We know what we can use Concepts can also be very different 75
76 Method Learning about PL constructs and implementation Every construct has its price It always good to know what is happening»below«efficient use of constructs Many times it is neccessary to know implementation of concepts Memory management Representation of data structures Implementation of functions and recursion Dynamic aspects of languages 76
77 What is happening in PL area? Trendy applications Complex programming systems Telecommunications Parallel programming Data mining/data science Supercomputers Visual/dataflow programming Artificial intelligence 77
78 What is happening in PL area? Classical high-level PL Java, C++, C, C#, Script/system languages Python, Perl, Lua, Rust,... Abstract but efficient PL Scala, Swift, Ruby, Go,. Increased use of functional languages Haskell, F#, Ocaml, Erlang, ML,... Increased use of functional concepts Java, C++, Scala, Ruby, Python,... Data programming languages R, Julia, Mathlab, SAS... 78
79 What is happening in PL area? Java is replacing C and C++? C, C++ is replacing Java? Python as the first language? Lisp/Schema still first language? C is coming back? Practical languages Python in schools? Strong programming environments Strong open-source support 79
80 What is happening in PL area? Research trends Strong typing, dynamic typing Dynamic and JIT optimization Compilers and multicore programming challenge Parallel programming Program graph analysis for parallelization Meta-programming 80
81 What is happening in PL area? Programming languages for target systems Mobile phones, ipad, El.machines, TV, car, washing machine, Concurrent PL Erlang, Concurrent ML, E, CAL,... Dataflow programming Multi-processor, multi-threaded prgramming 81
82 What is happening in PL area? More formal analysis used Type-checking, static and dynamic typing, program analysers, diagnostics, Abstract VM Additional level of abstraction: Virtual Machine Java VM, Erlang VM (BEAM),... Portability Meta-pogramming languages Coq, Isabelle, Twelf Languages used to analyse, test and implement other programming languages 82
83 What to learn? Most commonly used PLs C, C++, Java, Python Concepts of PLs Important implementation ideas New trends New languages: R, VimL, Go, Swift, Scala Functional constructs: Haskell, Ruby, C++, Java Design decisions trade-offs Functional vs. imperative, modular vs. object-oriented,... 83
Lecture 1. Programming II. Iztok Savnik, FAMNIT. October, 2015.
Lecture 1 Programming II Iztok Savnik, FAMNIT October, 2015. 1 Contents Course outline History of programmiing languages Concepts of programming languages Meta-Language ML Some benchmarks Method and aims
More informationConcepts in Programming Languages
Concepts in Programming Languages Marcelo Fiore Computer Laboratory University of Cambridge 2012 2013 (Easter Term) 1 Practicalities Course web page: with lecture
More informationTopic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.
Topic I Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapter 1 of Programming languages: Design and implementation (3RD EDITION)
More informationGeneral Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design
General Concepts Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design 1 Abstractions in Programming Languages Abstractions hide details that
More informationLanguage Translation, History. CS152. Chris Pollett. Sep. 3, 2008.
Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008. Outline. Language Definition, Translation. History of Programming Languages. Language Definition. There are several different ways one
More informationCom S 541. Programming Languages I
Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR
More informationIntroduction. A. Bellaachia Page: 1
Introduction 1. Objectives... 2 2. Why are there so many programming languages?... 2 3. What makes a language successful?... 2 4. Programming Domains... 3 5. Language and Computer Architecture... 4 6.
More informationComp 333: Concepts of Programming Languages Fall 2016
Comp 333: Concepts of Programming Languages Fall 2016 Instructor: Professor Schwartz History Syntax and Semantics Compilers Language Constructs Names, Binding, Scoping, Data Types Expressions, Control
More informationLecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)
Lecture 09 Ada to Software Engineering Mr. Mubashir Ali Lecturer (Dept. of dr.mubashirali1@gmail.com 1 Summary of Previous Lecture 1. ALGOL 68 2. COBOL 60 3. PL/1 4. BASIC 5. Early Dynamic Languages 6.
More information8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES
CS-3304 Introduction In Text: Chapter 1 & 2 COURSE DESCRIPTION 2 What will you learn? Survey of programming paradigms, including representative languages Language definition and description methods Overview
More informationWhich of the following is not true of FORTRAN?
PART II : A brief historical perspective and early high level languages, a bird's eye view of programming language concepts. Syntax and semantics-language definition, syntax, abstract syntax, concrete
More informationProgramming Languages, Summary CSC419; Odelia Schwartz
Programming Languages, Summary CSC419; Odelia Schwartz Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design
More informationChapter 2. 5 * B => A V 6 7 (subscripts) S 1.n 1.n (data types)
1. Plankalkül - 1945 - Never implemented - Advanced data structures - floating point, arrays, records - Invariants - Notation: A(7) := 5 * B(6) 5 * B => A V 6 7 (subscripts) S 1.n 1.n (data types) 2. Pseudocodes
More informationOrganization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful?
Organization of Programming Languages (CSE452) Instructor: Dr. B. Cheng Fall 2004 1 Why are there so many programming languages? Evolution -- we've learned better ways of doing things over time Socio-economic
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 1 - Introduction Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014
More informationCS 430 Spring History of Programming Languages. Mike Lam, Professor. John McCarthy ( ) Inventor of LISP
CS 430 Spring 2015 Mike Lam, Professor Dennis Ritchie (1941-2011) Inventor of C John McCarthy (1927-2011) Inventor of LISP History of Programming Languages All images taken from Wikipedia unless stated
More informationProgramming Language Concepts
Programming Language Concepts Mooly Sagiv msagiv@acm.org Thursday 11-13, Schriber 317 TA: Oded Padon Email: odedp@mail.tau.ac.il http://www.cs.tau.ac.il/~msagiv/courses/pl16.html Inspired by Stanford John
More informationCS 242. Fundamentals. Reading: See last slide
CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language
More informationCOS 326 Functional programming: an elegant weapon for the modern age
COS 326 Functional programming: an elegant weapon for the modern age In 1936, Alonzo Church invented the lambda calculus. He called it a logic, but it was a language of pure functions -- the world's first
More informationCSCI.4430/6969 Programming Languages Lecture Notes
CSCI.4430/6969 Programming Languages Lecture Notes August 28, 2006 1 Brief History of Programming Languages Ada Augusta, the Countess of Lovelace, the daughter of the poet Lord Byron, is attributed as
More informationCompiler Construction
Compiler Construction WWW: http://www.cs.uu.nl/wiki/cco Contact: J.Hage@uu.nl Edition 2016/2017 Course overview 2 What is compiler construction about? Programs are usually written in a high-level programming
More informationChapter 2. Pseudocodes: Speedcoding. 2.2 Minimal Hardware Programming: Pseudocodes. Evolution of the Major Programming Languages
Chapter 2 Evolution of the Major Programming Languages ISBN 0-321-33025-0 2.2 Minimal Hardware Programming: Pseudocodes What was wrong with using machine code? Poor readability Poor modifiability Expression
More information2. Evolution of the Major Programming languages
2. Evolution of the Major Programming languages Genealogy of Common Programming Lang. 2.1 Plankalkül - 1945 Never implemented Advanced data structures floating point, arrays, records Invariants Notation:
More information1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.
1. true / false By a compiler we mean a program that translates to code that will run natively on some machine. 2. true / false ML can be compiled. 3. true / false FORTRAN can reasonably be considered
More informationLecture 1: Course Introduction
Lecture 1: Course Introduction CS164: Programming Languages and Compilers P. N. Hilfinger, 787 Soda Spring 2015 Acknowledgement. Portions taken from CS164 notes by G. Necula. Last modified: Wed Jan 21
More informationChapter 11 :: Functional Languages
Chapter 11 :: Functional Languages Programming Language Pragmatics Michael L. Scott Copyright 2016 Elsevier 1 Chapter11_Functional_Languages_4e - Tue November 21, 2017 Historical Origins The imperative
More informationCS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106
CS 565: Programming Languages Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 Administrivia Who am I? Course web page http://www.cs.purdue.edu/homes/peugster/cs565spring08/ Office hours By appointment Main
More informationPROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING
PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING JAN BARTONÍČEK This paper's goal is to briefly explain the basic theory behind programming languages and their history
More informationIA010: Principles of Programming Languages
IA010: Principles of Programming Languages Introduction and course organization Achim Blumensath blumens@fi.muni.cz Faculty of Informatics, Masaryk University, Brno Warm-up: A Quiz What does this program
More informationCSc 520. Course Outline (Subject to change) Course Outline (Subject to change)... Principles of Programming Languages. Christian Collberg
Slide 0 2 Course Outline (Subject to change) This course will define, analyze and evaluate important concepts found in current programming languages. Its goals are to build an ability to evaluate and compare
More informationChapter 2. Evolution of the Major Programming Languages
Chapter 2 Evolution of the Major Programming Languages Chapter 2 Topics Zuse s Plankalkül Minimal Hardware Programming: Pseudocodes The IBM 704 and Fortran Functional Programming: Lisp The First Step Toward
More informationProgramming Languages (CSCI 4430/6430) History, Syntax, Semantics, Essentials, Paradigms
Programming Languages (CSCI 4430/6430) History, Syntax, Semantics, Essentials, Paradigms Carlos Varela Rennselaer Polytechnic Institute August 30, 2016 C. Varela 1 The first programmer ever Ada Augusta,
More information8/23/18. Programming Language Genealogy The Evolution of Programming Languages. Zuse s Plankalkül. Plankalkül Syntax. Machine Code
Programming Language Genealogy The Evolution of Programming Languages In Text: Chapter 2 2 Zuse s Plankalkül Designed in 1945, but not published until 1972 Never implemented Advanced data structures floating
More informationLecture 1: Course Introduction
Lecture 1: Course Introduction CS164: Programming Languages and Compilers P. N. Hilfinger, 787 Soda Fall 2013 Acknowledgement. Portions taken from CS164 notes by G. Necula. Last modified: Thu Aug 29 16:03:34
More informationSOFTWARE ARCHITECTURE 6. LISP
1 SOFTWARE ARCHITECTURE 6. LISP Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ 2 Compiler vs Interpreter Compiler Translate programs into machine languages Compilers are
More informationChapter 2. Chapter 2
1. Plankalkül 1945(program calculus) pp. - 41 - Never implemented but based on Z4 - Advanced data structures(scalar type and for loop) - integer, floating point, arrays, records - Mathematical expression,
More informationSeminar in Programming Languages
Seminar in Programming Languages Shuly Wintner Fall 2010-11 Course web site: http://cs.haifa.ac.il/~shuly/teaching/10/plseminar/ Course Goals Programming Language Concepts A language is a conceptual universe
More informationCS508-Modern Programming Solved MCQ(S) From Midterm Papers (1 TO 22 Lectures) BY Arslan
CS508-Modern Programming Solved MCQ(S) From Midterm Papers (1 TO 22 Lectures) BY Arslan April 18,2017 V-U For Updated Files Visit Our Site : Www.VirtualUstaad.blogspot.com Updated. MidTerm Papers Solved
More informationCS A331 Programming Language Concepts
CS A331 Programming Language Concepts Lecture 4 Programming Language Semantics and Code Generation February 3, 2014 Sam Siewert PLP Companion Materials CD-ROM is On-Line: http://booksite.elsevier.com/9780123745149/?isbn=978
More informationWhat is programming? Elements of Programming Languages. From machine code to programming languages. What is a programming language?
What is programming? Elements of Programming Languages Lecture 0: Introduction and Course Outline James Cheney University of Edinburgh September 18, 2017 Computers are deterministic machines, controlled
More informationCOSC 2P90 Programming Languages & Object-Orientation
COSC 2P90 Programming Languages & Object-Orientation Hi! 1 Textbooks Main Text Comparative Programming Languages 3rd ed.; Wilson, LB & Clark, RG; Addison-Wesley (2001); ISBN 0-201-71012-9 Supplemental
More informationProgramming Language Pragmatics
Chapter 10 :: Functional Languages Programming Language Pragmatics Michael L. Scott Historical Origins The imperative and functional models grew out of work undertaken Alan Turing, Alonzo Church, Stephen
More informationLanguages october 22, 2017 Éric Lévénez <http://www.levenez.com/lang/> FORTRAN III end-1958 FORTRAN II FORTRAN I october 1956
1954 1957 FORTRAN november 1954 FORTRAN I october 1956 FORTRAN II 1957 FORTRAN III end-1958 B-O 1957 Flow-Matic 1958 COBOL 1959 JOVIAL 1959 IAL 1958 ALGOL 58 1958 Lisp 1958 Lisp 1 1959 Languages october
More informationIntroduction P L COS 301. Fall School of Computing and Information Science University of Maine. Introduction COS 301.
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,
More informationFunctional Programming
The Meta Language (ML) and Functional Programming Daniel S. Fava danielsf@ifi.uio.no Department of informatics University of Oslo, Norway Motivation ML Demo Which programming languages are functional?
More informationCS 50 Introduction to Computer Science I
CS 50 Introduction to Computer Science I Michael D. Smith smith@eecs.harvard.edu Fall 2005 CS50 1 Q1: What s in common? Internet commerce and electronic markets Blockbuster movies and their special effects
More informationWelcome to. Instructor Marc Pomplun CS 470/670. Introduction to Artificial Intelligence 1/26/2016. Spring Selectivity in Complex Scenes
Welcome to CS 470/670 Introduction to Artificial Intelligence Office: Lab: Instructor Marc Pomplun S-3-171 S-3-135 Office Hours: Tuesdays 4:00pm 5:30pm Thursdays 7:00pm 8:30pm Spring 2016 Instructor: Marc
More informationProgramming Languages 2nd edition Tucker and Noonan"
Programming Languages 2nd edition Tucker and Noonan" " Chapter 1" Overview" " A good programming language is a conceptual universe for thinking about programming. " " " " " " " " " " " " "A. Perlis" "
More informationChapter 2 Preview. Preview. History of Programming Languages. History of Programming Languages. History of Programming Languages
Chapter 2 Preview Evolution of the Major Programming Languages The Beginnings of Data Abstraction: SIMULA 67 Orthogonal Design: ALGOL 68 Some Early Descendants of the ALGOLs Programming Based on Logic:
More informationCS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University
CS383 PROGRAMMING LANGUAGES Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University KENNY Q. ZHU Research Interests: Programming Languages Probabilistic Programming Data Processing Concurrency
More informationChapter 2. Evolution of the Major Programming Languages ISBN
Chapter 2 Evolution of the Major Programming Languages ISBN 0-321-49362-1 Chapter 2 Topics Zuse s Plankalkül Minimal Hardware Programming: Pseudocodes The IBM 704 and Fortran Functional Programming: Lisp
More informationChapter 2. Evolution of the Major Programming Languages
Chapter 2 Evolution of the Major Programming Languages Chapter 2 Topics Zuse s Plankalkül Minimal Hardware Programming: Pseudocodes The IBM 704 and Fortran Functional Programming: Lisp The First Step Toward
More informationCS101 Introduction to Programming Languages and Compilers
CS101 Introduction to Programming Languages and Compilers In this handout we ll examine different types of programming languages and take a brief look at compilers. We ll only hit the major highlights
More informationPLAGIARISM. Administrivia. Course home page: Introduction to Programming Languages and Compilers
Administrivia Introduction to Programming Languages and Compilers CS164 11:00-12:00 MWF 306 Soda Notes by G. Necula, with additions by P. Hilfinger Course home page: http://www-inst.eecs.berkeley.edu/~cs164
More informationIntroduction to Programming Languages and Compilers. CS164 11:00-12:00 MWF 306 Soda
Introduction to Programming Languages and Compilers CS164 11:00-12:00 MWF 306 Soda Notes by G. Necula, with additions by P. Hilfinger Prof. Hilfinger CS 164 Lecture 1 1 Administrivia Course home page:
More informationCMSC 330: Organization of Programming Languages. Functional Programming with OCaml
CMSC 330: Organization of Programming Languages Functional Programming with OCaml 1 What is a functional language? A functional language: defines computations as mathematical functions discourages use
More information1 A question of semantics
PART I BACKGROUND 1 A question of semantics The goal of this chapter is to give the reader a glimpse of the applications and problem areas that have motivated and to this day continue to inspire research
More informationCSc 372 Comparative Programming Languages
CSc 372 Comparative Programming Languages The University of Arizona Fall Semester, 2006 CSc 372, Fall 2006 Introduction Slide 1 CSc 372, Fall 2006 Introduction Slide 2 Introduction Instructor Teaching
More informationWhy are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?
Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic
More informationWhat is a programming language?
Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? What is a programming language?...there is no agreement on what a programming language
More informationWhat Is Computer Science? The Scientific Study of Computation. Expressing or Describing
What Is Computer Science? The Scientific Study of Computation CMPSCI 630: Programming Languages Introduction Spring 2009 (with thanks to Robert Harper) Expressing or Describing Automating Understanding
More informationFunctional Programming. Big Picture. Design of Programming Languages
Functional Programming Big Picture What we ve learned so far: Imperative Programming Languages Variables, binding, scoping, reference environment, etc What s next: Functional Programming Languages Semantics
More informationEvolution of the Major Programming Languages
Evolution of the Major Programming Languages SANGJI University Kwangman Ko (kkman@sangji.ac.kr) Genealogy of Common Languages kkman@sangji.ac.kr 2 1-3 Minimal Hardware Programming: Pseudocodes What was
More informationFoundations. Yu Zhang. Acknowledgement: modified from Stanford CS242
Spring 2013 Foundations Yu Zhang Acknowledgement: modified from Stanford CS242 https://courseware.stanford.edu/pg/courses/317431/ Course web site: http://staff.ustc.edu.cn/~yuzhang/fpl Reading Concepts
More informationChapter 2. Evolution of the Major Programming Languages ISBN
Chapter 2 Evolution of the Major Programming Languages ISBN 0-321-33025-0 Chapter 2 Topics Zuse s Plankalkul Minimal Hardware Programming: Pseudocodes The IBM 704 and Fortran Functional Programming: LISP
More informationCS 314 Principles of Programming Languages
CS 314 Principles of Programming Languages Lecture 15: Review and Functional Programming Zheng (Eddy) Zhang Rutgers University March 19, 2018 Class Information Midterm exam forum open in Sakai. HW4 and
More informationCIS24 Project #3. Student Name: Chun Chung Cheung Course Section: SA Date: 4/28/2003 Professor: Kopec. Subject: Functional Programming Language (ML)
CIS24 Project #3 Student Name: Chun Chung Cheung Course Section: SA Date: 4/28/2003 Professor: Kopec Subject: Functional Programming Language (ML) 1 Introduction ML Programming Language Functional programming
More informationIntroduction to Scientific Computing Languages
1 / 1 Introduction to Scientific Computing Languages Prof. Paolo Bientinesi pauldj@aices.rwth-aachen.de Languages for Scientific Computing 2 / 1 What is a programming language? Languages for Scientific
More informationProgramming Languages 1. Introduction. Oscar Nierstrasz
Programming Languages 1. Introduction Oscar Nierstrasz Roadmap > Course Schedule > Programming Paradigms > A Quick Tour of Programming Language History Programming Languages Lecturer: Assistants: WWW:
More information! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented
Course Goal CMSC 330: Organization of Programming Languages Introduction Learn how programming languages work Broaden your language horizons! Different programming languages! Different language features
More informationFUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 1. ÚVOD DO PŘEDMĚTU, LAMBDA CALCULUS
FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 1. ÚVOD DO PŘEDMĚTU, LAMBDA CALCULUS 2011 Jan Janoušek MI-FLP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Funkcionální a logické programování
More informationProgramming (Econometrics)
Programming (Econometrics) Lecture 1: Introduction Tommi Tervonen Econometric Institute, Erasmus University Rotterdam Course learning objectives After this course, you should be able to: Program econometrical
More informationIntroduction to Scientific Computing Languages
1 / 17 Introduction to Scientific Computing Languages Prof. Paolo Bientinesi pauldj@aices.rwth-aachen.de Languages for Scientific Computing 2 / 17 What is a programming language? Languages for Scientific
More informationPrinciples of Programming Languages. Lecture Outline
Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation
More informationFunctional Languages. Hwansoo Han
Functional Languages Hwansoo Han Historical Origins Imperative and functional models Alan Turing, Alonzo Church, Stephen Kleene, Emil Post, etc. ~1930s Different formalizations of the notion of an algorithm
More informationCS 415 Midterm Exam Spring 2002
CS 415 Midterm Exam Spring 2002 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Good Luck! Score Fortran Algol 60 Compilation Names, Bindings, Scope Functional Programming
More informationPrinciples in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo
Principles in Programming: Orientation & Lecture 1 1 Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC 2 Textbook Programming Challenges
More informationThe Algol family and ML
The Algol family and ML Volker Stolz stolz@ifi.uio.no Department of Informatics University of Oslo Initially by Gerardo Schneider. Based on John C. Mitchell s slides (Stanford U.) ML lectures 16.09: The
More informationThe Algol family and ML
The Algol family and ML Jacopo Mauro mauro.jacopo@gmail.com Department of Informatics University of Oslo Initially by Gerardo Schneider, Volker Stolz. Based on John C. Mitchell s slides (Stanford U.) ML
More informationChapter 2 Evolution of the Major Programming Languages Chapter 2 Topics
Chapter 2 Evolution of the Major Programming Languages Chapter 2 Topics Zuse s Plankalkül Minimal Hardware Programming: Pseudocodes The IBM 704 and Fortran Functional Programming: LISP The First Step Toward
More informationITT8060 Advanced Programming
ITT8060 Advanced Programming In F# Juhan Ernits Welcome to Advanced Programming (in F#)! Teachers: Juhan Ernits Hendrik Maarand Course web page http://courses.cs.ttu.ee/pages/itt8060 Contact: juhan.ernits@ttu.ee
More informationProgramming Languages CMSC 4023 Chapter 2
2. Programming languages are designed to satisfy two objectives. 2.1. People need to be able to write instructions that implement computational procedures and algorithms in a programming language. 2.2.
More informationCompilers and interpreters
Lecture 5 Compilers and interpreters FAMNIT March, 2018. 1 Slides Lecture by Jan Karabaš Compilers and interpreters Programming II FAMNIT, 2015 Additional literature: Michael L. Scott, Programming Language
More informationQuestion No: 1 ( Marks: 1 ) - Please choose one One difference LISP and PROLOG is. AI Puzzle Game All f the given
MUHAMMAD FAISAL MIT 4 th Semester Al-Barq Campus (VGJW01) Gujranwala faisalgrw123@gmail.com MEGA File Solved MCQ s For Final TERM EXAMS CS508- Modern Programming Languages Question No: 1 ( Marks: 1 ) -
More informationObjective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming
30 th September 2018 Objective: To learn meaning and concepts of programming Outcome: By the end of this students should be able to describe the meaning of programming Section 1: What is a programming
More informationEvolution of PL s. EECS 476, Prog. Lang. Design/ page 1
Evolution of PL s I. Ways of Organizing the evolution of PL s A. Types of PL s [Sebesta p. 37] 1. Procedural (Imperative) [F&G, p. 39] 2. Functional (applicative) [F&G, p. 41] 3. Logical (declarative)
More informationProgrammiersprachen (Programming Languages)
2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html
More information15-411/ Compiler Design
15-411/15-611 Compiler Design Jan Hoffmann Fall 2016 http://www.cs.cmu.edu/~janh/courses/411/16 Teaching Staff Instructor: Jan Hoffmann Office hours: Tue 10:30am-noon Thu 1:00pm-2:30pm at GHC 9105 Teaching
More informationPrinciples in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo
Principles in Programming: Orientation & Lecture 1 1 Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC 2 Introduction Instructor:
More informationCOS 326 Func,onal Programming: An elegant weapon for the modern age David Walker Princeton University
2007 xkcd COS 326 Func,onal Programming: An elegant weapon for the modern age David Walker Princeton University slides copyright 2013-2015 David Walker and Andrew W. Appel permission granted to reuse these
More informationProgramming Paradigms and Languages Introduction. dr Robert Kowalczyk WMiI UŁ
Programming Paradigms and Languages Introduction dr Robert Kowalczyk WMiI UŁ What is a programming paradigm? A programming paradigm is a fundamental style of computer programming, a way of building the
More informationSoftware II: Principles of Programming Languages
Software II: Principles of Programming Languages Lecture 2 A History of Programming Languages What is a Programming Language? A programming language describes computation to be performed by computers.
More informationComputers in Engineering COMP 208. A Brief History. Mechanical Calculators. A Historic Perspective Michael A. Hawker
Computers in Engineering COMP 208 A Historic Perspective Michael A. Hawker Sept 4th, 2007 Computers in Engineering 1 A Brief History Abacus considered first mechanical computing device Used beads and rods
More informationComputers in Engineering COMP 208
Computers in Engineering COMP 208 A Historic Perspective Michael A. Hawker Sept 4th, 2007 Computers in Engineering 1 A Brief History Abacus considered first mechanical computing device Used beads and rods
More informationCSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN
What languages do you know? CSC 326H1F, Programming Languages The usual suspects: C, C++, Java fine languages nearly the same Perhaps you've also learned some others? assembler Basic, Visual Basic, Turing,
More informationLanguage Sequence. The Algol Family and ML. Algol 60 Sample. Algol 60. Some trouble spots in Algol 60. Algol Joke. John Mitchell
CS 4 Language Sequence The Algol Family and ML Lisp Algol 60 John Mitchell Algol 68 Pascal ML Modula Reading: Chapter 5 Many other languages: Algol 58, Algol W, Euclid, EL, Mesa (PARC), Modula-, Oberon,
More informationCSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Summer 2013 Faculty of Computer Science Dalhousie University 1 / 100 CSCI 3136 Principles of Programming Languages Summer 2013 Aminul Islam Faculty of Computer
More information1/14/2014. Introduction to CSE 1325 Object Oriented Programming (Using Java) Introduction (Cont.) Introduction
Introduction (Cont.) Introduction to CSE 1325 Object Oriented Programming (Using Java) Sharma Chakravarthy Information Technology Laboratory (IT Lab) Computer Science and Engineering Department The University
More informationOutline. Programming Languages 1/16/18 PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY. Current
PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY Dr. John Georgas, Northern Arizona University Copyright John Georgas All Rights Reserved Outline Current Programming languages Compiled and interpreted implementations
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 15 - Functional Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More information