+
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
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/
Enter the password to open this PDF file:
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Preparing document for printing…
0%
Σχόλια 0
Συνδεθείτε για να κοινοποιήσετε σχόλιο