Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Go (programming language) wikipedia , lookup
Structured programming wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Reactive programming wikipedia , lookup
Programming language wikipedia , lookup
Functional programming wikipedia , lookup
Object-oriented programming wikipedia , lookup
Chapter 1 Preliminaries ISBN 0-321-19362-8 Chapter 1 Topics • • • • • • • • Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language Design Trade-Offs Implementation Methods Programming Environments Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-2 Motivation: Why Study Programming Languages? • Increased ability to express ideas • Improved background for choosing appropriate languages • Greater ability to learn new languages • Understand significance of implementation • Ability to design new languages • Overall advancement of computing Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-3 What makes programming languages an interesting subject? The amazing variety There are very many, very different languages A list that used to be posted occasionally on comp.lang.misc had over 2800 published languages in 1999. Often grouped into four families: { Imperative { Object-oriented { Functional { Logic Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-4 Imperative Languages Example: Factorial function in C int fact(int n) { int sofar = 1; while (n>0) sofar *= n--; return sofar; } Hallmarks of imperative languages: { Assignment { Iteration { Order of execution is critical Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-5 Functional Languages Example: Factorial function in Haskell fac 0 = 1 fac n = n * fac (n-1) Hallmarks of functional languages: { Single-valued variables { closely tied to the mathematical concept of \function" { Heavy use of recursion Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-6 Logic Languages Example: Factorial function in Prolog fact(X,1) :X =:= 1. fact(X,Fact) :X > 1, NewX is X - 1, fact(NewX,NF), Fact is X * NF. Hallmark of logic languages { Program expressed as rules in formal logic Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-7 Object-Oriented Languages Example: a Java denition for a kind of object that can store an integer and compute its factorial public class MyInt { private int value; public MyInt(int value) { this.value = value; } Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-8 public int getValue() { return value; } public MyInt getFact() { return new MyInt(fact(value)); } private int fact(int n) { int sofar = 1; while (n > 1) sofar *= n--; return sofar; }} Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-9 Hallmarks of object-oriented languages: { Usually imperative, plus . . . { Constructs to help programmers use "objects\-little bundles of data that know how to do things to themselves. Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-10 Widely Used and Not Widely Used Widely Used { Java: Quick rise to popularity since 1995 release { Java uses many ideas from C++, plus some from Mesa, Modula, and other languages { C++ uses most of C and extends it with ideas from Simula 67, Ada, Clu, ML and Algol 68 Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-11 { C was derived from B, which was derived from BCPL, which was derived from CPL, which was derived from Algol 60 Not Widely Used: Algol { One of the earliest languages: Algol 58, Algol 60, Algol 68 { Never widely used { Introduced many ideas that were used in later languages, including Block structure and scope Recursive functions Parameter passing by value Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-12 Programming Paradigms A programming language is a problem-solving tool. Imperative style: program = algorithms + data good for decomposition Functional style: program = functions o functions good for reasoning Logic programming style: Object-oriented style: program = facts + rules good for searching program = objects + messages good for modeling(!) 1.13 Programming Domains • Scientific applications – Large number of floating point computations • Business applications – Produce reports, use decimal numbers and characters • Artificial intelligence – Symbols rather than numbers manipulated • Systems programming – Need efficiency because of continuous use • Scripting languages – Put a list of commands in a file to be executed • Special-purpose languages Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-14 Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-15 Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-16 Language Evaluation Criteria • Readability – The most important criterion – Factors: • Overall simplicity – Too many features is bad – Multiplicity of features is bad • Orthogonality – Makes the language easy to learn and read – Meaning is context independent – A relatively small set of primitive constructs can be combined in a relatively small number of ways – Every possible combination is legal Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-17 Language Evaluation Criteria – Readability factors (continued) • Control statements • Defining data types and structures • Syntax considerations – Identifier forms – Special words – Form and meaning Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-18 Language Evaluation Criteria • Writability – Factors: • Simplicity and orthogonality • Support for abstraction • Expressivity • Reliability – Factors: • • • • Type checking Exception handling Aliasing Readability and writability Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-19 Language Evaluation Criteria • Cost – Categories • • • • • • • Training programmers to use language Writing programs Compiling programs Executing programs Language implementation system Reliability Maintaining programs • Others: portability, generality, well-definedness Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-20 Influences on Language Design • Computer architecture: Von Neumann • We use imperative languages, at least in part, because we use von Neumann machines – Data and programs stored in same memory – Memory is separate from CPU – Instructions and data are piped from memory to CPU – Basis for imperative languages • Variables model memory cells • Assignment statements model piping • Iteration is efficient Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-21 Von Neumann Architecture Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-22 Influences on Language Design • Programming methodologies – 1950s and early 1960s: Simple applications; worry about machine efficiency – Late 1960s: People efficiency became important; readability, better control structures • Structured programming • Top-down design and step-wise refinement – Late 1970s: Process-oriented to data-oriented • data abstraction – Middle 1980s: Object-oriented programming Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-23 Language Categories • Imperative – Central features are variables, assignment statements, and iteration – C, Pascal • Functional – Main means of making computations is by applying functions to given parameters – LISP, Scheme Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-24 Language Categories • Logic – Rule-based – Rules are specified in no special order – Prolog • Object-oriented – – – – Encapsulate data objects with processing Inheritance and dynamic type binding Grew out of imperative languages C++, Java Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-25 Language Design Trade-Offs • Reliability vs. cost of execution • Readability vs. writability • Flexibility vs. safety Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-26 Layered View of Computer Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-27 Levels of Language in Computing Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-28 Implementation Methods • Compilation – Translate high-level program to machine code – Slow translation – Fast execution Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-29 Compilation Process Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-30 Implementation Methods • Pure interpretation – No translation – Slow execution – Becoming rare Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-31 Pure Interpretation Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-32 Implementation Methods • Hybrid implementation systems – Small translation cost – Medium execution speed Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-33 Hybrid Implementation System Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-34 Programming Environments • The collection of tools used in software development • UNIX – An older operating system and tool collection • Borland JBuilder – An integrated development environment for Java • Microsoft Visual Studio.NET – A large, complex visual environment – Used to program in C#, Visual BASIC.NET, Jscript, J#, or C++ Copyright © 2004 Pearson Addison-Wesley. All rights reserved. 1-35