Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Languages Meeting 14 December 9/10, 2014.

Similar presentations


Presentation on theme: "Programming Languages Meeting 14 December 9/10, 2014."— Presentation transcript:

1 Programming Languages Meeting 14 December 9/10, 2014

2 CATS

3 Planning Final Exam, next week, Tuesday, December 16, 2:30 – 5:00 pm, MSC 290 Or Wednesday, December 17, 6:15 – 8:45 pm, MSC G86

4 Topics for Final Syntax and syntax specification: EBNF – Nonterminal, terminal, production, start symbol – Grammar of expressions Inferred precedence and association – Syntax trees Abstract syntax

5 Topics (1.1) Semantics and semantic specification – Env, Loc, Store, Value, Memory – Program functions – Backus notation for functional programming

6 Topics (2) Semantics examples – REF, a language of pointers – Multiple assignment statements Control structures – Sequence – While – If-then – For

7 Topics (3) Parameter passing – Value – Result – Value-result – Reference – Name

8 Topics (4) Functional programming – Lists – Atoms – Primitive functions – Functionals – User-defined functions – Predicates

9 Topics (4.1) Developing from primitives and functionals – Use of recursion Catching error conditions – Proper error messages Measures of lists – Length – Depth

10 Topics (5) Scripting languages – AWK – Perl Regular expressions

11 AWK Questions

12 AWK Programs {for (w=1;w<=NF;w++) count[$w]++} END {for (w in count) print count[w],w} /^$/ {count++} END {print count} /

13 Paradigms Programming paradigm: pattern of problem- solving thought that underlies a particular genre of programs and languages. Four main programming paradigms: – Imperative – Object-oriented – Functional – Logic (declarative)

14 Imperative Follows the classic von Neumann-Eckert model: – Program and data are indistinguishable in memory – Program: a sequence of commands – State: values of all variables when program runs – Large programs use procedural abstraction Examples of imperative languages: – Cobol, Fortran, C, Ada, Perl – Historically: PL1, Algol, Pascal

15 Object-oriented Collection of objects (instantiated from classes) that interact by passing messages that transform the state. Need to know: – Ways of sending messages – Inheritance – Polymorphism Examples of OO languages: – Smalltalk, Modula, Java, C++, C#, Python

16 Functional Models a computation with a collection of functions acting on a set of objects, usually lists. – Input: domain of the function – Output: codomain of the function Functional languages are characterized by: – Functional composition – Recursion Examples of functional languages: – Lisp, Scheme, ML, Haskell

17 Logical Logic programming declares what outcome the program should accomplish, rather than how it should be accomplished. Programs are: – Sets of constraints on a problem – Achieve all possible solutions – Nondeterministic, in some cases Example of a logic programming language: – Prolog

18 Special Languages Symbolic computation – Macsyma, Mathematica, Maple, Reduce Mathematical – APL, Basic, Cayley Music – ChucK Markup – HTML, MusicXML, LaTeX Scripting – AWK, Perl, JavaScript, PHP and hundreds more for every special circumstance

19 PERL Practical Extraction and Support Language A glue language under Unix Written by Larry Wall See www.perl.com

20 PERL Scripting language More powerful than AWK More flexible than shell scripts Syntax derived from C Large language Later versions contain classes Many irregularities in design Many alternatives for syntax

21 PERL Beginning assumptions and notations Statements are terminated by ; (semicolon) Comments start with # and occupy the rest of the line. – NO two-line comments Parentheses around arguments to built-in functions are optional

22 PERL First line of program is an interpreter directive, written as a special type of comment, giving the full path to the Perl interpreter #!/usr/local/bin/perl -w

23 Example 1 #!/usr/local/bin/perl –w print(“Hello, world!\n”);

24 Example 1 #!/usr/local/bin/perl –w print(“Hello, world!\n”); Inserts new line character

25 PERL Scalars – Integer, real, string Identifier must start with $ Arrays – Indexed by integers Identifier must start with @ – Indexed by strings Identifier must start with %

26 Example 2 #!/usr/local/bin/perl –w print(“What is your name? ”); $name = ; chomp($name); print “Hello, $name!\n”;

27 Example 2 #!/usr/local/bin/perl –w print(“What is your name? ”); $name = ; chomp($name); print “Hello, $name!\n”; Critical space

28 Example 2 #!/usr/local/bin/perl –w print(“What is your name? ”); $name = ; #Reads one line chomp($name);#Cuts off EOL print “Hello, $name!\n”;

29 PERL Control structures if-then-elsif foreach $element (%list) { … }

30 Example 3 #!/usr/local/bin/perl –w print “What is your name? ”; $name = ; chomp($name); if ($name eq “Nico”) {print “Hello, $name! Glad you’re here.\n”} elsif ($name eq “Daphne”) {print “Going outside, $name?\n”} else {print “Hello, $name.\n”};

31 PERL Dynamically typed – Type inferred from operations – Compare 2 < 10 (true) 2 lt 10 (false) 2 < “10” (true) “2” lt 10 (false) Numbers, strings, regular expressions Operators are not overloaded

32 Arrays of Strings Can be initialized with a list of strings @words = (“camel”,”llama”,”alpaca”); Or use the keystroke saving function qw @words=qw(camel llama alpaca); Note that an individual element is a string so that the string identifier syntax must be used $words[0] has value camel

33 Array Bounds Out of bounds arrays – Impossible with associative arrays: strings are not presumed to have order (in the sense of a next function) – Impossible with integer indexed arrays @a = (2,3,5,7); $a[7] = 17; We’ll check the Env and Store

34 Scalar Operators Numeric: + - * / ** % Numeric comparison: = > != String:. (for concat) x (for multiple concat) String comparison: lt le eq ge gt ne Assignment: = (carries value of expression) binary assignment: += *=.= etc increment: ++$i $i++ (increment then assign vs. assign then increment)

35 Parameter Passing Parameter passing – Formal parameters not included – Values of arguments to a function come in the array @_ – Example, the call range(1,74,3) puts 1 in $_[0], 74 in $_[1], and 3 in $_[2] – Thus, a function can have a varying number of arguments.

36 Parameter Passing (2) If parameter values are passed to a procedure (subroutine in PERL language) in an array local to the procedure, how are values returned to the calling program? Options –


Download ppt "Programming Languages Meeting 14 December 9/10, 2014."

Similar presentations


Ads by Google