+ CS1001. Python. November 14 th , 2011
Feb 22, 2016
+
CS1001. Python.November 14th, 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
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 timeThinking about the problemExperimenting with solutions
Less timeWriting 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 writeCode should be easy to read(This is a false dichotomy)
+Obfuscated code contest
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=($!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
Perl
+Obfuscated code contest
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=($!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
$ Just another Perl hacker.
Perl
+Obfuscated code contest
C
+Obfuscated code contest
C
+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
+Parsing text files (and reading them back!)
+Getting the weather
http://weather.yahooapis.com/forecastrss?w=2459115
+Technically
Dynamic typingGarbage collectedMulti-paradigmCompiles to bytecodeException based error handlingExtensible
+Dynamic typing
pi = 3.1459
print pi
pi = "I'd love to have " + str(pi) + " pies"
print pi
print "In fact, I'd like one more"
pi = pi + 1 # TypeError: cannot concatenate 'str' and 'int' objects
print pi
+BooksOrdered by technical complexity - notice anything?
+Internet humor
Source: http://xkcd.com/534/