With this slides I tried to convince the theoretical physicists at my university (TU-Ilmenau) to use python instead of matlab, especially for teaching. At it seams it may have worked!
Slides are in German.
3. Thesen
• Pythons numerische Funktionalität entspricht der von MATLAB
• Python lässt sich besser Strukturieren
• Python ist einfacher zu erlernen und zu warten
• Python ist frei Verfügbar
12. Über Python
“ If it‘s good enough for
Google and NASA (and
DLR), it‘s good enough for
me, baby.
13. Zahlenspiele
Position Sprache
1 Java
2 C
3 C++
4 PHP
5 C#
6 Objective-C
7 Visual Basic
8 Python
9 Perl
10 JavaScript
…
29 MATLAB
…
34 Fortran Quelle: http://www.tiobe.com/
14. Warum ist Python so verbreitet?
• Google, YouTube, CERN, NASA, DLR, ILM…
“ Der größte Optimierungsschritt ist der
von einem nicht funktionierenden
Zustand zu einem funktionierendem.
15. Warum ist Python so verbreitet?
• Google, YouTube, CERN, NASA, DLR, ILM…
“ Der größte Optimierungsschritt ist der
von einem nicht funktionierenden
Zustand zu einem funktionierendem.
16. Gibt es produktive Sprachen?
Quelle:http://www.connellybarnes.com/documents/language_productivity.pdf
17. Gibt es produktive Sprachen?
Quelle:http://www.connellybarnes.com/documents/language_productivity.pdf
18. Gibt es produktive Sprachen?
Quelle:http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt_computer2000.pdf
19. Vorteile MATLAB
• optimiert auf Numerik
• steile Lernkurve
• sehr viele eingebaute mathematische Funktionen
• sehr gute Dokumentation
• Verbreitung in der wissenschaftlichen Gemeinde
20. Nachteile MATLAB
• nicht frei Verfügbar
• Sprache nicht sehr ausgefeilt
• GUI / Shell verwirrt Anfänger
30. NumPy - gar nicht so viel anders
MATLAB NumPy
[ 1 2 3; 4 5 6 ] array([[1.,2.,3.], [4.,5.,6.]])
a(end) a[-1]
a(2,5) a[1,4]
a(end-4:end,:) a[-5:]
a.' a.T
a' a.H
a * b dot(a,b)
a .* b a * b
y=x y = x.copy()
zeros(3,4,5) zeros((3,4,5))
diag(a,0) diag(a,0)
a | b logical_or(a,b)
bitor(a,b) a | b
inv(a) linalg.inv(a)
sort(a) sort(a) or a.sort()
31. Thesen
• Pythons numerische Funktionalität entspricht der von MATLAB
• Python lässt sich besser Strukturieren
• Python ist einfacher zu erlernen und zu warten
• Python ist frei Verfügbar
33. In der Ruhe liegt die Kraft?
>>> time ./sum >>> time python sum.py
499950000000 499950000000
real
0m0.284s real
0m19.860s
user
0m0.279s user
0m19.561s
sys
0m0.002s sys
0m0.043s
34. JIT Segen
>>> time ./sum >>> time pypy sum.py
499950000000 499950000000
real
0m0.284s real
0m2.515s
user
0m0.279s user
0m2.432s
sys
0m0.002s sys
0m0.026s
35. JIT Segen
>>> time ./sum >>> time pypy sum…
499950000000 499950000000
real
0m0.284s real
0m0.343s
user
0m0.279s user
0m0.319s
sys
0m0.002s sys
0m0.022s
36. Pythonic-Way
>>> time python
sum.py
499950000000
real
0m1.402s
user
0m1.348s
sys
0m0.015s
>>> time python
sum…
499950000000
real
0m1.101s
user
0m1.079s
sys
0m0.014s
„Nur“ 4x
langsamer.
37. NumPy
>>> time python
sum…
499950000000
real
0m0.294s
user
0m0.242s
sys
0m0.047s
>>> time octave MATLAB
sum…
x = 4.9995e+11 x = 4.9995e+11
Elapsed time is Elapsed time is
0.2088 seconds. 0.1584 seconds.
real
0m1.351s ?
user
0m0.380s
sys
0m0.107s
Notas do Editor
2 Ziele:\n1. Denen die Python noch nicht kennen ein wenig davon zu zeigen und denen die es schon kennen und meinen das es merkwürdig ist zu zeigen das dem nicht so ist\n2. Davon zu überzeugen das Python eine gute Wahl als Programmiersprache für die Studenten ist\n\nIch mag Python aber ich kenne genügend anderen Sprachen (Assembler -> Prolog)\nTrotzdem Heute: Python ist beste Sprache ever!\n\nProgrammieren = Fähigkeit zu schleifen\nWahl der Programmiersprache = Wahl der richtigen Feile\n\n\n\n
\n
\n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
Die Herkunft einer Sprache gibt gutes Gefühl dafür warum sie so ist wie sie ist\n\nUrsprungsmotto von Guido von Rossum\n
Motto von Python heute\n
\n
\n
\n
ganz kurze Antwort\n
Nutzung von Programmiersprachen außerhalb der Uni… z.B. im Praktikum\n
Etwas längere Antwort.\n\n1. Time is Money (Arbeitszeit)\nMehr Rechenleistung lässt sich immer billiger kaufen\n\n2. Gute Wartbarkeit von Code\n\n3. Zusammenspiel mit Legacy Code\n\nAuf BlueGene /P läuft eine riesen Python DFT Simulation (40k Cores) „Was tun wir um sie aufzuhalten“\n
Etwas längere Antwort.\n\n1. Time is Money (Arbeitszeit)\nMehr Rechenleistung lässt sich immer billiger kaufen\n\n2. Gute Wartbarkeit von Code\n\n3. Zusammenspiel mit Legacy Code\n\nAuf BlueGene /P läuft eine riesen Python DFT Simulation (40k Cores) „Was tun wir um sie aufzuhalten“\n
Etwas längere Antwort.\n\n1. Time is Money (Arbeitszeit)\nMehr Rechenleistung lässt sich immer billiger kaufen\n\n2. Gute Wartbarkeit von Code\n\n3. Zusammenspiel mit Legacy Code\n\nAuf BlueGene /P läuft eine riesen Python DFT Simulation (40k Cores) „Was tun wir um sie aufzuhalten“\n
Etwas längere Antwort.\n\n1. Time is Money (Arbeitszeit)\nMehr Rechenleistung lässt sich immer billiger kaufen\n\n2. Gute Wartbarkeit von Code\n\n3. Zusammenspiel mit Legacy Code\n\nAuf BlueGene /P läuft eine riesen Python DFT Simulation (40k Cores) „Was tun wir um sie aufzuhalten“\n
Etwas längere Antwort.\n\n1. Time is Money (Arbeitszeit)\nMehr Rechenleistung lässt sich immer billiger kaufen\n\n2. Gute Wartbarkeit von Code\n\n3. Zusammenspiel mit Legacy Code\n\nAuf BlueGene /P läuft eine riesen Python DFT Simulation (40k Cores) „Was tun wir um sie aufzuhalten“\n
Etwas längere Antwort.\n\n1. Time is Money (Arbeitszeit)\nMehr Rechenleistung lässt sich immer billiger kaufen\n\n2. Gute Wartbarkeit von Code\n\n3. Zusammenspiel mit Legacy Code\n\nAuf BlueGene /P läuft eine riesen Python DFT Simulation (40k Cores) „Was tun wir um sie aufzuhalten“\n
\n
\n
Script-Sprache verbraucht nur halb so viel Zeit, Code ist halb so lang.\n\nSpeicherverbraucht Script = 2x Compiled\n\nSchlechte Programme kann man in jeder Sprache schreiben\n\nDer unterscheid zwischen Programmierern ist größer als zwischen Sprachen\n\n
nur die Doku von Mathematica ist noch besser weil auf Deutsch ;-)\n
\n
\n
\n
\n
\n
alle klammern weglassen\n\nMeine Freundin: „Das (Python) verstehe ich aber was bitte soll das (C) sein?\n\n- für einfach Sachen: Python wie Pseudocode\n
man kann sogar noch mehr weglassen\nkann eine Sprache produktiver sein?\n
MATLAB ist auch sehr kompakt (eine Zeile weniger), es fehlt aber die Möglichkeit der Strukturierung\nMATLAB ist etwas auf der PERL Seite, zu kompakt, nicht ausdrucksstark genug.\n\n\n\n
"NumPy and SciPy were created to do numerical and scientific computing in the most natural way with Python, not to be MATLAB® clones."\n\nmatplotlib weil MATLAB Lizenzserver immer down… \n\n\n
Man muss sich umgewöhnen ABER man muss nix neues lernen.\n\nansätze sind meist etwas anders:\nmatlab: column major\nnumpy: row major\n\nmatlab: sum nur eine dimension --> sum(sum(sum…\nnumpy: sum reduziert auf skalar --> sum(a,axis=0)\n\n…\n
\n
\n
python 70 mal langsamer als C. Das was alle immer gehofft haben. \nBeispiel ist speziell ausgesucht um pythons Langsamkeit zu demonstrieren.\nMit ein paar Varianten die Möglichkeiten Pythons aufzeigen.\n\n
wenn man python code in als funktion in pypy ausführt (mehr optimierung möglich) ==> C speed\n
wenn man python code in als funktion in pypy ausführt (mehr optimierung möglich) ==> C speed\nReine Ausführungszeit der Funktion: 0.28s…\n\nMatlab: 0.5s (hat auch JIT)\nOctave: 146s\n
Auch in Python gibt es mehr als einen Weg. Der _beste_ Weg ist vllt nicht der schnellste.\nObjekte in python schreiben ist sehr straight forward.\nObere Variante ist wohl die am meisten Pythonische Variante.\n\nIn der Praxis eher selten ein Problem 10 Mio Operationen besser mit Numerik Paket. (NumPy 0.14s)\n\n\n
Auch in Python gibt es mehr als einen Weg. Der _beste_ Weg ist vllt nicht der schnellste.\nObjekte in python schreiben ist sehr straight forward.\nObere Variante ist wohl die am meisten Pythonische Variante.\n\nIn der Praxis eher selten ein Problem 10 Mio Operationen besser mit Numerik Paket. (NumPy 0.14s)\n\n\n