CSC324 — Putting the Pieces Together • Tool: Regular Grammars

CSC324 — Putting the Pieces Together • Tool: Regular Grammars

Programming Language an abstract entity with some specification, including: • formal specification of tokens, i.e., legal keywords & identifiers CSC324 — Putting the Pieces together • tool: Regular Grammars. ⇒ formal specification of acceptable sentences, or syntax Afsaneh Fazly • tool: Context Free Grammars. ⇒ (mainly informal) specification of meaning, or semantics. • Winter, 2013 1 2 Programming Language The Birth of Programming Languages (PLs) not to be confused with an IDE/compiler, that are pieces of Prior to the 1950s • software implementing the language (performing translation): programs had to be written in machine code, using absolute lexical analysis: identifying tokens. • • addressing. tool: Finite State Machines. ⇒ programs were hard to read and write, and the job didn’t syntactic analysis: combining tokens into larger untis (e.g., • • attract many people. statements, expressions). software started to cost way more than the hardware. tool: Parsing Algorithms. • ⇒ semantic analysis. • birth of assembly languages, optimization and code generation. ⇒ • with little impact on the design of high-level langauges. 3 4 The Birth of High-Level PLs History of Programming Languages Mid 1950s, 1960s Late 1970s announcement of the IBM 704 machine, with indexing and shift from procedure-oriented PL designs to data-oriented • floating-point instructions in hardware • designs first language with limited support for data abstraction: birth of the first high-level PL: Fortran. • • SIMULA 67, designed by Ole-Johan Dahl and Kristen Nygaard language was actually implemented (compiler); (Norwegian Computing Centre, Oslo). variables, user-defined subprograms, limited control structures; no recursion, no dynamic data structures. growing interest in Artificial Intelligence (AI), from linguistics, • psychology, and mathematics Ole-Johan Dahl (left) birth of the first functional PL: LISP. & Kristan Nygaard (right) • parent of Scheme, ML, Haskell. 5 6 History of Programming Languages Other Interesting/Influential PLs Early 1980s Algol (ALGOrithmic Language): giving birth to object-oriented (OO) design designed as a universal language for scientific computing • • first language developing OO concepts: Smalltalk, designed by hasn’t been used much, but had a great impact on many • • Adele Goldberg, Alan Kay & colleagues (Learning Research modern languages Group, Xerox PARC). COBOL (COmmon Business Language): designed for business applications, with sophisticated data • Adele Goldberg structures has been used more than any other PL, but no impact on the • design of other PLs support for OO programming is now part of most imperative, • and even functional/logic PLs: C++/C# (imperative), F# (functional), Prolog++ (logic) • 7 8 Other Interesting/Influential PLs RDBMS and Logic Programming SQL (Structured Query Language): Any connection between Relational Database Management designed for managing and querying Relational Databases, System, and logic programming? • that store data in the form of tables non-procedural (as in logic programming) • user describes what they want (not how to retrieve them from e.g., database as a series of predicates/facts in Prolog, • • the database) relations among entities expressed through rules, and the retrieval through the search process. Example: SELECT price, duration Pros & cons of using logic programming to implement RDBMS? FROM flights conventional RDBMS only look-up information, whereas logic • WHERE flights.origin = ’toronto’ programming can do inference AND flights.destination = ’paris’ logic programming (inference engine) is often slow AND price < 1000.00 • ORDER BY price; 9 10 Imperative Design Imperative Design Human Language & Mind Human Language & Mind Assembly Languages [before the 1950s] ⇑ Machine Hardware and Instruction Set Machine Hardware and Instruction Set 11 12 Imperative Design Imperative Design Human Language & Mind Human Language & Mind data-oriented / object-oriented PLs [1970s, 1980s] ⇑ High-level PL with limited functionality [1950s, 1960s] High-level PL with limited functionality [1950s, 1960s] ⇑ ⇑ Assembly Languages [before the 1950s] Assembly Languages [before the 1950s] ⇑ ⇑ Machine Hardware and Instruction Set Machine Hardware and Instruction Set 13 14 Influences on PL Design Imperative Design Human Language & Mind Imperative Paradigm: computer architecture (and instruction set). ⇓⇓ • functional PLs [1950s, 1960s] logic PLs [1970s] hardware and software costs. • application. • mainly bottom-up, ⇒ closer to the needs of the machine/application. data-oriented / object-oriented PLs [1970s, 1980s] ⇒ ⇑ Question: How about functional and logic paradigms? High-level PL with limited functionality [1950s, 1960s] ⇑ Assembly Languages [before the 1950s] ⇑ Machine Hardware and Instruction Set 15 16 Scheme Scheme clear and simple syntax • Data types: numbers, symbols, pairs, lists, ... clear and simple semantics (for the core): λ-calculus • uniform treatment of program and data Syntax: • implementations properly tail-recursive <expr> ::= <val> • | (if <expr> <expr> <expr>) functions are values: created dynamically, stored, passed as • | (cond {(<expr> <expr>)} [(else <expr>)]) parameters, returned as results, etc. | (lambda ({<id>}) <expr>) static scoping | ... • <defn> ::= (define <id> <expr>) dynamic typing ... • pass-by-value • Example: Anything in particular you liked/disliked about Scheme? > (define max (lambda (x y) (if (> x y) x y))) > (max 3 4) 17 18 ML ML Datatypes: unit, bool, int, real, string, tuples, lists, ... functional: recursion, higher-order functions • type safe, static type checking, type inference Syntax, Example: • built-in types, type synonyms • fun mystery lst = user-defined (abstract) data types • let enumerated, variant, recursive, mutually recursive types fun mysteryHelper [] res = res • exception handling | mysteryHelper (x::xs) res = • mysteryHelper xs (x::res) static scoping (dynamic scoping for exception handling) • in garbage collection, immutable data types, updatable mysteryHelper lst [] • references end; mystery : ’a list -> ’a list Anything you liked/disliked about ML in particular? What does mystery do? 19 20 Prolog Deficiencies of Prolog as a Pure Logic PL Syntax: Prolog matching is ordered: from top of the database, and <clause> ::= <pred> . • | <pred> :- <pred> { , <pred> } . from left end of a goal. <pred> ::= <pname>( <term> { , <term> } ) Prolog allows explicit control of backtracking through the use • <term> ::= <functor>( <term> { , <term> } ) of Cut !. | <const> | <var> Pros and cons of using Cut? <const> ::= ... • Closed-world assumption, and Negation by failure. <var> ::= ... • Example: Anything you liked/disliked about Prolog? mylength([],0). mylength([_|T],N) :- mylength(T,NT), N is NT+1. 21 22 Comparison: Summing a List of Numbers Comparison: Summing a List of Numbers in a C-like language: • sum = 0; Question: Do we know which one is closer to “how for (i=0; i<len(lst); i++) { non-programmers reason about programming concepts”? sum += lst[i]; [Pane & Myers’2006] } return sum; Giving birth to the idea of “More natural programming languages in Scheme: and environments”, • (define (sumlist lst) where the goal is: (+ (car lst) (sumlist (cdr lst)))) To understand how people express concepts if not restricted by in Prolog: • existing PLs. sumlist([H|Rest], Sum) :- sumlist(Rest, SumR), Sum is H + SumR. 23 24 Natural Programming Languages and Environments References L.A. Miller (1974). Programming by Non-programmers, There is evidence that: • International Journal of Man–Machine Studies 6(2): 237–260. there are regularities in how people express step-by-step • L.A. Miller (1981). Natural Language Programming: Styles, natural language procedures [Miller’74, 81; Biermann et al.’83] • Strategies, and Contrasts, IBM Systems Journal 20(2): 184–215. people improve the precision of their natural language • A.W. Biermann, B.W. Ballard, and A.H. Sigmon (1983). An expressions if they know the recipient has limited intelligence • Experimental Study of Natural Language Programming, suggesting that such regularities can be incorporated into PL International Journal of Man–Machine Studies 18(1): 71–87. designs. J.E. Pane and B.A. Myers (2006). More Natural Programming • Languages and Environments,HenryLiebermanetal.(eds),End Despite such findings, these studies have had little impact on the User Development: 31–50. design of new PLs. Why? R.W. Sebesta, Concepts of Programming Languages, • Addison-Wesley, 10th ed., 2012. 25 26 Thank you for listening! Good luck with your future career. 27.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    7 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us