Homepage selbermachen 7.852 Themen, 35.619 Beiträge

OT: Manchmal ist simpel einfach doch ZU simpel (Typisierung)

xafford / 9 Antworten / Baumansicht Nickles

Sorry für das Posting, ist weder eine Frage, noch eine Antwort, sondern einfach nur etwas Allgemeines Blabla...

Worum es geht: Ich sitze gerade an einer etwas komplexeren Sache, ein bestehendes Verwaltungstool in einem Netzwerk, das erweitert werden soll. Es ist eine Art Inventarliste für Netzwerkclients und soll um Verwaltungskomponenten erweitert werden.
Das Ganze MUSS zwingend in PHP realisiert werden, bis auf Schnittstellen, die mit PHP gar nicht realisiert werden können. Eigentlich mag ich PHP, gerade aufgrund seiner Einfachheit, die fehlende, strenge Typisierung ist da oftmals eine der Erleichterungen...leider aber manchmal auch das genaue Gegenteil.

Wo hakte es speziell? Da die ganze Anwendung viel mit IP-Adressen, Subnets, Netzmasken und zugehörigen Berechnungen arbeitet ist es naheliegend dafür jeweils Klassen zu erstellen und es so zu kapseln, das ist auch nicht das Problem, das Problem ist eher das Rechnen mit IPs. Sinnvollerweise tut man dies auf Basis der Binärdarstellung. Genau hier hakt es aber. PHP liebt INTs und mag keine (kennt keine) binarys. Es kennt keine SHOT, LONG, WORD, kein signed und unsigned.
Die kontextabhängige Typenkonvertierung sorft dann leider auch dafür, daß ein als BINARY vorliegender Wert (Die IP-Adresse), dann auf einmal wieder ein INT, oder gar ein String wird. Das lässt sich zwar alles Umschiffen aber teilweise mit echt unschönen Tricks und einigem Mehr an Code.

Worauf ich eigentlich hinaus will: Bevor die PHP-Entwickler weiter an der Objektorientierung feilen (die wahrscheinlich höchstens 5% der Nutzer anwenden), sollten sie sich vielleicht überlegen eine Option: strict zu realisieren, die es dem Entwickler in einem Script ermöglicht eine strenge Typisierung einzuschlaten, so es denn gewünscht ist. Das halte ich für eine dringlichere Option von PHP als Konstruktoren, Destruktoren, Interfaces etc...
Anscheinend sehe aber nur ich das so...

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
thomas woelfer xafford „OT: Manchmal ist simpel einfach doch ZU simpel (Typisierung)“
Optionen

ich bin nicht so ganz auf der hoehe was 'aktuelle' php versionen zu bieten haben - aber ein vernuenftiges typensystem habe ich mir schon _oft_ gewuenscht.

WM_L8R

this posting contains no tpyos.
bei Antwort benachrichtigen
xafford thomas woelfer „das siehst nicht nur du so“
Optionen

Mich würde einmal interessieren, wie groß der Aufwand wäre dies optional ála PERL zu realisieren. Ich denke der Wunsch wurde schon häufiger geäußert (eigentlich weiß ich es, Diskussionen dazu gab es schon).
Meistens sind die laxen Typen ja ein Vorteil (wie ich entgegen der Meinung vieler finde), da es einem den Hickhack mit casts erspart und vieles vereinfacht, aber wenn eine Variable, die ausdrücklich Typ A sein soll, irgendwann im Verlauf (oftmals schwer vorhersagbar) plötzlich zu Typ B wird, kann das eine üble Sucherrei, Testerei und häßliche Workarounds nach sich ziehen.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
thomas woelfer xafford „Antwort“
Optionen

... ich ziehe c# eigentlich vor ... hab leider nicht immer die moeglichkeit dazu, das auch zu benutzen...

aber im ernst: keine ahnung was das fuer einen aufwand machen wuerde...

WM_

this posting contains no tpyos.
bei Antwort benachrichtigen
xafford thomas woelfer „wie soll ich sagen...“
Optionen

Mal kurz OT: ich hab hier ein äußerst seltsames Problem in PHP, das mir noch nie unterkam.

$val1 = 3232235777;
$val2 = $val1 % 16777216;

$val2 ist jetzt NEGATIV! und zwar um den Betrag $val1 - 193 * 16777216 statt positiv mit dem Betrag $val1 - 192 * 16777216.
Stehe ich hier auf dem Schlauch? Mir war der Modulus immer als Rest einer Division in Erinnerung.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
fnmueller1 xafford „Antwort“
Optionen

*g*, den anderen hier wahrscheinlich auch, jedenfalls mein full ack an tw und dich, xafford

bei Antwort benachrichtigen
xafford Nachtrag zu: „Antwort“
Optionen

Arghhh...hab´s selbst gemerkt... $val1 ist zu groß für ein signed int.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Wanja xafford „OT: Manchmal ist simpel einfach doch ZU simpel (Typisierung)“
Optionen

Hallo!

Gibts vielleicht eine Möglichkeit eigene Operatoren zu definieren bzw. zu überladen und über diese dann den Kontext vorzugeben? Ich such da mal noch etwas in der Perl-Doc rum, kann aber auch sein, daß ich total falsch liege und gerade einen c++-backflash habe ;)

MfG
Wanja

bei Antwort benachrichtigen
xafford Wanja „Hallo! Gibts vielleicht eine Möglichkeit eigene Operatoren zu definieren bzw....“
Optionen

Du liegst sogar doppelt falsch, wir reden von PHP, nicht Perl und es ist C++ mit überladen und Operatoren (bzw Java). Aber Danke, daß Du Dir die Mühe machen willst :o)

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
hundevatta xafford „OT: Manchmal ist simpel einfach doch ZU simpel (Typisierung)“
Optionen

Da du den Thread ja auch nicht so ganz ernst aufgezogen hast: Ich komme mir im Moment vor wie Calvin (und Hobbes, Wattersen, Comic) vor seiner Lehrerin Fräulein Wurmholz. Die erklärt Mathe und er versteht nur ausserirdisch...
Im Ernst: Solche Diskussionen führen einen auf den Boden zurück, wenn man mal wieder denkt, man hätte computerisch wenigstens etwas drauf. Und Peng!
"kontextabhängige Typenkonvertierung ", "$val1 = 3232235777;"... - Wer bist du, Fremder? Und welche Sprache sprecht ihr auf eurem Planeten?

Ich hoffe doch, ich kann mir die Humor-Tags sparen... ;o))

- Boh glaupse ey! -
bei Antwort benachrichtigen