CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming...
-
Upload
orion-jemison -
Category
Documents
-
view
212 -
download
0
Transcript of CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming...
![Page 1: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/1.jpg)
CSI 3125, Preliminaries, page 1
Programming languagesand the process of programming
– Programming means more than coding.
– Why study programming languages?
– Programming language paradigmsand applications.
![Page 2: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/2.jpg)
CSI 3125, Preliminaries, page 2
Programming languagesand the process of programming
• Before coding begins, analyze the problem, design an algorithm, analyze the cost of the solution.
• After all coding has been done, maintain the program.
• Programming languages are used to instruct computers.– What do we communicate to computers?– How do computers talk back to us?
![Page 3: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/3.jpg)
CSI 3125, Preliminaries, page 3
Programming languagesand the process of programming
• How do programming languages differ from natural languages?
• Would talking to computers in human languages be preferable?
• What makes someone a good programmer?
• Should a good programmer know more than one programming language?
![Page 4: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/4.jpg)
CSI 3125, Preliminaries, page 4
Why should we study programming languages?
• To understand better the connection between algorithms and programs.
• To be able to look for general, language-independent solutions.
• To have a choice of programming tools that best match the task at hand:– identify subtasks and apply to each of them
the best language, using the full expressive power of each language.
![Page 5: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/5.jpg)
CSI 3125, Preliminaries, page 5
• To learn new programming languages easily and to know how to design new formal languages (for example, input data formats).
• To see how a language may influence the discipline of computing and strengthen good software engineering practice.
Why should we study programming languages?
![Page 6: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/6.jpg)
CSI 3125, Preliminaries, page 6
The many classesof programming languages:
programming language paradigms
• Every programming language supports a slightly different or dramatically different style of problem solving.
• The same computation can be expressed in various languages, and then run on the same computer.
![Page 7: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/7.jpg)
CSI 3125, Preliminaries, page 7
Programming languagesclassified by paradigm
• Imperative: how do we solve a problem (what steps does a solution have)?
• Logic-based: what do we do to solve a problem? (The language decides how to do it.)
• Functional: what simple operations can be applied to solving a problem, how are they mutually related, and how can they be combined?
• Object-oriented: what objects play roles in a problem, what can they do, and how do they interact to solve the problem?
![Page 8: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/8.jpg)
CSI 3125, Preliminaries, page 8
Classification by generality of use
• General-purpose programming languages(most of the known languages are in this category);
• Specialized programming languages(for example, database languages, vector-processing languages, report generation languages, scripting languages, and more).
![Page 9: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/9.jpg)
CSI 3125, Preliminaries, page 9
Classification by complication,abstraction, level
• Low-level languages (machine languages, assembly languages).
• High-level languages (most of the well-known languages belong in this category).
• Very high-level languages (Prolog is sometimes listed in this category, and some specialized languages).
• Beyond programming languages:– Programming environments, software
development tools and workbenches.
![Page 10: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/10.jpg)
CSI 3125, Preliminaries, page 10
Criteria for the design and evaluationof programming languages
– Readability– Writability– Reliability– Cost
![Page 11: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/11.jpg)
CSI 3125, Preliminaries, page 11
Readability
• This is subjective, but very important.• Language readability is essential because
of software engineering practices, and in particular the needs of software evolution and maintenance.– Abstraction—support for generality of
programs: procedural abstraction, data abstraction.
– Absence of ambiguity (and absence of too many coding choices, like having five different loop constructs).
![Page 12: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/12.jpg)
CSI 3125, Preliminaries, page 12
Readability
• Expressivity of control and data structures.– what is better (easier to read, maintain and so on):
– a longer program made of simple elements?– a shorter program built out of complex,
specialized constructions?– Examples of high expressive power: recursion,
built-in backtracking (as in Prolog), search in database languages.
– Examples of low expressive power: instructions in machine or assembly languages.
• Appearance: syntax, including comments.
![Page 13: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/13.jpg)
CSI 3125, Preliminaries, page 13
Writability
• Abstraction and simplicity: once more, subjective.– Pascal has always been considered simple, Ada
—complicated– Basic is very simple– Prolog is conceptually simple, but may be
difficult to learn.– is C++ simple? is Java?
• Expressivity again.
• Modularity and tools for modularization, support for integrated programming environments.
![Page 14: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/14.jpg)
CSI 3125, Preliminaries, page 14
Reliability and Cost• Reliability.
– Safety for the programmer (type checking, error and exception handling, unambiguous names).
• Cost.– Development time (ease of programming,
availability of shared code).– Efficiency of implementation: how easy it is to
build a language processor (Algol 68 is a known failure, Ada almost a failure; Pascal, C, C++ and Java are notable successes).
– Translation time and the quality of object code.– Portability and standardization.
![Page 15: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/15.jpg)
CSI 3125, Preliminaries, page 15
Implementing programming languages
– Language processors, virtual machines– Models of implementation– Compilation and execution
![Page 16: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/16.jpg)
CSI 3125, Preliminaries, page 16
Language processors
• A processor for language L is any device (hardware or software) that understands and can execute programs in language L.
• Translation is a process of mapping a program in the source language into the target language, while preserving the meaning or function of the source program.
• The target language may be directly executable on the computer or (more often) may have to be translated again—into an even lower-level language.
![Page 17: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/17.jpg)
CSI 3125, Preliminaries, page 17
Virtual machines
• A virtual machine is a software realization (simulation) of a language processor.
• Programming directly for hardware is very difficult—we usually "cover" hardware with layers of software.
• A layer may be shared by several language processors, each building its own virtual machine on top of this layer.
![Page 18: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/18.jpg)
CSI 3125, Preliminaries, page 18
Examples of shared layers
• All language processors require support for input/output.
• All language processors eventually must do some calculations, that is, use the CPU.
![Page 19: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/19.jpg)
CSI 3125, Preliminaries, page 19
Virtual machines
• We normally have hierarchies of virtual machines:
– at the bottom, hardware;
– at the top, languages close to the programmer's natural way of thinking.
• Each layer is expressed only in terms of the previous layer—this ensures proper abstraction.
![Page 20: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/20.jpg)
CSI 3125, Preliminaries, page 20
A generic hierarchy of virtual machines
Layer 0: hardware
Layer 1: microcode
Layer 2: machine language
Layer 3: system routines
Layer 4: machine-independent code
Layer 5: high-level language (or assembler)
Layer 6: application program
Layer 7: input data [this is also a language!]
![Page 21: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/21.jpg)
CSI 3125, Preliminaries, page 21
Virtual machines—examples
Layer 0: IBM Netvista with Intel Pentium 4, 2GHz
Layer 1: IBM Intel machine languageLayer 2: Windows XPLayer 3: Java byte-codeLayer 4: Java 2.0 (code developed in JRE
1.4.0)Layer 5: smart comparator of C++ programs,
written in JavaLayer 6: two C++ programs to compare
for similarities
![Page 22: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/22.jpg)
CSI 3125, Preliminaries, page 22
Virtual machines—examples (2)
Layer 0: IBM Netvista with Intel Pentium 4, 2GHz
Layer 1: IBM Intel machine languageLayer 2: Windows NT 4.0Layer 3: Java byte-codeLayer 4: JDK 1.2Layer 5: a Java implementation of PrologLayer 6: a Prolog implementation of mySQLLayer 7: a database schema defined and
createdLayer 8: records for insertion into the
database
![Page 23: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/23.jpg)
CSI 3125, Preliminaries, page 23
Models of implementation
• Compilation:– translate the program into an
equivalent form in a lower-layer virtual machine language;
– execute later.• Interpretation:
– divide the program up into small (syntactically meaningful) fragments;
– in a loop, translate and execute each fragment immediately.
![Page 24: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/24.jpg)
CSI 3125, Preliminaries, page 24
Models of implementation
• Pure compilation and pure interpretation are seldom use. Normally, an implementation employs a mix of these models.– For example: compile Java into
bytecodes, then interpret bytecodes.• We consider a language processor an
interpreter if it has "more interpretation than compilation". We consider a processor a compiler if there is more of compilation.
![Page 25: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/25.jpg)
CSI 3125, Preliminaries, page 25
Models of implementation
• Some languages are better interpreted, for example interactively used Prolog or Lisp.
• Some languages are better compiled, for example, C++, Java.
• There can also be compiled Prolog or Lisp:– an interpretive top-level loop handles user
interaction.– Predicates of functions are compiled into an
optimized form which is then interpreted.
![Page 26: CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?](https://reader037.fdocuments.us/reader037/viewer/2022110320/56649cab5503460f9496cefa/html5/thumbnails/26.jpg)
CSI 3125, Preliminaries, page 26
Compilation and execution
Output DataInput Data
Target Program
Abstract Program(Optimized)
Parse TreeSymbol Table
Source program
CodeOptimization
SemanticAnalysis
Loader / LinkerCodeGeneration
Computer
Lexical Analysis(scanning)
Syntactic Analysis(parsing)
compiler
Token Sequence
Abstract Program(Intermediate code)
Object Program(Native Code)