Hallo allerseits! Etwas mehr als eine Woche später findet in Moskau die
RubyRussia- Konferenz statt. Im heutigen Interview sprach
Evrone- Entwickler
Mikhail Morgunov mit einem unserer Redner,
Markus Shirp , dem
Erfinder des beliebten
Ruby Mutation Testing- Tools.
Die erste Frage betrifft Mutant . Was müssen wir über dieses Tool wissen? Worum geht es in dem Bericht über RubyRussia?Ich werde die Geschichte des Mutationstest-Tools Mutant erzählen. Ich möchte dem Publikum Schlüsselkonzepte vorstellen: Die Menschen lernen verschiedene Ebenen der Berichterstattung, ihre Bedeutung und ihren Wert kennen.
Dies wird Licht in die Dinge in Ruby bringen, an die wir gewöhnt sind und die wir für richtig halten, aber tatsächlich gibt es Probleme darin. Weil Ruby uns sehr oft die großartige Gelegenheit gibt, uns in den Fuß zu schießen.
Wie haben Sie angefangen, Mutanten zu entwickeln?Diese Geschichte bezieht sich auf meine Arbeit an DataMapper und dessen nächste Implementierung von DataMapper 2, das schließlich als ROM bezeichnet wurde.
Projectlide Dan Kubb hat eine relationale Algebra-Bibliothek namens
Axiom geschrieben , um diese neuen Entwicklungen zu unterstützen. Als er Axiom schrieb, verwendete er die Strategie der "begrenzten Entwicklung". Es enthält viele Tools für die Arbeit mit Metriken und Mutationstests.
Das Tool, das wir dann für Mutationstests verwendeten, hieß Hackle. Er hatte bestimmte betriebliche und konzeptionelle Mängel. Einmal dachte ich: "Verdammt, ich werde nicht einmal versuchen, es zu reparieren! Schreiben wir einfach einen neuen und lösen alle Probleme beim Skalieren von Mutationstests, die wir in DataMapper2 haben. “
Das war vor 5 oder 6 Jahren, als Mutant mehrere Iterationen durchlief. Sie alle hängen nicht mit meinem Wunsch zusammen, Open Source zu schreiben, sondern mit den Anforderungen der kommerziellen Projekte, an denen ich gearbeitet habe. Die Entwicklung von Mutant hängt also stark von meinen Beratungstätigkeiten ab.
Jedes Mal, wenn ich ein neues Ruby-Projekt starte, muss ich mir jedes Codes sicher sein. Und Mutant ist das Werkzeug, das ich dafür benutze.
Das heißt, gewerbliche Kunden möchten Mutant verwenden?Ja Dies wird durch die Tatsache bestätigt, dass alle Funktionen, die Sie sehen, Funktionen sind, die gewerbliche Kunden in den letzten Jahren von mir verlangt haben. Es gibt einige Funktionen, die nicht in der öffentlichen Version enthalten sind, da der Client mir nicht das Recht eingeräumt hat, ihren Quellcode zu öffnen. Aber manchmal sagt der Kunde: „Es ist kein Problem, wenn jemand davon profitiert“, was mir sehr gefällt.
Im Moment habe ich DataMapper2 verlassen. Ich habe nie Features nur zum Spaß geschrieben. Dies sind nur Nebenwirkungen der kommerziellen Nutzung.
Ich persönlich bin nicht in Ruby verliebt, es ist nur ein Werkzeug für mich. Mutant ist ein Weg, um Ruby effizienter zu machen. Die Schwelle für die Eingabe von Mutant ist sehr hoch, aber wenn Sie anfangen, hilft es sehr. Der Schulungsbedarf ist etwas, das man ertragen muss.
Dies liegt in der Natur der Dinge, wenn ein kostenloser Edelstein verwendet wird :)95% der kostenlosen Edelsteine sind nur Hobbyprojekte. Sie sind nicht für den kommerziellen Gebrauch geeignet. Die Autoren machen sie aus persönlichem Interesse. Ich beschuldige sie nicht. Ich rate dem Entwicklungsteam von kommerziellen Projekten jedoch, dies zu berücksichtigen, wenn sie etwas von RubyGems übernehmen.
Ich habe nur die README Mutant-Datei auf GitHub gelesen. Aber bisher habe ich wenig verstanden.Aus diesem Grund muss ich mehr Zeit damit verbringen, Readme-Dateien und zusätzliche Einstiegsdokumentationen zu schreiben.
Aus persönlichen Gründen schwieg ich drei Jahre lang in der Gemeinde: Ich hatte zwei weitere Kinder und zog in ein anderes Land.
RubyRussia ist die erste Konferenz nach der Pause, bei der ich mit der Community sprechen kann. Und ich möchte die Zeit, die ich für die Erstellung meines Berichts und Workshops aufgewendet habe, als Materialquelle für zusätzliche Dokumentation nutzen.
Was erwartet uns?Am 6. Oktober wird es einen Vortrag über Mutant geben und am 7. Oktober einen Workshop. Es basiert auf realen Beispielen aus einem Open-Source-Projekt, das Rails und Rspec verwendet.
Soweit ich weiß, verwenden Sie eine andere Programmiersprache, nicht Ruby?Dies ist nicht ganz richtig. Ich benutze oft Ruby, aber nur, wenn es einen guten Grund dafür gibt. Dies ist normalerweise die Rettung älterer Anwendungen, die unter dem Gewicht ihres eigenen Codes abstürzen werden.
In diesem Fall können Sie Ruby nicht einfach in einem Schritt ersetzen. Inkrementelles Refactoring / "Würgen" von Ruby-Code ist meine Hauptaufgabe. Und während dieses Prozesses befinden sich meine Hände in Ruby an meinem Ellbogen, und hier ist Mutant mein Hauptwerkzeug zum Verknüpfen von Refactoring- / Änderungszyklen.
Welche Sprachen bevorzugen Sie?Meistens Haskell. Für mich ist es die ausgewogenste Sprache in Bezug auf Benutzerfreundlichkeit und Eignung für die Entwicklung von Programmen von kommerziellem Wert. Haskell Type Checker garantiert viele Eigenschaften sofort; Eigenschaften, für die ich in Ruby kämpfen müsste.
Es gibt mehrere andere coole Sprachen und Erweiterungen am Horizont. Ich denke, dass abhängige Typen "Korrektheit nach bestandener Typprüfung" auf eine neue Ebene bringen werden.
Denken Sie, dass Ruby und Rails eine Zukunft haben?Ruby und Rails haben eine niedrige Einstiegsschwelle. Dadurch können Benutzer schnell den Punkt erreichen, an dem die Anwendung Geld verdient. Während die Leute glauben, dass Ruby und Rails diese Qualität haben, haben diese Technologien eine Zukunft.
Eine kleine ketzerische Aussage: Rails-Anwendungen können aufgrund der vom Framework geerbten Komplexität aufgrund der von den Erstellern der Sprache und des Frameworks getroffenen Entscheidungen nicht wachsen. Diese technische Pflicht ist jedoch in Ordnung, wenn Sie einen geschäftlichen Grund dafür haben. Haben Sie einfach einen vorgefertigten Plan für die Rückzahlung dieser Schulden.
Was denkst du über Rust?Ich mag ihn wirklich. Jetzt benutze ich es nicht mehr oft - es gab keinen guten Grund, da Arbeitsprojekte die Vorteile von Rust im Vergleich zu anderen Optionen, die ich hatte, nicht nutzen konnten.
Ich mache hauptsächlich Backend-Entwicklung. Oder nennen wir es "massives RPC mit Subjektlogik". Hier ist es zunächst wichtig, die Richtigkeit des Programms zu gewährleisten, aber erst im zweiten Fall ist seine Leistung. Rost ist rechnerisch sehr effizient, erfordert jedoch eine manuelle Steuerung von Teilen auf niedriger Ebene. Dies erfordert Zeit, die besser für die Optimierung von E / A-Mustern auf hoher Ebene (RPC-Gruppierung, Minimierung von Roundtrips, Überprüfung der Transaktionseigenschaften usw.) aufgewendet wird. Es ist besser, dies zu tun, bevor einzelne Grundelemente auf Kosten der Sprache optimiert werden, was mir mehr Möglichkeiten zur Optimierung gibt.
Wenn ich etwas rechenintensiveres machen würde, zum Beispiel einen Video-Codec, wäre Rust das Werkzeug, das ich gewählt habe.
Und die letzte Frage. Was können Sie Programmieranfängern raten?Finden Sie als Programmieranfänger ein Haustierprojekt und integrieren Sie es in Interessen außerhalb der Programmierung. Dies muss lange genug mitgerissen werden, bis das Programmieren Geld verdient.
Sehr interessant! Das sollte funktionieren!Ja, so habe ich angefangen :)
Toller Tipp! Danke für das Interview! Wir sehen uns bei Ruby Russia.Wir warten auch auf der Konferenz auf Sie! Übrigens sind weniger als 30 Tickets übrig, daher empfehlen wir nicht, die Registrierung zu verschieben, wenn Sie sich entscheiden zu gehen. Und wenn Sie sich eingehender mit Mutant befassen möchten, warten wir beim Workshop am 7. Oktober auf Markus. Alle Details auf der
Website .
Sie können das Original in englischer Sprache unter
hype.codes lesen .
Und hier ist ein Ort, um den großartigen Unternehmen zu danken, die das Ruby-Hauptereignis in Russland unterstützen:
Komplementärin -
ToptalGold Partner -
Gett und
CookpadSilberpartner -
Instamart ,
UCHi.ru ,
JetBrains und
QleanBronze Partner -
Bookmate und
InSales