web-dev-qa-db-ja.com

人気のない言語での開発における問題(メンテナンスなど)

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

メンテナンスか気になりました。私のチームの誰もclojureやLISPを知りませんし、それらのような言語に興味もありません。

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

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

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

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

31
Hybrid

私はあなたの苦痛を感じます、私は関数型プログラミングでより多くのコーディングをしたいです(Haskellはとても楽しそうです!)。ビジネスコンテキストでまだ使用していないため、表面をひっかいただけのように感じます。

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

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

22
Tom Squires

私がチームを辞めるかどうかは確かです。 :)-誰もそれを維持しません。

おそらく誤り。

プログラムに価値があり、経営陣がその価値を見た場合、彼らはClojureを学び、維持することを誰かに課します。

いつも起こります。

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

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

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

17
S.Lott

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

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

10
quanticle

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

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

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

5
Spirit

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

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

Clojureを採用する利点:

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

Clojureを採用することの短所

  • サポートする1​​つの追加言語
  • 開発者は、速度を上げるためにより多くのトレーニングと時間を必要とするかもしれません

私がこの決定を評価するマネージャーである場合、いくつかの限られた実験を可能にするのに十分なClojureからのより高い生産性のアイデアがおそらくあり、チームがどれだけうまくやっているかが明らかになるまで決定を延期したいと思います。その場合、あなたはおそらく擁護者になり、優れた教師として行動し、他の人々を参加させる手助けをする必要があります。

4
mikera

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

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

3
kevin cline

君にもっと力を! LISPはコンピューター言語の祖先であり、現在でも関連しています。 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など)を使用している場合は、質問をする必要があると思います。しかし、私はあなたが古い伝統の最高のものを守ろうとしている人として考えられるべきだと思います:)

2
user23157

良い答えはたくさんありますが、ポイントを付け加えたいと思います。

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

将来問題が発生しないように、上司に十分な支援を求めることをお勧めします。

幸運を!

2

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

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

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

ですから(Forthは除く)、できるだけ多くのことを学び、マネージャーが同僚にはないかもしれない洞察を得るために信頼できるClojureのエキスパートになってください。そして、それについて気にしないでください...組織的なものについて心配することはあなたのマネージャーの仕事です。

2
Caleb

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

(私が理解したように、アプリの作成を開始したときにあなたが知らなかった)クロージャでそれを書くことができた場合、より親しみやすい/便利な言語を使用して書き直すことは問題ありません。クロージャは完全に異なる概念を使用しているため、別の言語に実装することは難しい場合があります。しかし、重要なのは、クロージャで新しいアプリを書くのが楽しいとしたら、使用した概念やアイデアを別の便利な言語に転送するのが面白いかもしれません。異なる言語とその機能を比較するのは楽しいかもしれません。あなたのケースはそのような実験に最適だと思います。

1
altern

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

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

1
sakisk

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

0
Paul Hiemstra

チュートリアルまたはトレーニングセッションを開催します。チームメンバーが専門家のように振る舞い、知識を増やしたくない場合、特にプログラムがますます重要になってきている場合は、手に負えないほどではありません。最悪の場合、あなたは経営陣に話しかけることができ、彼らはおそらくこの種のトレーニングセッションを義務付けることができます。あなたはぎくしゃくしたように見えるかもしれませんが、少なくともプログラムを維持する必要があるのはあなただけではありません。もう1つのオプションは、clojureを知っている2人目のプログラマーをチームに追加することを提案することです。

0
Rudolf Olah