Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Warum Python?

1,768 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
  • Be the first to comment

  • Be the first to like this

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

×