Your SlideShare is downloading. ×
0
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
MELJUN CORTES Programming lamguages chapter1
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MELJUN CORTES Programming lamguages chapter1

436

Published on

MELJUN CORTES Programming lamguages chapter1

MELJUN CORTES Programming lamguages chapter1

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
436
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Concepts of Programming Languages Robert W. SebestaMELJUN CORTES, 1MBA,MPA,BSCS,ACS
  • 2. Chapter 1 PreliminariesMELJUN CORTES, 2MBA,MPA,BSCS,ACS
  • 3. The Study of Programming Languages The study of programming languages is valuable because  It increases our ability to express ideas  It increases our capacity to use different constructs in writing programs.  It enables us to choose languages for projects more intelligently.  It makes learning new languages easier.  TIOBE Programming Community  http://www.tiobe.com/tiobe_index/index.htm  Better understanding of significance of implementation  Can help in bug fixing  Better use of languages that are already known.  Overall advancement of computing  Example: ALGOL 60 vs. FortranMELJUN CORTES, 3MBA,MPA,BSCS,ACS
  • 4. Programming Domains Programs are used in a wide variety of problem-solving domains. The design and evaluation of a particular language is highly dependent on the domain in which it is to be used.  Scientific Applications - Large numbers of floating point computations; use of arrays  Fortran, ALGOL 60  Business Applications - Peroduce reports, use decimal numbers and characters  COBOL, RPG  Artificial Intelligence - Symbols rather than numbers manipulated; use of linked lists  LISP, Prolog, Scheme  Systems Programming - Need efficiency because of continuous use  IBM’s PL/S, Digital’s BLISS, UNIX’s C.  Web Software - Eclectic collection of languages from markup (e.g., XHTML) to scripting to general-purpose  Java, PHP, JavaScriptMELJUN CORTES, 4MBA,MPA,BSCS,ACS
  • 5. Language Evaluation Criteria Readability: the ease with which programs can be read and understood Writability: the ease with which a language can be used to create programs in the program domain Reliability: conformance to specifications (i.e., performs to its specifications) Cost: the ultimate total cost Other: portability, generality, well-defined MELJUN CORTES, 5 MBA,MPA,BSCS,ACS
  • 6. Evaluation Criteria: Readability the ease with which programs can be read and understood Overall simplicity  A manageable set of features and constructs  Minimal feature multiplicity – Example: count++ etc.  Minimal operator overloading – Example: + symbol  Assembly languages vs. HLLs Orthogonality  A relatively small set of primitive constructs can be combined in a relatively small number of ways where every possible combination is legal  Example: adding two 32 bit integers and replacing one of the two with the sum.  IBM mainframe – A Reg1, memory_cell and AR Reg1, Reg2  VAX – ADDL operand_1, operand_2, where either or both operands can be a register or a memory cell.  C – records can be returned from functions but arrays cannot.  Disadvantage – computational complexity  Functional languages offer balance by using a single construct – the function call MELJUN CORTES, 6 MBA,MPA,BSCS,ACS
  • 7. Evaluation Criteria: Readability the ease with which programs can be read and understood Control statements  The presence of well-known and reliable control structures  Early versions of BASIC and Fortran lacked such control statements so writing highly readableprograms in those languages was difficult.  Research of the 70s led to the desire for language constructs that made “goto-less” programming possible.  “A program that can be read from top to bottom is much easier to understand than a program that requires the reader to jump from one statement to some nonadjacent statement in order to follow the order of execution.” Sebesta p. 12  Example: Nested loop using the while in C: while (incr < 20) { sum = 0; count = 0; while (sum <= 100) { sum += incr; count++; } incr++; } Nested Loop without the while loop1: if (incr >=20) go to out; loop2: sum = 0; count = 0; if (sum > 100) go to next; sum += incr; count++; go to loop2; next: incr++; go to loop1; MELJUN CORTES, out: 7 MBA,MPA,BSCS,ACS
  • 8. Evaluation Criteria: Readability the ease with which programs can be read and understood Data types and structures  Adequate predefined data types  Example: numeric types vs. Boolean type for indicator variables.  Consider: timeOut = 1 vs. timeOut = true  Adequate structures, such as arrays  The presence of adequate facilities for defining programmer-defined data structures, such as records  Example: Using a record structure vs. parallel arrays Record Character (Len=30):: Name Integer:: Age Integer:: Employee_Number Real:: Salary End_Record  In contrast to: Character (Len=30):: Name(100) Integer:: Age (100) Integer:: Employee_Number (100) Real:: Salary (100) MELJUN CORTES, 8 MBA,MPA,BSCS,ACS
  • 9. Evaluation Criteria: Readability the ease with which programs can be read and understood Syntax considerations  Identifier forms: flexible composition  Example: Fortran 77 limits identifiers to 6 characters  Example: Original ANSI BASIC in 1978 limited identifiers to a single letter or a single letter followed by a single digit  Special words  Should denote usage such as if, while, or class.  Methods of forming compound statements: braces vs. end if and end loop.  Fewer reserved words vs. more readable code.  Reserved or not – Example: Fortran 95 allowed Do and End as legal variable names in addition to their keyword meanings.  Form and meaning  Self-descriptive constructs – “Semantics should follow directly from syntax..” Sebesta p. 14  Conflict when two language constructs are similar, but have different meanings depending on context.  Example: In C the reserved word static has different meaning depending on context  If applied to variables in methods vs. if applied to variables outside of all methods  Example: Unix shell command grep –  root is in the ed editor command g/regular_expression/p MELJUN CORTES, 9 MBA,MPA,BSCS,ACS
  • 10. Evaluation Criteria: Writability the ease with which a language can be used to create programs in the program domain Differs according to the domain for which the language is designed  Example: COBOL vs. Fortran Simplicity and orthogonality  It is better to have a smaller number of well-defined constructs, a small number of primitives, and a consistent set of rules for combining them. MELJUN CORTES, 10 MBA,MPA,BSCS,ACS
  • 11. Evaluation Criteria: Writability the ease with which a language can be used to create programs in the program domain Support for abstraction  “The ability to define and use complex structures or operations in ways that allow details to be ignored.”  Example – Coding binary trees in Fortran 77 which does not have pointers or dynamic storage allocation  Tree in Java public class Node { Node left; Integer value; Node right; }  Tree in Fortran 77 Integer:: Left(100) Integer:: Value(100) Integer:: Right(100) Expressivity  A set of relatively convenient ways of specifying operations  count++  for loops  Strength and number of operators and predefined functions MELJUN CORTES, 11 MBA,MPA,BSCS,ACS
  • 12. Evaluation Criteria: Reliability Type checking  Testing for type errors  Compile time vs. run-time  Example: Java is strongly typed due to the design decision to eliminate type errors from run time.  Example: Allowing a float to be assigned to an int. Exception handling  Intercept run-time errors and take corrective measures & continue or gracefully exit. Aliasing  Presence of two or more distinct referencing methods for the same memory location  Most languages allow some type of aliasing. Readability and writability  A language that does not support “natural” ways of expressing an algorithm will require the use of “unnatural” approaches, and hence reduced reliability  More easily maintained. MELJUN CORTES, 12 MBA,MPA,BSCS,ACS
  • 13. Overlapping of criteria…MELJUN CORTES, 13MBA,MPA,BSCS,ACS
  • 14. Evaluation Criteria: Cost Training programmers to use the language Writing programs (closeness to particular applications) Compiling efficiency  Tradeoff with execution efficiency… Executing efficiency Language implementation system  Availability of free compilers…6. Reliability: poor reliability leads to high costs  Failure in critical systems vs. non-critical systems  Law-suits and Business Reputation7. Maintaining programs MELJUN CORTES, 14 MBA,MPA,BSCS,ACS
  • 15. Evaluation Criteria: Others Portability  The ease with which programs can be moved from one platform to another Generality  The applicability to a wide range of applications Well-definedness  The completeness and precision of the language’s official definitionMELJUN CORTES, 15MBA,MPA,BSCS,ACS
  • 16. Criteria and Language Design Difficulty of implementing the various constructs and features. May emphasize Elegance and attracting widespread use.MELJUN CORTES, 16MBA,MPA,BSCS,ACS
  • 17. Influences on Language Design Computer Architecture  The underlying architectural model for procedural languages is known as the von Neumann architecture Programming Methodologies  Emergence of new software development methodologies  Examp: OOD led to new programming paradigms and by extension, new OOPLsMELJUN CORTES, 17MBA,MPA,BSCS,ACS
  • 18. The von Neumann Architecture Fetch-execute-cycle (on a von Neumann architecture computer) initialize the program counter repeat forever fetch the instruction pointed by the counter increment the counter decode the instruction execute the instruction store the result end repeatMELJUN CORTES, 18MBA,MPA,BSCS,ACS
  • 19. The von Neumann Architecture  Connection speed between a computer’s memory and its processor determines the speed of a computer  Program instructions often can be executed much faster than the speed of the connection; the connection speed thus results in a bottleneck  Known as the von Neumann bottleneck; it is the primary limiting factor in the speed of computerMELJUN CORTES, programming. 19MBA,MPA,BSCS,ACS
  • 20. Computer Architecture Influence Machine architecture.  von Neumann machine  Basis for imperative languages  Features are variables; assignment statements; and the iterative form of repetition  von Neumann bottleneck  Ineffective for functional (applicative) languages, such as Scheme, where computation occurs by applying functions.  “Can Programming be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs.” by John Backus. 1978 Comm. ACM, Vol. 21, No. 8, pp. 613-641.MELJUN CORTES, 20MBA,MPA,BSCS,ACS
  • 21. Computer Architecture Influence Von Neumann computer architecture: Imperative languages, most dominant, because of von Neumann computers  Data and programs stored in 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 efficientMELJUN CORTES, 21MBA,MPA,BSCS,ACS
  • 22. Programming Methodologies Influence 50s and early 60s:  Simple applications  Concerns were about machine efficiency Late 60s, early 70s:  Programming problems more complex.  Cost of hardware reduced.  Cost of software development increased.  People efficiency became important.  Structured Programming Movement led to Top-Down-Stepwise Refinement.  Readability, Better control structures (“gotoless” programming) MELJUN CORTES, 22 MBA,MPA,BSCS,ACS
  • 23. Programming Methodologies Influence Late 70s: shift from procedure-oriented to data-oriented design  Data abstraction to encapsulate processing with data  SIMULA 67 supported these ideas but had limited support Middle 80s: Object-oriented programming  Data abstraction plus Inheritance and Dynamic method binding (polymorphism)  Smalltalk, Ada 95, Java, C++. More recently procedure oriented programming applied to concurrency  Ada, Java, C# have capabilities to control concurrent program units. MELJUN CORTES, 23 MBA,MPA,BSCS,ACS
  • 24. Other Influences on Language Design  Other considerations  Concerns for commercial success  Implementation difficulties  AcademicMELJUN CORTES, 24MBA,MPA,BSCS,ACS
  • 25. Language Categories Imperative  Central features are variables, assignment statements, and iteration Include languages that support object-oriented programming  Include scripting and visual languages  Examples: C, Java, Perl, JavaScript, Visual BASIC .NET, C++ Functional  Main means of making computations is by applying functions to given parameters  Examples: LISP, Scheme Logic  Rule-based (rules are specified in no particular order)  Example: Prolog Markup/programming hybrid  Markup languages extended to support some programming  Examples: JSTL, XSLT MELJUN CORTES, 25 MBA,MPA,BSCS,ACS
  • 26. Language Design Trade-Offs Reliability vs. cost of execution  Example: Java demands all references to array elements be checked for proper indexing, which leads to increased execution costs Readability vs. writability Example: APL provides many powerful operators (and a large number of new symbols), allowing complex computations to be written in a compact program but at the cost of poor readability Writability (flexibility) vs. reliability  Example: C++ pointers are powerful and very flexible but are unreliable MELJUN CORTES, 26 MBA,MPA,BSCS,ACS
  • 27. Layered View of ComputerThe operating systemand languageimplementation arelayered overmachine interface of acomputer. MELJUN CORTES, 27 MBA,MPA,BSCS,ACS
  • 28. Methods of Implementation Compilation Pure Interpretation Hybrid InterpretationMELJUN CORTES, 28MBA,MPA,BSCS,ACS
  • 29. Compilation Process PhasesSource code is translated into equivalentmachine code as a unit and stored into a filethat has to be executed in a separate step. Yields faster execution times; Examples: C/C++, Pascal, COBOL, Ada•Lexical analysis: •extracts a sequence of tokens (lexical units) from source code •The symbol table contains the definitions of the identifiers•Syntax analysis (i.e. parsing) : •transforms tokens (lexical units) into parse trees which represent the syntactic structure of program.•Semantics analysis: •generate intermediate code•Code generation: •machine code is generated MELJUN CORTES, 29 MBA,MPA,BSCS,ACS
  • 30. Pure Interpretation Process Pure interpretation – source code is translated to machine code and executed immediately.  Advantage – run-time errors can refer to source level units such as array index out of bounds errors  Disadvantage  10 to 100 times slower execution time  Often requires more space  Significant comeback with some Web scripting languages (e.g., JavaScript, PHP)MELJUN CORTES, 30MBA,MPA,BSCS,ACS
  • 31. Hybrid Implementation Process  Hybrid interpretation - A compromise between compilers and pure interpreters  A high-level language program is translated to an intermediate language that allows easy interpretation  Faster than pure interpretation since source language statements decoded only once.  Examples  Perl programs are partially compiled to detect errors before interpretation  Just-in-Time system compiles intermediate language methods into machine code when they are initially called. This machine code is kept so that if they are called again the code does not have to be re- interpreted. - Java MELJUN CORTES, 31 MBA,MPA,BSCS,ACS
  • 32. Additional Compilation Terminologies Linking and loading:  the process of collecting system program units and linking them to a user program Load module (executable image):  the user and system code together Preprocessor  Preprocessor macros (instructions) are commonly used to specify that code from another file is to be included  A preprocessor processes a program immediately before the program is compiled to expand embedded preprocessor macros  A well-known example: C preprocessor expands #include, #define, and similar macrosMELJUN CORTES, 32MBA,MPA,BSCS,ACS
  • 33. Programming Environments The collection of tools used in software development Simple – file system, text editor, compiler, interpreter or linker. Extensive – rich set of tools  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#, and C++MELJUN CORTES, 33MBA,MPA,BSCS,ACS
  • 34. Summary The study of programming languages is valuable for a number of reasons:  Increase our capacity to use different constructs  Enable us to choose languages more intelligently  Makes learning new languages easier Most important criteria for evaluating programming languages include:  Readability, writability, reliability, cost Major influences on language design have been machine architecture and software development methodologies The major methods of implementing programming languages are: compilation, pure interpretation, and hybrid implementation MELJUN CORTES, 34 MBA,MPA,BSCS,ACS

×