Und ich nutze noch eine besonders streng typisierende Sprache (Ada), weil ich in Python noch keinen Compiler habe, der dem nahe kommt. Das ändert sich ja vielleicht mal.
Python ist doch streng typisiert! Es ist im Gegensatz zu Ada eben dynamisch; somit (und wegen des allg. Objektmodells) kann man dafür eben keinen so effizienten Compiler schreiben. Wobei ich bei Ada den Fokus ja doch eher auf der Beweisbarkeit und Korrektheit sehen würde...
hast ja Recht, dynamisch und sehr konsequent darin, dass wirklich alles ein Objekt ist, Module, Klassen, Literale, alles einfach. Und dann aber auch darauf ausgelegt, dass die Typen dann keine Grenzen darstellen, sondern in einander übergehen, so dass es egal ist, ob bei "a in b", was b eigentlich wirklich ist.
Der meiste Code, weiss deshalb garnicht, welche Typen genau er bearbeitet, sondern nutzt nur Interfaces. Ich habe gerne mal "readable" oder "iterable". Das empfinde ich als nicht streng typisiert, zumal "interfaces" anders als z.B. in Java nicht gut überprüfbar sind.
Bei Ada verwende ich dagegen inkompatible Integer (z.B. new Integer range 1..8), die sich gerade dadurch auszeichnen, dass sie nicht verwechselt werden können. Anders als bei C++ kann man nicht char *, 0L, char, short, int, etc. alle miteinander verwechseln, ohne selbst zu casten.
Ich weiss nicht, wie man diesen Aspekt einer Sprache nennt, ich schreibe daher "besonders streng", bin aber für Vorschläge offen.
Python ist doch streng typisiert! Es ist im Gegensatz zu Ada eben dynamisch; somit (und wegen des allg. Objektmodells) kann man dafür eben keinen so effizienten Compiler schreiben. Wobei ich bei Ada den Fokus ja doch eher auf der Beweisbarkeit und Korrektheit sehen würde...
Hallo Du,
hast ja Recht, dynamisch und sehr konsequent darin, dass wirklich alles ein Objekt ist, Module, Klassen, Literale, alles einfach. Und dann aber auch darauf ausgelegt, dass die Typen dann keine Grenzen darstellen, sondern in einander übergehen, so dass es egal ist, ob bei "a in b", was b eigentlich wirklich ist.
Der meiste Code, weiss deshalb garnicht, welche Typen genau er bearbeitet, sondern nutzt nur Interfaces. Ich habe gerne mal "readable" oder "iterable". Das empfinde ich als nicht streng typisiert, zumal "interfaces" anders als z.B. in Java nicht gut überprüfbar sind.
Bei Ada verwende ich dagegen inkompatible Integer (z.B. new Integer range 1..8), die sich gerade dadurch auszeichnen, dass sie nicht verwechselt werden können. Anders als bei C++ kann man nicht char *, 0L, char, short, int, etc. alle miteinander verwechseln, ohne selbst zu casten.
Ich weiss nicht, wie man diesen Aspekt einer Sprache nennt, ich schreibe daher "besonders streng", bin aber für Vorschläge offen.
Gruss,
Kay