So. Erste Version. Irgendwelche Kommentare? -- ArminRonacher
Ich muss sagen: Respekt! Finde ich gut gelungen, auch wenn ich gleich ein paar Kleinigkeiten editieren werde. -- MarekKubica
Ich würde ein paar Quellcodes von PHP bei einigen Beispielen einfügen. Ich selber habe mal PHP programiert, bin aber nie tief in die Sprache eingestiegen. Daher fehlen mir auch ein paar Grundkenntnisse. Ich kenne viele, die zwar wissen, was sie wie programieren aber mit irgentwelchen Begriffen (Iterieren und solche Konsorten) nichts anfangen können. Bei solchen Vorkommen einfach noch ein kleines PHP Schnipsel im Vergleich zu Python einbringen -- EnTeQuAk
Zu den Quellentexten aus Python: Ich würde dort Leerzeilen einfügen. Gerade bei Unterschiede zu PHP#Strings ist der Quellentext schlecht lesbar. Gerade Neueinsteiger blicken da nicht durch, denke ich. -- JensDiemer 2006-11-23 10:13:04
Negativ. Dann wird das ewig lang und noch unübersichtlicher. Aber vielleicht werde ich Kommentare hinzufügen. -- ArminRonacher
Mal ein Versuch (-- JensDiemer 2006-11-23 13:02:22):
1 >>> name = "John Doe"
2 >>> item = "Schatztruhe"
3 >>> fruit = "Zitrone"
4
5 >>> "Hallo %s!" % name
6 'Hallo John Doe!'
7
8 >>> "%s isst eine %s." % (name, fruit)
9 'John Doe isst eine Zitrone.'
10
11 >>> "%(name)s hat eine %(item)s gefunden." % {
12 ... 'name': name,
13 ... 'item': item
14 ... }
15 'John Doe hat eine Schatztruhe gefunden.'
16
17 >>> "%(name)s hat eine %(item)s gefunden." % locals()
18 'John Doe hat eine Schatztruhe gefunden.'
19
20 >>> zahl = 42
21 >>> "Heute gezahlt: %d" % zahl
22 'Heute gezahlt: 42'
23
24 >>> "Heute gezahlt: %06d" % zahl
25 'Heute gezahlt: 000042'
26
27 >>> "Heute gezahlt: %6d" % zahl
28 'Heute gezahlt: 42'
Man könnte auch noch schreiben, dass Python zwischen " und ' Strings nicht unterscheidet. PHP parst "-Strings ja. -- RafaelWeber
Zum Absatz Datentypen
(-- Roland Wilczek <r.wilczek@web-appz.de> 2007-12-10 09:35:22)
Auch in PHP gilt die hier gegebene Definition von starker Typisierung:
<?php $string = "42"; $int = 2; var_dump($string * $int); // int(84) var_dump($string); // string(2) "42"
Bedeutet: Auch in PHP hängt der Datentyp am referenzierten Objekt/Wert. Das "automagische" Casting geschieht nur an der Referenz/Variable. Im Prinzip nichts anderes als in Python, nur muss ich nicht explizit casten - auch wenn ich das kann:
<?php $string = "42"; var_dump((int) $string); // int(42) var_dump($string); // string(2) "42"
Auch hier wird durch den (int)-Cast nur der Typ der Referenz/Variablen bestimmt; intern bleibt der String ein String.
Da ich alles und jedes nicht nur auf (int), (float), (string), (array), (object), sondern mit (boolean) auch auf einen Bool'schen Wert casten kann, gilt auch für den Abschnitt "Wahrheitswerte" das Gesagte für PHP und Python.
Insgesamt finde ich, dass der Artikel sehr auf PHP4 fixiert ist und würde mir wünschen, dass für einen echten Vergleich PHP5 zu Rate gezogen würde - denn da stellen sich einige Sachen (call by value/reference, Exceptions, Iteratoren) doch ziemlich gleich dar.
Die Definition von starker Typisierung ist hier gerade das nicht automatisch der Typ umgewandelt wird, wie das bei PHP der Fall ist. Das die Typinformation auch bei PHP am Objekt "hängt" tut dabei nichts zur Sache; solange es egal ist ob bei 2 * $b $b vorher eine Zahl oder eine Zeichenkette war, ist die Sprache nicht stark typisiert.
Was die PHP-Version angeht: Das ist'n Wiki. Falls Du Dich in der Lage siehst den Artikel zu verbessern oder zu erweitern, dann tu das einfach.
MarcRintsch - Marc, Deine Definition von starker Typisierung stimmt nicht. Was Du meinst, ist die Frage nach statischer bzw. dynamischer Typisierung: ist die Referenz fest an den Datentyp gebunden? Python und PHP sind beide dynamisch, während etwa Java ein statisches Typsystem hat. Die Frage starke/schwache Typisierung geht eher "auf die rechte Seite des Ausdrucks": ist das Objekt / der Wert im Speicher fest an den Datentyp gebunden? Hier sind fast alle aktuellen Sprachen stark typisierend, neben Java auch PHP und Python. Die einzigen Sprachen mit schwacher Typisierung, die mir ad hoc einfallen, sind C und C++, wo ich durchaus über direkte Speicheraddressierung etwa eine Zeichenkette wie einen Dateihandler ansprechen kann. Man darf dynamisch/statisch nicht mit stark/schwach verwechseln und beides wieder trennen von PHP's automatischem Casting, das innerhalb des dynamischen(!) Systems verbleibt. (Wobei ich zugebe, dass auch in der PHP-Community die Begriffe oft etwas leichtfertig verwendet werden.) Was das Verbessern des Wikis angeht ... ich schau mal, wie ich Zeit finde -- Roland Wilczek