Programming Language Design Concepts

Slides:



Advertisements
Similar presentations
Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Advertisements

Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
Programming Languages Structure
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
CS 415: Programming Languages Course Introduction Aaron Bloomfield Fall 2005.
COP4020/CGS5426 Programming languages Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: T, H 10:00am – 11:30am Class website:
CS 331, Principles of Programming Languages Introduction.
CS 415: Programming Languages Chapter 1 Aaron Bloomfield Fall 2005.
314450: PROGRAMMING PARADIGMS Teaching scheme: Examination Scheme: Lectures: 3 Hours/Week Theory: 100 Marks OBJECTIVE: To understand the basic building.
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
CS2303 C14 Systems Programming Concepts Bob Kinicki.
Chapter 1. Introduction.
Programming Languages Summer
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
By Neng-Fa Zhou1 Evolution of programming languages –Machine language –Assembly language –Sub-routines and loop (Fortran) –Procedures and recursion (Algol,
February 25, ICE 1341 – Programming Languages (Lecture #1) In-Young Ko Programming Languages (ICE 1341) Lecture #1 Programming Languages (ICE 1341)
1 Programming Languages Marjan Sirjani Course web site:
1 Programming Language History and Evolution In Text: Chapter 2.
Fortran Fortran – Formula Translation –Developed by John Backus (IBM) in the mid 1950s. –It was a team effort and the design goal was to produce a translation.
CS 331, Principles of Programming Languages Chapter 1.
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
Allyson M. Hoss, January 14, 2008 CSC 7101 Programming Language Structures Spring 2008 Louisiana State University.
Programming Languages
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
CSCE 314 Programming Languages
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
CPS120 Introduction to Computer Science High Level Language: Paradigms.
Programming Language History and Evolution
Chapter 1. Introduction.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Programming Languages 2nd edition Tucker and Noonan
Programming Languages
The language focusses on ease of use
Andy Wang Object Oriented Programming in C++ COP 3330
Concepts of Programming Languages
CSE 3302 Programming Languages
Introduction to programming languages, Algorithms & flowcharts
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Concepts of Programming Languages
Why study programming languages?
Basic 1964 PC general purpose Imperative Small Easy to use.
Introduction to programming languages, Algorithms & flowcharts
PROGRAMMING LANGUAGES
CS 326 Programming Languages, Concepts and Implementation
课程名 编译原理 Compiling Techniques
Programming Language History and Evolution
Evolution of programming languages
Introduction to programming languages, Algorithms & flowcharts
Welcome to Programming Languages!
Foundations of Programming Languages – Course Overview
Problem Solving Using C: Orientation & Lecture 1
Programming Languages
Foundations of Programming Languages – Course Overview
Final Review In Text: Chapters 1-11,
Programming Language Design
Organization of Programming Languages
Programming Languages 2nd edition Tucker and Noonan
CSE 341 Programming Languages Autumn 2003
Computer Programming 1 introduction to JAVA Lecture 1 Instructor: Ruba A. Salamah Islamic University of Gaza.
CSE 341 Programming Languages Autumn 2002
Problem Solving Using C: Orientation & Lecture 1
Principles of Programming Languages
Overview of Programming Paradigms
CSE 341 Programming Languages Autumn 2003
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Programming Languages
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
School of Computer & Information Engineering,
Presentation transcript:

Programming Language Design Concepts Assist.Prof. Tugba Onal-Suzek

CENG2002 Instructor: Tugba Onal-Suzek (substituting Izzet Hoca temporarily) Teaching Assistant: Erdem Turk Office: E1-10 Email: tugbas2001@yahoo.com Lecture Hours: Fri 13:30-16:20 (C105) Recitation Hours (C106): Thu:15:30-17:30 Course Web page: http://eng1.mu.edu.tr/~tugba/PL Textbook: http://eng1.mu.edu.tr/~tugba/PL/ProgrammingLanguageDesignConce ptsBook.pdf

Grading Midterm 40% Attendance and Quizes 10 % Final 50% Attendance is mandatory. If you miss 5 classes, you get 0 attendance point If you miss 6 classes, your grade is TT Final 50%

Policies Academic honesty is required in all work We will talk about Plagiarism briefly today Exams are closed book , but you are allowed 1 page cheat-sheet

Tentative Syllabus Feb 10: Programming Languages concepts and paradigms, syntax, semantics, pragmatics, history, Values(primitive only) Feb 17: Values and Types: primitive, composite, recursive types, type systems Feb 24: Expressions Mar 3 : Variables and Storage Mar 10: Bindings and Scope Mar 17 : Procedural Abstraction Mar 24: Data Abstraction Mar 31 and on: To Be Determined!

How do we classify life? Taxonomy!!! Placing objects, e.g., life, into some type of order. E.g., the forelimb bones of a bird, bat, and cat

How do we classify Programming Languages? Procedural Languages? C, Perl Functional Languages? Haskell, ML Object Oriented Languages? Java, C++ Scripting Languages? Javascript, Shell script Mark-up Languages? HTML, XML They are languages, but are they really programming languages? Why? Why not? Hybrid Python, Ruby, Perl Low-level vs High-level Languages? Assembler vs Java

Diversity of Programming Languages http://www.rosettacode.org/wiki/Hello_world/Text

Which Programming Languages is BEST??? D Is Bach or Mozart best composer? Is Mazda or Mercedes best car? Is Messi or Ronaldo best player? Popularity of Programming Languages: http://spectrum.ieee.org/computing/software/the-2016-top-programming- languages

1 Introduction Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors. Historical development of programming languages and paradigms.

Programming linguistics Programming linguistics is the study of programming languages (PLs). This is by analogy with linguistics, the study of natural languages (NLs): Both PLs and NLs have syntax (form) and semantics (meaning). However, NLs are far broader, more expressive, and more subtle than PLs. Also, linguists are limited to studying existing NLs. Computing scientists can design, specify, and implement new PLs.

Properties A PL must be universal – capable of expressing any computation. A language without iteration or recursion is not universal. A language of recursive functions (and nothing else) is universal. A PL should be reasonably natural for expressing computations in its intended application area. A PL must be implementable – it must be possible to run every program on a computer. A PL should be capable of acceptably efficient implementation.

Concepts Concepts are building blocks of programs and PLs: values and types variables and storage bindings and scope procedural abstraction data abstraction generic abstraction (not covered in this course) concurrency (not covered in this course).

Paradigms A paradigm is a style of programming, characterized by a particular selection of key concepts. Imperative programming: variables, commands, procedures. Object-oriented (OO) programming: objects, methods, classes. Concurrent programming: processes, communication. Functional programming: values, expressions, functions. Logic programming: assertions, relations.

Syntax, semantics, and pragmatics A PL’s syntax is concerned with the form of programs: how expressions, commands, declarations, and other constructs must be arranged to make a well-formed program. A PL’s semantics is concerned with the meaning of (well- formed) programs: how a program may be expected to behave when executed on a computer. A PL’s pragmatics is concerned with the way in which the PL is intended to be used in practice. Pragmatics include the paradigm(s) supported by the PL.

Language processors A language processor is a system for processing programs either executing them or preparing them for execution. Language processors include: compilers interpreters source-code editors symbolic debuggers.

Historical development (1) 1955 1960 1965 1970 1975 1980 OO imperative concurrent 1985 functional Fortran Algol60 PL/I Lisp Cobol ML Simula C Pascal Algol68 Smalltalk C++ Ada83 Modula

Historical development (2) 1980 1985 1990 1995 2000 2005 OO imperative concurrent functional Ada83 C++ Haskell Ada95 Java C#