Diskussion:Typsicherheit

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Typprüfung im Sinne der Homologation

[Quelltext bearbeiten]

Mir fehlt hier irgendwie eine Begriffsklärungsseite...

"Typsicherheit herzustellen ist Aufgabe des Compilers bzw. Interpreters."

[Quelltext bearbeiten]

Das scheint zumindest der gcc nicht zu wissen. Ich kann problemlos 'ne Zeichenkette in 'nen Int schieben. --217.84.23.162 14:05, 20. Okt. 2008 (CEST)Beantworten

C ist ja auch nicht typsicher. -- 14:07, 20. Okt. 2008 (CEST)Beantworten
Hab ich vorhin auch bemerkt. Deswegen bin ich hier gelandet. :) Aus dem Artikel wird es nicht richtig klar. --217.84.23.162 14:11, 20. Okt. 2008 (CEST)Beantworten
Welcher Compiler erlaubt es ohne Warnung eine "Zeichenkette in 'nen Int" schieben"? C unterstützt viele automatische Konvertierungen zwischen den eingebauten Typen, das darf man aber nicht mit schwacher Typsicherheit verwechseln. Diese Behauptung dass der Ergebnistyp "wie zum Beispiel beim Divisions-Operator in der Programmiersprache C" nicht festgelegt sei erscheint mir sehr willkürlich. Die Promotionen (die hier nicht zum Zug kommen dürften, aber schon in C++ bei Überladung von operator/) und Konvertierungen sind zugegebenermaßen recht kompliziert und tw. verwirrend, aber das hat nichts damit zu tun dass der Ergebnistyp "nicht eindeutig festgelegt" sei. -- Markus23
Wenn dem Quellcode nicht ersichtlich ist, ob das Ergebnis der Division von
int i, j;
float x;
i = 11;
j = 2;
x = i / j;
ein Gleitkommawert oder eine ganze Zahl sein soll, dann ist das eine Typunsicherheit. Dieses Problem kann kein C-Kompiler der Welt lösen, weil es in C (auch ohne das Überladen des Operators) gar keine Unterscheidung zwischen den beiden entsprechenden Divisions-Operatoren gibt. Spätenstens wenn es erlaubt ist, auch ohne explizite Typumwandlung eine Gleitkommazahl einer ganzzahligen Variablen zuzuweisen, hört der Spaß auf und fängt die unnötige und langwierige Fehlersuche an. Bei Zeigervariablen wird der Typ der hinterlegten Daten gar nicht überprüft, was häufig zu völlig überflüssigen und unzeitgemäßen Programmierfehlern und Sicherheitslücken führt.
Vor 40 Jahren wusste man das noch nicht besser, aber wer will, kann ja gerne die Erfahrungen von Heerscharen von Programmieren nachvollziehen und nicht mit modernen, typsicheren Programmiersprachen, wie zum Beispiel Component Pascal, C# oder Java (letztere ist nur weitgehend typsicher[1]) arbeiten[2]. Bautsch 23:13, 1. Mär. 2009 (CET)Beantworten

Einzelnachweise

[Quelltext bearbeiten]
  1. Java is not type-safe
  2. ENISA Quarterly 12/2007: Cycles of Software Crises - How to avoid insecure and uneconomic software