Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Perl Universität Kassel Fakultät Informatik Lehrstuhl für Praktische Informatik Prof. Dr. Lutz Wegner Seminararbeit zum Thema Programmiersprachen Im.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Perl Universität Kassel Fakultät Informatik Lehrstuhl für Praktische Informatik Prof. Dr. Lutz Wegner Seminararbeit zum Thema Programmiersprachen Im."—  Präsentation transkript:

1 1 Perl Universität Kassel Fakultät Informatik Lehrstuhl für Praktische Informatik Prof. Dr. Lutz Wegner Seminararbeit zum Thema Programmiersprachen Im Semester SS 2010 Betreuer: Sebastian Pape Bearbeiter: André Kahl

2 2 Inhaltsangabe 1. Was ist Perl? [2][4] 1.Bedeutung 2.Warum eine Weitere Sprache? 3.Merkmale 4.Aufbau / Ablauf 2. Die Syntax an Hand 99 Bottles of Beer [5][6] 3. Biografie / Entstehung von Perl [3][4] 4. Das Interview [1] 1.Natürliche Sprachen 2.Anfangsschritte 3.Kontext / Lernmotivation 4.Community 5.Evolution oder Revolution?

3 3 Was ist Perl? Perl (practical extraction and report language) ist eine freie, plattformunabhängige und interpretierte Programmiersprache, deren Ziel ist wichtige Programmierbefehle und leichte Such- und Ersetzungsoperationen zu verbinden. Erstmals veröffentlich 1987 vom Linguist Larry Wall.

4 4 Was ist Perl? Warum eine weitere Sprache? In Einsatzgebieten wie der Textverarbeitung stoß man an viele Grenzen Darüber hinaus störte Wall ins Besondere als Linguist, die unhandliche Bedienung der verfügbaren Sprachen und Werkzeuge Also erschuf er aus vorhandenen Elementen aus C, awk, Unix-Befehlen und weiteren Einflüssen eine Sprache, die alle Grenzen trotzen und darüber hinaus bedienfreundlich sein sollte

5 5 Was ist Perl? Merkmale dieser Sprache: Geschwindigkeit: – Aufwand bei der Programmierung – Laufzeiten Bspw. im Vergleich zu Python oder Java [9] Einfachheit: – Schnell und intuitiv Vollständigkeit: – Jeder Anwendungsbereich soll abgedeckt werden Anpassbarkeit: – So wenig Einschränkungen wie möglich

6 6 Was ist Perl? Aufbau: Der Interpreter ist ein in C geschriebenes Programm Der Quellcode umfasst ca. 50 MB Er enthält Perl-Skripte, die die Funktionen von Makefiles und der Test- Suite übernehmen

7 7 Was ist Perl? Ablauf: Perl-Skripte werden in einer Textdatei mit beliebigen Zeilentrennzeichen gespeichert Beim starten eines Skripts wird es vom Perl-Interpreter eingelesen und in ein Parse Tree umgewandelt Und dieser anschließend zu Bytecode, welcher dann ausgeführt wird Strenggenommen ist Perl keine interpretierte Sprache!

8 8 Was ist Perl? Vergleich zu Java: [10] Der Java Complier muss Java-Quellcode (.java) erst in Java-Bytecode (.class) übersetzen Dieser Bytecode wird zur Laufzeit in nativen Prozessorcode umgewandelt und in Abhängigkeit der genutzen Plattform optimiert Dadurch, dass Perl vor der Ausführung kompiliert wird, kann es schneller sein als eine Programmiersprache wie Java, die während der Laufzeit kompliliert [9]

9 9 99 bottles of beer #!/usr/bin/perl $nBottles = $ARGV[0]; $nBottles = 100 if $nBottles eq '' || $nBottles < 0; foreach (reverse(1.. $nBottles)) { $s = ($_ == 1) ? "" : "s"; $oneLessS = ($_ == 2) ? "" : "s"; print "\n$_ bottle$s of beer on the wall,\n"; print "$_ bottle$s of beer,\n"; print "Take one down, pass it around,\n"; print $_ - 1, " bottle$oneLessS of beer on the wall\n"; }

10 10 99 bottles of beer #!/usr/bin/perl Gibt den Zielpfad des Perlinterpreters an und ist nur für Linux- bzw. Unix- Systeme relevant. $nBottles = $ARGV[0]; Der einfachste Datentyp in Perl ist die skalare Variable. Der Datentyp wird vorher nicht festgelegt und kann sowohl Zeichenketten als auch Zahlen speichern. $ARGV[0] dient zur Paramaterübergabe.

11 11 99 bottles of beer #!/usr/bin/perl $nBottles = $ARGV[0]; $nBottles = 100 if $nBottles eq '' || $nBottles < 0; foreach (reverse(1.. $nBottles)) { $s = ($_ == 1) ? "" : "s"; $oneLessS = ($_ == 2) ? "" : "s"; print "\n$_ bottle$s of beer on the wall,\n"; print "$_ bottle$s of beer,\n"; print "Take one down, pass it around,\n"; print $_ - 1, " bottle$oneLessS of beer on the wall\n"; }

12 12 99 bottles of beer $nBottles = 100 if $nBottles eq '' || $nBottles < 0; In Perl kann eine if-Anweisung bei einer Initialisierung verwendet werden. Diese findet nur statt, wenn die if-Anweisung erfüllt wird. eq (equal) überprüft zwei Zeichenketten auf Gleichheit Im Gegensatz zu anderen Sprachen kann man in Perl mathematische Operatoren wie +, -, *, /, auf Zeichenketten anwenden

13 13 99 bottles of beer #!/usr/bin/perl $nBottles = $ARGV[0]; $nBottles = 100 if $nBottles eq '' || $nBottles < 0; foreach (reverse(1.. $nBottles)) { $s = ($_ == 1) ? "" : "s"; $oneLessS = ($_ == 2) ? "" : "s"; print "\n$_ bottle$s of beer on the wall,\n"; print "$_ bottle$s of beer,\n"; print "Take one down, pass it around,\n"; print $_ - 1, " bottle$oneLessS of beer on the wall\n"; }

14 14 99 bottles of beer foreach (reverse(1.. $nBottles)) Bei der foreach-Schleife handelt es sich um eine Spezifikation einer gewöhnlichen for-Schleife. Im Gegensatz zu einer normalen Schleife hat diese keine gesonderte Abbruchbedingung Sie durchläuft komplett das Array vom ersten bis zum letzten Element

15 15 99 bottles of beer foreach (reverse(1.. $nBottles)) Diese hingegen durchläuft das Array vom letzten Element bis zum ersten Element Bewirkt wird dies durch den Befehl reverse. Dieser dreht die Liste vor der Bearbeitung um, so dass diese in Umgekehrter Reihenfolge durchlaufen wird.

16 16 99 bottles of beer #!/usr/bin/perl $nBottles = $ARGV[0]; $nBottles = 100 if $nBottles eq '' || $nBottles < 0; foreach (reverse(1.. $nBottles)) { $s = ($_ == 1) ? "" : "s"; $oneLessS = ($_ == 2) ? "" : "s"; print "\n$_ bottle$s of beer on the wall,\n"; print "$_ bottle$s of beer,\n"; print "Take one down, pass it around,\n"; print $_ - 1, " bottle$oneLessS of beer on the wall\n"; }

17 17 99 bottles of beer $s = ($_ == 1) ? "" : "s"; Hierbei handelt es sich um keine normale Initialsierung Wie bei der vorigen Initialisierung mittels if-Anweisung muss auch hier eine Bedingung erfüllt werden, ehe zugewiesen wird. Die Syntax sieht wie folgt aus: (Bedingung) ? Befehl für ja : Befehl für nein

18 18 99 bottles of beer $s = ($_ == 1) ? "" : "s"; $_ ist eine Spezialvariable, die vergleichbar mit einem Personalpronomen im Deutschen ist Bsp: Der Computer ist weiß. Er ist von Apple. So können wir in der Schleife statt $nBottles einfach $_ benutzen. $oneLessS = ($_ == 2) ? "" : "s"; Diese Zeile entspricht der obrigen.

19 19 99 bottles of beer #!/usr/bin/perl $nBottles = $ARGV[0]; $nBottles = 100 if $nBottles eq '' || $nBottles < 0; foreach (reverse(1.. $nBottles)) { $s = ($_ == 1) ? "" : "s"; $oneLessS = ($_ == 2) ? "" : "s"; print "\n$_ bottle$s of beer on the wall,\n"; print "$_ bottle$s of beer,\n"; print "Take one down, pass it around,\n"; print $_ - 1, " bottle$oneLessS of beer on the wall\n"; }

20 20 99 bottles of beer print "\n$_ bottle$s of beer on the wall,\n"; Eine Ausgabe wird eingeleitet mit print und der dazugehörige Text steht in " ". Diese Ausgabe enthält den ersten Satz des jeweiligen Absatzes. Das $_ gibt uns die jeweile Anzahl der Flaschen an. Gefolgt auf bottle kommt die eben definitierte Variable $s, die wie wir gesehen haben ein S ausgibt sobald es sich um mehr als eine Flasche handelt.

21 21 99 bottles of beer print "$_ bottle$s of beer,\n"; Der nachfolgende Satz ist eine verkürzte Wiederholung des Ersten und ist von der Funktionalität gleich. print "Take one down, pass it around,\n"; Der dritte Satz ist eine simple Aussage

22 22 99 bottles of beer print $_ - 1, " bottle$oneLessS of beer on the wall\n"; Bei der Ausgabe ist eine Operation vor dem Ausgabetext vorran gestellt. Dieser bewirkt, dass unsere gegebene Anzahl -1 gerechnet wird, sich aber nur auf unsere Ausgabe beschränkt. Bei der Initialisierung von $oneLessS war der vergleich ==2, haben wir also $_=2, wird diese durch unsere Operation um 1 subtrahiert, erhalten 1 und brauchen somit hier keine Mehrzahl und somit auch kein S.

23 23 Biographie Larry Wall (* 27. September 1954 in Los Angeles) Larry Wall ist ein US-amerikanischer Linguist, Programmierer, Autor und gilt als Erfinder der Programmiersprache Perl. Er studierte an verschiedenen Fakultäten wie der Cornish School of Music, der Seattle Youth Symphony, der Seattle Pacific University oder der UCLA Musik, Chemie und Linguistik. Nach seinen Studien arbeitete er Hauptsächlich als Administrator, Programmierer und später auch als Autor.

24 24 Entstehung von Perl 1987 began Larry Wall damit ein sicheres Netzwerk für die NSA zu entwickeln. Darunter fiel auch das Auswerten von Log-Dateien und deren Zusammenfassung in Berichten. Hierfür fehlten ihm jedoch die notwendigen Werkzeuge und Sprachen Zusammen mit seinem Kollegen Daniel Faigin und seines Schwagers Mark Biggar konstruierte er nach und nach eine eigene Sprache, die ihm zur bewältigung dieser Aufgaben helfen sollte. Heute bekannt als Perl! Dabei bedienten sie sich aus einzelnen Komponenten mehrer Sprachen und Tools. Um einige zu nennen: C, sed, awk, Eigenschaften der Bourne Shell und viele mehr...

25 25 Entstehung von Perl Am 18. Dez stellte Wall sein Programm im Usenet als Perl 1.0 vor und machte es allen zugänglich. Auf Grund der großen Popularität und immer mehr Anfragen nach neuen Funktion entwickelte er Perl bis zur Version weiter, bis er an die Grenzen des machbaren gelang. Er kündigte eine Neuentwicklung an, die er am 18. Okt unter dem Namen Perl 5.0 präsentierte Sie brachte Neuerungen wie objektorientierte Programmierungen; XS, das ermöglichte Perl-Programme mit anderen Sprachen zu erweitern und vieles mehr Es folgten etliche Versionen, bis zum heutigen Stand von Version

26 26 Entstehung von Perl Im Juli 2000 kündigte Larry Wall Perl 6 an und entwickelt diese bis zum heutigen Tag im kleineren Kreis seiner Community Wie auf seiner Homepage zu lesen ist: We're working on it, slowly but surely...or not-so-surely in the spots we're not so sure... [8]

27 27 Interview Natürliche Sprachen Larry Wall definiert seine Sprache als andauerndes Experiment natürliche Sprachen in Computersprachen zu übernehmen. Hierfür versucht er grundlegende Prinzipien menschlicher Sprachen aufzugreifen: Sprachen haben ganz natürliche Bereiche für Verben, Nomen, Adjektive, usw.. Es gibt viele gute Wege, in etwa das Gleiche zu sagen Ausdrucksstärke ist wichtiger als Erlernbarkeit Eine Sprache kann nützlich sein, wenn Sie noch nicht die ganze Sprache kennen

28 28 Interview Natürliche Sprachen Viele Programmiersprachen ignorieren solche Prinzipien. Sie basieren auf mathematischen Beweisen und Formel. Perl hingegen ignoriert viele Bereiche der Mathematik und Informatik und greift stattdessen mehr die menschliche Sprache auf. Allerdings wurden einige Dinge missachtet, die sich schlussendlich als wichtig erwiesen haben und eingebracht werden müssen, wie die Veränderlichkeit von Datenstrukturen.

29 29 Interview Anfangsschritte Anfangs als Sammlung von Tools zur Textverarbeitung und zur Vereinfachung von administratorischen Aufgaben steht Perl nun für zwei Dinge: 1.Zur Verbindung von APIs 2.Eine Sprache, die sich langsam in jede Art von Sprache verwandeln kann Der Schritt vom einfachen Behilfs-Tool zur vollständigen Sprache war langsam aber bewusst. Die Idee zur Weiterentwicklung war immer da. Eine Sprache ist eine wunderbare Spielwiese, und es war für mich von Anfang an offensichtlich, dass ich sie auf jeden Fall weiterentwickeln würde, um meine jeweilige Bedürfnisse von >>heute<< zu erfüllen

30 30 Interview Anfangsschritte Den Durchbruch und damit den Weg von der Textverarbeitung zu einem mächtigen Tool, brachte das Einführen von Binärdateien. Perl sollte keine natürlichen Grenzen aufgezwungen werden, wie sie einige der früheen Unix-Tools besitzen. Es sollte mehre Möglichkeiten geben sein Ziel zu erreichen. Es ist nützlich eine Sprache zu haben in der es mehrere Wege gibt Dinge auszudrücken, damit Sie aufgrund von äußeren Gegebenheiten optimieren können.

31 31 Interview Kontext Der Kontext rückt immer mehr in den Vordergrund Die Überlegung ging dahin, dass sich die Sprache den äußeren Bedingungen des Programms anpassen sollte. Der Programmierer sollte der Meister sein, nicht das Programm. Es gibt normalerweise eine Reihe unterschiedlicher Wege, ein bestimmtes Problem darzustellen,.. Eine Form von Kontext ist also, was ihre bevorzugte Sichtweise als Programmierer ist.

32 32 Interview Lernmotivation Ein entscheidenes Problem bei Programmiersprachen ist die Lernmotivation. Eine natürliche Sprache, die umfassend erklärt ist, lässt sich leichter lernen als Mathematik. Daher stellt sich die Frage ob tatsächlich eine Computersprache erstellt werden kann, die so dokumentiert ist, dass die Mehrheit der Menschen diese erlernen können und dazu gewillt sind.

33 33 Interview Community Die Idee einer Community war anfangs Feedback zu erhalten und Ideen einzubringen. Das Projekt wurde aber zunehmend größer, so dass die Community immer mehr mit eingebunden wurde. Larry Wall ging immer mehr in den Hintergrund, ließ die Community selbstständig arbeiten und gab nur noch die Richtung vor. Die Plattform CPAN entstand, in der man Module runter laden, selbst erstellen und veröffentlichen kann.

34 34 Interview Community Wall selbst sagt: Es war mir immer wichtig, dass Perl eine Sprache ist, die nicht versucht alles an sich zu ziehen sondern sich mit der äußeen Welt so stark wie möglich verbindet. Die Community um CPAN war letzlich so effektiv, dass sie selbst in das Resdesign von Perl 6 mit eingebunden worden.

35 35 Interview Revolution oder Evolution? Die Grenze zwischen Revolution und Evolution ist relativ gering Im Grunde greift Wall gegebene Elemente mehrerer Sprachen und Werkzeuge auf und erschafft aus ihrer Kombination etwas neues. Er selbst beschreibt seine Arbeit als evolutionär: Wenn man sich zwei Schnappschüsse anschaute, die weit genug auseinander lagen, sah es wie eine revolutionäre Änderung aus. Perl 6 bezeichnet er als Zusammenfassung, Vereinfachung, Vereinheitlichung und Rationalisierung aller Vorschläge. Für Jemand der am Prozess nicht beteiligt ist Perl 6 eine Revolution, aber eigentlich ist es nur das aufgreifen alter Gegebenheiten.

36 36 Interview Revolution oder Evolution? Für mich sind Revolutionäre nur Leute, die vorgeben, sie würde nicht all diese Zwischenschritte machen. Perl soll dazu dienen diese Zwischenritte so schnell wie möglich umzusetzen, so dass sie zu mindest erzählen können sie wären revolutionär.

37 37 Interview Quellen [1] Visionäre der Programmierung [2] Perl Geschichte, [3] Perl Geschichte, von-Perl.htmlhttp://www.teialehrbuch.de/Kostenlose-Kurse/Perl-und-CGI/10832-Geschichte- von-Perl.html [4]Perl, [5]Perl Tutorial, [6]Perl Tutorial, [7]Perl Einführung, [8] Larry Wall – Perl, [9] Perl vs. Java - [10] Java -


Herunterladen ppt "1 Perl Universität Kassel Fakultät Informatik Lehrstuhl für Praktische Informatik Prof. Dr. Lutz Wegner Seminararbeit zum Thema Programmiersprachen Im."

Ähnliche Präsentationen


Google-Anzeigen