Interview mit Steve Klabnik: Wie Rust im Vergleich zu anderen Sprachen abschneidet und mehr

Vergleich der Programmiersprache Rust mit C++, Ocaml, Go und Erlang

Mit 273 Repositories auf GitHub ist Steve Klabnik bekannt für seinen Beitrag zu Open-Source-Projekten, in denen er in 15 Organisationen tätig ist. Er ist derzeit Platz 32 auf der Liste aller Rails-Mitwirkendenund hat den Leitfaden geschrieben Rost für Rubyisten. Rust ist eine relativ neue Programmiersprache zur Entwicklung zuverlässiger und effizienter Systeme. Seit Juni 2014 ist Steve Mozilla beigetreten, um an der zu arbeiten offizielle Rust-Dokumentation.


Rost

Würden Sie Programmierneulingen empfehlen, Rust zu lernen, oder sollten sie zuerst eine andere Sprache wie Ruby lernen?

Rubin
Ich denke, dass sie alles verwenden sollten, was sie begeistert. Wählen Sie etwas, alles, und probieren Sie es einfach aus. Wenn es dir nicht gefällt, probiere etwas anderes aus. Menschen sind alle verschieden, und hier gibt es keine einzige Antwort. Abgesehen davon denke ich, dass Ruby eine fantastische erste Sprache ist. Rust hat einen erheblichen Mangel an Ressourcen, weil es so neu ist, und daher ist es als Erstsprache viel schwieriger.

Sie haben zuvor gesagt, dass Rails es schwierig macht, “echte” TDD- und Unit-Tests durchzuführen. Wie schneidet Rust ab?

Rust hat Unit-Tests direkt in die Sprache eingebaut, aber es sind nur die Grundlagen: Asserts und so. Wir erwarten, dass andere ordentliche Sachen darauf aufbauen, wenn die Community wächst.

Wie würden Sie Rust mit anderen Systemprogrammiersprachen wie C++ vergleichen? Warum sollte es Ihrer Meinung nach C++ ersetzen?

Historisch gesehen gab es bei Programmiersprachen einen Kompromiss: Sie können eine Sprache haben, die sicher ist, aber Sie geben die Kontrolle auf, oder Sie können eine Sprache mit Kontrolle haben, aber sie ist unsicher. C++ fällt in die letztere Kategorie. Moderneres C++ ist wesentlich sicherer als früher, aber es gibt grundlegende Aspekte von C++, die es unmöglich machen, jemals wirklich sicher zu sein. Rust versucht, Ihnen eine Sprache mit 100%iger Kontrolle zu geben, die jedoch absolut sicher ist. Dies geschieht durch umfangreiche Überprüfungen zur Kompilierungszeit, sodass Sie zur Laufzeit nur geringe (und oft keine!) Kosten für seine Sicherheitsfunktionen zahlen. Bei diesem Sicherheitsproblem geht es jedoch nicht nur um die Bequemlichkeit des Programmierers. C++ ist in einer Weise unsicher, die schwerwiegende Sicherheitslücken verursacht.

Zum Beispiel beim letzten Pwn2Own-Wettbewerb, Firefox hatte einige schwerwiegende Sicherheitslücken, da C++ unsicher ist. Und die anderen Browser auf dieser Seite auch. Viele dieser Fehler wären Kompilierzeitfehler gewesen, wenn diese Browser in Rust geschrieben worden wären, und die Laufzeitfehler hätten keine Sicherheitslücke erzeugt.

Für Anwendungen, die eine hohe Leistung erfordern, wählen die Leute C++, aber C++ ist definitiv zu kompliziert, und Java könnte zu schwergewichtig sein, da es auf JVM läuft. Es gibt D, das versucht, ein besseres C++ zu sein, aber anscheinend nur wenige interessiert. Jetzt gibt es Go, das abhebt. Glaubst du, dass Rust Go an diesem Ort schlagen könnte?

geh lang
Rust und Go sind sehr unterschiedliche Sprachen und ein Vergleich macht wenig Sinn. Es ist, als würde man fragen, ob Ruby und C konkurrieren. Nun, es stimmt, dass es einige in C geschriebene Programme gibt, die in Ruby geschrieben werden könnten, aber die Sprachen gehen grundlegend unterschiedliche Kompromisse ein. Es gibt bestimmte Arten von Anwendungen, in denen Rust gut funktionieren kann, während Go dies niemals kann. Zum Beispiel ist das Schreiben eines Ruby-Gems in Rust ziemlich einfach, aber das ist mit Go nicht möglich. Zwei Müllsammler, die sich um das Gedächtnis des anderen streiten, sind eine schlechte Zeit. Allerdings sorgt Rust dafür, dass Sie sich um viele Details kümmern, über die Sie sich keine Gedanken machen müssen, wenn Sie in Go programmieren. Wenn Sie also mit den Nachteilen von Go zufrieden sind, ist das Programmieren in Go sinnvoller als in Rust. Wie immer hängt es wirklich davon ab, was Ihre Anforderungen sind und welche Kompromisse Sie bereit sind einzugehen.

Wenn wir nur über Sicherheit, Leistung und funktionale Programmierung sprechen. Glauben Sie, dass Rust besser sein könnte als OCaml? Oder würde Rust damit beginnen, die Menschen für die funktionale Programmierung zu sensibilisieren? Da die Leute über funktionale Programmierung sprechen, wählen nur wenige wirklich eine funktionale Programmiersprache, um Dinge zu entwickeln.

ocaml

Rust ist vage funktional, aber es ist nicht ausgewachsen. OCaml ist eine bessere funktionale Sprache als Rust. Das heißt, es könnte es einfacher machen, mit der Verwendung einiger funktionaler Konzepte zu beginnen, da Sie nicht aufs Ganze gehen müssen. Aus diesem Grund ist OCaml oft einfacher als beispielsweise Haskell.

Rust ist eine ziemlich ehrgeizige Sprache, die versucht, leistungsfähig zu sein, also in gewissem Maße auf niedrigem Niveau, während sie gleichzeitig sicher und bequem bleibt. Bei der Systemprogrammierung dominiert C alles andere. Glauben Sie, dass Rust C an einer solchen Stelle ersetzen könnte?

Absolut, Sie können Rust überall dort verwenden, wo Sie C verwenden würden. Es gibt praktische Gründe, warum Sie sich dagegen entscheiden könnten, zum Beispiel gibt es nicht annähernd so viele Bibliotheken. Aber Rust kann gut mit C-Bibliotheken zusammenarbeiten …

Für Parallelität scheint Rust alles von Go und Erlang zu unterstützen. Glaubst du, Rust könnte sie an diesen Stellen ersetzen?

erlang
Diese Frage ist also kompliziert und verändert sich. Wir entfernen derzeit die grüne Threading-Unterstützung von Rust, da 1:1-Threads als Standard für eine Systemsprache sinnvoll sind. Sie werden jedoch in einer Bibliothek verfügbar sein. Rust hat aufgrund seines Eigentumsmodells einige starke Vorteile in der Nebenläufigkeitsabteilung. Beispielsweise ist die gemeinsame Nutzung eines veränderlichen Zustands über eine Parallelitätsgrenze hinweg ohne Mutex a Kompilierzeit Fehler in Rust. Das ist super groß auf der Korrektheitsseite. Erlang ist der König in diesem Bereich. Wenn Sie sich also einen Garbage Collector leisten können und Ihnen die exzentrischere Syntax von Erlang nichts ausmacht, ist es immer noch führend beim Erstellen widerstandsfähiger Software.

Können Sie sich vorstellen, Rails mit dem, was Sie von Rust gelernt haben, zu verbessern? Was sind deine Pläne für die Zukunft?

Meine Arbeit dreht sich heutzutage immer weniger um Rails, also erwarte ich das auch nicht. Man weiß aber nie! Mein Plan ist es, das Rust-Ökosystem weiterhin auf jede erdenkliche Weise zu unterstützen. Das bedeutet vorerst, weiterhin mit Mozilla zu arbeiten, aber ich bin kein Orakel. Alles kann sich ändern.😃

Wie hat sich die Philosophie auf die Art und Weise ausgewirkt, wie Sie programmieren?

Im Allgemeinen denke ich mehr über das Meta-Zeug rund um meinen Code nach als früher. Zum Beispiel verbringe ich viel mehr Zeit damit, darüber nachzudenken: „Ist die Software, die ich entwickle, ethisch vertretbar?“ oder “Gibt es andere Betrachtungsweisen?” Ich habe auch festgestellt, dass bestimmte Verbindungen produktiv sind, wenn ich versuche, beide Themen zu verstehen. Sie informieren sich gegenseitig. Zum Beispiel hat mir Platons „Theorie der Formen“ geholfen, OOP zu verstehen, und funktionale reaktive Programmierung hat mir geholfen, die Prozessphilosophie zu verstehen.

Welche Projekte finden Sie inspirierend?

Tor

Wenn ich mich für einen entscheiden müsste, müsste ich sagen Tor. Es ist ein Projekt, das so vielen Menschen geholfen hat und für die Welt so lebenswichtig ist.

Was sind deine Lieblingswerkzeuge?

95 % der Software, die ich verwende, befindet sich in dieser Liste: vim, bash, Feuerfuchs, tmux, irsi, gitund xmonad. Ich benutze sie für alles.

Obwohl Sie hauptsächlich an Open-Source-Projekten arbeiten, scheinen Sie dem gegenüber eine negative Haltung einzunehmen, wenn Sie sagen, Open Source sei eine megakapitalistische Verschwörung. Können Sie Ihre Meinung konkretisieren?

Haha, das Pull-Zitat von Dieser Artikel ist einer der am meisten missverstandenen von mir. Wenn ich „Verschwörung“ sage, meine ich nicht einen Haufen Leute in einem Raum, die böse Pläne schmieden. Ich meine es im weiten Sinne: Eine Reihe von Menschen profitiert davon, die Idee von Open Source fortzusetzen. Wenn Sie mit der Geschichte des Begriffs „Open Source“ nicht vertraut sind, Dieser Artikel ist ziemlich gut. Aber im Grunde basierte die Freie-Software-Bewegung auf einem ethischen Imperativ.

“Open Source” ist eine ähnliche Idee, der Ethik beraubt und neu verpackt, damit die Unternehmen davon profitieren, nicht die Benutzer. Ich habe mich an Open Source beteiligt, weil es eine gute Möglichkeit ist, die Welt zu verändern, aber das bedeutet nicht, dass ich nicht verstehe, dass viele andere Leute eine Menge Geld mit der Arbeit verdient haben, die ich ihnen kostenlos zur Verfügung gestellt habe. Wenn ich diese Arbeit nicht umsonst gemacht hätte, hätten sie stattdessen jemand anderen dafür bezahlen müssen, möglicherweise sogar mich! Das ist nur die Realität der Situation.

Sie haben viele starke Meinungen über den Kapitalismus und seine Beziehung zur Technologie. Was sind Ihrer Meinung nach Möglichkeiten, wie Technologie eine bessere Welt schaffen kann, und glauben Sie, dass es möglich ist, dass Technologie von der Förderung des Kapitalismus abweicht?

Technologie und Kapitalismus gingen schon immer Hand in Hand. Die Ludditen zum Beispiel machten Textilausrüstung kaputt, weil sie die Auswirkungen der Technologie auf ihre Arbeit sahen. Ich bin kein Maschinenstürmer, aber ich bin mir auch sehr bewusst, dass meine Rolle als Programmierer darin besteht, andere aus ihren Jobs zu automatisieren. Also, wohin gehen wir von hier aus? Nun, ich würde gerne glauben, dass die Leute mit genügend Automatisierung das nicht tun werden brauchen genauso viel zu arbeiten. Und das müssten wir auch nicht, außer dass der Gewinn aus meiner Automatisierungsarbeit nicht von mir einbehalten wird, sondern von meinem Arbeitgeber.

Eine einfache Art, darüber nachzudenken, ist folgende: Wenn ich eine Einheit Software pro Tag erstelle und dann einige neue vim-Tastaturkürzel lerne, und das lässt mich zwei Einheiten Software pro Tag erstellen, muss ich immer noch acht Stunden pro Tag arbeiten Tag. Ich kann nicht plötzlich zu viert anfangen und das gleiche Geld kassieren, weil ich nach Stunden bezahlt werde, nicht nach meiner Produktivität. Und ebenso, wenn ich in eine Fabrik komme und eine Software für Roboter schreibe, die die Arbeiter ersetzen, wird die gleiche Arbeit erledigt, aber anstatt dass sie sich die Zeit nehmen können, sind sie stattdessen arbeitslos. Ich wünsche mir eine Welt, in der wir Menschen mehr Freizeit haben, um unsere Leidenschaften, Träume und Wünsche zu erforschen. Die Technologie kann diese Welt aufbauen, aber der Kapitalismus kann das niemals. Naja, zumindest ist es noch nicht das Endspiel 😉

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *