Die Literatur ist darüber nicht klar. Ich denke, dass stark getippt nicht Ja / Nein ist, es gibt unterschiedliche Grade starker Typisierung.
Eine Programmiersprache hat eine Spezifikation, wie sie Programme ausführt. Manchmal ist es nicht klar, wie mit bestimmten Programmen ausgeführt werden soll. Zum Beispiel Programme, die versuchen, eine Zeichenfolge von einer Zahl zu subtrahieren. Oder Programme, die durch Null teilen. Es gibt verschiedene Möglichkeiten, mit diesen Bedingungen umzugehen. Einige Sprachen haben Regeln für den Umgang mit diesen Fehlern (z. B. lösen sie eine Ausnahme aus). Andere Sprachen haben einfach keine Regeln, um mit diesen Situationen umzugehen. Diese Sprachen verfügen im Allgemeinen über Typsysteme, um das Kompilieren von Programmen zu verhindern, die zu nicht angegebenem Verhalten führen. Es gibt auch Sprachen mit nicht spezifiziertem Verhalten und ohne Typsystem, um diese Fehler beim Kompilieren zu verhindern (wenn Sie ein Programm schreiben, das auf nicht spezifiziertes Verhalten trifft, werden möglicherweise die Raketen gestartet).
So:
Sprachen, die in jedem Fall angeben, was zur Laufzeit geschieht (z. B. Hinzufügen einer Zahl zu einer Zeichenfolge), werden als dynamisch typisiert bezeichnet. Sprachen, die verhindern, dass Programme zur Kompilierungszeit fehlerhaft ausgeführt werden, werden statisch typisiert. Sprachen, die nicht angeben, was passiert, und auch kein Typsystem zur Vermeidung von Fehlern haben, werden als schwach typisiert bezeichnet.
Ist Java also statisch typisiert? Ja, da das Typsystem das Subtrahieren einer Zeichenfolge von einer Zahl nicht zulässt. Nein, weil Sie damit durch Null teilen können. Sie können die Kompilierung durch Null zur Kompilierungszeit mit einem Typsystem verhindern. Zum Beispiel durch Erstellen eines Zahlentyps, der nicht Null sein kann (z. B. NonZeroInt) und nur durch Zahlen mit diesem Typ dividieren darf.
Ist C also stark oder schwach typisiert? C ist stark typisiert, da das Typsystem einige Typfehler nicht zulässt. In anderen Fällen ist es jedoch schwach typisiert, wenn nicht definiert ist, was passiert (und das Typsystem Sie nicht schützt).