Ich entwickle eine Anwendung mit clojure (lisp) alleine in meinem Team. Es beginnt als kleine Anwendung. Kein Problem. Aber da es Features hat und den Bereich erweitert, wird es zu einem wichtigen Programm.
Ich habe mir Sorgen um Wartung oder so gemacht. Niemand in meinem Team kennt sich mit Clojure oder Lisp aus und interessiert sich auch nicht für Sprachen wie diese.
Ist es nicht falsch, in unbeliebten Sprachen zu programmieren? (Für meinen eigenen Spaß?) Soll ich populärere Sprachen verwenden? (Zumindest wie Python)
Ich bin mir sicher, wenn ich das Team verlasse - ohne zu sagen, dass ich gehe. :) - niemand würde es pflegen. Dieses Programm wird zerstört und einige werden sich mit einer anderen Sprache entwickeln.
Ich genieße es sehr, mich mit Clojure zu entwickeln. Ich habe gemerkt, dass dies möglicherweise nicht für mein Team ist.
Was denkst du darüber? Ich denke, viele Programmierer, die unbeliebte Sprachen lieben, haben sich mit ähnlichen Themen befasst.
Antworten:
Ich fühle deinen Schmerz, ich würde gerne mehr Codierung in der funktionalen Programmierung machen (Haskell sieht so lustig aus!). Ich habe das Gefühl, ich habe gerade erst die Oberfläche zerkratzt, weil ich sie noch nicht in einem Geschäftskontext verwendet habe.
Ich würde jedoch dringend davon abraten . Wenn Sie nur in einer Sprache programmieren, die Sie kennen, können nur Sie diese unterstützen. Sofern Sie sich nicht mit jedem Support-Problem befassen müssen (auch wenn Sie andere Fristen / Prioritäten haben), kodieren Sie in einer Sprache, die Ihr Team kennt und unterstützen kann. Was passiert, wenn im Urlaub etwas kaputt geht? Was passiert, wenn Sie befördert werden möchten?
Ich würde empfehlen, dass Sie mindestens ein weiteres Teammitglied mit an Bord nehmen. Zeigen Sie ihnen einige coole Sprachfunktionen. Mit zwei Personen an Bord wird es funktionsfähig und Sie werden nicht mit der ganzen Unterstützung belastet.
quelle
Möglicherweise falsch.
Wenn das Programm einen Wert hat und das Management den Wert sieht, wird es jemanden damit beauftragen, Clojure zu erlernen und zu warten.
Es passiert die ganze Zeit.
Immer wahr. Warum sich also darum sorgen?
Alle Programme müssen irgendwann ersetzt werden.
quelle
Ich bin genau an der Stelle, an der Sie sich Ihren Nachfolger vorstellen. Ich wurde beauftragt, Funktionen zu einem Legacy-Programm hinzuzufügen, das Clojure und Erlang für die asynchrone Suche verwendete und es in ein Programm für die verteilte asynchrone Suche umwandelte. Als ich in diesen Job kam, wusste ich nur, dass Python und Java.
Mein Rat an Sie: Verwenden Sie das beste Werkzeug für den Job . Wenn es sich bei diesem Tool um Clojure handelt, ist es auch so. Programmiersprachen sind nicht so schwer zu lernen. Gut geschriebener Code in einer Sprache, die für die jeweilige Aufgabe geeignet ist, ist immer leichter zu lesen als Code, der versucht, etwas zu tun, für das die Sprache nicht entwickelt wurde. Es wird für Ihren Nachfolger einfacher sein, sauberes Clojure zu lesen als entstelltes Java.
quelle
Das Akzeptieren neuer Sprachen oder einer " eigenständigen " Sprache durch eine Aufgabe ist ein hohes Risiko in einem Projekt.
Wenn dieser Teil des Systems ein Problem hat oder dieser Teil verworfen werden muss, müssen Sie einen Programmierer finden, der die Fähigkeiten dieser Sprache erlernen muss. In beiden Fällen haben Sie viel Zeit verloren.
In einigen Fällen kann dieses Problem verwendet werden, um die Fähigkeiten eines Teams nach zukünftigen Aufgaben zu verbessern und zu diversifizieren.
quelle
Clojure hat vielleicht eine kleine installierte Basis (es erschien 2007), aber es ist kaum unbeliebt - in der Tat ist es möglicherweise die "heißeste" neue Sprache, die es gibt. Es würde mich wundern, wenn Sie keine anderen Leute finden könnten, die daran interessiert sind, es zu lernen.
Auf jeden Fall sollte die Entscheidung , ob eine neue Sprache eingeführt werden soll, immer auf dem Wert für das Unternehmen beruhen . Sie können mit Ihrem Vorgesetzten die folgenden Punkte besprechen:
Vorteile von Clojure:
Nachteile der Übernahme von Clojure
Wenn ich ein Manager wäre, der diese Entscheidung bewertet, würde mir die Idee einer höheren Produktivität von Clojure wahrscheinlich gefallen, um einige begrenzte Experimente zuzulassen, und die Entscheidung aufzuschieben, bis klar ist, wie gut das Team damit umgegangen ist. In diesem Fall müssten Sie wahrscheinlich ein Anwalt sein, als guter Lehrer auftreten und die anderen an Bord holen.
quelle
Mach dir keine Sorgen, sei glücklich.
Offensichtlich hat das Programm einen Wert, oder Sie würden es nicht erweitern. Herzlichen Glückwunsch zu einem erfolgreichen Projekt. Vermutlich haben Sie sich für Clojure entschieden, weil Sie damit Zeit und damit Geld für Ihren Arbeitgeber gespart haben. Wenn Sie es in Java geschrieben hätten, wäre das Programm daher noch schwieriger zu warten. Selbst wenn Ihre Kollegen das Programm Zeile für Zeile besser verstehen könnten, könnten sie es dann pflegen und erweitern?
quelle
Ich würde dir mehr Macht sagen! Lisp ist der Urvater der Computersprachen und auch heute noch relevant. Die Tatsache, dass es nicht so beliebt ist, liegt meiner Meinung nach an der Tatsache, dass es nicht die warmen, flauschigen IDEs von C # und Java hat und die Haupt-Compiler-Implementierung in Windows nur unter Cygwin (yuk!) läuft. Die Entwicklung scheint in Emacs zu erfolgen, und ich denke, es funktioniert besser mit Linux oder einem Mac.
Dieser Programmierwettbewerb wurde 2010 von einem Lisp-Programm gewonnen: http://planetwars.aichallenge.org/
Früher konnten sie das Debuggen aus einer Entfernung von 100 Millionen Meilen durchführen: http://www.flownet.com/gat/jpl-lisp.html
Sie verzichten definitiv auf eine rote Fahne für die Wartung, stellen sich dies jedoch als Lernmöglichkeit für eine andere Person vor. Wenn Sie eine Albtraumsprache (wie MUMPS) oder eine mühsame Sprache (wie TCL) verwenden, sollten meiner Meinung nach Fragen gestellt werden. Aber ich denke, Sie sollten sich als einen Mann vorstellen, der versucht, das Beste der alten Traditionen aufrechtzuerhalten :)
quelle
Es gibt viele gute Antworten, aber ich möchte einen Punkt hinzufügen.
Ich war in einer ähnlichen Situation, aber mit einer anderen Sprache. Ich musste alles auf die harte Tour lernen, dh durch Versuch und Irrtum wegen mangelnder Anleitung. Was ich aus meiner Erfahrung gelernt habe, als Sie darauf hingewiesen haben, dass Wartung / Erweiterbarkeit ein Problem darstellen, da man möglicherweise keine wirksamen Ansätze kennt, weil es an Anleitung mangelt.
Ich schlage vor, Sie sprechen mit Ihrem Vorgesetzten, um angemessene Hilfe zu erhalten, damit Sie in Zukunft Probleme vermeiden können.
Viel Glück!
quelle
In einigen Fällen kann eine Sprache wie Lisp die Implementierung von Funktionen beschleunigen oder vereinfachen, die in einer anderen Sprache sehr schwierig wären. Es beeinflusst auch die Art und Weise, wie Sie Probleme betrachten, und gibt Ihnen eine Perspektive, die andere in Ihrem Team möglicherweise nicht haben. Ein breiteres Spektrum an Funktionen und eine breitere Sicht auf die Möglichkeiten können für ein Unternehmen von großem Wert sein, das diese verstehen und nutzen kann. Der Preis für diese Funktionen ist jedoch ein Mangel an Standardisierung.
Viele Unternehmen versuchen, sich auf eine oder zwei Sprachen zu standardisieren, weil dies ihnen mehr organisatorische Flexibilität gibt: Sie können Entwickler von einem Projekt zu einem anderen verschieben, ohne sie neu trainieren zu müssen. Sie verfügen über einen eingebauten Wissensvorrat über die Sprachen, die sie verwenden. und Manager müssen nicht die Stärken und Schwächen der Verwendung der einen oder anderen Sprache für ein bestimmtes Projekt berücksichtigen. Wenn Sie nur einen Hammer haben, sieht alles aus wie ein Nagel.
Wie ich bereits ausgeführt habe, haben beide Ansätze bestimmte Vor- und Nachteile. Wie so oft gibt es keinen richtigen oder falschen Ansatz. Sie tauschen nur eine Reihe von Vor- und Nachteilen gegen eine andere aus. Ein Unternehmen muss auch nicht ganz in die eine oder andere Richtung gehen. Es ist durchaus sinnvoll, die meiste Arbeit in C ++ oder Java zu erledigen, aber tauchen Sie von Zeit zu Zeit in Lisp oder Python ein, um sie auszuprobieren und zu sehen, was funktioniert. Es klingt so, als würde Ihr Unternehmen das tun.
Gehen Sie also weiter (aber nicht weiter), lernen Sie so viel wie möglich und werden Sie der Clojure-Experte, auf den sich Ihr Manager verlassen kann, um Einsichten zu erhalten, die Ihre Kollegen möglicherweise nicht haben. Und fühlen Sie sich nicht schlecht dabei. Die Sorge um die organisatorischen Dinge ist die Aufgabe Ihres Managers.
quelle
Ich würde empfehlen, Ihr Programm in einer anderen (bequemeren) Sprache umzuschreiben, wenn Sie das Gefühl haben, dass die Wartung mit hoher Wahrscheinlichkeit das Problem beherrscht.
Wenn Sie es geschafft haben, es abschließend zu schreiben (was Sie nicht wussten, als Sie mit der Erstellung Ihrer App begannen, wie ich es verstanden habe), ist es kein Problem, es in einer vertrauteren / bequemeren Sprache umzuschreiben. Closure verwendet völlig andere Konzepte und daher ist die Umsetzung möglicherweise schwierig in eine andere Sprache zu übertragen. Aber die Sache ist, dass, wenn Sie Spaß daran hatten, eine neue App zum Abschluss zu schreiben, Sie es vielleicht interessant finden, Konzepte und Ideen, die Sie verwendet haben, in eine andere bequeme Sprache zu übertragen. Es könnte Spaß machen, verschiedene Sprachen und ihre Fähigkeiten zu vergleichen. Ich denke, Ihr Fall ist perfekt für solche Experimente.
quelle
Es ist sicher nicht falsch, in "unpopulären" Sprachen zu programmieren. Warum interessiert es dich eigentlich, ob sie beliebt sind oder nicht? Da stimme ich @quanticle voll und ganz zu. Wenn Clojure oder eine andere Nicht-Mainstream-Sprache das beste Werkzeug für das zu lösende Problem ist, sollten Sie es auswählen.
Ich verstehe nicht, warum die Wartung ein Problem sein wird. Wenn Sie Unit, Integration usw. anwenden. Wenn Sie Ihren Code testen und dokumentieren, kann jeder Programmierer, der Interesse an funktionaler Programmierung hat, Ihr Programm warten. IMHO ist die Tatsache, dass Ihre Kollegen sich nicht für Clojure interessieren, kein gutes Argument dafür, es nicht zu verwenden, es sei denn, es ist eine Unternehmensrichtlinie, die Sie respektieren müssen.
quelle
Ob das Programm nach Ihrer Abreise fortgesetzt wird oder nicht, geht Sie aus meiner Sicht nichts an. Sie können die Programmiersprache verwenden, die Sie verwenden, um etwas zu machen, das Ihrem Chef gefällt, das sich für mich ziemlich gut anhört. Sich um die Fortsetzung zu sorgen, ist etwas, was Ihr Chef tun sollte.
quelle
Organisieren Sie ein Tutorial oder eine Trainingseinheit. Wenn Ihre Teammitglieder nicht wie Profis agieren und ihr Wissen erweitern möchten, insbesondere wenn das Programm immer wichtiger wird, als es Ihnen selbst überlassen ist. Im schlimmsten Fall können Sie mit dem Management sprechen, und es kann sein, dass diese Art von Trainingseinheit angeordnet wird. Sie sehen vielleicht wie ein Idiot aus, aber zumindest sind Sie nicht der einzige, der das Programm warten muss. Die andere Möglichkeit besteht darin, einen zweiten Programmierer, der sich mit Clojure auskennt, in das Team aufzunehmen.
quelle