Scientific Batteries Included                                Florian Kühnlenz
Gliederung1.Einleitung2.Übersicht3.„Warum Python?“4.Numeric Stack5.Bonus: Geschwindigkeit
Thesen• Pythons numerische Funktionalität entspricht der von MATLAB• Python lässt sich besser Strukturieren• Python ist ei...
Python - Buzzword-Bingo•   Dynamisch•   Interpretiert•   Interaktiv•   Introspektiv•   Exception-based error handling•   U...
Python - Buzzword-Bingo•   Dynamisch•   Interpretiert•   Interaktiv•   Introspektiv•   Exception-based error handling•   U...
Über Python        “        bridge the gap    between C and the shell
Über Python      “  Battery included.
hello-world.py                 >>> [0, 3, 6, 9, 12, 15, 18]
Warum Python?
Über Python “ If it‘s good enough for  Google and NASA (and DLR), it‘s good enough for            me, baby.
Zahlenspiele               Position        Sprache                  1              Java                  2                ...
Warum ist Python so verbreitet?• Google, YouTube, CERN, NASA, DLR, ILM…     “    Der größte Optimierungsschritt ist der   ...
Warum ist Python so verbreitet?• Google, YouTube, CERN, NASA, DLR, ILM…     “    Der größte Optimierungsschritt ist der   ...
Gibt es produktive Sprachen?           Quelle:http://www.connellybarnes.com/documents/language_productivity.pdf
Gibt es produktive Sprachen?           Quelle:http://www.connellybarnes.com/documents/language_productivity.pdf
Gibt es produktive Sprachen?            Quelle:http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt_computer2000.pdf
Vorteile MATLAB• optimiert auf Numerik• steile Lernkurve• sehr viele eingebaute mathematische Funktionen• sehr gute Dokume...
Nachteile MATLAB• nicht frei Verfügbar• Sprache nicht sehr ausgefeilt• GUI / Shell verwirrt Anfänger
Vorteile C/C++• schnell• sehr weit verbreitet• Open Source
Nachteile C/C++• sehr flache Lernkurve• optimiert für Systemprogrammierung (C)• Einbinden von Zusatzpaketen aufwendig
Vorteile Python• Open Source• One-Click Windows-Installer (sonst Paketverwaltung…)• Optimiert auf Erlernbarkeit, Lesbarkei...
Nachteile Python• langsam (zumindest manchmal)• Dokumentation könnte besser sein
Whitespace         C   Python
Reduziert            C   Python
…und MATLAB    MATLAB    Python
Scientific Stack• Python• NumPy - MATLAB-artige Numerik• SciPy - Sammlung wissenschaftlicher Algorithmen• Matplotlib - Plo...
NumPy + SciPyDemo: IPython und Kreisfit
NumPy - gar nicht so viel anders           MATLAB                     NumPy           [ 1 2 3; 4 5 6 ]   array([[1.,2.,3.]...
Thesen• Pythons numerische Funktionalität entspricht der von MATLAB• Python lässt sich besser Strukturieren• Python ist ei...
Bonus
In der Ruhe liegt die Kraft?      >>> time ./sum           >>> time python sum.py      499950000000             4999500000...
JIT Segen     >>> time ./sum      >>> time pypy sum.py     499950000000        499950000000     real 0m0.284s      real 0m...
JIT Segen     >>> time ./sum      >>> time pypy sum…     499950000000        499950000000     real 0m0.284s      real 0m0....
Pythonic-Way               >>> time python               sum.py               499950000000               real 0m1.402s    ...
NumPy        >>> time python        sum…        499950000000        real 0m0.294s        user0m0.242s        sys    0m0.04...
Warum Python?
Warum Python?
Upcoming SlideShare
Loading in …5
×

Warum Python?

1,445 views
1,334 views

Published on

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.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,445
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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
  • IPython:\nipython --pylab\na = [1,2,3]\nx = linspace(0,2*pi,100)\nplot(sin(x))\nxlabel(,x‘)\nylabel(,$\\sin(x)$‘)\nsafefig(,sin.eps‘)\n!open sin.eps\n\nKreisfit… \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
  • Warum Python?

    1. 1. Scientific Batteries Included Florian Kühnlenz
    2. 2. Gliederung1.Einleitung2.Übersicht3.„Warum Python?“4.Numeric Stack5.Bonus: Geschwindigkeit
    3. 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
    4. 4. Python - Buzzword-Bingo• Dynamisch• Interpretiert• Interaktiv• Introspektiv• Exception-based error handling• Umfangreiche Standardbibliothek• Erweiterbar (C, C++, Fortran, Java … )
    5. 5. Python - Buzzword-Bingo• Dynamisch• Interpretiert• Interaktiv• Introspektiv• Exception-based error handling• Umfangreiche Standardbibliothek• Erweiterbar (C, C++, Fortran, Java … )• Open Source
    6. 6. Über Python “ bridge the gap between C and the shell
    7. 7. Über Python “ Battery included.
    8. 8. hello-world.py >>> [0, 3, 6, 9, 12, 15, 18]
    9. 9. Warum Python?
    10. 10. Über Python “ If it‘s good enough for Google and NASA (and DLR), it‘s good enough for me, baby.
    11. 11. 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/
    12. 12. 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.
    13. 13. 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.
    14. 14. Gibt es produktive Sprachen? Quelle:http://www.connellybarnes.com/documents/language_productivity.pdf
    15. 15. Gibt es produktive Sprachen? Quelle:http://www.connellybarnes.com/documents/language_productivity.pdf
    16. 16. Gibt es produktive Sprachen? Quelle:http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt_computer2000.pdf
    17. 17. Vorteile MATLAB• optimiert auf Numerik• steile Lernkurve• sehr viele eingebaute mathematische Funktionen• sehr gute Dokumentation• Verbreitung in der wissenschaftlichen Gemeinde
    18. 18. Nachteile MATLAB• nicht frei Verfügbar• Sprache nicht sehr ausgefeilt• GUI / Shell verwirrt Anfänger
    19. 19. Vorteile C/C++• schnell• sehr weit verbreitet• Open Source
    20. 20. Nachteile C/C++• sehr flache Lernkurve• optimiert für Systemprogrammierung (C)• Einbinden von Zusatzpaketen aufwendig
    21. 21. Vorteile Python• Open Source• One-Click Windows-Installer (sonst Paketverwaltung…)• Optimiert auf Erlernbarkeit, Lesbarkeit und Wartbarkeit• umfangreiche Standardbibliothek• einfache Paketinstallation• Portierbarkeit
    22. 22. Nachteile Python• langsam (zumindest manchmal)• Dokumentation könnte besser sein
    23. 23. Whitespace C Python
    24. 24. Reduziert C Python
    25. 25. …und MATLAB MATLAB Python
    26. 26. Scientific Stack• Python• NumPy - MATLAB-artige Numerik• SciPy - Sammlung wissenschaftlicher Algorithmen• Matplotlib - Plotting• IPython - verbesserte Python Shell• SymPy, mpi4py, PyCUDA, PyOpenCL, Cython, NumExpr, MayaVi, ShedSkin, Theano, Copperhead… 
    27. 27. NumPy + SciPyDemo: IPython und Kreisfit
    28. 28. 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()
    29. 29. 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
    30. 30. Bonus
    31. 31. In der Ruhe liegt die Kraft? >>> time ./sum >>> time python sum.py 499950000000 499950000000 real 0m0.284s real 0m19.860s user0m0.279s user0m19.561s sys 0m0.002s sys 0m0.043s
    32. 32. JIT Segen >>> time ./sum >>> time pypy sum.py 499950000000 499950000000 real 0m0.284s real 0m2.515s user0m0.279s user0m2.432s sys 0m0.002s sys 0m0.026s
    33. 33. JIT Segen >>> time ./sum >>> time pypy sum… 499950000000 499950000000 real 0m0.284s real 0m0.343s user0m0.279s user0m0.319s sys 0m0.002s sys 0m0.022s
    34. 34. Pythonic-Way >>> time python sum.py 499950000000 real 0m1.402s user0m1.348s sys 0m0.015s >>> time python sum… 499950000000 real0m1.101s user0m1.079s sys 0m0.014s „Nur“ 4x langsamer.
    35. 35. NumPy >>> time python sum… 499950000000 real 0m0.294s user0m0.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 ? user0m0.380s sys 0m0.107s

    ×