----- Friday, 05/02/14 ----- do/don't likes in Prolog Unification in predicate signatures f([H|_],[H,H]). Unification L = [H|T] [H|T] = L Backtracking Arithmetic X is Y*2, f(X,Z), g(X+Y*3,Z2) sumlist([X+Y,Y*3,...] Syntactic simplicity? Dynamic or statically typed? One example? member(X,[X|_]). member(X,[_|T]) :- member(X,T). ?- member(X,[1,2,3]), member(Y,[4,5,6]). X=1, Y=4,5,6 X=1, Y=4 X=2, Y=4 Is Prolog the most powerful language we've studied? Define power.. avg expressiveness over some set of problems -- Kearns what's the domain of problems we'd want to solve w/ lang -- Barber http://www.indeed.com/jobanalytics/jobtrends?q=haskell%2C+prolog%2C+ios%2Cruby%2C+c%2B%2B%2C+python%2C+perl%2C+objective-c%2C+c%23%2C+javascript%2C+php&l= ----- Monday, 05/05/14 ----- Ada -- Jean Ichbiah C small mental footprint very expressive small memory footprint fast minuses: no array bounds checking manual memory management no support for OOP C++ OOP supports ADTs great help for mem mgmt -very complex Java Could Java cover the full spectrum? Write once, run everywhere Support for concurrency Security Things we'd like to see in Java Negative indexing User-defined operator overloading Convenient string and array operations Functions as first class values (in Java 8) Backtracking (?) More expressiveness What forces drive language creation? Changing hardware faster more memory connection machine IBM's neural processor Memory requirements Speed requirements New paradigms Structured programming OOP Logic programming Functional programming Changing markets biz/sci -> entertainment Security Concurrency FORTRAN's "arithmetic if": IF (I-J) 100, 110, 120 Go to statement 100, 110 or 120 depending on whether I-J is negative, positive or zero. ----- Wednesday, 05/07/14 ----- Changes in problem domains drive language creation May 1994 -- Oak 1995 -- JavaScript 1995 -- PHP 1996 -- CSS 1 2 3 | | | t e s t i n g | | | | -3 -1 -2 0