Strong typing

Strong typing

Starke Typisierung (engl. strong typing, daher oft auch strenge Typisierung) bezeichnet ein Schema der Typisierung von Programmiersprachen.

Bei der starken Typisierung bleibt eine einmal durchgeführte Bindung zwischen Variable und Datentyp bestehen, es wird auch (möglichst) keine implizite Typkonvertierung vorgenommen. Das Konzept der starken Typisierung ist nicht eindeutig definiert. In der Literatur finden sich diverse Regeln, die sich teilweise widersprechen. Versucht man alle bisher in der Literatur aufgestellten Regeln für starke Typisierung auf bekannte Programmiersprachen anzuwenden, hält keine Sprache dieser Überprüfung stand:

Eine Sprache ist stark typisiert, wenn

  1. Datentypen an Variablennamen anstatt an diskrete Werte geknüpft sind - die passende Terminologie dafür wäre statische Typisierung (static typing) im Gegensatz zur dynamischen Typisierung (dynamic typing);
  2. sie Typüberprüfungen zur Compile-Zeit enthält;
  3. automatische oder implizite Typkonvertierungen verboten sind;
  4. Typkonvertierungen explizit durchgeführt werden müssen;
  5. die Sprache keine Mechanismen besitzt, um das Typ-System zu umgehen, etwa type casts (Typumwandlungen) in C;
  6. es ein komplexes, fein abgestuftes System an Typen mit Sub-Typen gibt;
  7. der Datentyp eines Objektes fix ist und sich während der gesamten Lebensdauer des Objektes nicht verändern kann (auch diese Eigenschaft wird oftmals statische Typisierung genannt);
  8. das Typ-System das Laufzeitverhalten eines Programmes garantieren kann.

Vorteile durch starke Typisierung

Der entscheidende Vorteil der starken Typisierung ist, dass schon beim Übersetzen des Quellcodes eine Überprüfung der Zulässigkeit von Operationen durchgeführt wird. Daher ist nach dem erfolgreichen Kompilieren bereits gewährleistet, dass zum Beispiel Fehler, die auf der unzulässigen Typkonvertierung oder der Bereichsüberschreitung bei Datenfeldern beruhen, ausgeschlossen sind. Die zusätzliche Rechenzeit, die dafür erforderlich ist, spielt bei modernen Rechenmaschinen in der Regel keine Rolle. Daher ist es im Hinblick auf die Zuverlässigkeit und Sicherheit von Software nur bei extrem rechenintensiven Programmen sinnvoll, die starke Typisierung nicht zu berücksichtigen.

Wenn Typkonvertierungen zum Beispiel von ganzzahligen Typen nach Gleitkommatypen explizit angegeben und durchgeführt werden müssen, ist der Laufzeitaufwand, der eine solche Konvertierung darstellt, im Programm direkt zu erkennen.

Beispiele

Stark typisierte Sprachen (Keine der genannten Sprachen genügt allen Definitionen):

  • Ada
  • C# (solange die Option /unsafe nicht verwendet wird)
  • Component Pascal (erfüllt alle oben angegebenen Kriterien, wenn das Modul SYSTEM nicht explizit importiert wird)
  • D
  • Haskell
  • Java
  • Python (keine Bindung zwischen Variable und Datentyp)

Schwach typisierte Sprachen:


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • strong typing — noun A system that places any of various kinds of restriction on the interactions between objects of different data types. Ant: loose typing, weak typing …   Wiktionary

  • Strong Bad — Homestar Runner character First appearance The Homestar Runner Enters the Strongest Man in the World Contest Created b …   Wikipedia

  • Duck typing — Type systems Type safety Inferred vs. Manifest Dynamic vs. Static Strong vs. Weak Nominal vs. Structural Dependent typing Duck typing Latent typing Linear typing Uniqueness typing …   Wikipedia

  • Weak typing — In computer science, weak typing (a.k.a. loose typing ) is a property attributed to the type systems of some programming languages. It is the opposite of strong typing, and consequently the term weak typing has as many different meanings as… …   Wikipedia

  • Manifest typing — Type systems Type safety Inferred vs. Manifest Dynamic vs. Static Strong vs. Weak Nominal vs. Structural Dependent typing Duck typing Latent typing Linear typing Uniqueness typing …   Wikipedia

  • Type system — Type systems Type safety Inferred vs. Manifest Dynamic vs. Static Strong vs. Weak Nominal vs. Structural Dependent typing Duck typing Latent typing Linear typing Uniqueness typing …   Wikipedia

  • Strongly-typed programming language — In computer science and computer programming, the term strong typing is used to describe those situations where programming languages specify one or more restrictions on how operations involving values having different data types can be… …   Wikipedia

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • Schwache Typisierung — Die Artikel Typsystem und Typisierung (Informatik) überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen. Bitte entferne diesen… …   Deutsch Wikipedia

  • Typisierung (Informatik) — Eine Typisierung (engl. typing) dient in der Informatik dazu, dass die Objekte (hier Objekte im mathematisch abstrakten Sinne verstanden) der Programmiersprachen, wie z. B. Variablen, Funktionen oder Objekte (im Sinne der objektorientierten… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”