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/