Was sind typisierte Programmiersprachen?

5 Antworten

ALLE antworten (außer der mit dem wikipedia link) haben unwahrheiten.

man unterscheidet bei der typisierung hauptsächlichen zwischen

  • stark (bsp.: python, haskell, clojure)
  • statisch (bsp.: java, dart, c#, c)
  • schwach (bsp.: c, javascript)
  • dynamisch (bsp.: groovy, javascript, clojure)

es gibt noch hybride (bsp.: c#, dart, groovy)

starke typisierung -> daten können nicht einfach ohne explizite konversion ihre datentypen wechseln (bsp.: 1 + "1" == fehler)

statische typisierung -> datentypen werden bereits beim kompilieren geprüft

bsp.:

var num: Number = 2
num = "sssssssss" // fehler

schwache typisierung -> daten können ihren datentypen wechseln (bsp.: "1" + 1 == "11" oder "1" - 1 == 0)

dynamische typisierung -> du kannst jeder variable jede art von daten zuweisen

bsp.:

def x = 2 // x hat zahl
x = "walkdujiwakda" // x hat text
Woher ich das weiß:Studium / Ausbildung

Stark Typisiert bedeutet dass eine Variable immer nur einen bestimmten Datentyp haben kann und auch nur solche Daten hier gespeichert werden können.

In einer stark Typisierten Sprache kannst du zB einer Integervariable keinen String übergeben oder umgekehrt.

Im Gegensatz ist das bei dynamisch Typisierten Sprachen durchaus möglich, wodurch eine Variable alle Möglichen Datentypen halten kann. Eine schwach typisierte Sprache ist ein Mittelding die sowohl dynamische als auch typisierte Datentypen erlaubt.

Der Vorteil von starker Typisierung ist, dass der Compiler die Möglichkeit hat so Fehler zu entdecken und zudem eine Funktion nur ganz bestimmte Datentypen übernehmen kann, was dem Programmierer erlaubt auf spezifische Checks des Datentyps zu verzichten.

In einer dynamisch Typisierten Sprache ist das nicht der Fall und das Programm muss zur Ausführungszeit bestimmen in welchem Kontext eine Bestimmte Operation stattfinden soll.

Typischer Fehler bei diesen Sprachen ist zB "3"+3. Hier muss der Compiler/Interpreter (dynamsiche Sprachen sind meist interpretierte Sprachen) unterscheiden ob diese Rechnung mit numerischen Datentypen oder als String Zusammenfügen gedacht ist. Je nach Interpretation ist das Ergebnis also 6 oder "33". Daher vermeidet man bei solchen Sprachen zB derartige Operatoren bewusst und gibt dem + zB eindeutig den nummerischen Kontext.

Eine 100% feste Definition gibt es nicht, allerdings zeichnet sich strong typing dadurch aus das du in der Regel nicht wirklich etwas an den Typen einer Variable oder ähnlichem verändern kannst. In der Regel wird schon beim kompilieren geprüft ob die Typen alle aus technischer Sicht so passen.

Bei Sprachen mit weak typing haben Variablen oft keinen festen Typ oder Datentypen werden bei Bedarf einfach umgewandelt ohne das der Programmierer das explizit angibt. Fehler aufgrund falscher Typen treten eventuell erst bei der Ausführung des relevanten Codes auf.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

stark typsiert java:
String testString = "test"; oder ab java 16 var testString = "test"

schwach typisiert python:
testString = "test"
testString = 5
testString = true

Woher ich das weiß:Studium / Ausbildung – info studium
Lezurex  08.11.2021, 12:25
oder ab java 16 var

Das var Keyword gibts schon seit Java 10.

1
CarinaSchoppe  08.11.2021, 15:37
@Lezurex

waaait. sicher?
wie sicher biste dass ich var in java 11 nutzen kann? du rettest mir gerad glaube soo viel arbeit,

0
Lezurex  08.11.2021, 15:41
@CarinaSchoppe

Jup. Such einfach mal nach "java var keyword" und du wirst sehen, dass überall steht, dass das seit Java 10 ein Ding ist.

0
BeamerBen  08.11.2021, 12:40

Zur Klarstellung: das var keyword hat nichts mit strong typing zu tun, es ist einfach nur eine praktische Hilfe damit man den Typ nicht selber festlegen muss, funktioniert an sich aber genau so als hätte man den Typ selber im Code festgelegt.

0
CarinaSchoppe  08.11.2021, 15:37
@BeamerBen

nur eben als beispiel wie starke typisierung mittels var aussehen kann. vorausgesetzt die instaziierung der variable ist direkt bei der deklaration

0
Lezurex  08.11.2021, 15:43
@BeamerBen

Ergänzung: Bei der Kompilierung wird der Datentyp erkannt. Dieser wandelt das dann wieder in die "normale" Schreibweise um.

0
orochi02  10.12.2021, 09:55

du verwechselst statische mit starke und dynamische mit schwache typisierung

0