Why Learn Python? Intro by Christine Cheung
Programming
Programming How many of you have programmed before?
Programming How many of you have programmed before? What is the purpose?
Programming How many of you have programmed before? What is the purpose? Make - create an app
Programming How many of you have programmed before? What is the purpose? Make - create an app Break - edit an app
Programming How many of you have programmed before? What is the purpose? Make - create an app Break - edit an app Understand - how or why does it work?
Okay cool, but why Python?
Okay cool, but why Python? Make - simple to get started
Okay cool, but why Python? Make - simple to get started Break - easy to read and edit code
Okay cool, but why Python? Make - simple to get started Break - easy to read and edit code Understand - modular and abstracted
Show me the Money
Show me the Money IT Salaries are up
Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months
Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary
Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary 70k+
Show me the Money IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary 70k+ Sources: - http://www.readwriteweb.com/enterprise/2011/05/it-hiring-and-salaries-up---wh.php - http://www.payscale.com/research/US/Skill=Python/Salary
History + Facts
History + Facts Created by Guido van Rossum in late 80s
History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google
History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful
History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful Name is based off Monty Python
History + Facts Created by Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful Name is based off Monty Python Spam and Eggs!
Strengths
Strengths Easy for beginners
Strengths Easy for beginners ...but powerful enough for professionals
Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code
Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement
Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from
Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from Cross platform - Windows, Mac, Linux
Strengths Easy for beginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from Cross platform - Windows, Mac, Linux Supportive, large, and helpful community
BASIC
BASIC 10 INPUT A 20 INPUT B 30 C=A+B 40 PRINT C RUN
C
C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; scanf("%d",&a); scanf("%d",&b); c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); } $ gcc -o add add.c $ ./add
C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); compiling } $ gcc -o add add.c $ ./add
C #include <stdio.h> int main(int argc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); compiling } ...and not to mention memory $ gcc -o add add.c allocation, pointers, variable types... $ ./add
Java
Java import java.io.*; public class Addup { static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not compiling numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
Java import java.io.*; public class Addup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not compiling numeric"); System.exit(1); } however, at least you don’t System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); have to deal with garbage } collection... :) } $ javac Addup.java $ java Addup
Python
Python a = input() b = input() c = a + b print c $ python add.py
More Tech Talking Points
More Tech Talking Points Indentation enforces good programming style
More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated
More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98
More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time)
More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time) Safe - dynamic run time type checking and bounds checking on arrays
More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time) Safe - dynamic run time type checking and bounds checking on arrays Source http://www.ariel.com.au/a/teaching-programming.html
Scripting and what else?
Scripting and what else? Application GUI Programming
Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more...
Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java)
Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks
Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ...
Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ... Hardware
Scripting and what else? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ... Hardware Arduino interface, pySerial
Is it really that perfect?
Is it really that perfect? Interpreted language
Is it really that perfect? Interpreted language slight overhead
Is it really that perfect? Interpreted language slight overhead dynamic typing
Is it really that perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound)
Is it really that perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound) Limited systems
Is it really that perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound) Limited systems low level, limited memory on system
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?
Who else uses it?

Why Learn Python?

  • 1.
    Why Learn Python? Introby Christine Cheung
  • 2.
  • 3.
    Programming How many ofyou have programmed before?
  • 4.
    Programming How many ofyou have programmed before? What is the purpose?
  • 5.
    Programming How many ofyou have programmed before? What is the purpose? Make - create an app
  • 6.
    Programming How many ofyou have programmed before? What is the purpose? Make - create an app Break - edit an app
  • 7.
    Programming How many ofyou have programmed before? What is the purpose? Make - create an app Break - edit an app Understand - how or why does it work?
  • 8.
    Okay cool, butwhy Python?
  • 9.
    Okay cool, butwhy Python? Make - simple to get started
  • 10.
    Okay cool, butwhy Python? Make - simple to get started Break - easy to read and edit code
  • 11.
    Okay cool, butwhy Python? Make - simple to get started Break - easy to read and edit code Understand - modular and abstracted
  • 12.
  • 13.
    Show me theMoney IT Salaries are up
  • 14.
    Show me theMoney IT Salaries are up Python is 4th top growing skill in past 3 months
  • 15.
    Show me theMoney IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary
  • 16.
    Show me theMoney IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary 70k+
  • 17.
    Show me theMoney IT Salaries are up Python is 4th top growing skill in past 3 months Average starting Python programmer salary 70k+ Sources: - http://www.readwriteweb.com/enterprise/2011/05/it-hiring-and-salaries-up---wh.php - http://www.payscale.com/research/US/Skill=Python/Salary
  • 18.
  • 19.
    History + Facts Createdby Guido van Rossum in late 80s
  • 20.
    History + Facts Createdby Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google
  • 21.
    History + Facts Createdby Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful
  • 22.
    History + Facts Createdby Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful Name is based off Monty Python
  • 23.
    History + Facts Createdby Guido van Rossum in late 80s “Benevolent Dictator for Life” now at Google Fun and Playful Name is based off Monty Python Spam and Eggs!
  • 24.
  • 25.
  • 26.
    Strengths Easy forbeginners ...but powerful enough for professionals
  • 27.
    Strengths Easy forbeginners ...but powerful enough for professionals Clean and elegant code
  • 28.
    Strengths Easy forbeginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement
  • 29.
    Strengths Easy forbeginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from
  • 30.
    Strengths Easy forbeginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from Cross platform - Windows, Mac, Linux
  • 31.
    Strengths Easy forbeginners ...but powerful enough for professionals Clean and elegant code whitespace enforcement Many modules and libraries to import from Cross platform - Windows, Mac, Linux Supportive, large, and helpful community
  • 32.
  • 33.
    BASIC 10 INPUT A 20 INPUT B 30 C=A+B 40 PRINT C RUN
  • 34.
  • 35.
    C #include <stdio.h> int main(intargc, char*argv[]) { int a,b,c; scanf("%d",&a); scanf("%d",&b); c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 36.
    C #include <stdio.h> int main(intargc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 37.
    C #include <stdio.h> int main(intargc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 38.
    C #include <stdio.h> int main(intargc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); } $ gcc -o add add.c $ ./add
  • 39.
    C #include <stdio.h> int main(intargc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); compiling } $ gcc -o add add.c $ ./add
  • 40.
    C #include <stdio.h> int main(intargc, char*argv[]) { int a,b,c; standard input/output scanf("%d",&a); scanf("%d",&b); return types c = a+b; scanf limitations printf("%dn",c); compiling } ...and not to mention memory $ gcc -o add add.c allocation, pointers, variable types... $ ./add
  • 41.
  • 42.
    Java import java.io.*; public classAddup { static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 43.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 44.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 45.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 46.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 47.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 48.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not compiling numeric"); System.exit(1); } System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); } } $ javac Addup.java $ java Addup
  • 49.
    Java import java.io.*; public classAddup { classes, arguments static public void main(String args[]) { InputStreamReader stdin = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(stdin); int i1 = 0,i2 = 0; input stream, buffer String s1,s2; try { s1 = console.readLine(); variable types i1 = Integer.parseInt(s1); s2 = console.readLine(); i2 = Integer.parseInt(s2); try, catch, exceptions } catch(IOException ioex) { System.out.println("Input error"); system.out System.exit(1); } catch(NumberFormatException nfex) { System.out.println(""" + nfex.getMessage() + "" is not compiling numeric"); System.exit(1); } however, at least you don’t System.out.println(i1 + " + " + i2 + " = " + (i1+i2)); System.exit(0); have to deal with garbage } collection... :) } $ javac Addup.java $ java Addup
  • 50.
  • 51.
    Python a = input() b= input() c = a + b print c $ python add.py
  • 52.
  • 53.
    More Tech Talking Points Indentationenforces good programming style
  • 54.
    More Tech Talking Points Indentationenforces good programming style can read other’s code, and not obfuscated
  • 55.
    More Tech Talking Points Indentationenforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98
  • 56.
    More Tech Talking Points Indentationenforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time)
  • 57.
    More Tech Talking Points Indentationenforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time) Safe - dynamic run time type checking and bounds checking on arrays
  • 58.
    More Tech Talking Points Indentation enforces good programming style can read other’s code, and not obfuscated sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall"; die map{b."$w,n".b.",nTake one down, pass it around, n".b(0)."$w.nn"}0..98 No more forgotten braces and semi-colons! (less debug time) Safe - dynamic run time type checking and bounds checking on arrays Source http://www.ariel.com.au/a/teaching-programming.html
  • 60.
  • 61.
    Scripting and whatelse? Application GUI Programming
  • 62.
    Scripting and whatelse? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more...
  • 63.
    Scripting and whatelse? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java)
  • 64.
    Scripting and whatelse? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks
  • 65.
    Scripting and whatelse? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ...
  • 66.
    Scripting and whatelse? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ... Hardware
  • 67.
    Scripting and whatelse? Application GUI Programming Gtk, Qt, Tk, WxWidgets, and MANY more... IronPython (.NET), Jython (Java) Web Frameworks Django, Pylons, TurboGears, Zope, ... Hardware Arduino interface, pySerial
  • 68.
    Is it reallythat perfect?
  • 69.
    Is it reallythat perfect? Interpreted language
  • 70.
    Is it reallythat perfect? Interpreted language slight overhead
  • 71.
    Is it reallythat perfect? Interpreted language slight overhead dynamic typing
  • 72.
    Is it reallythat perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound)
  • 73.
    Is it reallythat perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound) Limited systems
  • 74.
    Is it reallythat perfect? Interpreted language slight overhead dynamic typing Complex systems (compute bound) Limited systems low level, limited memory on system
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.