CSCE 330 Programming Language Structures Chapter 1: Introduction .


48 views
Uploaded on:
Category: Business / Finance
Description
CSCE 330 Programming Language Structures Chapter 1: Introduction. Spring 2006 Marco Valtorta mgv@cse.sc.edu. Textbooks. Ghezzi and Jazayeri The main textbook History and general concepts Syntax and semantics Imperative languages Functional languages Declarative languages Ullman
Transcripts
Slide 1

CSCE 330 Programming Language Structures Chapter 1: Introduction Spring 2006 Marco Valtorta mgv@cse.sc.edu

Slide 2

Textbooks Ghezzi and Jazayeri The primary reading material History and general ideas Syntax and semantics Imperative dialects Functional dialects Declarative dialects Ullman inside and out scope of the utilitarian dialect ML-97

Slide 3

Disclaimer The slides depend on the course readings and different sources, including a few other fine course books for the Programming Language (PL) Concepts course The PL Concepts course covers themes PL1 through PL11 in Computing Curricula 2001 One or more PL Concepts course is all around a part of a Computer Science educational programs

Slide 4

Why Study PL Concepts? Expanded ability to express thoughts Improved foundation for picking proper dialects Increased capacity to learn new dialects Better comprehension of the importance of execution Increased capacity to outline new dialects Background for compiler composing Overall headway of registering

Slide 5

Improved foundation for picking fitting dialects Source: http://www.dilbert.com/funnies/dilbert/file/dilbert-20050823.html

Slide 6

Software Development Process Three models of the Software Development handle: Waterfall Model Spiral Model RUDE Run, Understand, Debug, and Edit Different dialects give distinctive degrees of support to the three models

Slide 7

The Waterfall Model Requirements investigation and determination Software plan and detail Implementation (coding) Certification: Verification: "Are we fabricating the item right?" Validation: "Are we assembling the right item?" Module testing Integration testing Quality confirmation Maintenance and refinement

Slide 8

PLs as Components of a Software Development Environment Goal: programming efficiency Need: bolster for all periods of SD Computer-helped devices ("Software Tools") Text and program editors, compilers, linkers, libraries, formatters, pre-processors E.g., Unix (shell, pipe, redirection) Software advancement situations E.g., Interlisp, JBuilder Intermediate approach: Emacs (adaptable editorial manager to lightweight SDE)

Slide 9

PLs as Algorithm Description Languages Most individuals consider a programming dialect simply as code with the sole motivation behind building programming for PCs to run. In any case, a dialect is a computational model, and projects are formal writings amiable to numerical thinking. The model must be characterized so that its semantics are depicted without reference to a fundamental instrument, be it physical or dynamic. Niklaus Wirth, "Smart thoughts, through the Looking Glass," Computer, January 2006, pp.28-39.

Slide 10

Influences on PL Design Software plan approach ("People") Need to diminish the cost of programming advancement Computer engineering ("Machines") Efficiency in execution A proceeding with pressure The machines are winning

Slide 11

Software Design Methodology and PLs Example of union of programming configuration strategy and PLs: Separation of concerns (an intellectual standard) Divide and overcome (a calculation outline system) Information concealing (a product improvement technique) Data deliberation offices, encapsulated in PL builds, for example, SIMULA 67 class, Modula 2 module, Ada bundle, Smalltalk class, CLU group, C++ class, Java class

Slide 12

Abstraction is the way toward distinguishing the imperative qualities or properties of a marvel being displayed Programming dialects are reflections from the fundamental physical processor: they actualize "virtual machines" Programming dialects are likewise the devices with which the developer can execute the unique models Symbolic naming as such is an effective abstracting instrument: the developer is liberated from worries of an accounting nature

Slide 13

Data Abstraction In early dialects, altered arrangements of information deliberations, application-sort particular (FORTRAN, COBOL, ALGOL 60), or non specific (PL/1) In ALGOL 68, Pascal, and SIMULA 67 Programmer can characterize new reflections Procedures (solid operations) identified with information sorts: the SIMULA 67 class In Abstract Data Types (ADTs), representation is related to solid operations the representation of the new sort is escaped the units that utilization the new sort Protecting the representation from endeavor to controlling it straightforwardly takes into account simplicity of adjustment.

Slide 14

Control Abstraction Control alludes to the request in which proclamations or gatherings of articulations (program units) are executed From sequencing and expanding (hop, jumpt) to organized control explanations (assuming… then… else, while) Subprograms and anonymous pieces strategies are subprograms with a verifiable contention (this) anonymous squares can\'t be called Exception taking care of

Slide 15

Non-consecutive Execution Coroutines permit interleaved (not parallel!) execution can continue each other neighborhood information for each coroutine is not lost Concurrent units are executed in parallel permit really parallel execution spurred by Operating Systems concerns, yet turning out to be more normal in different applications require specific synchronization articulations Coroutines force an aggregate request on activities when a halfway request would suffice

Slide 16

Computer Architecture and PLs Von Neumann design a memory with information and guidelines, a control unit, and a CPU get translate execute cycle the Von Neumann bottleneck Von Neumann engineering impacted early programming dialects successive orderly execution the task explanation factors as named memory areas emphasis as the method of redundancy

Slide 17

Other Computer Architectures Harvard isolate information and program recollections Functional models Symbolics, Lambda machine, Mago\'s decrease machine Logic structures Fifth era PC extend (1982-1992) and the PIM Overall, exchange PC structures have fizzled industrially von Neumann machines get speedier too rapidly!

Slide 18

Language Design Goals Reliability writability coherence straightforwardness wellbeing vigor Maintainability calculating territory Efficiency execution productivity referential straightforwardness and advancement optimizability: "the distraction with streamlining ought to be expelled from the early phases of programming… a progression of [correctness-safeguarding and] proficiency enhancing changes ought to be bolstered by the dialect" [Ghezzi and Jazayeri] programming improvement handle productivity adequacy in the creation of programming

Slide 19

Language Translation A source program in some source dialect is converted into a protest program in some objective dialect A constructing agent makes an interpretation of from low level computing construct to machine dialect A compiler deciphers from an abnormal state dialect into a low-level dialect the compiler is composed in its usage dialect A mediator is a program acknowledges a source program and runs it instantly An interpretive compiler makes an interpretation of a source program into a middle dialect, and the subsequent question program is then executed by a mediator

Slide 20

Example of Language Translators Compilers for Fortran, COBOL, C Interpretive compilers for Pascal (P-Code) and (Java Virtual Machine) Interpreters for APL and (early) LISP

Slide 21

Plankalkül (Konrad Zuse, 1943-1945) FORTRAN (John Backus, 1956) LISP (John McCarthy, 1960) ALGOL 60 (Transatlantic Committee, 1960) COBOL (US DoD Committee, 1960) APL (Iverson, 1962) BASIC (Kemeny and Kurz, 1964) PL/I (IBM, 1964) SIMULA 67 (Nygaard and Dahl, 1967) ALGOL 68 (Committee, 1968) Pascal (Niklaus Wirth, 1971) C (Dennis Ritchie, 1972) Prolog (Alain Colmerauer, 1972) Smalltalk (Alan Kay, 1972) FP (Backus, 1978) Ada (UD DoD and Jean Ichbiah, 1983) C++ (Stroustrup, 1983) Modula-2 (Wirth, 1985) Delphi (Borland, 1988?) Modula-3 (Cardelli, 1989) ML (Robin Milner, 1985?) Eiffel (Bertrand Meyer, 1992) Java (Sun and James Gosling, 1993?) C# (Microsoft, 2001?) Scripting dialects, for example, Perl, and so forth. And so on. Some Historical Perspective

Recommended
View more...