1 / 53

Programming Languages Fundamentals

Programming Languages Fundamentals. Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM. Contact. Trần Giang Sơn tgson@cse.hcmut.edu.vn http://www.cse.hcmut.edu.vn/~tgson. References.

esma
Download Presentation

Programming Languages Fundamentals

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming LanguagesFundamentals Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM

  2. Contact • Trần Giang Sơn • tgson@cse.hcmut.edu.vn • http://www.cse.hcmut.edu.vn/~tgson

  3. References • Ngôn ngữ lập trình – các mô hình và nguyên lý, Cao Hoàng Trụ, Khoa Khoa học máy tính, Đại học Bách Khoa, 1992 • Programming languages: design and implementation, second edition, Terrence W.Partt, 1990. Printice - Hall International Editions • Fundamentals of programming languages, Ellis Horowits, 1983, Computer Science Press

  4. Contents • Evolution and classification • Formal syntax and semantics • Compilation and interpretation

  5. Machine Language CPU Memory 0101001001101011 1101111001001001 I/O 0001101010101010

  6. Machine Language Instruction: Operation Code Operands 10110011010010010011010110110001

  7. Assembly Language • A := B + C • if A = 0 then body • MOV r0, B ; move B into register r0 • ADD r0, C ; add • MOV A, r0 ; store • BNE L1 ; branch if result not equal 0 • body • L1:

  8. Language Levels Natural Language High-Level Low-Level Machine Language

  9. What Makes a Good Language? • Clarity, simplicity, unity of language concepts • Clarity of program syntax • Naturalness for the application • Support for abstraction • Ease of program verification

  10. What Makes a Good Language? • Programming environment • Portability of programs • Cost of use • program execution • program translation • program creation, testing, use • program maintenance

  11. Language Classification • Imperative • von Neumann Fortran, Pascal, Basic, C • object-oriented Smalltalk, Eiffel, C++, Java • Declarative • functional Lisp, ML, Haskell • dataflow Id, Val • logic Prolog, VisiCalc

  12. Von Neumann Languages • Most familiar and successful • Imperative statements • Modification of variables Fortran, Pascal, Basic, C, …

  13. Object-Oriented Languages • Imperative statements • Message passing among objects Smalltalk, Eiffel, C++, Java

  14. Functional Languages • Recursive definition of functions (lambda calculus) • Expressions of function composition Lisp, ML, Haskell

  15. Logic Languages • Logical facts and rules (predicate logic) • Computation as theorem proving Prolog, VisiCalc

  16. Dataflow Languages • Computation as token flow among nodes • Inherently parallel model Id, Val

  17. Contents • Evolution and classification • Formal syntax and semantics • Compilation and interpretation

  18. Formal Syntax and Semantics • Computer languages must be precise • Both their form (syntax) and meaning (semantics) must be specified without ambiguity • Both programmers and computers can tell what a program is supposed to do

  19. Formal Syntax • Abstract syntax • Context-free grammars • Backus-Naur formalism (BNF) • Syntax diagrams • Derivations and parse trees

  20. Abstract Syntax • Syntactic class • Syntactic form

  21. Example: Expressions • Syntactic class: E expression I identifier C constant O operator • Syntactic form: E = I | C | E O E | (E)

  22. Example: Expressions a * (2 + b) E O E

  23. Example: Expressions a - b - c E O E

  24. Abstract Syntax • Advantage: simple • Disadvantages: • No terminal symbols defined • Ambiguous

  25. Context-Free Grammars • Start symbol • Non-terminals • Terminals • Productions A  a1 | a2 | … | an (Noam Chomsky, 1959)

  26. Example: Unsigned Integers 6 2 5 7 3 <digit> <unsigned_integer>

  27. Example: Unsigned Integers • Start symbol <unsigned_integer> • Non-terminals <unsigned_integer>,<digit> • Terminals 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 • Productions <unsigned_integer>  <digit> | <digit> <unsigned_integer>

  28. Backus-Naur Formalism <unsigned_integer> ::= <digit> | <digit> <unsigned_integer> (John Backus, 1960)

  29. Example: Expressions <factor> 12 * 3 + 4 <term>

  30. Example: Expressions • Start symbol <expression> • Non-terminals <expression>, <term>, <factor>, <unsigned_integer>, <term_op>, <factor_op> • Terminals 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, /

  31. Example: Expressions • Productions: <expression>  <term> | <expression> <term_op> <term> <term>  <factor> | <term> <factor_op> <factor> <factor>  <unsigned_integer> | (<expression>) <term_op>  + | - <factor_op>  * | /

  32. Syntax Diagrams expression term expression term_op term

  33. Derivations <expression>  <expression> <term_op> <term>  <term> + <factor>  <term> <factor_op> <factor> + <unsigned_integer>  <factor>* <unsigned_integer> + 4  <unsigned_integer>* 3+ 4  12 * 3+ 4

  34. Parse Trees <expression> <expression> <term_op> <term> + <term> <factor> <term> <factor_op> <factor> <factor> * <unsigned_integer> <unsigned_integer> <unsigned_integer> 3 4 12

  35. Parse Trees <expression> <expression> <term_op> <term> + <term> <factor> <term> <factor_op> <factor> <factor> * <unsigned_integer> <unsigned_integer> <unsigned_integer> 3 4 12

  36. Formal Semantics • Operational semantics • Denotational semantics • Axiomatic semantics

  37. Operational Semantics • A virtual computer to execute a program. • A set of formally defined operations to specify how the internal state of the virtual computer may change.

  38. Denotational Semantics • Each program construct is a function that maps an input to an output. • A program is a composition of functions.

  39. Axiomatic Semantics • The effect of a statement is defined via its precondition and postcondition. • A set of axioms and rules to define the effect of program constructs.

  40. Axiomatic Semantics {P} S {Q} precondition statement postcondition

  41. Axiomatic Semantics • Axiom: {PxE} x := E {P}

  42. Axiomatic Semantics {x  2}x := x + 1{x  3} E = x + 1 P = x > 3 PxE= x + 1 > 3 = x > 2

  43. Axiomatic Semantics • Rule: if ({P} S1 {Q})  ({Q} S2 {R}) then {P} S1 ; S2 {R}

  44. Contents • Evolution and classification • Formal syntax and semantics • Compilation and interpretation

  45. Compilation and Interpretation Compiler Source program Target program Target program Input Output Interpreter Source program Output Input

  46. Compilation and Interpretation • Interpreter: better flexibility and diagnostics • Compiler: better performance

  47. Phases of Compilation Character stream Scanner (lexical analysis) Token stream Parser (syntactic analysis) Parse tree Semantic analysis Intermediate code Machine-independent code optimisation Optimised intermediate code Target code generation Target code Machine-specific code optimization Optimised target code

  48. Phases of Compilation c := a + b * 7 Scanner (lexical analysis) id1 := id2 + id3* 7 Parser (syntactic analysis)

  49. := + id1 * id2 id3 7 Phases of Compilation id1 := id2 + id3* 7 Parser (syntactic analysis)

  50. := id1 + id2 * id3 7 Phases of Compilation Semantic analysis CNV (7, , t1) * (id3, t1, t2) + (id2, t2, t3) ASS (t3, , id1)

More Related