Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8093[/thread]

Warum Perl???: Warum Perl und nicht PHP???

Leser: 1


<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-06-20 15:49
#67457 #67457
Hallo liebe Programmierer,

was kann ich mit Perl besser machen als mit PHP???
Ich muss ein Webbasiertes Programm entwickeln, dies
soll spezielle Funktionen haben. Ich soll dies Programm
in Perl und HTML schreiben. Bis Dato habe ich kaum Ahnung von Perl, mit PHP habe ich allerdings schon mehr gearbeitet;

jetzt kommt bei mir eine Frage auf:
Warum soll dies in Perl Programmiert werden und nicht mit
PHP???
Ich sehe PHP als die 'bessere' Programmiersprache an, habe
dort allerdings auch schon viel mehr vorwissen.

Was kann Perl, das es Perl zu der geeigneteren Programmier-
sprache für Web-oberflächen mit Funktionen macht???

Lieben Gruß
das *~*engelchen*~*

PS: Ich freu mich auf eure Antworten!
nepos
 2006-06-20 16:10
#67458 #67458
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, PHP ist urspruenglich aus Perl enstanden. Persoenlich find ich PHP nicht so "sauber", teilweise werden in Unterversionen Dinge an der API umgeschmissen. Ausserdem macht es PHP einem oft leichter, unsicheren Code zu entwickeln.
Perl hat nicht soviele Funktionen out of the box, aber bringt mit CPAN eine sehr gute Quelle fuer alles moegliche, was man mal so brauchen koennte mit.
Taulmarill
 2006-06-20 16:31
#67459 #67459
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
das thema ist imho sehr komplex, wenn man sich Perl aber näher anschaut, wird man feststellen, dass es eine sehr gut strukturierte programmierspache ist.

ein gutes beispiel währe die mengen an funkionen, mit denen man in PHP auf unterschiedlichste weise listen sortieren kann. bei Perl gibt es dafür nur eine funktion die sich aber nach belieben anpassen lässt. das ist im ersten moment vielleicht etwas schwieriger, weil man erst einmal herausfinden muss, wie man sort anpassen kann. dafür ist es aber nachher, wenn man sich erst einmal daran gewöhnt hat, kinderleicht beliebig komplexe datenstrukturen zu sortieren. ähnlich verhält es sich z.b. mit map und grep.

auf der anderen seite, ist das nur meine persönliche meinung. viele werden sich auch nach langer zeit nicht an Perl gewöhnen können, und Java, Ruby, C, Python, C++, etc. bevorzugen. wenn du bisher nur mit PHP gearbeitet würde ich dir aber dringend anraten eine der o.g. sprachen gut zu lernen, da ich gerade PHP für eine wirklich durch und durch schlechte und obsolete programmiersprache halte.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
lichtkind
 2006-06-20 16:36
#67460 #67460
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
hallo *~*engelchen*~*
wenn du kaum etwas über perl weisst wieso glaubst du dann das PHP "besser" ist? Natürlich wirst du hier naturgemäss fast nur Perl-Beführworter finden, die meisten hier würden PHP kaum als sprache ansehen bestenfalls als ein rudimentäres templating system.

- was kann ich mit Perl besser machen als mit PHP???
kürzeren, mächtigereren Quellcode

- Was kann Perl, das es Perl zu der geeigneteren Programmier-
sprache für Web-oberflächen mit Funktionen macht???

- mehr module, besserere DB schnittstelle, mehr Apache zugriff, u.s.w

die sprachen sehen sich äusserlich sehr ähnlich weil wie nepos schon sagte php aus perl enstand, sie haben auch einige probleme behoben aber weit mehr hinzugefügt. um ehrlich zu sein php macht es denen leicht die nicht denken wollen bis merken das sie so nicht weiterkommen. ich glaub auch das du hier mehr lernen kannst, aber das ist auch sache der intuition.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
jan
 2006-06-20 16:42
#67461 #67461
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich zitiere mich selbst:
Quote
Warum ich nicht freiwillig PHP einsetze!

3000++ Builtin-Functions
es gibt für beinahe alles eine funktion, was unweigerlich dazu führte, dass viele funktionen sich nur marginal unterscheiden. scheinbar wurden wahllos neue funktionen hinzugefügt, wann immer jemand eine vorhande funktion nicht fand und die dokumentation nicht zur hand war. es bleibt abzuwarten, wann es eine funktion guestbook() gibt, die ein komplettes gästebuch implementiert. Eine stärkere Modularisierung würde das ganze übersichtlicher machen.

kein herstellerunabhängiges datenbankinterface
für jede datenbank, für die PHP eingebaute funktionen hat, gibt es ein eigenes set an funktionen. um also datenbankunabhängig zu entwickeln, muss man wiederum eine eigene abstraktion von diesen funktionen schreiben, abhilfe schafft (wie so oft) eine kopie eines bekannten aus der perl-entwicklung: <a href="http://freshmeat.net/projects/php-dbi/" target="_blank">DBI</a>. Allerdings hat auch die Nachteile, sie unterstützt zwar die von DBI bekannten Platzhalter mit entsprechendem auto-quoting, hat aber zB keine Möglichkeit, queries mit zu compilieren mit internem caching für höhere geschwindigkeit bei mehrfacher ausführung eines statements mit verschiedenen werten.

inkonsistente builtin-namenskonvention
die benennung der builtinfunctions scheint je nach entwickler und tagesform verschieden zu sein, es gibt keine durchgehende regel. mal werden die abegkürzten wörter aneinandergehängt, wie bei <i>strlen()</i>, mal werden teile abgekürzt und andere nicht und das ganze durch unterstriche verdeutlicht, zB <i>str_replace</i> oder <i>preg_replace</i>. dann gibt es die namen ohne abkürzungen, und auch wieder in beiden varianten, durch unterstriche getrennt wie <i>is_string</i> und ungetrennt wie <i>stripslashes</i>. das macht es teilweise schwierig, die richtigen funktionen zu finden und ist überflüssig, es scheint, als hätten viele entwickler vollkommen unkoordiniert zusammengearbeitet.

keine lexikalischen variablen / dafür merkwürdige globals
lexikalische variablen sind variablen, die ihre gültigkeit nur im aktuellen block haben und sie anschließend wieder verlieren. dadurch ist es unwichtig, ob eine variable im übergeordneten block bereits existiert - wenn sie lexikalisch im untergeordneten blcok definiert wird, ist sie in diesem von der vorherigen variable abgekoppelt. man kann sie nach belieben verändern und sobald sie "out of scope" (sobald der block beendet ist) geht, ist die vorher gültige variable wieder intakt. das wäre ein schönes feature, da nicht alle variablen global sein müssen. allgemein sind die globals merkwürdig, da sie zwar im script und in allen includeten dateien global gültig sind, nicht jedoch in subroutinen. dort wiederum können sie aber mit <i>global</i> importiert werden.

register globals
don't get me started. register globals von anfang an grober unsinn. ein PHP-Script bekommt per GET, POST, in einem Cookie oder aus einer vorher gesetzten Session Daten übermittelt und PHP importiert diese automatisch als globale Variablen. Das ist nicht nur sicherheitstechnisch äußerst bedenklich, es macht auch die Programmierung teilweise schwierig, besonders was Sessiondaten angeht. Hierbei werden die globalen Variablen wiederum als eine art referenz angelegt, sodass eine veränderung der automatisch importierten daten auch eine veränderung der in der session gespeicherten daten zur folge hat. das ist ärgerlich, da somit einige variablennamen unbenutzbar werden, da lexikalische variablen ja nicht vorhanden sind (s.o.). register globals ist eine funktion, die in der php.ini, der globalen konfigurationsdatei aktiviert oder deaktiviert wird, dementsprechend lässt sie sich in einem script nicht deaktivieren.

keine kontextsensitiven vergleichsoperatoren
PHP kann zwar leicht zwischen verschiedenen skalaren datentypen wechseln, hat aber gleichzeitig nur einen vergleichsoperator. den wiederum kann man dann erweitern, indem man <i>===</i> benutzt, um zu vergleichen, ob zwei werte gleich und vom gleichen typ sind, ansonsten weiß PHP nicht, wie es vergleichen soll - wenn "string" und 0 verglichen werden sollen, ist es ein string-vergleich oder ein numerischer vergleich? würde "string" zu einer zahl umgewandelt, würde er zur 0 werden und der vergleich ergäbe true, ein string-vergleich schlüge fehl. hier wäre etwas mehr kontrolle in form von auswahlmöglichkeit gut getan. es stellt sich die frage, warum man sich nicht auch hier an perl orientiert hat?

php.ini
In PHP wird die Konfiguration über eine globale Datei gesteuert. Das hat Vorteile, da man so gewisse Teile von PHP deaktivieren kann, wenn es aus Sicherheitsgründen gewünscht wird. Der eklatante Nachteil aber ist, dass dadurch gewisse Verhaltensweisen wie register globals (s.o.) nicht mehr für einzelne Scripte konfigurierbar sind. Es ergibt sich, dass man das Verhalten von PHP nicht vorhersagen kann, ohne die php.ini zu kennen. Ein Script kann auf einem Server funktionieren und auf einem anderen Server mit exakt der selben PHP-Version Probleme bereiten, ganz und gar abhängig von der php.ini.
<< >> 5 Einträge, 1 Seite



View all threads created 2006-06-20 15:49.