Transcript pythonx

+
CS1001. Python.
November 14th, 2011
+
Scripting languages
 Scripting
languages foster an exploratory,
incremental approach to writing code
 Historically
 Favor
interpreted
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
+
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
typing
 Garbage
collected
 Multi-paradigm
 Compiles
to bytecode
 Exception
based error handling
 Extensible
+
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
+
Books
Ordered by technical complexity - notice anything?
+
Internet humor
Source: http://xkcd.com/534/