produktivität von programmiersprachen€¦ · tim jammer universität hamburg fakultät für...

23

Upload: others

Post on 21-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

1/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Produktivität von Programmiersprachen

Tim Jammer

Universität Hamburg

Fakultät für Mathematik, Informatik und Naturwissenschaften

Fachbereich Informatik, Arbeitsbereich Wissenschaftliches Rechnen

Seminar Softwareentwicklung in der Wissenschaft im SoSe 15

02.06.2015

Tim Jammer Produktivität von Programmiersprachen

Page 2: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

2/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

1 Wie misst man die Produktivität von Programmiersprachen?Performance

Speicherbedarf

EntwicklungszeitWartbarkeit / AnpassbarkeitGröÿe der Community

Zusammenfassung

2 Einige Programmiersprachen im VergleichDie zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

3 Fazit

Tim Jammer Produktivität von Programmiersprachen

Page 3: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

3/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Wie misst man die Produktivität von Programmiersprachen?

Entscheidend sind im Wesentlichen

• Performance

• Entwicklungszeit

0vgl. [KK04]Tim Jammer Produktivität von Programmiersprachen

Page 4: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

4/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Performance

Unter Performance fallen im Wesentlichen alle Aspekte einesProgramms, die nach der Entwicklung messbar sind.

• Laufzeit

• Speicherbedarf

• (Energiee�zienz)

• (Stabilität)

• (Robustheit)

0eigene Einteilung von Faktoren aus [KK07]Tim Jammer Produktivität von Programmiersprachen

Page 5: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

5/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Laufzeit

• Zeit, die der fertige Code benötigt, um ausgeführt zu werden

• Parallelisierungsmöglichkeiten können Laufzeit verkürzen

• Je Häu�ger das Programm ausgeführt werden muss, destowichtiger ist dieser Faktor im Vergleich zu anderen

0vgl. [KK07]Tim Jammer Produktivität von Programmiersprachen

Page 6: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

6/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Speicherbedarf

• Speicherbedarf, den das Programm zur Laufzeit hat

• Im Bereich HPC besonders wichtig (Scheduling)

• Speicherplatz, den das Programm selbst einnimmt oft nicht soentscheidend, darf aber nicht vergessen werden

0vgl. [ea10]Tim Jammer Produktivität von Programmiersprachen

Page 7: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

7/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Entwicklungszeit

Beinhaltet die Zeit, die während der Entwicklung verstreicht.Sie wird u.a. durch folgende Aspekte beein�usst:

• Erfahrung der Programmierer

• Deren Verständnis vom Problem

• Dem zu lösenden Problem

• Kompilierungszeit

• Benutzen vorhandener Librarys möglich?

0vgl. Lehrveranstaltung SWTTim Jammer Produktivität von Programmiersprachen

Page 8: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

8/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Wartbarkeit / Anpassbarkeit

• Zeit, die in die Anpassung der Software gesteckt werden muss

• Darunter fällt auch die Plattformunabhängigkeit

0vgl. Lehrveranstaltung SWTTim Jammer Produktivität von Programmiersprachen

Page 9: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

9/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Gröÿe der Community

Durch gröÿere Community gibt es

• mehr erfahrene Programmierer

• mehr Unterstützung bei (technischen) Problemen

• mehr und bessere Tools zur Unterstützung der Implementation

• Standardisierung

• eventuell mehr Librarys

⇒ die Entwicklungszeit kann dardurch verkürzt werden

0vgl. Lehrveranstaltung SWTTim Jammer Produktivität von Programmiersprachen

Page 10: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

10/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

PerformanceEntwicklungszeitZusammenfassung

Zusammenfassung: wie kann man Produktivität messen

Man kann diese Faktoren häu�g in Zeiteinheiten messen

⇒ diejenige Sprache ist optimal,

die die geringste Gesamtzeit aufweist(?)

Aber: Gewichtung der Faktoren ändert sich von

Problemstellung zu Problemstellung

0vgl. [KK07]Tim Jammer Produktivität von Programmiersprachen

Page 11: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

11/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Einige Programmiersprachen im Vergleich

• Ergebnisse der Studie von Lutz Prechelt werden vorgestellt1

• 80 verschiedene Programme untersucht

• Perl, Phyton, Rexx, Tcl als Skriptsprachen zusammengefasst• besondere Rolle: andere Erhebung der Daten

1Studie aus [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 12: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

12/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Das betrachtete Problem

Telefonnummern Wörter zuordnen,um sie sich besser merken zu können

E JNO RWX DSY FT AM CIV BKU LOP GHZ0 1 2 3 4 5 6 7 8 9

Beispiel: Fort -> 4824

1vgl. [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 13: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

13/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Abbildung: Laufzeit: Laden des Wörterbuches in Sek.

1Abb. aus [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 14: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

14/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Abbildung: Laufzeit: Suche möglicher Wörter der Telefonnummern in Sek.

1Abb. aus [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 15: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

15/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Abbildung: Speicherverbrauch in MB

1Abb. aus [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 16: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

16/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Abbildung: Gesamtlaufzeit in Sek.

1Abb. aus [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 17: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

17/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Abbildung: Entwicklungszeit in Stunden

1Abb. aus [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 18: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

18/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Die zu vergleichende ProblemstellungDie Ergebnisse bezüglich PerformanceDie Ergebnisse bezüglich EntwicklungszeitZusammenfassung

Zusammenfassung: Ergebnisse der Studie

• Unterschiede zwischen den einzelnen Sprachen:• wesentlich weniger stark

• als Unterschiede zwischen• den Programmen der gleichen Sprache

• Keine Unterschiede in der Zuverlässigkeit der Programme

1vgl. [Pre00]Tim Jammer Produktivität von Programmiersprachen

Page 19: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

19/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Fortran

• Fortran als "natural language for expressing sience andengeneering ideas" entstanden

• wurde zu einer DSL weiterentwickelt• keine Vererbung• Polymorphie

1vgl. [VKD07]Tim Jammer Produktivität von Programmiersprachen

Page 20: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

20/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Fortran

"Fortran is harder to compete with. It has dedicated following who[...] care little for programming languages or the �ner points ofcomputer sience. They simply want to get their work done."form C++ Designer Bjarne Stroustrup

⇒ Fortran ist (heute) eine DSL

• muss sich daher eher mit Sprachen wie Matlab messen

1vgl. [VKD07]Tim Jammer Produktivität von Programmiersprachen

Page 21: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

21/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Fazit

• Studierende sind heute "multilingual"

⇒ Herangehensweisen an komplexe Probleme müssen gelehrtwerden z.B. design-patterns

• Erlernen einer weiteren Sprache vergleichsweise einfach

Tim Jammer Produktivität von Programmiersprachen

Page 22: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

22/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

Quellen

[ea10] Yoongu Kim et al.Atlas: A scalable and high-performance schedulingalgorithm for multiple memory controllers.2010.

[KK04] Charles Koelbel Ken Kennedy.De�ning and measuring the productivity of programminglanguages.International Journal of High Performance Computing

Applications 18, 2004.

[Pre00] Lutz Prechelt.An empirical comparison of c, c++, java, perl, python,rexx, and tcl for a search/string-processing program.Technical report, Universität Karlsruhe, Fakultät fürInformatik, March 2000.

[VKD07] Henry J Gardner Viktor K. Decyk, Charles D. Nortron.Why fortran.Computing in sience & engineering, 2007.

Tim Jammer Produktivität von Programmiersprachen

Page 23: Produktivität von Programmiersprachen€¦ · Tim Jammer Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Fachbereich Informatik, Arbeitsbereich

23/ 23

Wie misst man die Produktivität von Programmiersprachen?Einige Programmiersprachen im Vergleich

Fazit

1Abb aus: http://dml.cs.byu.edu/ cgc/pubs/WoPDaSD2007.pdfTim Jammer Produktivität von Programmiersprachen