人気のない言語を使用した開発の問題(メンテナンスなど)


31

私は私のチームでclojure(lisp)のみを使用してアプリケーションを開発しています。小さなアプリケーションとして起動します。問題ない。しかし、機能を備えてエリアを拡張しているため、重要なプログラムになりつつあります。

メンテナンスなどが心配でした。私のチームの誰もclojureやlispを知らず、それらのような言語にも興味がありません。

だから、人気のない言語でプログラミングをするのは間違っていませんか?(自分の楽しみのために?)もっと人気のある言語を使うべきですか?(少なくともpythonなど)

チームを辞めるかどうかはわかりますが、辞めるとは言いません。:)-誰もそれを維持しません。このプログラムは破棄され、一部は他の言語で開発されます。

clojureでの開発はとても楽しんでいますが、これは私のチームには向かないかもしれないと思いました。

これについてどう思う?人気のない言語を愛する多くのプログラマーは、同様の問題を懸念していると思います。


2
ローカル開発用の言語の使用に関するローカルプログラミング標準はありませんか?
-temptar

いいえ、そのような標準はありません。上司に伝えたところ、コメントなしで受け入れられました。私の上司は私の決定を尊重し、許可しただけだと思います。
ハイブリッド

12
「不人気」は大きな問題ではありません。「サポートされていない」の方がはるかに悪いです。例えば、LispはVB 6.0に勝ちました。
–MSalters

1
アプリが非常に重要な場合、彼らはあなたを彼らが何をしているのかを知っている誰かに置き換えます。現在のチームが限られているからといって、この言語を知っている人を見つけることができないわけではありません。
-JeffO

回答:


22

あなたの痛みを感じます。関数型プログラミングでもっとコーディングしたいです(Haskellはとても楽しそうです!)。私はまだビジネスの文脈でそれを使用していないので、私は表面をほんの傷付けただけのように感じます。

私はそれをすることに対して強くお勧めしますが。あなただけが知っている言語でプログラムする場合、あなただけがそれをサポートすることができます。すべてのサポートの問題に対処する必要がある場合を除き(他の期限/優先順位がある場合でも)、チームが知っているサポート可能な言語でコーディングします。休暇中に何かが壊れるとどうなりますか?昇進したい場合はどうなりますか?

少なくとも1人の他のチームメンバーを同乗させることをお勧めします。クールな言語機能をいくつか見せてください。乗船している2人で実行可能になり、すべてのサポートがロードされることはありません。


8
私は反対しなければなりません。別の言語が仕事に適したツールである場合は、それを使用します。現代のソフトウェア開発における偶発的な複雑さの多くは、プログラマーがアプリケーション全体を1つの言語に適合させることから生じています。たとえば、言語の同時実行性が不十分な場合は、別の言語を使用してメッセージの受け渡しを処理することが非常に適切です。
クォンタイル

@quanticle OPは、「人気のない言語でプログラミングをするのは間違っていませんか?(自分の楽しみですか?)」並行性などの別の言語を使用する強力なケースがある場合、サポートの問題に値することに同意します。
トムスクワイアズ

1
@quanticle:逆もまた真です。言語が多すぎる(つまり、複数の)場合、冗長性、重複した作業、不必要な車輪の再発明が発生します。
ThomasX

確かに、サポートは間違いなく重要です。他のチームメンバーを乗せるというあなたの提案が大好きです。私はそのようなことについて深く考えます。
ハイブリッド

17

チームを辞めるかどうかはわかりますが、辞めるとは言いません。:)-誰もそれを維持しません。

おそらく偽。

プログラムに価値があり、経営陣がその価値に気づいた場合、Clojureの学習と保守を誰かに任せます。

常に起こります。

このプログラムは破棄され、一部は他の言語で開発されます。

常に真実。なぜそれを心配するのですか?

最終的にすべてのプログラムを置き換える必要があります。


Clojureは、Hybridの同僚が誰もclojureを使用してメインストリーム言語のソースの(おそらく)い)翻訳を取得したくない場合でも、JVM、CLR、またはjavascriptのいずれかで実行されるためです。前者の場合はバイトコード/ msilを反映し、後者の場合はjsを直接キャプチャします。
ダンニーリー

2
@DanNeely-有効なメンテナンスパスは(非常にクールな)自作プロジェクトを介してClojureをILにコンパイルし、そのコードをC#に逆コンパイルしていると思いますか?誰かに言語を学ぶように依頼するよりも簡単だと完全に確信しているわけではありません。

@TheMouthofaCow私は、特に大規模なアプリケーションでは、Clojureを学ぶ方が簡単だと思います。しかし、大きなハンマーのアプローチにより、頑固な単一言語のプログラマーは、完全な書き換えを必要とせずに変更を加えることができます。最終的にリフレクションクラフトを削除するためのリファクタリングは、事実上の書き換えにつながる可能性があります。ただし、最初の新機能を追加する前にすべてを実行するのではなく、いくつかの変更に費用を分散させます。
ダン・ニーリー

ありがとうございました。私の頭の中ではとても助かります。どういうわけかこの状況を乗り越えると、そのような楽観的な考えも頭に浮かぶことができました。
ハイブリッド

1
最終的にすべてのプログラムを置き換える必要があります。」ああ、それは本当でしょうか。ディスクストレージが非常に高価なときに書き戻されたCOBOLコードが多数実行されており、Y2K(Y2Kを覚えていますか?)に耐えるためにパッチが適用され、現在も実行されています。実際、ほとんどのプログラムは、使用されずに若くして死ぬか、本質的に永遠に生きます。したがって、テクノロジーの選択は実際非常に重要です。あなたの子孫がこれらのプログラムを維持している可能性があるためです。
ロスパターソン

10

私はあなたが後継者になることを思い描いているまさにその場所にいます。私は、ClojureとErlangを使用して非同期検索を実行し、それを分散非同期検索を実行するプログラムに変えるレガシープログラムに機能を追加する仕事をしました。この仕事に就いたとき、私が知っていたのはPythonとJavaだけでした。

あなたへの私のアドバイス:仕事に最適なツールを使用してください。そのツールがClojureである場合は、そうです。プログラミング言語を学ぶのはそれほど難しくありません。手元のタスクに適した言語で書かれたコードは、その言語が意図していないことをしようとするコードよりも常に読みやすいです。後継者は、壊れたJavaよりもきれいなClojureを読む方が簡単です。


5

プロジェクトで新しい言語または「スタンドアロン」言語を採用することは、リスクが高いプロジェクトです。

システムのその部分に問題がある場合、またはその部分を却下する必要がある場合は、その言語に関するスキルを習得する必要があるプログラマを見つける必要があります。どちらの場合も、多くの時間を失いました。

場合によっては、この問題を使用して、将来のタスクによってチームのスキルを向上させ、多様化することができます。


私は同意します、clojureで開発されている利点の1つは、何らかの形で私のチームに影響していることです。また、これはリスクが高いことに同意します。注意する必要があります。ありがとうございました。
ハイブリッド

4

Clojureには現在小さなインストールベースがありますが(2007年に登場)、ほとんど人気がありません-実際、おそらく「ホットな」新しい言語です。あなたがそれを学ぶことに興味を持っている他の人を見つけることができなかったならば、私は驚きます。

とにかく、新しい言語を採用するかどうかは、常にビジネスに対する価値に基づいて決定する必要があります。次の行に沿って上司と話し合うことができます。

Clojureを採用する利点:

  • 使用する他の言語よりも生産性が高い-短い時間で提供する有用な機能の量と、より少ないコード行で証明されるように
  • Clojureで書かれた重要なアプリ(あなたのもの)が既に1つあるため、Clojureのスキルを構築してそれを維持する価値があります(高価な書き換えを行うよりも)
  • Clojureの使用は革新的であると見なされ、有能な開発者が会社に参加したり、会社に滞在したりする動機を与える良い方法になるかもしれません。

Clojureを採用することの欠点

  • サポートする追加の言語
  • 開発者は、より多くのトレーニングと時間が必要です。

私がこの決定を評価するマネージャーだった場合、Clojureの生産性を高めていくつかの限られた実験を許可し、チームがどの程度うまく行っているかが明確になるまで決定を延期することをお勧めします。その場合、あなたはおそらく擁護者であり、優れた教師として行動し、他の人を乗せる手助けをする必要があるでしょう。


3

心配しないで、幸せになってください。

明らかに、プログラムには価値があります。そうでなければ、拡張することはできません。成功したプロジェクトにおめでとうございます。おそらく、Clojureを選択したのは、そうすることで時間を節約し、それによって雇用主のお金を節約したからです。したがって、Javaで作成した場合、プログラムの保守はさらに困難になります。あなたの同僚がプログラムを行ごとにもっと簡単に理解できたとしても、彼らはそれを維持し拡張することができますか?


2

私はあなたにより多くの力を言うでしょう!Lispはコンピューター言語のGrandaddyであり、今日でも関連しています。あまり人気がないという事実は、C#とJavaの温かいふわふわしたIDEがなく、Windowsのメインコンパイラ実装がCygwin(yuk!)でのみ実行されるためです。開発はEmacsで行われているようで、LinuxまたはMacでより良くプレイできると思います。

このコーディングコンテストは、2010年のLispプログラムで優勝しました:http : //planetwars.aichallenge.org/

当時、彼らは約1億マイルからライブでデバッグできました:http : //www.flownet.com/gat/jpl-lisp.html

あなたは間違いなくメンテナンスの赤旗を放棄していますが、それは他の誰かに学習の機会を提供すると考えてください。悪夢のような言語(MUMPSなど)または退屈な言語(TCLなど)を使用している場合は、質問をする必要があると思います。しかし、私はあなたが古い伝統の最高を維持しようとしている男として考えられるべきだと思う:)


Tclは素晴らしい言語です。退屈だとは思いません。Tkinterを(Pythonで)見て、知っておくと良いツールであることを確認してください。
フランチェスコ

@Francesco-Tcl / TkではなくTclと言ったことを指摘しておきます。グラフィカルツールキットは素晴らしいかもしれません。数年前にTclを使用する場所で就職の面接に行ったので退屈だと言いました(彼らはジュニアプログラマーを受け入れて、非常に市場性のない言語を教えて退職するのを難しくしています)。 Tclは退屈に見えました。私はそれが機能的でないと言っているわけではありません(そうかもしれません)数日以上Tclを書かなければならないとしたら、結局腕を噛むことになってしまうと思いました。私はそれで立っています。

2

多くの良い答えがありますが、私はポイントを追加したいと思います。

私は似たような状況にありましたが、異なる言語でした。私はすべての難しい方法、すなわちガイダンスの不足のために試行錯誤の方法を学ぶ必要がありました。あなたがメンテナンス/拡張性を指摘した私の経験から私が学んだことは、ガイダンスの不足のために効果的なアプローチを知らないかもしれないので、問題になるでしょう。

今後、問題を回避できるように、適切な支援を求めて上司に相談することをお勧めします。

がんばろう!


2

場合によっては、Lispのような言語を使用すると、異なる言語では非常に難しい機能をより速くまたは簡単に実装できます。また、問題の見方にも影響を与え、チームの他の人には見られないような視点を提供します。より広い範囲の機能と可能なことのより広い視野を持つことは、それらを理解して使用することができる会社にとって非常に価値があります。ただし、これらの機能の価格は標準化の欠如です。

多くの企業は、組織の柔軟性を高めるために1つまたは2つの言語を標準化しようとします。開発者を再トレーニングすることなく、あるプロジェクトから別のプロジェクトに移動できます。また、マネージャーは、特定のプロジェクトで1つの言語を使用することの長所と短所を考慮する必要はありません。あなたが持っているすべてがハンマーであるとき、すべては釘のように見えます。

私が概説したように、両方のアプローチには特定の利点と欠点があります。よくあることですが、正しいアプローチも間違ったアプローチもありません。利点と欠点のセットを別のものと交換するだけです。会社は完全に一方向に進む必要はありません。ほとんどの作業をC ++またはJavaで行うのは完全に合理的ですが、ときどきLispまたはPythonに足を踏み入れて試してみて、何が機能するかを確認してください。それがあなたの会社がやっていることのように思えます。

(Forthではなく)前進し、できるだけ多くのことを学んで、Clojureのエキスパートになって、同僚が持っていない可能性のある洞察を上司が信頼できるようにします。そして、それについて悪く感じないでください...組織的なものを心配することはあなたのマネージャーの仕事です。


1

メンテナンスが問題を支配している可能性が高いと感じ始めたら、プログラムを別の(より便利な)言語で書き直すことをお勧めします。

クロージャーで記述した場合(アプリの作成を開始したときにわかりませんでした)、より使い慣れた/便利な言語を使用して書き直しても問題ありません。クロージャはまったく異なる概念を使用しているため、実装を別の言語に移行することは困難です。ただし、新しいアプリをクロージャで作成するのが楽しい場合、使用した概念やアイデアを別の便利な言語に変換すると面白いかもしれません。異なる言語とその機能を比較するのは楽しいかもしれません。あなたのケースはそのような実験に最適だと思います。


これはかなりやります。PerlまたはErlangでワンショットユーティリティのように見えるものを作成します。その後、ユーティリティになるほど頻繁に使用されるため、プロジェクトのメイン言語(JavaまたはC#)を使用して書き換えます。
TMN

1

「人気のない」言語でプログラミングを行うことは間違いなく間違いではありません。それらが人気があるかどうかを実際に気にするのはなぜですか?これについては@quanticleに完全に同意します。Clojureまたは他の非メインストリーム言語が、解決しようとしている問題に最適なツールである場合は、それを選択する必要があります。

メンテナンスが問題になる理由はわかりません。ユニット、統合などを適用すると、コードをテストして文書化し、関数型プログラミングに関心のあるプログラマーがプログラムを保守できるようになります。あなたの同僚がClojureを気にしないという事実は、それを使用しないことの良い議論ではありません、それがあなたが尊重する必要がある会社の方針である場合を除いて。


0

出発後もプログラムを継続するかどうかは、私の意見では関係ありません。プログラミング言語を使用して、上司が好きなものを作ることができます。継続を心配することは、上司がすべきことです。


3
継続を心配するのは上司の仕事です。しかし、上司が彼らが心配すべき問題を認識していることを確認するのはあなたの仕事です。上司と話し合う必要があります。
MarkJ

私は同意しますが、上司が何もしないと決めた場合、OPはそれについて心配するべきではありません。
ポールヒエムストラ

0

チュートリアルまたはトレーニングセッションを整理します。チームメンバーがプロフェッショナルのように振る舞い、知識を増やしたくない場合、特にプログラムがあなたの手に負えないほど重要になっている場合。最悪の場合、経営者と話をすることができ、この種のトレーニングセッションを義務付けることができます。あなたはジャークのように見えるかもしれませんが、少なくともプログラムを維持しなければならないのはあなただけではありません。もう1つの選択肢は、clojureを知っている2人目のプログラマーをチームに追加することを提案することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.