競争で開発に「lingua obscura」を使用している場合(なぜ)心配する必要がありますか?[閉まっている]


16

私はポール・グラハムのエッセイ-Beating The Averages(2003)を読んでいたのですが、彼が言わなければならないことは次のとおりです。

職務記述書のITフレーバーが多ければ多いほど、会社の危険性は低くなります。最も安全な種類は、Oracleの経験を必要とする種類でした。それらを心配する必要はありませんでした。また、彼らがC ++またはJava開発者を望んでいると言っても安全でした。彼らがPerlやPythonのプログラマーを望んでいたなら、それは少し恐ろしいことでしょう-少なくとも技術的な側面が本物のハッカーによって運営されている会社のように聞こえ始めています

さて、これは時代遅れのエッセイです。ただし、一般的ではない言語(C / C ++ / Java、C#)を使用することが「危険性低い」ことを確認できません。組織のプログラマーが開発言語に非常に精通している場合、彼らはまともなペースでコードを作成するのに等しく熟練する必要があります。実際、一般的でない言語を使用しても、長期的にはあまり多くのプログラマーが利用できないので、メンテナンス/拡張の問題に直面することはありませんか?

Quick-n-Dirtyシステムを作成する場合、一部の言語では他の言語よりも比較的早く離陸できることに同意します。しかし、ポール・グラハムのエッセイ/コメントは2012年以降に意味をなしますか?スタートアップが開発に典型的なIT言語を使用する場合、競争の心配を減らす必要があるのはなぜですか?

言語自体がどのように違いをもたらすのか、私は理解できません。私見では、重要なのは開発者の経験であり、フレームワークを利用できるので、特定の言語でコーディングするだけでなく、DRY(繰り返しはしない)です。

私が見逃しているのは何ですか?スタートアップがIT風味のない言語を選択した方がよいということを意味しますか(開発者が非常に熟練している場合でも)。この主張の背後にある(プログラミング)経済/市場力とは何ですか?

PS:「lingua obscura」は誰かの気持ちを傷つけることを意図したものではありません:)


4
コモディティ言語とパワー言語の間のギャップは依然として巨大です。たとえば、Lispを使用すると、Javaまたは同等の開発ペースを桁違いに上回る可能性があります。
SKロジック

4
@ SK-logic-それをバックアップするデータはありますか?
PhD

2
@Nupul、プログラミング言語の生産性に関する正式な研究はほとんどないので、事例証拠と私自身の経験にのみ頼ることができます。いくつかの論文を見てきましたが、後で掘り下げてみます。特にLispに関しては、他の言語とは異なり、文字通り任意の言語に安価で簡単に変換できるという点で異なります。そのため、他のすべての言語のすべての特性と利点を兼ね備えいますが、非パワー言語は固定的で狭いものです。生産性のギャップを説明できます。
SKロジック

8
@ SK-logic本当に?LISPの反対に反して、事実は、Emacsを除外する可能性があるLispを使用して構築された価値のあるプログラムは非常にわずかであり、主要なWebサイトはほとんどないことです。信じられないほどの生産性の向上を主張しているにもかかわらず、ほとんどのLISP支持者は皆話をし、歩きません。アカデミックな研究用のもの(研究に関するもので、生産品質に関するものではない)、趣味のプロジェクト、いくつかの会社で使用される内部のものだけがあります。
ヘジャズマン

2
@ SK-logic問題は、Lispで静的に型付けされた言語を実装する能力にもかかわらず、静的な型付けの欠如です。
ベンジャミン

回答:


16

ツールチェーンは症状です。

企業がOracleを選択すると、これは次のことを示します。

  • 投げるお金がたくさん
  • 大企業
  • 多くの管理層を持つ深くネストされた組織構造
  • 会社は「スーツ」によって運営されています:エグゼクティブタイプ、またはマーケティングと販売
  • 巨大なコードベースを持つ大規模なモノリシックソフトウェア製品を作成します
  • すべての正式なプロセス

会社がPythonを選ぶとき、これは次の兆候です。

  • 小さな若い会社
  • お金がない
  • フラットな階層
  • 会社はプログラマーによって運営されています
  • 小さなコードベースで小さな単一目的の製品を作る
  • ほぼ非公式のプロセス

これら2つが出会うとき、大企業の戦略は、リスクを回避し、その勢いを利用し、競合他社を売り切ることです。小さな競争の戦略は、まず市場への競争に勝ち、それから優れた製品であり続けることです。中小企業が適切な戦いを選択した場合、彼らはより速く、より反応的であり、リスクを回避する大企業の傾向を利用するだけで、大企業を簡単に上回ることができます。


1
Oracleを使用している会社は、おそらく5年後にはまだそこにいるでしょう!
ジェームズアンダーソン

3
@JamesAnderson:市場に応じて、はい。彼らが次のFacebookになろうとしているなら、おそらくそうではありません。彼らが大規模な保険会社であれば、おそらくはい。しかし、その後、あなたが大規模な保険会社である場合、ガレージのスタートアップはほとんど心配する必要のあるものではありません。
-tdammers

だから、Python / Ruby / Scala / Clojureのショップで働きたいように思えますが…。私の経験からすると、バックエンドを支払った場所はアップグレードが非常に遅い傾向があります。理由はわかりません。1つのバージョンを前に進めることの痛みは、多くの場合、複数のバージョンを前に進めることよりも穏やかです。有料ソフトウェアは「通常」移行を提供しますが、ほとんどの場合、その移行は通常バージョン間で行われます。
リグ

25

曖昧な言語を選択することは、スタートアップにおける技術的な自信がめったにないことを示します。一般的な知恵を捨てようとする企業は、ほとんどの企業が知らないソフトウェア開発について何かを知っているかもしれません。繰り返しますが、彼らは単なる欲求不満の人かもしれません。


1
確かに、それはまさにグラハムが「技術的な側面は少なくとも本物のハッカーによって運営されている会社のように聞こえ始めている、つまり少なくとも技術者が彼にとって本当の競争になるほど賢いかもしれない会社という意味です。
ロスパターソン

8
けれども今日では、「あいまいな言語を選択する」ことは、今日の流行病であるため、たいていは欲求不満の人です。
ヘジャズマン

2
また、会社が内向きであり、「構築するもの」ではなく「構築する方法」に焦点を合わせていることも示しています。そのような会社は多くの顧客を引き付けません。
ジェームズアンダーソン

13

PGのコメントは、言語の詳細よりも態度に関するものです。社内のITマインドセットを持つ人々は安全にプレイします。彼らは低リスク技術を使用し、リスクを最小限に抑え、低リスク戦略をとるプロセスを持っています。彼らは自分の昼食を心配して忙しくてあなたの食事を食べられません。

最先端の人々(python 2003)は心配するべき人です。彼らは空腹です。彼らはリスクを冒します。彼らは知的に興味があります。エキサイティングな新しい言語を習得するのが遅くなるのと同じタイプの人が、あなたがやる前にあなたの業界をひっくり返すかもしれないタイプです。


4
もちろん、彼らはまた、それらのいずれかによって全体飲み込まれてしまうかもしれません、彼らが取ったリスク...
マイケルBorgwardt

3
"" "最先端の人々(python 2003)は心配するべきものです。彼らは空腹です。彼らはリスクを冒します。彼らは知的に好奇心が強いです。" "-または彼らは最新の流行言語を使用するファッションの犠牲者です開発プラグマティックスとの接触はありません。
ヘジャズマン

2
両方とも本当です。数字ゲームです。しかし、極端な反対を取ります。異常値が爆発することがあります。時には成功します。しかし、COBOLを使用して競合他社が来るのを恐れることはありますか?
MathAttack

13

グラハムは、競技者としての彼にとっては、それほど危険ではないことを意味します。彼のポイントは、Java(または2003年のC ++、または1980年のCOBOL)がそれほど危険ではないということではなく、むしろそれが正常であり、そのようなスキルを探している企業が単なる平均的な競争相手である可能性が高いということです。しかし、あいまいな(より正確には、より強力であまり知られていない)言語の強力な人材を探している企業は注目すべき企業です。

そして、はい、今日それは完全に理にかなっています。それはグラハムがそれを書くずっと前に完全に理にかなっていた、我々はその頃Javaについて話をしなかった。


6
最近Javaについて話す必要がなかったとしたら。
-DeadMG

8

成功したスタートアップが最初に使用した言語を見てみましょう。私の頭の上の非科学的なリスト。誰もがエネルギーを持っていれば、適切なランダム化された研究はより良いでしょう。

  • Facebook:PHP
  • Stackexchange:C#
  • Google:JavaおよびPython
  • Twitter:Ruby on Rails

したがって、おそらく、FacebookとStackexchangeは競合他社に脅威を与えないと結論付けます。あまり説得力がありません。


ポール・グラハムが今日それを信じているかどうか見てみましょう。彼は、スタートアップに資金を提供するYCominatorを共同設立しました。ホームページは彼らの成功しスタートアップの一部を示します。私はそれらを順番に調べ、初期の頃に使用した言語を非常に迅速に調査しようとしました。

さて、比較的曖昧で間違いなく強力な言語を好む兆候がいくつかあります。ただし、Flash、PHP、およびクラシックASPもリストされています。


それはエッセイです。これは、彼が愛する比較的曖昧な言語にとって双曲線的な後押しであり、スタートアップはテクノロジーを愛し、できるだけ早く動くべきであるという根本的なアドバイスがあります。けっこうだ。


3
Reddit はLispで始まりました、Lispを理解できなかったため、Pythonのすべてを早い段階で書き直しました。
メイソンウィーラー

Googleでは、さまざまな目的で多くの言語を使用しています。彼らは、検索、クロムなどのコア製品のほとんどにC ++を使用しています。
mike30

@Mike質問はスタートアップに関するものです。Googleがスタートアップだったとき、最初に使用した言語はJavaとPythonでした。
MarkJ

6

平均的な開発者は、より強力なツールの価値を見ないため、平均的なツールを使用します。

「私たちの仮想Blubプログラマーが権力の連続性を見下ろしている限り、彼は見下ろしていることを知っています。Blubよりも強力ではない言語は、彼が使用していたいくつかの機能が欠けているため、明らかに強力ではありません。しかし、私たちの仮想のBlubプログラマーは、パワーの連続性を超えて別の方向を見ると、彼が見上げていることに気付きません。彼が見ているのは、単に奇妙な言語です。彼はおそらくそれらをBlubと同等のパワーだと考えていますが、他のすべての毛むくじゃらのものも同様に投げ込まれています。彼はBlubで考えているので、Blubは彼にとって十分です。」— Paul Graham、Beating the Averages

(エンファシス鉱山。)

言語が強力であればあるほど、使用する開発者は少なくなり、一般的ではなくなります。したがって、人気は、言語の力が平均からどれだけ離れているかを示す良い指標です。言語があいまいになればなるほど、それを使用する開発者は自分が何をしているかを知っており、既存の競合他社よりも正当な理由でそれを選択する可能性が高くなります。


3
必ずしもそうとは限りません。ツール、広告、既存のライブラリ、および質の高い教材も、言語の人気を変える可能性があります。
DeadMG

@DeadMGええ、もちろん、表現力だけが要因ではありません。私は、共通認識の言語はすべて、マーケティング、ツール、およびドキュメントに関してほぼ同等であると暗黙のうちに仮定したと思います。そうでなければ、それらはまったく合理的に比較されないでしょう。地獄、個人的な好みでさえ、それと多くの関係があります。Haskellがいくつかのタスクには適しているが、Cが本当に好きなのであれば、Cで何かをコーディングして、純粋にそれを実現できます。
ジョンパーディ

私は、共通認識の言語はすべて、マーケティング、ツール、およびドキュメントの面でほぼ同等であると暗黙のうちに推測したと思います...-そして、あなたはそうするのは間違っているでしょう。実際、間違っています。
ジムG.

1
@JimG。具体例を挙げていただけますか?TIOBEインデックスを考慮すると、トップ10のすべてとトップ50のほとんどは、これらの分野で比較できるようです。その上、人々は表現力が大きく異なる言語間の機能比較をうまく行っているので、他の側面についても同じことをしてみませんか?
ジョンパーディ

5

言語の選択は、スタートアップにとって難しいものです。非常に優れた新興企業の多くは、市場投入までの速度、創業者の親しみやすさ、将来の雇用の容易さのために「共通」言語を選択しています。

使用頻度の低い言語を選択すると、良い兆候が送信されます。開発を真剣に考え、専門のプログラマーを雇おうと懸命に努力する用意があると書かれています。ただし、これらは単なるシグナルであり、スタートアップは言語で選択する以上のものです。

一番下の行は、あなたの文脈で適切に評価されるべき言語の選択です。たとえば、Facebookは一般的に非常にスケーラブルな言語とは見なされないphpを使用して大丈夫でした


1
控えめな表現「FacebookがOK」の場合のみ+1
MarkJ

5

どんな基準でも、彼らが知っている他の言語で、あなたが知っている最高のプログラマーと最悪のプログラマーに尋ねてください。次に、前者を引き付ける求人広告を作成してください。答えがあります。アプリがC ++であっても、学校で教えられていない言語を知っている人を雇えば、より良いクラスのプログラマーを獲得できます。


2
-1:え?すみません、あなたは私を失いました。
ジムG.

4

競合他社が通常とは異なる言語を使用している場合、次の2つの点について心配する必要があります。

  • 生産性の利点 -異常な言語の長所と短所がありますが、競争が特定の問題領域に対して適切に選択されていると仮定すると、真の生産性の優位性があります。たとえば、Lispsのメタプログラミング機能は、かなりの量の自動コード生成をオンザフライで実行する必要があるあらゆる場所で、実質的かつ実質的な利点をおそらく提供します。
  • 文化的優位性 -優れたハッカーにとって興味のある珍しい言語を使用している企業は、おそらく優れたハッカーを惹きつけて保持する立場にあります。企業は従業員の質によって生きて死ぬので、これが長期的な人材の優位性につながるとすれば、それは本当に重要なことです。

これらの利点の両方は、特定の状況では適用されない場合があります。たとえば、スタートアップは、それが正しい選択であるかどうかを本当に考えずに、「クールだから」という言語を簡単に採用できます。彼らは簡単に採用ミスをすることができます。彼らは、「強力な」言語を乱用することで、自分自身を簡単に撃ち落とすことができます。

しかし、競合他社が異常な言語を選択してそれをうまく使用する場合場合は、手に重大な脅威を与える可能性があります。

この原則はかなり時代を超越しており、2003年と同じように今では真実だと思います-特定の言語とパラダイムは行き来するかもしれませんが、一般的で安全な汎用言語よりもあなたの問題領域に合った強力で表現力豊かな言語を選択するという考えですおそらく常に真剣に検討する価値があるでしょう。


0

顧客がロックされていない場合は、はい。強力な言語を使用している競合他社について心配する必要があります。

Java、C#、C ++は比較的冗長であり、編集/テストのサイクルが比較的遅くなります。これにより、最速の開発者でも機能を提供できる速度が制限されます。強力なメタプログラミングが組み込まれ、コンパイル時間がゼロのより表現力豊かな言語により、専門の開発者はできるだけ早く機能を構築できます。勝者に大きな報酬を与えて市場シェアを競っている場合、見つけられる最高の開発者を雇い、どんな言語を使っても彼らが最速に行くのは理にかなっています。後でスケーラビリティについて心配することができます。


1
-1:C#、Visual Studio、Resharper、LINQ、および.NET 4.0ライブラリで記述した場合、他の言語に比べて編集/テストのサイクルが遅くなりますか?
ジムG.

1
@Jim:コンパレーターが何であるかはわかりませんが、Ruby、Groovy、Clojure、および私がC#で使用した他の現代の動的言語と比較すると、開発スタイルと反復速度の両方の点でJavaとC ++に間違いなく近いです。YMMVですが、あなたのダウン票は特に価値があるとは思いません-OPの特性は概ね公平です。「表現力豊かな言語」を試してみると、何ができるのか驚くかもしれません
.....-mikera

@Jim G.、はい、Common Lispと比較して、C#の編集/テストのサイクルは遅いです。実行中のシステムを変更することはできません。また、C#ではるかに多くのコードを記述する必要があります。これにより、処理がさらに遅くなります。
SKロジック

1
いいえ。たとえば、Erlangはランタイムの変更を許可し、コンパイルされた言語です。
リッキークラークソン

2
@ JimG。、Common Lispはコンパイルされた言語です(ほとんどの実装は純粋なコンパイラーです)。インクリメンタルコンパイルでは、インタープリターと同じトリックをすべて実行できますが、個別のコンパイルではほとんど不可能です。
SKロジック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.