Typensysteme in Skriptsprachen

  • Typensysteme in Skriptsprachen

    Hallo Coder Forum!

    ICh beschäftige mich gerade mit den Typensystemen in Skriptsprachen da ich für eine Facharbeit die konzepte der Skriptsprachen (allgemein ) beschreiben soll. Am anfang dachte ich unwissend wie ich war alle Skriptsprachen seine nach dem Prinzip des weak-typing implementiert dies ist aber nicht so! Nun habe ich mich mit dem Thema beschäftigt und habe gemerkt das in jeder Sprache eingentlich andere Typensysteme implementiert sind und das es irgenwie auch verschiedene Definitionen der einzelnen Systeme existieren was mich jetzt etwas verunsichert hat da ich nun nicht genau weiß was richtig ist und was nicht?

    also mal einen überblick

    laut dem Buch professionelle PHP 5 Programmierung

    books.google.de/books?id=J_dzm…wEwAQ#v=onepage&q=schwach typisiert&f=false

    dynamische-Typisierung : es wird zur Laufzeit ein Datentyp festgelegt somit kann mann auch so etwas tun wie

    Quellcode

    1. zahl=1



    statische-typisierung : es wird ein Datentyp zu gewießen und zur Kompilzeit ein festgelegt zum Beispiel:

    Quellcode

    1. int zahl = 1;


    diese zwei konzepte kann man jetzt auf zwei arten implementieren

    strong-typing: es wird ein Fehler geworfen wenn eine Variable einen Datentyp empfängt mit dem sie inkompatipel ist
    also zum beispiel ein int bekommt einen String jedoch ist es möglich das ganze explizit zu casten

    weak-typing: es wird einfach automatisch gecastet wenn die Datentypen nicht zusammen passen also zum beispiel wird ein String in ein int gecastet wie in JS

    Quellcode

    1. var x = 1 + "2"

    so fern der sting eine zahl ist !

    außerdem sind statisch-typisierte sprachen außnahmslos strong-typing allerding können auch dynamische-sprachen strong-typing sein !

    so soweit so gut auf Wikipedia steht folgendes:

    "
    Wie streng unterscheidet die Sprache die Typen? Welche Datentypen können ineinander umgewandelt werden? Erlaubt sie implizite Typumwandlungen? Erlaubt sie unsichere Typumwandlungen, z.B. bei denen Werte verloren gehen können?
    Typprüfungen können zur Übersetzungszeit oder zur Laufzeit vorgenommen werden. Im ersten Fall spricht man von statischer Typprüfung, im zweiten von dynamischer Typprüfung. Grundsätzlich sind statische Typprüfungen wünschenswert, da sie Laufzeitfehler ebenso wie möglicherweise schwer auffindbare Folgefehler ausschließen.
    Werden die Datentypen explizit genannt oder per Typableitung ermittelt?
    "
    de.wikipedia.org/wiki/Typisierung_(Informatik)

    nun steht da ja zwar ungefähr das selbe aber es wird etwas anders unterteilt zum beispiel noch in explizit un impliziet und dynamisch und statisch nur durch den zeitpunkt unterschieden werden also laufzeit oder kompilzeit ... Also kann es laut dieser definition sein das eine statisch typsierte sprache sowohl impliziet als auch expliziet sein kann und eine dynamische ebenso ?

    was wiederum bedeutet das die Definition aus dem buch nicht korrekt ist ? bzw nur teilweiße da statisch und dynamisch nur etwas mit dem zeitpunkt zu tun haben ... oder ich hab es falsch verstanden ?

    was ist denn nun richtig ? Bin gerade etwas verunsichert!

    Ich bin sehr Dankbar wenn ihr mich aufklären könntet

    Mit freundlichen Grüßen