1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Crema: Eine…

Vorteil?

  1. Thema
  1. 1
  2. 2

Neues Thema Ansicht wechseln


  1. Vorteil?

    Autor: Oldschooler 05.08.15 - 08:47

    Und was ist jetzt der Vorteil der Sprache gegenüber C? Nur die Tatsache, dass es keine Turing-Vollständigkeit hat, finde ich jetzt ziemlich mau.

  2. Re: Vorteil?

    Autor: JohannesKn 05.08.15 - 08:54

    ich vermute, dass es damit möglich sein soll, einen Computer programmieren zu lassen, ohne dass ein Entwickler vor der Tastatur sitzen muss.
    Weil es nicht möglich ist, dass ein Programm entscheiden kann, ob ein anderes Programm mit der selben Komplexitätsstufe terminiert oder halt nicht.

  3. Re: Vorteil?

    Autor: Anonymer Nutzer 05.08.15 - 08:55

    Ja, der Artikel geizt wirklich sehr mit Informationen. :-(
    Aber ich denke mal, dass der (Haupt-)Vorteil das geringere Sicherheitsrisiko sein soll, welches Folge der fehlenden Features sei.

  4. Re: Vorteil?

    Autor: Schattenwerk 05.08.15 - 08:56

    Naja, dann scheint dir die Tragweite nicht bewusst zu sein.

    Der Vorteil ist, dass du solche Programme automatisiert überprüfen kannst, da solche Programme irgendwann zu einem Halt kommen müssen. Es sind keine Endlosschleifen möglich, jedes Programm hält irgendwann.

    Erst dadurch wird es möglich ein Programm zu schreiben, welches dir überprüfen kann, ob dein gewünschtes Programm wirklich dies tut was es soll. Im Bereich des Testing ist dies eigentlich ein ziemlich hartes Stück, das so etwas möglich ist.

    Jedoch leider nur, wie in diesem Fall, indem man Einschnitte am eigentlichen Turingmodell vornimmt.

    Für dich würde es nun heißen: Jemand könnte ein Programm X schreiben, wo du in Zukunft deine Crema-Programme "rein wirfst" und du "sagst" X, dass dein Programm die Handlung A tun soll. Das Programm X kann dies nun für dich überprüfen und dir somit die Gewissheit geben.



    2 mal bearbeitet, zuletzt am 05.08.15 08:58 durch Schattenwerk.

  5. Re: Vorteil?

    Autor: Schattenwerk 05.08.15 - 08:58

    Das hat einen Grund: Den Begriff der Turingberechenbarkeit stellt man nicht mal eben in einem kleinen Artikel da. Dafür ist das Thema, welch Überraschung, viel zu theoretisch.

  6. Re: Vorteil?

    Autor: 3dgamer 05.08.15 - 09:07

    Schattenwerk schrieb:
    --------------------------------------------------------------------------------
    > Das hat einen Grund: Den Begriff der Turingberechenbarkeit stellt man nicht
    > mal eben in einem kleinen Artikel da. Dafür ist das Thema, welch
    > Überraschung, viel zu theoretisch.
    Ach quatsch, ein halbes semester theoretische Informatik kann man schon mal in 2-3 Sätzen überflüssig machen!!!!

  7. Re: Vorteil?

    Autor: Schattenwerk 05.08.15 - 09:11

    Naja, im Diplom war es, wenn ich das richtig mitbekommen habe, ein Ganzes ;)

    Da müssen es schon 2-3 Sätze mehr sein

  8. Re: Vorteil?

    Autor: robinx999 05.08.15 - 09:18

    Zwar keine Endlosschleifen, aber besteht nicht Trotzdem das Problem, da hier gerade das Parsen von Logs genannt wird, das es sehr lange Laufzeiten haben kann. Ich meine was ist denn wenn ich ein Programm schreibe das bei einem 1kb großem Log 1 Sekunde braucht und bei einem 2kb großem Log 2 Sekunden. Aber wenn ich dem jetzt ein 10GB großes Log gebe (weil z.B.: Logrotate aus irgendwelchen gründen versagt hat) dann hat das Programm erst mal 115 Tage was zu tun.

    Und vielleicht bekommt man mit geschachtelten Schleifen auch mal so etwas hin, wie das die Laufzeit nicht Linear Steigt sondern Exponentiell

  9. Re: Vorteil?

    Autor: WolfgangS 05.08.15 - 09:26

    Schattenwerk schrieb:
    --------------------------------------------------------------------------------
    > Naja, im Diplom war es, wenn ich das richtig mitbekommen habe, ein Ganzes
    > ;)
    >
    > Da müssen es schon 2-3 Sätze mehr sein


    T. war 1 Woche bei Diplom im Fach Grundlagen der Informatik. Gab ja noch andere Inhalte.

  10. Re: Vorteil?

    Autor: Schattenwerk 05.08.15 - 09:27

    Auch wenn ein Programm ewig lang läuft (dabei ist egal wie lang nun lang wirklich ist), es kann ohne die Funktion von Endlosschleifen und unbeschränkten Rekursionen nicht ewig laufen. Somit kommt es irgendwann (kann nach 24 Stunden, 24 Wochen, Monaten, Jahren, Jahrtausenden, etc.) zu einem Halt.

    Somit könnte man es dann theoretisch (willkommen in der theoretischen Informatik) überprüfen.



    2 mal bearbeitet, zuletzt am 05.08.15 09:29 durch Schattenwerk.

  11. Re: Vorteil?

    Autor: GodKnowsWho 05.08.15 - 09:31

    Ja, Programme können immer noch eine Laufzeit haben können, die nicht mehr linear ist. Eine Einschränkung auf Programme mit linearer Laufzeit würde die Menge, der Probleme, die man dann noch lösen kann drastisch einschränken.

    Der Vorteil einer Sprache, die gewisse Einschränkungen (im Hinblick auf Turing-Vollständigkeit) macht, ist, dass man sie leichter analysieren kann. Das gilt sowohl für Terminierungsanalyse (die je nach Einschränkung dann trivial wird) als auch die Verifikation von funktionalen Eingeschaften, also dass das Programm "auch wirklich das tut, was es soll" (also gemäß Spezifikation funktioniert).

    Um nochmal auf die Komplexität von Programmen zurückzukommen. Es gibt einiges an Forschung im Hinblick auf die automatische Ableitung von Laufzeitschranken aus Code. Diese Analyse könnte mit den Einschränkungen von Crema auch deutlich einfacher werden. Das löst das Problem nicht, dass die Laufzeitkomplexität des Programms nicht hoch sein kann, aber wenigstens könnte man es automatisiert herausfinden. Auf realen Sprachen ist das ein sehr hartes Problem. Wenn du daran interessiert bist, robinx999, kann ich da auf weitere Literatur verweisen. ;)

    Wen übrigens ernsthafte Terminierunganalyse-Tools für von Java, C und Co interessieren, der kann sich mal bei den Ergebnissen der letztjährigen Termination Competition umschauen:

    http://nfa.imn.htwk-leipzig.de/termcomp-2014/competition/20

  12. Re: Vorteil?

    Autor: robinx999 05.08.15 - 09:32

    Ja schon aber hier wird ja eine Praktische Programmiersprache vorgestellt, selbst wenn man es dann Theoretisch überprüfen kann, weil es eine Begrenzte Laufzeit hat, so kann sie doch so lang werden dass man das Ende eines Ablaufes wohl niemals erleben wird, oder?

  13. Re: Vorteil?

    Autor: JensM 05.08.15 - 09:34

    WolfgangS schrieb:
    --------------------------------------------------------------------------------
    > Schattenwerk schrieb:
    > ---------------------------------------------------------------------------
    > -----
    > > Naja, im Diplom war es, wenn ich das richtig mitbekommen habe, ein
    > Ganzes
    > > ;)
    > >
    > > Da müssen es schon 2-3 Sätze mehr sein
    >
    > T. war 1 Woche bei Diplom im Fach Grundlagen der Informatik. Gab ja noch
    > andere Inhalte.

    Bei mir im Bachelor übrigens auch. :D Das größere Topic nennt sich ja Automatentheorie, wozu viele Themen zugeordnet sein können. Sei G zum Beispiel eine Grammatik, ....

  14. Re: Vorteil?

    Autor: DerVorhangZuUndAlleFragenOffen 05.08.15 - 09:46

    robinx999 schrieb:
    --------------------------------------------------------------------------------
    > Zwar keine Endlosschleifen, aber besteht nicht Trotzdem das Problem, da
    > hier gerade das Parsen von Logs genannt wird, das es sehr lange Laufzeiten
    > haben kann. Ich meine was ist denn wenn ich ein Programm schreibe das bei
    > einem 1kb großem Log 1 Sekunde braucht und bei einem 2kb großem Log 2
    > Sekunden. Aber wenn ich dem jetzt ein 10GB großes Log gebe (weil z.B.:
    > Logrotate aus irgendwelchen gründen versagt hat) dann hat das Programm erst
    > mal 115 Tage was zu tun.

    Das ist viel zu praktisch gedacht. Es geht darum das formal bewiesen werden kann, dass ein Programm einen endlichen Eingabestrom IMMER in endlicher Zeit bewältigen kann. Genau das geht bereits bei sehr einfachen Programmen auf einer Turing-kompletten Maschine nicht.

    > Und vielleicht bekommt man mit geschachtelten Schleifen auch mal so etwas
    > hin, wie das die Laufzeit nicht Linear Steigt sondern Exponentiell

    Genau das ist eine Folge aus dieser Beweisbarkeit der Endlichkeit. Denn wenn man die ermitteln kann, kann man auch die zeitliche Komplexität bestimmen. Du kannst also Aussagen treffen wie: Das Programm X wird für jedweden Input der Länge Y in jedem Fall nach maximal Z Rechenschritten beendet sein. Dies ist vor allem für Echtzeitanwendungen besonders wichtig.

    "Entwickeln Sie ein positives Verhältnis zu Daten und freuen sie sich wenn wir mehr wissen!" ~Angela Merkel (12.06.2015)



    1 mal bearbeitet, zuletzt am 05.08.15 09:49 durch DerVorhangZuUndAlleFragenOffen.

  15. Re: Vorteil?

    Autor: Anonymer Nutzer 05.08.15 - 09:47

    Ich hab ehrlich gesagt keine Ahnung davon. :-)
    Aber es gibt doch sicher spezifische Unterschiede von Crema im Vergleich zu C, die man hätte aufführen können? So ist der Artikel halt ein wenig informationsarm.

  16. Re: Unterschiede

    Autor: Missingno. 05.08.15 - 09:50

    > The only type of loop supported by Crema is the foreach loop.

    Das dürfte so der Hauptunterschied sein. Und dass allgemein weniger Operanten unterstützt werden.

    --
    Dare to be stupid!

  17. Re: Vorteil?

    Autor: RvdtG 05.08.15 - 09:54

    Das Erleben der Endlichkeit ändert an der zwingenden Endlichkeit aber nichts.

  18. Re: Vorteil?

    Autor: WasntMe 05.08.15 - 11:10

    Parlan schrieb:
    --------------------------------------------------------------------------------
    > Ich hab ehrlich gesagt keine Ahnung davon. :-)
    > Aber es gibt doch sicher spezifische Unterschiede von Crema im Vergleich zu
    > C, die man hätte aufführen können? So ist der Artikel halt ein wenig
    > informationsarm.

    Öhm, ja. Im Artikel steht, dass unendliche Schleifen nicht zugelassen werden und dass damit die Sprache im Gegensatz zu fast allen anderen (auch C) nicht Turing-vollständig ist. Willst du mehr wissen, kannst du auch mal in das verlinkte Wiki schauen. Ich habe es auch getan. Keine Angst, der verlinkte Wiki-Artikel namens "Getting started" ist wirklich kurz und prägnant.

    Und zum Vorteil hat der Artikel auch was geschrieben: "Crema verzichtet auf bestimmte Features, um dabei möglichst sicher zu sein und die formale Analyse des Codes zu erleichtern." Ich verstehe nicht, was man darin nicht verstehen kann. Es könnten höchstens noch die Hintergründe unklar sein, warum eine Turing-unvollständige Sprache die formale Analyse erleichtert, aber das ist nicht schnell im Rahmen eines kleinen Artikels getan.

  19. Re: Vorteil?

    Autor: WasntMe 05.08.15 - 11:19

    DerVorhangZuUndAlleFragenOffen schrieb:
    --------------------------------------------------------------------------------
    > Genau das ist eine Folge aus dieser Beweisbarkeit der Endlichkeit. Denn
    > wenn man die ermitteln kann, kann man auch die zeitliche Komplexität
    > bestimmen. Du kannst also Aussagen treffen wie: Das Programm X wird für
    > jedweden Input der Länge Y in jedem Fall nach maximal Z Rechenschritten
    > beendet sein. Dies ist vor allem für Echtzeitanwendungen besonders wichtig.

    Jupp, vollkommen richtig. Und man kann damit auch Aussagen zum maximalen Speicherbedarf treffen und kann damit wiederum beweisen, dass das Programm beispielsweise keine Bufferüberläufe produziert.

  20. Außerdem...

    Autor: johnsonmonsen 05.08.15 - 16:50

    Hallo Schattenwerk!

    >Das hat einen Grund: Den Begriff der Turingberechenbarkeit stellt man nicht mal eben in einem kleinen Artikel da. Dafür ist das Thema, welch Überraschung, viel zu theoretisch.

    Danke für diesen einladenden Satz :-)! In diesem Thema versteckt sich übrigens auch eine philosophische Bombe der derbsten Art. Vielleicht ist sie unter den Diskussionsteilnehmern bekannt. Ich bin kein "ITler", wurde durch diesen Thread aber ermutigt aus einer anderen Perspektive heraus einzusteigen. Die cantorsche Unterscheidung der Mächtigkeit zweier Unendlichkeiten (nämlich der abzählbaren und überabzählbaren) sowie der Gödelsche Unvollständigkeitssatz stehen hierbei im Mittelpunkt:

    1: Cantors zweites Diagonalargument zeigt die Zuordnung der Menge der reellen Zahlen zur "Unendlichkeit der Überabzählbarkeit" auf.

    2: Jede reelle Zahl aus dieser Menge wird (für sich) dabei dennoch von einem Wort ausgedrückt, welches aus den Elementen eines endlichen Zeichensatzes aufgebaut ist d.h., kann mit einem Zeichensatz definiert werden.

    3: Erstellt man nun, in Bijektion zu den natürlichen oder rationalen Zahlen, eine (nach "hinten offene") Liste (bzw. bedient sich eines Algorithmus, welcher dies tut), erhält man eine abzählbar unendliche Menge an Ausdrücken, welche alle möglichen Kombinationen von Wörtern des verwendeten Zeichensatzes beinhalten.

    4: Erinnern wir uns an den zwingenden Unterschied der beiden Unendlichkeiten, nämlich dass die Mächtigkeit der überabzählbaren, die der abzählbaren übersteigt, gelangt die Logik ins Trudeln.

    Wir kommen - in Hinblick auf Cantors Beweisführung - nicht umhin festzustellen, dass die Anzahl der reellen Zahlen, die Anzahl der in den Intervallen unserer Liste angegebenen Wortfolgen zwangsläufig übersteigt. D.h. dass selbst zwischen zwei aufeinanderfolgenden, durch nichts weiter als Permutation ihrer Zeichen differenzierten, Worten/Ausdrücken noch Platz für eine weitere reelle Zahl sein muss.

    Erweitern wir das Ganze damit, dass unsere durchnummerierbare Liste alle überhaupt nur irgendwie bekannten Zeichensätze enthält, also neben Ziffern und allen mathematisch verwendeten Zeichen auch Buchstaben, Sonderzeichen, Piktogramme, Emoticons etc. So erhalten wir eine Menge aller denkbaren und formulierbaren Ausdrücke überhaupt. Wichtig zum Verstänsnis ist hier, dass es sich um eine Zusammenfassung von jeweils abzählbar unendlichen Teilmengen geht, die wir in abstrakter Form vereinen - dabei den abzählbaren Charakter beibehaltend. So bleibt noch immer die Gewissheit, dass die Menge der reellen Zahlen höher sein muss als unsere abstrakte Auflistung (bzw. der Menge ihrer Ausdrücke) - und auch hier, in jeder Abfolge im offenen Intervall, immer noch Platz für die Definition einer reellen Zahl sein muss.

    Wie kann man nunmehr einen Unterschied zwischen einer sinnlosen Zeichenfolge innerhalb der Liste treffen und einer, welche eine reelle Zahl definiert? Wie soll man unterscheiden, ob ein beliebiger Algorhitmus, welcher ja zwangsläufig ebenfalls Bestandteil unserer Liste sein muss (da alle Kombinationen aller Zeichen enthalten sind), eine reelle Zahl definiert oder nicht? Dies bedeutet im Umkehrschluss auch, dass stets eine reelle Zahl existieren muss, welche von keinem Algorithmus "abgedeckt" wird. Spätestens hier sieht man die Verwandtschaft mit dem Unvollständigkeitssatz Gödels. Ab einem gewissen Punkt trennen sich Wahrheit und Beweisbarkeit einer Aussage, das logische Prinzip der Bivalenz wird, nebst dem Satz vom ausgeschlossenen Widerspruch, ausgehebelt. Nämlich immer dann, wenn das zur Definition verwendete System "hinreichende Stärke/Mächtigkeit" besitzt; ein Attribut welches bereits erfüllt ist, wenn sich damit elementare Eigenschaften der natürlichen Zahlen (!) ausdrücken lassen!

    Hierauf baut der Satz von Turing (heißt er der Lehre gemäß so?) auf, welcher letztlich besagt, dass es (innerhalb eines Turingvollständigen Systems -> hier die benötigte "Stärke") niemals einen Algorithmus geben kann, der die Beendigung eines beliebigen Programmes vorhersagt bzw. dessen unendliche Fortsetzung beweisen wird. Das bekannte Halteproblem. Letztlich muss in den Grenzen eines selbst festgelegten (oder von den Umständen determinierten) Zeitrahmens probiert werden, ob der Lauf endet. So ein Algorithmus bzw. grob eine Konstruktionsvorschrift für eine abzählbar unendliche Liste, wäre nur unter Ausbleiben der Konstruierbarkeit des 2. Diagonalbeweises denkbar bzw. möglich. In diesem Beitrag konnte ich, so glaube ich, zeigen, dass alleine durch die Gegenüberstellung der beiden Unendlichkeiten deutlich wird, dass die Eindeutigkeit einer Aussage nicht immer (und überhaupt) gewahrt werden kann; eben so wie Gödel das Vorhandenseins eines Satzes konstruieren konnte, der seine eigene Ableitbarkeit leugnet. Beides hängt miteinander untrennbar zusammen.

    Worin liegt nun die philosophische Bombe begründet, wenn sie bisher noch nicht hochgegangen sein sollte ;-D? Ganz einfach: Darin, dass jede Art von menschlicher Erkenntnis ihren Ausdruck in einer Ordnung an Elementen findet. In einer Sprache, einem Konzept, einer meinetwegen harmonischen Ordnung, in Logik etc. In jedem Fall letztlich in der Lage die Anforderung an "Mächtigkeit" zu erfüllen. Vielleicht sogar in Form von Kategorien oder abstrakten Empfindungen, welche sich voneinander differenzieren lassen, wenn sie dies tun (und sie tun es immer, wenn sich daraus Urteile zusammensetzen oder - falls apriorisch - unmittelbar gewinnen lassen); damit die Grundprinzipien der Logik mitgestaltend. Welche Aussage, welche "Wahrheit" ist unter diesem Gesichtspunkt nun eine verbindliche, kann das Streben nach Erkenntnis überhaupt einem definierten Zweck dienen? Oder besteht ihr Selbstzweck gar in ihrer letztlichen Undefinierbarkeit, welche, strenggenommen sogar als Prämisse für absolute, weil nicht deterministisch eingrenzbare, Freiheit gelten muss?

    Nun, ich weiß das auch nicht mit Gewissheit, falls es eine solche denn geben kann :-)! Fest steht nur, dass der menschliche Intellekt den Unterschied der beiden Unendlichkeiten erkennen und konstruieren kann...

    Bitte entschuldigt mein Mitteilungsbedürfnis - nur falls das Ganze als zu Off-Topic wahrgenommen werden sollte ;-)!

    Viele Grüße :-)!

    Edit: Satzbau



    1 mal bearbeitet, zuletzt am 05.08.15 16:54 durch johnsonmonsen.

  1. Thema
  1. 1
  2. 2

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. ROSE Systemtechnik GmbH, Hohenlockstedt
  2. HUK-COBURG Versicherungsgruppe, Coburg
  3. Stabilus GmbH, Koblenz, Langenfeld
  4. Helios IT Service GmbH, Berlin-Buch

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. 85€ (Bestpreis mit MediaMarkt/Saturn. Vergleichspreis 99,99€)
  2. (Hardware, PC-Zubehör und mehr für kurze Zeit reduziert)
  3. 36,48€ (Vergleichspreis ca. 56€)
  4. (u. a. Planet Zoo - Deluxe Edition für 19,99€, Hitman 3 - Epic Games Store Key für 39,99€ und...


Haben wir etwas übersehen?

E-Mail an news@golem.de