180 likes | 462 Views
CS1001 . Python. November 14 th , 2011. Scripting languages. Scripting languages foster an exploratory , incremental approach to writing code Historically interpreted Favor your time and energy over the CPU’s Include libraries for common tasks Examples
E N D
CS1001. Python. November 14th, 2011
Scripting languages • Scripting languages foster an exploratory, incrementalapproach to writing code • Historically interpreted • Favor your time and energy over the CPU’s • Include libraries for common tasks • Examples • AWK [1977], Perl [1987], Python [1991]
Style Java: public class HelloWorld { public static void main(String[] args) {System.out.println("Hello world");}}Python:print “hello world” Perl:print “hello world\n”; AWK: BEGIN { print "Hello, world!" }
Philosophy • More time • Thinking about the problem • Experimenting with solutions • Less time • Writing code
Perl • Larry Wall, 1987 (linguist) • Report writing (text processing!) • “There is more than one way to do it.” • What was text processing essential for in the early 90s?
Websites per year (log scale) Source: http://www.useit.com/alertbox/web-growth.html
Which is more important? • Code should be easy to write • Code should be easy to read (This is a false dichotomy)
Obfuscated code contest `$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=($!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=` Perl
Obfuscated code contest `$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=($!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=` • $ Just another Perl hacker. Perl
Python • Emphasizes readability • “There should be one – and preferably only one – way to do it.” • Large standard library (batteries included) • Cross platform and open source
Getting the weather http://weather.yahooapis.com/forecastrss?w=2459115
Technically • Dynamic typing • Garbage collected • Multi-paradigm • Compiles to bytecode • Exception based error handling • Extensible
Dynamic typing pi = 3.1459 print pi pi= "I'dlovetohave " + str(pi) + " pies" printpi print"Infact, I'dlikeonemore" pi = pi + 1 # TypeError: cannotconcatenate 'str' and 'int' objects printpi
Books Ordered by technical complexity - notice anything?
Internet humor Source: http://xkcd.com/534/