Programming Languages – An introduction. There are 10 types of people in the world −Those who understand binary −Those who don’t.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter One Preliminaries, including –Why study PL concepts? –Programming domains –PL evaluation criteria.
CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?
Computers Are Your Future
History of Object Orientation. What is Object-Orientation? Programming is one of the most complicated and difficult of human activities. It helps a great.
Chapter 1: Preliminaries
Programming Languages Language Design Issues Why study programming languages Language development Software architectures Design goals Attributes of a good.
Computers Are Your Future © 2006 Prentice Hall, Inc.
Reasons to study concepts of PL
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
Computers: Tools for an Information Age
Programming Languages Structure
ISBN Lecture 01 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Lecture 01 Topics Motivation Programming.
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Concepts of Programming Languages Chapter 1.
1 Programming Languages Marjan Sirjani 2 1- The Study of Programming Languages The purpose of language is simply that it must convey meaning. (Confucius)
Languages and Compilers (SProg og Oversættere) Bent Thomsen Department of Computer Science Aalborg University.
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
PROGRAMMING LANGUAGES The Study of Programming Languages.
History of Programming Languages
Computers Are Your Future Tenth Edition Chapter 11: Programming Languages & Program Development Copyright © 2009 Pearson Education, Inc. Publishing as.
Programming Languages – Coding schemes used to write both systems and application software A programming language is an abstraction mechanism. It enables.
Fremtidens programmeringssprog Bent Thomsen PhD, DIC, Cand.Scient, EurIng, CEng, CITP, CSci, FBCS, MACM, MIEEE Department of Computer Science.
Overview. Copyright © 2006 The McGraw-Hill Companies, Inc. Chapter 1 Overview A good programming language is a conceptual universe for thinking about.
1 Programming Language Concepts Ethics Why study concepts of programming languages (PLs)? PL categories Influences on PL design Problem areas & needs that.
Programming Languages CPS120: Introduction to Computer Science Lecture 5.
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
CS 355 – Programming Languages
There are only 10 types of people in the world, those who understand binary and those who don't.
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
UNIVERSITI TENAGA NASIONAL “Generates Professionals” CHAPTER 4 : Part 2 INTRODUCTION TO SOFTWARE DEVELOPMENT: PROGRAMMING & LANGUAGES.
COMPUTER PROGRAMMING Source: Computing Concepts (the I-series) by Haag, Cummings, and Rhea, McGraw-Hill/Irwin, 2002.
Chapter 1. Introduction.
COP 4020 Programming Langauges Dr. Roy Levow –Office hours: M 5-6:30 – –
1 Programming Languages Marjan Sirjani Course web site:
1 Programming Language History and Evolution In Text: Chapter 2.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
National Diploma Unit 4 Introduction to Software Development Introduction to Programming Languages.
Software Basics. Some Pioneers Charles Babbage Analytical Engine Countess Ada Lovelace First Programmer ? John Von Neumann storing instructions in memory.
Module 4 Part 2 Introduction To Software Development : Programming & Languages Introduction To Software Development : Programming & Languages.
Programming Language 1. Programming language A programming language is a machine-readable artificial language designed to express computations that can.
Programming Domains 1.Scientific Applications Typically, scientific applications have simple data structures but require large numbers of floating-point.
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
Computer Programming CONTENTS Introduction to Operating Systems Introduction to programming languages Introduction to perl programming language Programming.
Introduction to Programming Languages © 2005 Prentice Hall, Inc. CXC IT Unit 2: Intro. to Programming.
Programming Language Paradigms ITSK2314 Lecture 3.
a medium allowing humans and computers to communicate an abstraction of the real world a notation for expressing algorithms the set of all syntactically.
History. Development Driven by Function Functions of a Programming Language –To describe computation for use by computers –To describe computation and.
Website Source Code Free Download.
Programming Languages 2nd edition Tucker and Noonan
Concepts of Programming Languages
Introduction to programming languages, Algorithms & flowcharts
Introduction to programming languages, Algorithms & flowcharts
PROGRAMMING LANGUAGES
CSCI-235 Micro-Computer Applications
Introduction of Programming Languages
Chapter 1 Preliminaries.
Developing Applications
Introduction to programming languages, Algorithms & flowcharts
Ada – 1983 History’s largest design effort
Chapter 1 Preliminary. Chapter 1 Preliminary 1.1 Reasons for Studying Concepts of Programming Languages Increased capacity to express ideas Improved.
Programming Languages 2nd edition Tucker and Noonan
Introduction to Computer Programming
Von Neumann Architecture
Principles of Programming Languages
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Reasons To Study Programming Languages
Presentation transcript:

Programming Languages – An introduction

There are 10 types of people in the world −Those who understand binary −Those who don’t

Programming Languages The purpose of language is simply that it must convey meaning. (Confucius) That which can be said, can be said clearly. (Wittgenstein,1963) A program is a specification of a computation. A programming language is a notation for writing programs.(Sethi,89)

The Most Important Open Problem in Computing Increasing Programmer Productivity −Write programs correctly −Write programs quickly −Write programs easily Why? −Decreases support cost −Decreases development cost −Decreases time to market −Increases satisfaction

How to increase Programmer Productivity? 3 ways of increasing programmer productivity: 1.Process (software engineering) Controlling programmers Good process can yield up to 20% increase 2.Tools (verification, static analysis, program generation) Good tools can yield up to 10% increase Language design --- the center of the universe! 3.Core abstractions, mechanisms, services, guarantees −Affect how programmers approach a task (C vs. SML) −New languages can yield 700% increase

Why Are There So Many Programming Languages Why does some people speak French? Programming languages have evolved over time as better ways have been developed to design them. −First programming languages were developed in the 1950s −Since then thousands of languages have been developed Different programming languages are designed for different types of programs.

C Different Programming language Design Philosophies Other languages If all you have is a hammer, then everything looks like a nail.

Influences on programming languages Computer capabilities Hardware and OS Applications Wide area of applications Programming methods Multiprogramming, interactive systems, data abstraction, formal semantics, O-O programming,… Implementation methods Theoretical studies Standardization

Attributes of a good language Clarity, simplicity, and unity −Have a minimum number of different concepts, with the rules for their combination, simple and regular (conceptual integrity). −Readability Orthogonality −Being able to combine various features of a language in all possible combinations. Naturalness for the application Support for abstraction

Attributes of a good language Ease of program verification −Proof of correctness, desk checking, test −Simplicity of semantic and syntax Programming environment Portability of programs Cost of use −Program execution −Program translation −Program creation, testing, and use −Program maintenance

Attributes of a good language Reliability −Writability −Readability −Simplicity −Safety (goto, pointers) −Robustness Maintainability −Factoring (modularity) −Locality Efficiency

Charles Babbage ( ) The Father of Computers

Charles Babbage’s Difference Engine

Charles Babbage’s Analytical Engine

Lady Augusta Ada Countess of Lovelace Lady Augusta Ada Countess of Lovelace

Programming Language History 1940s The first electronic computers were monstrous contraptions −Programmed in binary machine code by hand −Code is not reusable or relocatable −Computation and machine maintenance were difficult: cathode tubes regularly burned out The term ‘‘bug’’ originated from a bug that reportedly roamed around in a machine causing short circuits

Programming Language History Late 1940s early 1950s Assembly languages −invented to allow machine operations to be expressed in mnemonic abbreviations −Enables larger, reusable, and re-locatable programs −Actual machine code is produced by an assembler −Early assemblers had a one-to-one correspondence between assembly and machine instructions −Later: expansion of macros into multiple machine instructions to achieve a form of higher-level programming

Programming Language History Mid 1950s Fortran, the first higher-level language −Now programs could be developed that were machine independent! −Main computing activity in the 50s: solve numerical problems in science and engineering −Other high-level languages soon followed: Algol 58 is an improvement compared to Fortran Cobol for business computing Lisp for symbolic computing and artificial intelligence BASIC for "beginners"

Programming Language History 1960s Structured Programming, Dijkstra, Dahl, and Hoare. Pascal, Niklaus Wirth (ETH, Zurich) −Modelled after Algol −No GOTO −Very strongly typed −Procedures nested inside each other −Designed for teaching programming Simula, Dahl and Nygaard (Norway) −The first language with objects, classes, and subclasses

Programming Language History 1970s C, Ken Thompson (Bell Labs) −Successor to B, which was stripped-down BCPL. −High-level constructs and low-level power Ada, Jean Ichbiah (France) −Instigated by the Department of Defense −Designed for systems programming, especially embedded systems.

Programming Language History 1970s Smalltalk, Alan Kay, Adele Goldberg (Xerox PARC) −Graphics-rich GUI Fonts −Object-oriented Everything is an object Objects communicate through messages Scheme, Gerald Sussman & Guy Steele (MIT) −LISP with static scoping Prolog, Philippe Roussel (France) −Based on rules, facts, and queries.

Programming Language History 1980s Object-oriented programming −Important innovation for software development −The concept of a class is based on the notion of data type abstraction from Simula 67, a language for discrete event simulation that has classes but no inheritance : C++ Bjarne Stroustrop (Bell Labs) −Originally thought of as “C with classes”. −First widely-accepted object-oriented language. −First implemented as a pre-processor for the C compiler.

Programming Language History 1980s Functional Programming −Extensive list of new concepts Lazy vs. eager evaluation Pure vs. imperative features Parametric polymorphism Type inference (Garbage collection) −Hope −Clean −Haskell −SML −Caml

The 1990s: the Internet age HTML, Tim Berners-Lee (CERN) −“Hypertext Markup Language” Language of the World Wide Web. Scripting languages −PERL. CGI or Apache module −Languages within Web pages JavaScript, VBScript PHP, ASP, JSP Some important languages that were developed in this time period include: −1990 – Python −1991 – Java −1995 – PHP −1996 – ASP −2000 – C#

Programming Language Genealogy

Assembled, Compiled, or Interpreted Languages All programs must be translated before their instructions can be executed. Computer languages can be grouped according to which translation process is used to convert the instructions into binary code: −Assemblers −Interpreters −Compilers

Assembled, Compiled, or Interpreted Languages Assembled languages: −Assembler: a program used to translate Assembly language programs. −Produces one line of binary code per original program statement. −The entire program is assembled before the program is sent to the computer for execution.

Assembled, Compiled, or Interpreted Languages Interpreted Languages: −Interpreter: A program used to translate high-level programs. −Translates one line of the program into binary code at a time: An instruction is fetched from the original source code. The Interpreter checks the single instruction for errors. (If an error is found, translation and execution ceases. Otherwise…) The instruction is translated into binary code. The binary coded instruction is executed. The fetch and execute process repeats for the entire program.

Assembled, Compiled, or Interpreted Languages Compiled languages: −Compiler: a program used to translate high-level programs. −Translates the entire program into binary code before anything is sent to the CPU for execution. −The translation process for a compiled program: First, the Compiler checks the entire program for syntax errors in the original source code. Next, it translates all of the instructions into binary code. −Two versions of the same program exist: the original source code version, and the binary code version (object code). Last, the CPU attempts execution only after the programmer requests that the program be executed.

Programming for Everyone Scripting: A series of commands, written to accomplish some task. −Very similar to the concept of a program. −Extends the capabilities of the application where it is being used. −Examples of scripting languages: Perl, VBScript, JavaScript JavaScript: A scripting language that allows the Web page designer to add functional features to a formatted web page created in HTML.

The first computer bug Rear Admiral Dr. Grace Murray Hopper "Life was simple before World War II. After that, we had systems."