Diskussion zu Unterschiede zu PHP

So. Erste Version. Irgendwelche Kommentare? -- ArminRonacher

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

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.

Diskussion/Unterschiede zu PHP (last edited 2009-06-17 16:14:16 by localhost)