Prototype - gefahren bei Typenkollision?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Prototype - gefahren bei Typenkollision?

Beitrag von PMV »

CSHW89 hat geschrieben:@Danilo:
Ein Typensystem ist nicht das Maß aller Dinge. Es gibt genügend Programmiersprachen, die kein, bzw. ein dynamisches Typensystem haben, bei denen es häufig erst zur Laufzeit Typenfehler erkennt, wie z.B. LISP, oder auch modernere Sprachen, wie Ruby, die durchaus angesehen sind, bzw. ihre Darseinsberechtigung haben.
Versteh mich nicht falsch, auch ich schätze ein gutes Typensystem. Hab auch Compilerbau gehört, bzw. mache gerade ein Software-Praktikum. Aber wenn die Sprache halt nicht danach ausgelegt ist, dann ist das so. PureBasic hat nunmal die Entscheidung getroffen, dass Pointer immer zuweisungsberechtigt sind. Ist doch das gleiche Thema mit OOP. Die die sowas wollen, sollten andere Sprachen verwenden.
Du must auch bedenken: das jetzt zu ändern, wäre einfach fatal. 99% aller Codes wäre einfach nicht mehr lauffähig. Das wäre so, als wenn wir jetzt sagen würden, auf Strukturelemente greift man nicht mehr mit '\', sondern mit '.' zu.

lg kevin
Ich glaube ihr habt Danilo einfach nicht verstanden. Es geht nicht um Ruby.
Oder PHP, womit ich Erfahrung hab. Hier ist es vom Konzept her so gedacht,
dass das Möglich ist, bzw. dort kann man den Typ gar nicht explizit bestimmen.
und es führt auch zu keinen unvermeindlichen Fehlern. Hier sind die krankesten
Algos möglich ... die am Ende keiner mehr versteht, aber es geht. :lol:
Nein, ihm geht es um PB und das vermeiden von Laufzeitfehlern. Wie Stargate
festgestellt hat, muss die Prototyp-Definition mit der Definition der
Prozedur übereinstimmen, die dort tatsächlich genutzt wird. Dabei spielt es
keine Rolle, ob es sich dabei um eine Prozedur aus dem eigenen PB-Code
handelt im selben Programm, einer DLL oder gar eine DLL programmiert
mit einer anderen Sprache. Wenn die Definition nicht mit der Prozedur
übereinstimmt, geht das bis hin zu unerklärbaren IMAs oder ähnlich tückische
Fehler.

Fehler, die PB verhindern könnte, wenn der Compiler etwas schlauer wäre und
solche Konstrukte zumindest dort überprüfen würde, wo es Möglich wäre. Das
würde keine vorhandene Funktionalität zerstören, sondern nur Fehlerquellen
verhindern. :wink: Die Zuweisung von Prozedurpointern an Pointervariablen ist
unabhängig von allem. Es geht nur um die Zuweisung von Prozedurpointern
direkt an Prototypvariablen.

Das Problem, das allerdings Fred wohl vermutlich hat: bisher werden solche
möglichen Laufzeitfehler nicht zur Compilerzeit überprüft und es dürfte auch
ziemlich viel Arbeit sein, so etwas ein zu bauen ... da müsste erst mal viel
drüber nach gedacht werden, wo das alles sinnvoll ist usw. Das Kostet viel Zeit.

Aber ganz erlich? Gerade das mit den Prototypen ist für mich kein wirkliches
Problem, wer damit umgeht sollte wissen, was er tut ... dann passieren
solche Fehler auch nicht. Wer kompliziertere Algos erstellt, muss sich eh
vorher erst mal schlau machen, wie das alles überhaupt funktioniert. :)
Und genau das hat Stargate ja hier vorbildlich gemacht. Problem auf dem
Zahn gefühlt und neue Erkenntnisse gesammelt. :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten