Perl, PHP, Python Ein Vergleich

3y ago
74 Views
2 Downloads
880.99 KB
42 Pages
Last View : Today
Last Download : 3m ago
Upload by : Victor Nelms
Transcription

Perl, PHP, PythonEin VergleichVor- und Nachteile von dynamischen SprachenAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 2008

Über Alvar FreudeFreiberuflicher Softwareentwickler, Trainer und BeraterSchwerpunkt:Die Skriptsprache Perl, SQL (PostgreSQL)Datenbankanwendungen und Web-ApplikationenPerformance-Tuning; Best PracticesSeit 2005 Trainer für IBM im Bereich Perlhttp://alvar.a-blast.org/ alvar@a-blast.orgAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20082

EinführungÜbersicht über die Eigenschaften undBesonderheiten von Skriptsprachen

Was sind Skript-Sprachen?Anfangs für kleine Hilfsprogramme gedachtZiel: Einfache Probleme einfach lösbarHeute: mächtige und vollwertige Programmiersprachen,für nahezu alle Aufgaben nutzbar„Die einfachen Aufgaben einfach halten, ohne dieschwierigen unmöglich zu machen“Die unterschiedlichen Skriptsprachen haben verschiedeneStärke und SchwächenAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20084

Typische EinsatzgebieteTraditionell: Systemadministration aller ng von Texten (beispielsweise Logfiles)Testing (TAP, Test Anything Protocol)Client-Server-Anwendungen Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20085

CharakteristikaSkript-Sprachen werden i.d.R von einem InterpreterausgeführtZur Beschleunigung meist als BytecodeSkript-Sprachen sind in der Regel dynamisch typisiertVariablen haben keinen festen DatentypDynamische Anpassungen während der Laufzeit möglichAutomatische SpeicherverwaltungAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20086

Vorteile dynamischer TypisierungFlexibler und einfacher zu handhabenz.B. beim Aufbau von komplexen DatenstrukturenEingaben (z.B. aus Datei oder Datenbank) können ohneweitere Konvertierung auch als Zahlen behandelt werdenErweiterbarkeit, ohne vorhandenen Code beiTyperweiterungen anfassen zu müssenAllgemein: die Sprache wählt zur Laufzeit „das Richtige“von selbstAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20087

Nachteile dynamischer TypisierungJe nach Implementierung: niedrigere Performance, daTyp-Tests zur Laufzeit geschehenOverhead bei immer gleichen BerechnungenManche Fehler werden erst zur Laufzeit entdecktDaher: u.U. erschwerte FehlersucheErlaubt laxen Umgang des EntwicklersAuch eine Frage des persönlichen GeschmacksAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20088

Vorteile von SkriptsprachenMan kann sofort loslegen, Quelltext ändern, wiederstarten – alles ohne große FormalitätenJe nach Sprache aber auch Formalitäten aktivierbar, wieuse strict; und use warnings; in PerlKurze Entwicklungszyklen und kompakter CodeMächtige Konstrukte, reiche Sprachen, hohe FlexibilitätTesting ist relativ leichtAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 20089

Nachteile von SkriptsprachenFür einige Einsatzgebiete nicht geeignet:Nicht geeignet zum Number-CrunchingWeniger geeignet für die systemnahe ProgrammierungMehr Speicherverbrauch als C-CodeLaden zum laxen Umgang einNachteile der dynamischen TypisierungIn der Praxis ist das aber meist nicht relevant!Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200810

Beispiel (in Perl)Zähle die ersten Werte jeder Zeile der übergebenen Dateien, Unix-typischauch via Pipe; ignoriere Zeilen die mit # beginnen; gebe das Gezählte aus#!/usr/bin/perlBei unsauberem Code kann man sich das sparenuse strict;use warnings;# Strikt-Modus für sauberen Code# Alle Warnungen einschaltenmy %wert zaehler;# Anmeldung der Variable (Optional)while ( ) {next if m( #);my ( wert) split; wert zaehler{ wert} ;}####Alle Eingaben einlesenKommentare ignorierenErsten Wert extrahierenZähler für den Wert erhöhen# Werte sortiert ausgebenprint " Anzahl: wert zaehler{ }, Wert: \n"foreach sort keys %wert zaehler;

Zur Performance Performance ist meist zu einem Großteil vom Algorithmusoder externen Quellen (z.B. Datenbank) orkshop/performance-optimierung.pdfSkript-Sprachen haben viele eingebaute, performanteKonstrukte wie Reguläre AusdrückeOft egal, ob etwas 0,1 oder 3 Millisekunden dauert10 Sekunden Ausführzeit nach 30 Minuten Entwicklung,oder 100 Millisekunden nach drei Tagen?Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200812

HistorischesÜber die Herkunft von Perl, PHP und Python

Geschichte von PerlPerl 1.0 wurde am 18. Dezember 1987 von demLinguisten Larry Wall veröffentlichtPerl . erschien am . Oktober und beinhalteteschon alle wesentlichen bis heute genutzten GrundlagenAktuelle Version: 5.10.0 vom 18. Dezember 2007Perl 6, eine neue Sprache – nicht die nächste Version vonPerl 5 – ist in Entwicklung; auch 5.12 in EntwicklungEntwicklung durch die Perl-CommunityAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200814

Geschichte von PHPPHP wurde ursprünglich von Rasmus Lerdorf entwickeltund entstand als Sammlung von Perl-SkriptenDie erste Version, PHP/FI, wurde 1995 veröffentlichtPHP 3, 1997 veröffentlicht, ähnelte dem heutigen PHPAktuelle Version: 5.2.5 vom 8. November 2007Version 6.0 ist in EntwicklungEntwicklung vor allem durch die Firma ZENDAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200815

Geschichte von PythonPython wurde Anfang der 1990er Jahre von Guido vanRossum als Programmier-Lehrsprache entwickeltBenannt nach Monty Python, nicht nach der SchlangeVersion 1.0 erschien im Januar 1994Aktuelle Version: 2.5.2, vom 21. Februar 2008Python 3 in Entwicklung; nicht 100% rückwärtskompatibelEntwicklung durch die Python-CommunityAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200816

Umfrage zumSprachen-Vergleich“Comparing Web Development Platforms Throughthe Eyes of Professional Developers”Zusammenfassung der Ergebnisse der Umfrage

Ruby, Python, Perl, PHP, Java, .NET100050ParticipantsSprachen in der Umfrage:150Übersicht.NETJava EEPHPPerlPythonRuby„Professionelle Web-Entwickler“ sollten jeweils zweiSprachen, mit denen sie Erfahrung haben, pubs/platforms-surveyTR- .pdfAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200818

AufwandWieviel Aufwand ist nötig, um eine Aufgabe zu lösen?Bei Skripsprachen deutlich niedriger als bei Javaund .NET, mit Ausnahme von PHPPerl und Python benötigen weniger Aufwand als PHPPython und Perl ähnlich bewertet, mit ganz leichtemVorteil für PerlUneinheitliche Meinungen bezüglich PHP im Vergleichzu Java und .NETAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200819

Aufwand: InterpretationSkriptsprachen erleichtern die Entwicklung sowohleinfacher Tools als auch komplexer ApplikationenSie sind ausdrucksstark, haben wenige Formalitätenund viele einfache aber komplexe KonstrukteSchlechtes Abschneiden von PHP: Die Umfrage bezog sichvor allem auf umfangreichere ApplikationenUneinheitliche Bewertung PHP zu Java und .NET mitunterschiedlichem Wissensstand der Teilnehmer erklärbarAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200820

LesbarkeitDie Teilnehmer wurden befragt, welcher Code in welcherSprache lesbarer istKlares Ergebnis: Python-Code gilt als der lesbarstePHP- und Java-Code gilt als am schwersten lesbarPerl, oftmals als Write-Only-Sprache verschrien,schneidet mittelmäßig abDas Vorurteil trifft in der Praxis nicht zuAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200821

Lesbarkeit: InterpretationLesbarkeit liegt in erster Linie am Programmierstil desjeweiligen EntwicklersSchlechte Entwickler schreiben in jeder Spracheunlesbaren CodeDennoch: Python gilt als besonders gut lesbar, was auchan dem weitgehend erzwungenen Stil liegtPHP: Meist Mischmasch von Code und HTMLJava: geschwätziger als SkriptsprachenAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200822

ModifizierbarkeitIn welcher Sprache lassen sich besonders gut modifizierund erweiterbare Anwendungen schreiben?Python-Anwendungen sind einfacher modifizierbar alsAnwendungen in Java oder PHPPerl-Anwendungen einfacher erweiterbar als solche inPHP oder JavaTeilweise stark divergierende MeinungenAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200823

Modifizierbarkeit: InterpretationSehr stark abhängig von den Kenntnissen der Entwicklersowie dem verwendeten Stilz.B.: viele Tests verhindern Fehler bei der ErweiterungFrameworks verbessern die ModifizierbarkeitJava gilt bei vielen Entwicklern als überfrachtet (bloated)PHP mangelt es an Modularität (z.B. Namensräume)Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200824

RobustheitWie robust sind Anwendungen, die mit einer derSprachen entwickelt wurden?Einhellige Meinung: Anwendungen, die in PHPentwickelt wurden, sind am wenigsten robust, wennauch nur knappAnsonsten wieder ein uneinheitliches Bild, mit ganzleichtem Vorteil für PerlAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200825

Robustheit: InterpretationPHP gilt als Sprache, bei der schlechter Codierungs-Stilgefördert wirdInsgesamt mehr vom Stil und von den Entwicklern als vonder Sprache abhängigAber: manche Sprachen erleichtern robusten CodeInteressant: Kein Vorteil für statisch typisierte Sprachen!Auch abhängig von den verwendeten FrameworksAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200826

SicherheitWie sicher sind Applikationen, die in den einzelnenSprachen entwickelt wurden?Deutlich: PHP ist am unsicherstenAnsonsten nur relativ geringe UnterschiedePerl leicht im VorteilAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200827

Sicherheit: InterpretationUnsicherheit von PHP liegt auch an deren meist relativunerfahrenen AnwendernAber: die Sprache hat viele ProblemstellenAnsonsten liegt vieles an den verwendeten Techniken,Frameworks und Kenntnissen der EntwicklerPerl: Taint-Mode, DBI; CPAN!Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200828

WeiteresSkalierbarkeit: Java leicht vorne.Von Hause aus viele Tools vorhandenPerformance: uneinheitlich, Perl leicht vorne.Kommt meistens auf viele Faktoren an, z.B. DatenbankJava und .NET haben mehr Tools, aber sind auch sehrabhängig davonSkriptsprachen: weniger Tools, auch kaum abhängigAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200829

FazitUmfrageergebnisse sind natürlich subjektiv, aber:Skriptsprachen haben Vorteile, insbesondere beimErstellungs- und Pflege-AufwandWurde auch beim Plat Forms Contest bestätigtPHP steht in vielen Punkten unter KritikPerl – gelegentlich totgesagt, da kaum Hype und PR –schneidet gut abFrameworks können die Arbeit erleichternAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200830

Vor- und NachteilePerl, PHP und Python

Vorteile PerlCPAN: sehr umfangreiches Perl-Modul-ArchivVariablendeklaration erzwingbar, Taint-ModeSehr ausdrucksstark und flexibelMächtige Tools für Dokumentation, Testing, Perl::Tidy, Für fast alles geeignetViele VereinfachungenAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200832

Vorteile PHPFür kleine Web-Projekte: sofort loslegenGünstiges HostingViele günstige EntwicklerAlles notwendige für die Web-Entwicklung ist meist dabeiEinfacher Einstieg, aber sehr viele FallstrickeGrößere Projekte zwar möglich, aber sehr viel DisziplinnötigAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200833

Vorteile PythonEs wird viel Wert auf lesbaren Code gelegtRelativ stringentes und umfangreiches OOUmfangreiche Standardbibliothek mitgeliefert(„Batteries Included“)Gutes Exception-Handling bereits eingebautJava-Integration mit Jython relativ einfachAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200834

Unterschiede Perl PythonPerl: TIMTOWDI, There is more then one way to do itPython: There should be one – and preferably only one –obvious way to do itPerl: viel Freiheit; Freiheit bedeutet VerantwortungPython: weniger Verantwortung, weniger FreiheitFeatures: relativ ausgewogenz.B. Taint- und Strict-Mode in Perl, OO in PythonAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200835

Unterschiede Perl/Python PHPPHP hat viele Probleme bei den Sprachstandards:großer Wildwuchs, Inkonsistenzen, (bisher) keineNamensräume, viele AltlastenMit PHP kann man (für kleine) Web-Anwendungen sofortloslegen, ohne Framework; nur fürs Web gut einsetzbarPHP mangelt es vielen Features, Sicherheitsprobleme(z.B. Nullbytes und POSIX Reguläre Ausdrücke)Schneller Einstieg, später hoher Pflegeaufwand bei PHPAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200836

Verfügbare ErweiterungenStand 29. April 2008PHP, PECL: 185; PEAR: 480; Summe: 665 Packageshttp://pecl.php.net/ http://pear.php.net/Python, PyPI: 3927 Packageshttp://pypi.python.org/pypiPerl, CPAN: 15136 Distributionenhttp://search.cpan.org/Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200837

SchlussrundeZusammenfassungen, Kriterien zur Sprachwahl,Tipps & Tricks

Kriterien für die SprachauswahlSprach-Features: Ausreichend und zur Aufgabe passend?Verfügbarkeit von Erweiterungen, Modulen, FrameworksSupport, Community-Unterstützung?Welche Kenntnisse haben die vorgesehenen Entwickler?Umfang des Projektes, evtl. spätere ErweiterbarkeitExterne Libraries benötigt?Zeitkritische Berechnungen?Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200839

Tipps zum SchlussWichtig: Sauberer odule nutzen (z.B. CPAN)Für Perl: Perl Best Practices von Damian ConwayAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200840

Tipps zum Schluss (2)Möglichkeiten der Sprache nutzen, Beispiele:Prozedural oder Objektorientiert, oder gemischtVereinfachungen nutzen: q, qq, qw, qr; map, grep; Modularisieren, Spaghetti-Code vermeiden Keinen Code in HTML einbetten, Templates nutzen!schwer lesbar, wenig robust, schwer erweiterbarUmgekehrt gilt das gleicheAlvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200841

Danke fürs Zuhören!Fragen?Alvar tp://www.perl-blog.de/Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 200842

Perl, PHP, Python Ein Vergleich Vor- und Nachteile von dynamischen Sprachen Alvar C.H. Freude: Perl, PHP, Python – Ein Vergleich IBM System p und i, Linux & AIX aktuell; Wiesbaden, 28.–30. April 2008

Related Documents:

HP PHP PHP PHP PHP PHP HiPE Erlang HiPE Erlang HiPE . Perl Perl Perl Perl Perl Perl Ruby Ruby Ruby Ruby Ruby Python 3 Python 3 Python 3 Lua Lua Lua Lua Lua Lua Ruby Matz's Ruby Matz's Ruby benchmarks game 01 Mar 2019 u64q p r o . Python configures and steers fast C/C /Fortran code Passes memory buffers from one library to the next

Why Perl? Perl is built around regular expressions -REs are good for string processing -Therefore Perl is a good scripting language -Perl is especially popular for CGI scripts Perl makes full use of the power of UNIX Short Perl programs can be very short -"Perl is designed to make the easy jobs easy,

Perl can be embedded into web servers to speed up processing by as much as 2000%. Perl's mod_perl allows the Apache web server to embed a Perl interpreter. Perl's DBI package makes web-database integration easy. Perl is Interpreted Perl is an interpreted language, which means that your code can be run as is, without a

PHP is FREE to download from the official PHP resource: www.php.net PHP is easy to learn and runs efficiently on the server side Where to Start? To get access to a web server with PHP support, you can: Install Apache (or IIS) on your own server, install PHP, and MySQL Or find a web hosting plan with PHP and

PHP is an acronym for "PHP: Hypertext Preprocessor" PHP is a widely-used, open source scripting language PHP scripts are executed on the server PHP is free to download and use What is a PHP File? PHP files can contain text, HTML, CSS, JavaScript, and PHP code PHP code are executed on the server, and the result is returned to the browser .

php architect's Guide to PHP Design Patterns A Practical Approach to Design Patterns for the PHP 4 and PHP 5 Developer Jason E. Sweat USA 21.99 Canada 29.99 U.K. 16.99 Net php architect's Guide to PHP Design Patterns Design patterns are comprehensive, well-tested solutions to common problems that developers everywhere encounter each day.

Other Perl resources from O’Reilly Related titles Learning Perl Programming Perl Advanced Perl Programming Perl Best Practices Perl Testing: A Developer’s . Intermedi

Take-off Tests Answer key 2 Answer key 1 Fill in the gaps 1 open 6 switch 2 turn 7 clean 3 pull 8 remove 4 start 9 rotate 5 press 10 hold 2 Complete the sentences 1 must 2 must not 3 must 4 cannot/must 5 must not 6 must not 7 must not 8 can 9 must 3 Make full sentences 1 Electric tools are heavier than air tools. 2 Air tools are easier to handle than electric tools. 3 Air tools are cheaper .