...in Rust implementiert, einer neuen Programmiersprache... Rust leidet nicht an einem unsicheren Speichermodell ...
Mal eben eine neue Programmiersprache entwicklen und dann hoffen, dass diese sicher ist erscheint mir nicht gerade vertrauensbildend. Wenn man bedenkt, dass Sprachen wie JavaScript oder Python seit vielen Jahren von einer riesigen Comunity weiterentwickelt werden, kann ich ich mir nicht vorstellen, dass die Rust-Entwickler die Weisheit mit Löffeln gegessen haben.
Von blablabla233 am Mi, 26. Februar 2014 um 17:24 #
Die typen die aus rollenden Baumstaemmen ein Rad entwickelten hatten wohl noch nicht mal loeffel und trotzdem endeckte was viiiel besseres die Welt. Nach deiner Ansicht gaebe es nur C Ada Fortran und Asm.....
korrigiere mich wenn ich mich irre, aber Python ist doch Turing-Vollständigkeit, oder? Und damit ist es doch eine "echten Sprache". Wechsels du gerade Ideologe und fachliche Definition?
Von blablabla233 am Mi, 26. Februar 2014 um 18:03 #
Naja wir haben gar nicht definiert ob sich die Diskussion um Ideologie oder allgem. definition handelt, ich meinte die Definition und da ist Python eine Scriptsprache und Rust nicht.
Es gibt keine unechten Sprachen. Jede Programmiersprache ist Turing vollständig (Python, JavaScript, C und C++ sind alle Turing vollständig)
Nicht Turingvollständig sind Automaten und Reguläre Ausdrücke (ist ähnlich zu einem Automat)
Eine Skriptsprache ist eine einbettbare Sprache: - JavaScript, z. B. im Browser - Lua , z. B. in vielen Spielen
Auch Python kann man als Skriptsprache nutzen, aber es ist nicht nur eine Skriptsprache.
Warum Python hier vielleicht nicht das beste Beispiel ist, ist wahrscheinlich der Umstand dass sie dynamisch typisiert und interpretiert ist, im gegensatz zu C, welches statisch typisiert ist und in Maschinencode übersetzt wird.
"Warum Python hier vielleicht nicht das beste Beispiel ist, ist wahrscheinlich der Umstand dass sie dynamisch typisiert und interpretiert ist, im gegensatz zu C, welches statisch typisiert ist und in Maschinencode übersetzt wird."
Exakt das sind die entscheidenden Unterschiede. Der Rest sind Feinheiten der Syntax und Bibliothek der Sprachen. Python ist eine wundervolle Sprache - ich nutze sie sehr gerne - aber viel zu langsam für einen Browser. Es gibt zwar auch eine statisch typisierte Variante von Python, die auch kompiliert werden kann, doch damit hat man dann noch immer nicht die zusätzlichen Funktionen von Rust.
Von Anonymous Coward am Mi, 26. Februar 2014 um 23:07 #
Meines Wissen [sic] gehört sql [sic] noch in diese Liste.
Dein „Wissen“ ist falsch, das stimmt schon seit der Einführung von Common Table Expressions und rekursiven Queries vor 15 Jahren nicht mehr. Aber selbst wenn es stimmen würde, stellt sich die Frage, wieso er ausgerechnet SQL aufführen sollte und keine der Dutzenden anderen nicht turingvollständigen Sprachen. XPath ist auch nicht turingvollständig, um mal nur ein Beispiel zu nennen.
> Aber selbst wenn es stimmen würde, stellt sich die Frage, wieso er ausgerechnet SQL aufführen sollte und keine der Dutzenden anderen nicht turingvollständigen Sprachen
weil es mich interessiert? "Meines Wissens" ist in der deutschen Sprache ein recht geläufiges Synonym für "ich bin mir da nicht sicher, was weißt du dazu"
"Meines Wissens" bedeutet in der westlichen Welt, dass es sicher irgendwo eine Ausnahme gibt, die aber weder der Mehrheit bekannt noch besonders weit genutzt/verbreitet ist.
Doch. Egal was als Quelle dient, bleibt dein Wissen immer subjektiv und ist Teil deines Erfahrungsschatzes. Die Daten die deinem Wissen zugrunde liegen können jedoch allgemein zugänglicher Natur sein. Wissen != Daten (http://de.wikipedia.org/wiki/Wissen):
Vor allem hat deine Aussage für mich keinen relevanten Bezug zu meiner. Solltest du evtl. gemeint haben, das auf Wikipedia eine entsprechende Definition wäre, fehlt die Quellenangabe. Ich nach deiner Struktur kann ich auch schreiben. "Wenn sich mein wissen auf X beruht kann man wohl kaum von Erfahrungsschatz sprechen. "
Also präziser nachgefragt. Was genau möchtest du mitteilen?
Hab ich vergessen. Der Duden, eine allgemein anerkannte Referenz der deutschen Sprache, definiert das Wissen als auf ein Individuum bzw. ein Subjekt bezogen (https://www.duden.de/rechtschreibung/Wissen).
Noch ein Punkt. Aus deiner Aussage könnte ich ableiten, das dein Wissen die gesamte Wikipedia umfassen müsste. Oder wie erklärst du sonst eine Teilmenge?
Ist das schon geklärt worden? Also mir ist das immer noch nicht wirklich klar und imho gibt es da draußen zig Tausende sich unterscheidende Definitionen... und meistens sind diese für das diskutierte Problem vollständig irrelevant
Von Anonymous Coward am Mi, 26. Februar 2014 um 22:43 #
Mal eben eine neue Programmiersprache entwicklen und dann hoffen, dass diese sicher ist erscheint mir nicht gerade vertrauensbildend. Wenn man bedenkt, dass Sprachen wie JavaScript oder Python seit vielen Jahren von einer riesigen Comunity weiterentwickelt werden, kann ich ich mir nicht vorstellen, dass die Rust-Entwickler die Weisheit mit Löffeln gegessen haben.
Quark, die Sprache ist qua Definition sicher. Was eventuell nicht sicher ist, sind Implementierungen wie SpiderMonkey oder CPython. Ein großer Anlass zur Sorge ist das aber nicht: Es ist um ein vielfaches wahrscheinlicher, dass der Nutzer einer Programmiersprache einen Fehler macht, als dass in der Implementierung Bugs stecken, die zu einer Sicherheitslücke im generierten Code führen. Und die Masse der Bugs in den Implementierungen wirken sich auch nicht auf gültigen Code im zu compilierenden Programm aus, sondern betreffen nur ungültige Programme. Das ist ein Angriffsvektor, wenn ein Angreifer eine Möglichkeit hat, beliebigen Code mittels der betreffenden Implementierung auszuführen (so wie es beispielsweise bei JavaScripts oder auch Java-Applets der Fall ist). Für eine Sprache wie Rust, wo das typischerweise nicht der Fall ist, ist das nicht relevant.
Danke für die Info. Ich habe nun gelernt, dass eine Programmiersprache, die statisch typisiert direkt in Maschinencode übersetzt Vorteile gegenüber dynamisch typisierten Spachen hat und dass in der Regel nicht die Programmiersprache selbst, sondern die Nutzer einer Programmiersprache ein mögliches Sicherheitsrisiko verursachen. Zusammengefasst: Die Rust-Entwickler haben gute Arbeit geleistest und die Qualität der Browser-Engine Servo hängt nun von den Rust-Anwendern ab.
Ich habe nun gelernt, dass eine Programmiersprache, die statisch typisiert direkt in Maschinencode übersetzt Vorteile gegenüber dynamisch typisierten Spachen hat
... aber auch viele Nachteile.
Ist das jetzt wirklich eine überraschende Erkenntnis?
Abgesehen davon beschreibst Du einen speziellen Spezialfall, weil Du verschiedene, sich nicht ausschließende Paradigmen kombinierst! (statisch typisiert + Maschinencode)
Ist das jetzt wirklich eine überraschende Erkenntnis?
Das erscheint mir keineswegs banal wenn ich mir aus der jüngsten Vergangenheit die Sicherheitsprobleme mit Java anschaue (Link). Ich halte nur die These, dass die Rust-Entwickler in 1,5 Jahren das geschafft haben sollen, was die Programmierer von anderen verbreiteten Spachen nicht in 10 Jahren zustande gebracht haben für unglaubwürdig. Just my two cents.
Würde mich auch mal interessieren: Was ist denn besser? Als C++ und Python-Entwickler schiele ich sehr interessiert auf die Entwicklung von Rust. Mir ist keine Programmiersprache bekannt die dessen angestrebte Ziele momentan gut erfüllt: Satisches Typsystem, Schutz vor Speicher-Fehlgriffen, gute Unterstützung für parallelisierung, C-nahe Performance und optionale GC pro Task (also kann man auch auf Echtzeit-Fähigkeit hoffen). Was die Syntax angeht bin ich mit Python durchaus zufrieden. Das es bei als statischen Sprache auch bei C++ leiht ist durchaus einleuchtend.
Von Anonymous Coward am Mi, 26. Februar 2014 um 22:26 #
Selbst wenn man mal ignoriert, dass Du diese dämliche Meinung nicht ansatzweise begründest, ist deine Kritik dämlich, denn ie Syntax ist so ziemlich der am wenigsten interessante Teil einer Sprache. Interessant sind beispielsweise das Typsystem oder Features wie die Nebenläufigkeitsunterstützung. Das erkennt man unter anderem daran, dass sich Sprachen wie C oder gar C++ mit ihrer fundamental unlogischen Syntax durchsetzen konnten. Beispiel gefällig? Der Typ eines Funktionszeigers sieht beispielsweise so aus: void(*)(int). Wie deklariert man eine Funktion, die ein Argument dieses Typs nimmt und zurückliefert? Man sollte ja annehmen, dass der Typ zweimal in der Deklaration vorkommt, aber weit gefehlt: void (*signal(void(*)(int)))(int);, so sieht es aus! Und in C++ gibt es Kram wie den most vexing parse oder das Fiasko, das entstand, als man es für eine schlaue Idee hielt, kleiner/größer-Zeichen für Template-Parameter zu verwenden (was dann dazu führte, dass man an allen möglichen völlig sinnlosen Stellen die Schlüsselwörter typename und template einfügen muss).
Ganz ehrlich: Selbst wenn Rust eine schlechte Syntax hätte, so könnte sie auf keinen Fall so katastrophal wie die von C++ sein.
Ich sehe das mit dem Sprachsyntax anders. Wenn man schon eine neue Sprache erzeugt, würde ich darauf achten, den Tippaufwand für mehr oder weniger obsolete Zeichen niedrig zu halten. Wenn man größere Programme schreibt merkt man den Unterschied. Außerdem sehe ich die Fokussierung bezüglich Nebenläufigkeit nicht so eng. Es gibt mittlerweile genug Libraries mit denen man komfortabel arbeiten kann. Mit den meisten mindestens genauso gut wie mit Rust. Meiner Meinung nach verhält sich Rust zu C wie R zu jeder x-beliebigen Statistiklibrary. Über den Sinn kann man sich prächtig streiten. Die Entwickler findens scheinbar geil, weil sie mit komplexen Sprachmitteln, die man noch aus C kennt scheinbar überfordert sind, aber mit der Performance von Scriptsprachen nicht zufrieden waren. Warum also keinen besseren (JIT-)Compiler für eine gute Scriptsprache wie Python entwickeln?
Natürlich weil Rust für die Allgemeinheit so viel besser ist, als andere Sprache!
Von Otto Schatzschneider am Do, 27. Februar 2014 um 19:56 #
Rust? Nie gehört mal gegoogelt. Sieht gar nicht so schlecht aus, Nebenläufigkeit mal richtig eingebaut und nicht nur ne lib rangeflickt. Sieht recht praktikabel und zeitgemäss aus, keine Altlasten. Könnte was werden hoffentlich über Firefox hinaus.
Gratulation and die Entwickler ..
Ich sehe als Kritiker Rust nicht unbedingt vorn.
Die typen die aus rollenden Baumstaemmen ein Rad entwickelten hatten wohl noch nicht mal loeffel und trotzdem endeckte was viiiel besseres die Welt. Nach deiner Ansicht gaebe es nur C Ada Fortran und Asm.....
Haha und du nimmst JavaScript und Python als Beispiel ...du weisst schon den unterschied von Script zu einer echten Sprache oder?
korrigiere mich wenn ich mich irre, aber Python ist doch Turing-Vollständigkeit, oder? Und damit ist es doch eine "echten Sprache". Wechsels du gerade Ideologe und fachliche Definition?
Naja wir haben gar nicht definiert ob sich die Diskussion um Ideologie oder allgem. definition handelt, ich meinte die Definition und da ist Python eine Scriptsprache und Rust nicht.
Und was macht eine Scriptsprache zur einer unechten Sprache?
Es gibt keine unechten Sprachen. Jede Programmiersprache ist Turing vollständig (Python, JavaScript, C und C++ sind alle Turing vollständig)
Nicht Turingvollständig sind Automaten und Reguläre Ausdrücke (ist ähnlich zu einem Automat)
Eine Skriptsprache ist eine einbettbare Sprache:
- JavaScript, z. B. im Browser
- Lua , z. B. in vielen Spielen
Auch Python kann man als Skriptsprache nutzen, aber es ist nicht nur eine Skriptsprache.
Warum Python hier vielleicht nicht das beste Beispiel ist, ist wahrscheinlich der Umstand dass sie dynamisch typisiert und interpretiert ist, im gegensatz zu C, welches statisch typisiert ist und in Maschinencode übersetzt wird.
"Warum Python hier vielleicht nicht das beste Beispiel ist, ist wahrscheinlich der Umstand dass sie dynamisch typisiert und interpretiert ist, im gegensatz zu C, welches statisch typisiert ist und in Maschinencode übersetzt wird."
Exakt das sind die entscheidenden Unterschiede. Der Rest sind Feinheiten der Syntax und Bibliothek der Sprachen.
Python ist eine wundervolle Sprache - ich nutze sie sehr gerne - aber viel zu langsam für einen Browser.
Es gibt zwar auch eine statisch typisierte Variante von Python, die auch kompiliert werden kann, doch damit hat man dann noch immer nicht die zusätzlichen Funktionen von Rust.
Danke für deine Antwort. Mich hat jedoch interessiert was blablabla233 meinte als er von "von Script zu einer echten Sprache" geschrieben hat.
> Nicht Turingvollständig sind Automaten und Reguläre Ausdrücke (ist ähnlich zu einem Automat)
Meines Wissen gehört sql noch in diese Liste.
Veraltet, nicht falsch ...
> Aber selbst wenn es stimmen würde, stellt sich die Frage, wieso er ausgerechnet SQL aufführen sollte und keine der Dutzenden anderen nicht turingvollständigen Sprachen
weil es mich interessiert? "Meines Wissens" ist in der deutschen Sprache ein recht geläufiges Synonym für "ich bin mir da nicht sicher, was weißt du dazu"
"Meines Wissens" bedeutet in der westlichen Welt, dass es sicher irgendwo eine Ausnahme gibt, die aber weder der Mehrheit bekannt noch besonders weit genutzt/verbreitet ist.
Nein. Genaugenommen bedeut es das die Information nur auf dem eigenen subjektiven Erfahrungsschatz beruht.
Wenn mein Wissen auf Wikipedia beruht, kann man wohl kaum von Erfahrungsschatz sprechen.
Doch. Egal was als Quelle dient, bleibt dein Wissen immer subjektiv und ist Teil deines Erfahrungsschatzes. Die Daten die deinem Wissen zugrunde liegen können jedoch allgemein zugänglicher Natur sein. Wissen != Daten (http://de.wikipedia.org/wiki/Wissen):
Vor allem hat deine Aussage für mich keinen relevanten Bezug zu meiner. Solltest du evtl. gemeint haben, das auf Wikipedia eine entsprechende Definition wäre, fehlt die Quellenangabe. Ich nach deiner Struktur kann ich auch schreiben. "Wenn sich mein wissen auf X beruht kann man wohl kaum von Erfahrungsschatz sprechen. "
Also präziser nachgefragt. Was genau möchtest du mitteilen?
Hab ich vergessen. Der Duden, eine allgemein anerkannte Referenz der deutschen Sprache, definiert das Wissen als auf ein Individuum bzw. ein Subjekt bezogen (https://www.duden.de/rechtschreibung/Wissen).
Noch ein Punkt. Aus deiner Aussage könnte ich ableiten, das dein Wissen die gesamte Wikipedia umfassen müsste. Oder wie erklärst du sonst eine Teilmenge?
Ist das schon geklärt worden? Also mir ist das immer noch nicht wirklich klar und imho gibt es da draußen zig Tausende sich unterscheidende Definitionen... und meistens sind diese für das diskutierte Problem vollständig irrelevant
Ein großer Anlass zur Sorge ist das aber nicht: Es ist um ein vielfaches wahrscheinlicher, dass der Nutzer einer Programmiersprache einen Fehler macht, als dass in der Implementierung Bugs stecken, die zu einer Sicherheitslücke im generierten Code führen. Und die Masse der Bugs in den Implementierungen wirken sich auch nicht auf gültigen Code im zu compilierenden Programm aus, sondern betreffen nur ungültige Programme. Das ist ein Angriffsvektor, wenn ein Angreifer eine Möglichkeit hat, beliebigen Code mittels der betreffenden Implementierung auszuführen (so wie es beispielsweise bei JavaScripts oder auch Java-Applets der Fall ist). Für eine Sprache wie Rust, wo das typischerweise nicht der Fall ist, ist das nicht relevant.
Ist das jetzt wirklich eine überraschende Erkenntnis?
Abgesehen davon beschreibst Du einen speziellen Spezialfall, weil Du verschiedene, sich nicht ausschließende Paradigmen kombinierst! (statisch typisiert + Maschinencode)
Ich halte nur die These, dass die Rust-Entwickler in 1,5 Jahren das geschafft haben sollen, was die Programmierer von anderen verbreiteten Spachen nicht in 10 Jahren zustande gebracht haben für unglaubwürdig. Just my two cents.
Dein Kommentar bezieht sich leider nicht auf meinen (Ich hatte doch das Zitat doch so schön hervorgehoben!)
Ich hatte etwas zu Deiner Erkenntnis über die Vorteile von Sprachen über andere je nach Paradigma geschrieben...
Sonder? Teile Deine erleuchtung mit uns...bitte.
Würde mich auch mal interessieren: Was ist denn besser? Als C++ und Python-Entwickler schiele ich sehr interessiert auf die Entwicklung von Rust. Mir ist keine Programmiersprache bekannt die dessen angestrebte Ziele momentan gut erfüllt: Satisches Typsystem, Schutz vor Speicher-Fehlgriffen, gute Unterstützung für parallelisierung, C-nahe Performance und optionale GC pro Task (also kann man auch auf Echtzeit-Fähigkeit hoffen). Was die Syntax angeht bin ich mit Python durchaus zufrieden. Das es bei als statischen Sprache auch bei C++ leiht ist durchaus einleuchtend.
Selbst wenn man mal ignoriert, dass Du diese dämliche Meinung nicht ansatzweise begründest, ist deine Kritik dämlich, denn ie Syntax ist so ziemlich der am wenigsten interessante Teil einer Sprache. Interessant sind beispielsweise das Typsystem oder Features wie die Nebenläufigkeitsunterstützung. Das erkennt man unter anderem daran, dass sich Sprachen wie C oder gar C++ mit ihrer fundamental unlogischen Syntax durchsetzen konnten. Beispiel gefällig? Der Typ eines Funktionszeigers sieht beispielsweise so aus: void(*)(int). Wie deklariert man eine Funktion, die ein Argument dieses Typs nimmt und zurückliefert? Man sollte ja annehmen, dass der Typ zweimal in der Deklaration vorkommt, aber weit gefehlt: void (*signal(void(*)(int)))(int);, so sieht es aus! Und in C++ gibt es Kram wie den most vexing parse oder das Fiasko, das entstand, als man es für eine schlaue Idee hielt, kleiner/größer-Zeichen für Template-Parameter zu verwenden (was dann dazu führte, dass man an allen möglichen völlig sinnlosen Stellen die Schlüsselwörter typename und template einfügen muss).
Ganz ehrlich: Selbst wenn Rust eine schlechte Syntax hätte, so könnte sie auf keinen Fall so katastrophal wie die von C++ sein.
Ich sehe das mit dem Sprachsyntax anders. Wenn man schon eine neue Sprache erzeugt, würde ich darauf achten, den Tippaufwand für mehr oder weniger obsolete Zeichen niedrig zu halten. Wenn man größere Programme schreibt merkt man den Unterschied.
Außerdem sehe ich die Fokussierung bezüglich Nebenläufigkeit nicht so eng. Es gibt mittlerweile genug Libraries mit denen man komfortabel arbeiten kann. Mit den meisten mindestens genauso gut wie mit Rust. Meiner Meinung nach verhält sich Rust zu C wie R zu jeder x-beliebigen Statistiklibrary. Über den Sinn kann man sich prächtig streiten. Die Entwickler findens scheinbar geil, weil sie mit komplexen Sprachmitteln, die man noch aus C kennt scheinbar überfordert sind, aber mit der Performance von Scriptsprachen nicht zufrieden waren. Warum also keinen besseren (JIT-)Compiler für eine gute Scriptsprache wie Python entwickeln?
Natürlich weil Rust für die Allgemeinheit so viel besser ist, als andere Sprache!
Rust? Nie gehört mal gegoogelt. Sieht gar nicht so schlecht aus, Nebenläufigkeit mal richtig eingebaut und nicht nur ne lib rangeflickt. Sieht recht praktikabel und zeitgemäss aus, keine Altlasten. Könnte was werden hoffentlich über Firefox hinaus.