1 / 37

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. Perl. Inhaltsangabe. Was ist Perl? [2][4] Bedeutung

aretha
Download Presentation

Perl

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Perl

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

  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. 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. 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. 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. 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. 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. „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. „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. „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. „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. „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. „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. „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. „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. „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. „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. „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. „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. „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. „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. 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. Entstehung von Perl • 1987 began Larry Wall damiteinsicheresNetzwerk 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. Entstehung von Perl • Am 18. Dez. 1987 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 4.036 weiter, bis er an die Grenzen des machbaren gelang. • Er kündigte eine Neuentwicklung an, die er am 18. Okt. 1994 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 5.12.0

  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. 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. 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. Interview • Anfangsschritte • Anfangs als Sammlung von Tools zur Textverarbeitung und zur Vereinfachung von administratorischen Aufgaben steht Perl nun für zwei Dinge: • Zur Verbindung von APIs • 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. 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. 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. 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. 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. 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. 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. 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. Quellen [1] Visionäre der Programmierung [2] Perl Geschichte, http://de.wikibooks.org/wiki/Perl-Programmierung:_Geschichte [3] Perl Geschichte, http://www.teialehrbuch.de/Kostenlose-Kurse/Perl-und-CGI/10832-Geschichte-von-Perl.html [4]Perl, http://de.wikipedia.org/wiki/Perl_%28Programmiersprache%29 [5]Perl Tutorial, http://perl-seiten.homepage.t-online.de/html/perl_var.html [6]Perl Tutorial, http://de.selfhtml.org/perl/intro.htm [7]Perl Einführung, http://www.tekromancer.com/perl2/inhalt.html [8] Larry Wall – Perl, http://www.wall.org/~larry/perl.html [9] Perl vs. Java - http://shootout.alioth.debian.org/u32/perl.php [10] Java - http://www.javabeginners.de/Grundlagen/kompilieren.php Interview

More Related