SlideShare uma empresa Scribd logo
1 de 37
Scientific Batteries Included




                                Florian Kühnlenz
Gliederung

1.Einleitung

2.Übersicht

3.„Warum Python?“

4.Numeric Stack

5.Bonus: Geschwindigkeit
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
Python - Buzzword-Bingo

•   Dynamisch
•   Interpretiert
•   Interaktiv
•   Introspektiv
•   Exception-based error handling
•   Umfangreiche Standardbibliothek
•   Erweiterbar (C, C++, Fortran, Java … )
Python - Buzzword-Bingo

•   Dynamisch
•   Interpretiert
•   Interaktiv
•   Introspektiv
•   Exception-based error handling
•   Umfangreiche Standardbibliothek
•   Erweiterbar (C, C++, Fortran, Java … )
•   Open Source
Ü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                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/
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.
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.
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 Dokumentation

• Verbreitung in der wissenschaftlichen Gemeinde
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, Lesbarkeit und Wartbarkeit

• umfangreiche Standardbibliothek

• einfache Paketinstallation

• Portierbarkeit
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 - Plotting


• IPython - verbesserte Python Shell


• SymPy, mpi4py, PyCUDA, PyOpenCL, Cython, NumExpr, MayaVi,
  ShedSkin, Theano, Copperhead… 
NumPy + SciPy
Demo: IPython und Kreisfit
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()
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
Bonus
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
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
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
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.
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

Mais conteúdo relacionado

Destaque (20)

Instrução técnica pm
Instrução técnica pmInstrução técnica pm
Instrução técnica pm
 
Security
SecuritySecurity
Security
 
Каталог СпецЭнерго
Каталог СпецЭнергоКаталог СпецЭнерго
Каталог СпецЭнерго
 
Cartilla
CartillaCartilla
Cartilla
 
Spaun
SpaunSpaun
Spaun
 
Rails goes SOA
Rails goes SOARails goes SOA
Rails goes SOA
 
Cardsplitter
CardsplitterCardsplitter
Cardsplitter
 
Tutorial simulations-elec 380
Tutorial simulations-elec 380Tutorial simulations-elec 380
Tutorial simulations-elec 380
 
Kona LHi
Kona LHiKona LHi
Kona LHi
 
77777777
7777777777777777
77777777
 
77777
7777777777
77777
 
Tchaikovsky
TchaikovskyTchaikovsky
Tchaikovsky
 
Unmanned Aircraft Systems
Unmanned Aircraft SystemsUnmanned Aircraft Systems
Unmanned Aircraft Systems
 
ABUELITO QUERIDO
ABUELITO QUERIDOABUELITO QUERIDO
ABUELITO QUERIDO
 
Pasarela 2014 lista
Pasarela 2014 listaPasarela 2014 lista
Pasarela 2014 lista
 
qwest communications q_q4 04er
qwest communications q_q4 04erqwest communications q_q4 04er
qwest communications q_q4 04er
 
Chanoeka
ChanoekaChanoeka
Chanoeka
 
Principio basicos peluquer+¡a-canina-
 Principio basicos peluquer+¡a-canina- Principio basicos peluquer+¡a-canina-
Principio basicos peluquer+¡a-canina-
 
Esteracing
EsteracingEsteracing
Esteracing
 
47 brand fall 2013 catalog
47 brand fall 2013 catalog47 brand fall 2013 catalog
47 brand fall 2013 catalog
 

Semelhante a Warum Python?

Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike MüllerAberla
 
Python Installationen für Data Science
Python Installationen für Data SciencePython Installationen für Data Science
Python Installationen für Data ScienceDatamics
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatengeKarin Patenge
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance ReloadedGregor Goldbach
 
Python crash-kurs
Python crash-kursPython crash-kurs
Python crash-kursklausbremer
 
zmon.io – Not yet another Prometheus Talk
zmon.io – Not yet another Prometheus Talkzmon.io – Not yet another Prometheus Talk
zmon.io – Not yet another Prometheus Talkinovex GmbH
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Martin Alfke
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with AnsibleSusannSgorzaly
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaAndreas Jung
 
Warum kann man Pi nicht als einen Bruch aufschreiben ?
 Warum kann man Pi nicht als einen Bruch aufschreiben ? Warum kann man Pi nicht als einen Bruch aufschreiben ?
Warum kann man Pi nicht als einen Bruch aufschreiben ?F789GH
 
Python Bootcamp - Grundlagen
Python Bootcamp - GrundlagenPython Bootcamp - Grundlagen
Python Bootcamp - GrundlagenDatamics
 
Slideshare AutoEncoder
Slideshare AutoEncoderSlideshare AutoEncoder
Slideshare AutoEncoderDatamics
 
Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014
 Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014 Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014
Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014panagenda
 

Semelhante a Warum Python? (20)

Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike Müller
 
Python Installationen für Data Science
Python Installationen für Data SciencePython Installationen für Data Science
Python Installationen für Data Science
 
Python Academy
Python AcademyPython Academy
Python Academy
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance Reloaded
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
NRWConf2013_T4CodeGeneration
NRWConf2013_T4CodeGenerationNRWConf2013_T4CodeGeneration
NRWConf2013_T4CodeGeneration
 
Python crash-kurs
Python crash-kursPython crash-kurs
Python crash-kurs
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
 
zmon.io – Not yet another Prometheus Talk
zmon.io – Not yet another Prometheus Talkzmon.io – Not yet another Prometheus Talk
zmon.io – Not yet another Prometheus Talk
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014
 
Debugging und Profiling
Debugging und ProfilingDebugging und Profiling
Debugging und Profiling
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
 
Warum kann man Pi nicht als einen Bruch aufschreiben ?
 Warum kann man Pi nicht als einen Bruch aufschreiben ? Warum kann man Pi nicht als einen Bruch aufschreiben ?
Warum kann man Pi nicht als einen Bruch aufschreiben ?
 
Python Bootcamp - Grundlagen
Python Bootcamp - GrundlagenPython Bootcamp - Grundlagen
Python Bootcamp - Grundlagen
 
Slideshare AutoEncoder
Slideshare AutoEncoderSlideshare AutoEncoder
Slideshare AutoEncoder
 
Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014
 Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014 Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014
Domino Statistiken (noch besser) verstehen und nutzen (Teil 2) - 41. DNUG 2014
 

Warum Python?

  • 1. Scientific Batteries Included Florian Kühnlenz
  • 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. Python - Buzzword-Bingo • Dynamisch • Interpretiert • Interaktiv • Introspektiv • Exception-based error handling • Umfangreiche Standardbibliothek • Erweiterbar (C, C++, Fortran, Java … )
  • 5. Python - Buzzword-Bingo • Dynamisch • Interpretiert • Interaktiv • Introspektiv • Exception-based error handling • Umfangreiche Standardbibliothek • Erweiterbar (C, C++, Fortran, Java … ) • Open Source
  • 6. Über Python “ bridge the gap between C and the shell
  • 7. Über Python “ Battery included.
  • 8.
  • 9.
  • 10. hello-world.py >>> [0, 3, 6, 9, 12, 15, 18]
  • 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
  • 21. Vorteile C/C++ • schnell • sehr weit verbreitet • Open Source
  • 22. Nachteile C/C++ • sehr flache Lernkurve • optimiert für Systemprogrammierung (C) • Einbinden von Zusatzpaketen aufwendig
  • 23. Vorteile Python • Open Source • One-Click Windows-Installer (sonst Paketverwaltung…) • Optimiert auf Erlernbarkeit, Lesbarkeit und Wartbarkeit • umfangreiche Standardbibliothek • einfache Paketinstallation • Portierbarkeit
  • 24. Nachteile Python • langsam (zumindest manchmal) • Dokumentation könnte besser sein
  • 25. Whitespace C Python
  • 26. Reduziert C Python
  • 27. …und MATLAB MATLAB Python
  • 28. 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… 
  • 29. NumPy + SciPy Demo: IPython und Kreisfit
  • 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
  • 32. Bonus
  • 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

  1. 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
  2. \n
  3. \n
  4. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  5. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  6. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  7. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  8. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  9. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  10. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  11. Introspektiv - während der Laufzeit Objekte untersuchbar und veränderbar \n
  12. Die Herkunft einer Sprache gibt gutes Gefühl dafür warum sie so ist wie sie ist\n\nUrsprungsmotto von Guido von Rossum\n
  13. Motto von Python heute\n
  14. \n
  15. \n
  16. \n
  17. ganz kurze Antwort\n
  18. Nutzung von Programmiersprachen außerhalb der Uni… z.B. im Praktikum\n
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. \n
  26. \n
  27. 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
  28. nur die Doku von Mathematica ist noch besser weil auf Deutsch ;-)\n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. 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
  35. man kann sogar noch mehr weglassen\nkann eine Sprache produktiver sein?\n
  36. 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
  37. "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
  38. 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
  39. 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
  40. \n
  41. \n
  42. 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
  43. wenn man python code in als funktion in pypy ausführt (mehr optimierung möglich) ==> C speed\n
  44. 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
  45. 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
  46. 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