* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download 14 - Villanova Computer Science
Abstraction (computer science) wikipedia , lookup
Recursion (computer science) wikipedia , lookup
Lua (programming language) wikipedia , lookup
Logic programming wikipedia , lookup
APL syntax and symbols wikipedia , lookup
Standard ML wikipedia , lookup
Corecursion wikipedia , lookup
Control flow wikipedia , lookup
Object-oriented programming wikipedia , lookup
Reactive programming wikipedia , lookup
Structured programming wikipedia , lookup
Programming language wikipedia , lookup
String literal wikipedia , lookup
Regular expression wikipedia , lookup
Go (programming language) wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
Falcon (programming language) wikipedia , lookup
Programming Languages Meeting 14 December 9/10, 2014 CATS 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 Topics for Final • Syntax and syntax specification: EBNF – Nonterminal, terminal, production, start symbol – Grammar of expressions • Inferred precedence and association – Syntax trees • Abstract syntax Topics (1.1) • Semantics and semantic specification – Env, Loc, Store, Value, Memory – Program functions – Backus notation for functional programming Topics (2) • Semantics examples – REF, a language of pointers – Multiple assignment statements • Control structures – Sequence – While – If-then – For Topics (3) • Parameter passing – Value – Result – Value-result – Reference – Name Topics (4) • Functional programming – Lists – Atoms – Primitive functions – Functionals – User-defined functions – Predicates Topics (4.1) • Developing from primitives and functionals – Use of recursion • Catching error conditions – Proper error messages • Measures of lists – Length – Depth Topics (5) • Scripting languages – AWK – Perl • Regular expressions AWK Questions AWK Programs {for (w=1;w<=NF;w++) count[$w]++} END {for (w in count) print count[w],w} /^$/ {count++} END {print count} /<..*>/ Paradigms • Programming paradigm: pattern of problemsolving thought that underlies a particular genre of programs and languages. • Four main programming paradigms: – Imperative – Object-oriented – Functional – Logic (declarative) 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 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 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 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 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 PERL • • • • Practical Extraction and Support Language A glue language under Unix Written by Larry Wall See www.perl.com 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 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 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 Example 1 #!/usr/local/bin/perl –w print(“Hello, world!\n”); Example 1 #!/usr/local/bin/perl –w print(“Hello, world!\n”); Inserts new line character PERL • Scalars – Integer, real, string • Identifier must start with $ • Arrays – Indexed by integers • Identifier must start with @ – Indexed by strings • Identifier must start with % Example 2 #!/usr/local/bin/perl –w print(“What is your name? ”); $name = <STDIN>; chomp($name); print “Hello, $name!\n”; Example 2 #!/usr/local/bin/perl –w print(“What is your name? ”); $name = <STDIN>; Critical space chomp($name); print “Hello, $name!\n”; Example 2 #!/usr/local/bin/perl –w print(“What is your name? ”); $name = <STDIN>; #Reads one line chomp($name); #Cuts off EOL print “Hello, $name!\n”; PERL • Control structures if-then-elsif foreach $element (%list) { … } Example 3 #!/usr/local/bin/perl –w print “What is your name? ”; $name = <STDIN>; 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”}; 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 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 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 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) 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. 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 – – –