あらゆる目的に役立つ「ユニバーサル」プログラミング言語が存在できないのはなぜですか?[閉まっている]


57

既存のすべてのプログラミング言語の最高の機能を組み合わせて、ユニバーサルプログラミング言語に適合させてみませんか?


23
「ベスト」という用語は主観的なものであるため、普遍的に受け入れられるベストはありません。もちろん、すべてのプラットフォームにわたる広範な開発に適した言語はかなりあります。C ++とJavaが主な2つです。
GrandmasterB

5
@GrandmasterB C#を忘れた
ダニエルリトル

15
それは「C」と呼ばれています、あります
マーティンベケット

9
種としての我々したがって、我々がします、(私たちの個性のおかげで)同意する生得的な能力を持っている決して普遍的に必要とされるものに同意しない、ので、そこになります決して一つでない(少なくともない人間によって作成された1!)
ニム

9
普遍的なプログラミング言語ですか?誰もが何年も前に切り替えた普遍的な人間の言語に似ていますか?
キラレッサ

回答:


116

同じ理由で、鶏肉を彫るためにスイスアーミーナイフを使用しないでください...

http://upload.wikimedia.org/wikipedia/commons/thumb/4/48/My_swiss_army_knife.JPG/800px-My_swiss_army_knife.JPG

スイスアーミーナイフには、一般にブレードの他に、ドライバーや缶切りなどのさまざまなツールがあります。これらのアタッチメントは、ピボットポイントメカニズムを介してナイフのハンドル内に収納されています...

ナイフのデザインとその柔軟性により、世界的に認知されています...


26
同じ理由で、ドラッグレースにミニバンを持ち込まないでください。同じ理由で、水鉄砲を決闘に持ち込まない。
クリス

19
@クリスそれが水鉄砲の決闘である場合はどうなりますか?
さびた

44
同じ理由で、死が待ち構えているとき、あなたはシチリア人と一緒に行くことはありません。
さびた

6
あなたが家を建てるのに必要なすべてのことをしたスイスアーミーナイフを持っていたなら、それはどれでも良いでしょうか?
ブラッドメイス

4
この答えは恐ろしい例えです。おそらくあなたが書いたなら:フランス語は英語とは異なる表現の忠実度を許しているので、私はその類推をより好んだかもしれません。しかし、コンピューター言語は「モノ」でも人間の言語でもありません。正解は:わからない。人間がどのように論理を表現し、この時点でどのように到達するかについて、より多くの洞察が必要です。さらに、一部の言語は「メタ言語」であり、他のDSLを表現できます。これらを質問に含める必要がありますか?
ディベッケ

80

なぜなら

  1. 誰もがすべてのレガシーコードを書き直したいとは思いません。
  2. すべての目的に同意するのは難しい
  3. 目的の包括的なリストをまとめると、構築する前に目的が変更されます。
  4. 誰かが新しい目的のために完全に異なる言語を始めるでしょう。
  5. マイクロソフト
  6. 林檎
  7. オープンソース
  8. すべてのBabel Fishで何をしますか?
  9. SQLをユニバーサルにすることさえできませんでした。

すぐに止まりました。ha-ha-only-seriousの「トップ10」リストの1つを期待していました。
ジェフリーハンティン

4
少なくとも今のところ、「バベルの魚を救う」キャンペーンを防ぐために+1。くそヒッピー。
さびた

2
バベルフィッシュについては、寿司を作ってください!
ムアディブ

1
ポイント1については、全てのレガシーコードは、最終的に再書き込みする必要がありますどちらかとにかくコード/ライブラリの最新の流行を使用したり、サポートコストのとんでもない量なしで効果的に実行することができません。
マイケル14年

38

プログラミングにあるのは、非常に大きな問題領域です。このドメインは非常に多くの方向に広がっています。

これが、組み込みフライトコントローラーがCで記述され、WebサイトがPHP、Java、Rails、.NETおよびその他のホストで記述されている理由です。

組み込みのフライトコントローラーには、動作する約128kのメモリがあり、その上にコードが未処理の例外を取得すると飛行機がクラッシュし、200人が死亡し、$ 1Bのチューニングを求めて訴えられ、エンジニアを全員に送らなければなりません世界中の空港で、1日1,000万ドルの顧客を失う地上の航空機を修理します。非常にタイトで、間違った動作をする可能性のある少数の可動部分を持つ言語で作業する必要があります。

私のWebアプリケーションでは、数GBのメモリを使用できますが、ネットワーク速度は制限されています(毎日程度は低いですが、これはおそらくWebの最大の制限です)。たくさんの機能を提供し、できるだけ速く送信できる出力を生成する言語を検討します。私のサイトがダウンしたかどうかはあまり気にしません。おそらくいくつかの売上(100ドル)を失い、爆撃したユースケースにパッチを当てる必要がありますが、大したことはありません。

Webサイトは15年以上にわたってCで記述されていません(誰もcgiスクリプトを実行していますか?)、そして私の知る限り、フライトコントローラーはC ++を調べ始めたばかりですが、それでも非常に制限された方法です。


3
実際に収益を上げているほとんどのサイトは、大幅なダウンタイムが発生すると、100ドル以上を失います。それが生死にかかわる状況に匹敵することを示唆するものではありませんが、それでも、これはリスクを少しだけ軽視しています。
アーロンノート

3
Facebookがいかにおかしいのかご存知ですか。彼らは最近、37分ごとにコードをプッシュすることを投稿しました。彼らのサイトは何らかの形で絶えず閉鎖されており、彼らのバックログには100万枚のチケットがあります。重要なのは、誰も死ぬことのないウェブです。あなたはいくつかの売り上げを「失う」かもしれませんが、全体としてはそれほど大きなリスクではありません。あなたが直面している問題のほとんどは、全体のみベース少数の顧客に影響を与えないだろうしている
ビル・リーパー

24
  1. あなたのガレージ(またはあなたの両親のガレージ)に行きます。
  2. ツールボックスを開きます。
  3. 複数のツールが表示される場合、それが質問にどのように当てはまるかを考えてください。

ツールボックスがない場合、またはドライバーのビットが中空のハンドルにある小さなハンマーを1つだけ持っている場合は、同情します。

真剣に。自動車店に行く場合、メカニックは彼のツールチェストにたった1つのdo-it-allツールを持っていますか?彼(または彼女)は、さまざまな自動車修理タスクを実行するために特別に設計されたプロ級のツールを備えたプロです。

同様に、プロのソフトウェア開発者は、取引を行うための十分なツールセットを所有している必要があります。ツールボックスを開いて、フィリップスドライバーのみを表示する場合、自分をプロと見なすことはできません。

ボルトは、オープンエンドレンチ、ボックスエンドレンチ、ラチェットレンチ、またはモンキーレンチで回すことができます。ピンチのボルトを、スリップジョイントプライヤーで不器用に、軽度から重度の損傷で回すこともできます。しかし、スレッジハンマーでボルトを回すことは非常に困難です。


それは「親のガレージ」を含めるためです。私はガレージを持っていないので、それは本当に明確になります。
ダンローゼンスターク

5
より良い例えとしては、言語は個々のツールではなくツールボックスのようなものです。
トムホーティン-タックライン

4
ボックスには20種類のツールがあります。しかし、それらを記述するために必要な言語は1つだけだと思います。
ThomasX

2
最近では、ツールボックスは問題の言語で使用可能なライブラリに似ています。
マイケル14年

18

他の人への異なる種類の答え- 言語は「普遍的な」言語になる可能性がある実際に考えており、他の多くの言語の機能とパラダイムを可能にしますが、おそらくあなたが考えている厳密に設計された言語ではありません。

上記のbrettmjohnsonのアナロジーを使用するには、各プログラミング言語がボックス内(またはスイスアーミーナイフ)のツールであるという考えは、誰もが行っている仮定ですが、実際には欠陥のある仮定です。

プログラミング言語がツールボックスだった場合はどうなりますか?

つまり、言語の機能を必要に応じて追加および削除でき、必要なツールを備えた独自のツールボックスがある場合はどうでしょうか(ツールが異なる目的であっても)。

概念はすでに部分的に存在します。たとえば、Nemerleなどの言語は、言語構文追加できるため、「言語Xの最高の機能」を利用して、Nemerle(または独自の)に追加できる場合があります。これは、常に独自のマクロを作成することを必ずしも意味しません-各言語(またはパラダイム)は標準ライブラリのマクロ内で定義できます-のようにimport Haskell; import Prolog;、2つの言語の一部であるかのように書き始めますあなたの言語?

質問は次のとおりです-異なる言語/パラダイムの機能をどのようにして相互に連携させるのですか?それに答えることはできませんが、.NetやJVMのようなフレームワークはいくつかの解決策を提供します-言語は、コンパイル方法が原因で少なくとも部分的に互換性があります。たとえば、C#で記述された任意のコードを使用して、F#から苦情なく使用できます。

現在のソリューションの「問題」は、これらの言語を一緒に使用するには、それらを別々のプロジェクトとして作成する必要があり、相互に参照できないことです。一方向の参照しか持てません。言語の障壁は、各プロジェクトが他のプロジェクトがアクセスする前に、すべてのファイルを個別に共通中間言語にコンパイルすることです。

その障壁を取り除くための足がかりは、異なるプロジェクト(C#やF#など)のコードを同じプロジェクト内でコンパイルできるようにすることです。理論的には、各ファイルを個別に(または部分型または循環参照がある場合はグループで)コンパイルし、既にコンパイルされた(CIL)オブジェクトにアクセスできる別の言語のファイルをコンパイルできます。ただし、これを機能させるにはコンパイルの順序を厳密に定義する必要がありますが、F#の場合はコンパイルの順序が既に必要です。

とにかく、「普遍的な言語になることは間違いありません」と言っているのではありません。私は、現在存在しているものよりもはるかに優れた言語間の相互運用性の可能性があることを示唆しています。現実には、言語とそれを使用するために必要なライブラリ、ツールなどを実装するための膨大な作業のために、すぐに大幅に改善される可能性はありません。


4
世界はすべてPCではありません。この惑星のプロセッサの大半は、64Kバイト未満の合計メモリスペースを備えています。これらのプロセッサで使用できる言語は、このフォーラムで最も使用されていると思われる言語よりも大幅に削減する必要があるため、汎用言語は最終的に拡張アセンブリ言語になります。それは「C」と呼ばれると思います。
uɐɪ

10

一部の言語の最高の機能は、他の言語の最高の機能と競合します。

たとえば、型認識リフレクションは本当に便利な機能ですが、緩やかに型付けされた言語ではあまり価値がありませんが、時には緩やかな型付けも本当の利点になります。

1つの言語内でも、すべての最高の機能を同時に使用できるとは限りません。それらは互いに競合するためです。


しかし、この機能は、例えば必需品に/無効accordindを有効にした場合:あなたはタイプを認識し、反射を有効にして、緩やかに型付けされた言語機能を無効にし、ように...可能性
killown

2
そして、もしあなたが多くの言語の機能を何でもできる1つの言語に結合しようとすると、多くの冗長性、混乱、機能の異なる組み合わせを使用するすべての異なる方法からのバグ、そして多くのこのラインで使用しているパラダイムを指定する無駄な努力。

あなたを殺しますが、言語を超構成可能にすることで問題を解決すると、fennicが説明するように言語を使用するのが難しくなります。場合によっては危険であっても物事を許可する柔軟な言語が好きですが、いくつかの概念を組み合わせるために必要な構成のレベルは、低レベルのCなどでソリューションをドロップバックして記述するよりも複雑になります。
ビル

1
競合する機能の+1
フランクシェラー

問題は、言語機能の競合だけではなく、むしろ多くの言語が、一定レベルのオーバーヘッドを課す機能を含む基礎となるフレームワークを想定しているが、特定の操作を単純化できることだと思います。また、言語には通常、特定の「典型的な使用パターン」が関連付けられています。フレームワークに含める機能と採用するコーディングパターンの選択には、トレードオフが伴います。また、機能とパターンのさまざまな組み合わせは、さまざまなアプリケーションに適しています。
supercat

7

「すべての取引のジャック-なしのマスター。」心に湧きます。

一部のプログラムは速度を必要とし、他のプログラムは大量のメモリまたはディスクへの高速アクセスを必要とします。ある言語は得意ですが、別の言語は得意ではありません-あなたがまったく得意な言語を得ることはないと思います。

したがって、事実上すべてのプログラムを任意の言語で作成できますが、その問題を解決するために作成できる「最良の」プログラムであるとは限りません。


4

がある。どのツールもすべてに最適ではありませんが、多くのプログラミング言語のような一部のツールはすべての目的に役立ち、すべてに最適というわけではありません。

仕事に最適なツールを選択できますが、あらゆる目的で使用できるプログラミング言語があり、選択できます。お勧めしませんが、可能です。


4

私は「一般化/専門化パラドックス」と呼んでいますが、これはおそらく別の名前を持ち、実際にはパラドックスではありません

プログラミング言語が一般化されるほど、何かを達成するために必要なコードが増えます。言語の専門性が高いほど、それで達成できることは少なくなります。


2
一般化された言語で特殊なライブラリを作成できることを除いて、あなたに同意します。
dan_waterworth

@dan:同意しましたが、言語がライブラリ作成者に機能を提供することに焦点を合わせている場合のみです。私のお気に入りの2つの言語はDとPythonです。どちらもかなり一般的な言語(特にD)ですが、どちらもライブラリ作成者向けの機能が豊富にあるため、独自のライブラリを作成して特殊なものを処理できます。私は軽蔑のMatlabとR.のようなスーパードメイン固有言語
dsimcha

4

言語は人々の考え方を形作ります。これは自然言語にも当てはまります。子供が「1、2、多く」という数字の言語を1つだけ知っている場合、その子供の数学を教えることは...困難です。(申し訳ありませんが、私はリンクを持っていません)英語では、あたかもそれらが場所であるかのように異なる時間について話します-したがって、時間旅行の概念は想像することが可能です。他のいくつかの言語では、タイムトラベルの発想はスピーカーには決して発生しません

これはプログラミング言語にも当てはまります。

したがって、単一のプログラミング言語がある場合、誰もがすべての計算タスクをまったく同じように考えるでしょう。したがって、私たちは代替案を模索することはなく、何かをするための最良の方法は未発見のままです。

普遍的な言語に最も近いものはCです。Cは、基礎となるハードウェアの概念(ハードウェアで実際に行われる方法)に非常に密接に対応し、すべての言語のプログラムはCに変換可能です(CFrontがアセンブラーでCコンパイラーを使用した方法を参照してください)タスク)Cの問題は、基本的に、上記の変換はCプログラマーの観点からは意味をなさないことです。

「ラムダ」はCでは常に可能でした。プロジェクト/ファイル全体に広がるコードを含む構文はオフになっているため、推奨されるソリューションではありませんでした。no-capture / upvalue / etcバージョンでは、関数を別の場所で定義し、関数にポインターを渡します。(qsort()を参照キャプチャされた値でラムダを使用するには、記述する必要があるコードの量と複雑さが大幅に増加します-私が知っている限り、Cでこのプログラミング方法を使用するコードを実際に書いた人はいません。ラムダが言語の一部であり、基本的にどこでも使用される言語とは対照的。

CとC ++の主な違いは、あなたがの世話をするためにC ++を頼むことができる方法であるもの、あなたのため。しかし、それでは、1行のコードだけでは、実際にそれをどれだけ求めているかを知ることができなくなります。答えは次のようになります:(この他のすべてのコードに依存します)。

一部のプログラミング言語は特定のタスクに適していますが、世界中で現在使用されているほとんどのプログラムは、その言語でプログラムされた場合には意味がありません。つまり、そのプログラムを実装するためにその言語を使用できれば、それは与えられたものではありません。


2
「他のいくつかの言語では、タイムトラベルの発想は話者には決して起こりません。」引用が必要です。Sapir-Whorf仮説は、その強力な形式では特に広く受け入れられていません。
ムハンマドアルカウリ

4

普遍的な言語を持つことの技術的メリットの不可能性?それはまったくナンセンスです。あなたは可能性すべての基盤をカバーする普遍的な言語を持っています。問題はほとんど歴史的なものです。異なる言語が発明され、さまざまなことを行い、さまざまなコミュニティで使用されています。それらの多くが立ち往生。その設定(vi!emacs!wait、Java!C#、wait Microsoft、Open Sourceなどを意味するなど)と、歴史的な事故の一般的な埋め込みに追加してください...小さな土地の自然言語を見てくださいこのトピックがいかにクレイジーになるかを見るために、いくつかのヨーロッパ諸国のような大衆。一部の町には、彼らだけが話す小さな方言があり、独自の誇りと喜びがあります。国家とプログラミングコミュニティはそれほど違わず、プログラミングコミュニティもより合理的です。もしそうなら、私たちは皆エスペラント語を話し、ユニバーサルサムシンサムシンでプログラムします...


1
問題はそれよりも深いです。より多くのオプションを利用可能にするほど、その言語で物事が暗黙的に機能する1つの方法ではなく、より多くを明示的に指定する必要があります。JavaをC#と比較する代わりに、JavaとPrologを比較すると、問題はより明白になります。1つの言語で両方の機能を使用すると、複合言語の構文が複雑になります。より合理的な選択は、構文を最小限に減らし、メタプログラミングライブラリとして実装できる機能を許可することです。それは基本的にLispが行うことですが、コアは一部の仕事には十分な低レベルではありません。
Steve314

4

「すべての機能を組み合わせること」がより良い言語になると考えるのは間違いです。

肥大化した、複雑で、読めない混乱に陥る可能性が高くなります。

適切な言語設計には、選択とトレードオフが必要です。間違いなく、最高/最も革新的/最も成功した言語は、新しいものを追加するのではなく、何かを取り出してより良い代替手段を提供する言語です。

  • 構造化プログラミング言語(C、Pascal)-「goto」を取り出し、プロシージャや構造化ループなどに置き換えます。
  • Java-「手動メモリ管理」を取り除き、GC /管理メモリに置き換えます
  • Haskell / Clojure-「制御されていない可変状態」を取り除く
  • Lisp-ほとんどの「言語構文」を取り除き、S式の柔軟なホモイコニックツリーに置き換えます

このトップで、ボブ・マーティンおじさん- 最後のプログラミング言語による素晴らしい講演があります。


「構造化プログラミング言語(C、Pascal)-「goto」を取り出し、プロシージャや構造化ループなどに置き換えます。」-申し訳ありませんが、あなたはそこに間違っています:Cは持っていgotoます。しかし、私は答えの残りが好きです。Cが行う主なことは、メモリ内のすべてがどこにあり、何がいつどのレジスタにあるかを正確に気にせず、プログラムカウンタを隠します(座っている正確なアドレスの観点から、再び移動できます) gotoを使用して、ほぼアセンブリレベルの精度で)。
Wyatt8740

0

すべての最高の機能を備えたツールはありません。たとえば、JavascriptとSchemeの優れた機能は、それらが小さいことです。したがって、機能のパッキングを開始すると、すでにこの機能を失っています。

それでもコブラは、他の言語の優れた機能をすべて備えているという点で有望に見えます。:-)


0

そのような言語を作成すると、それはさらに別の新しい言語になるからです。大規模なファンを獲得するかもしれませんが、他のすべての言語は引き続き存在します。

それ以来多くの新しい言語が発明されたにもかかわらず、Cはまだ存在しています。

pythonはそのような普遍的な言語であると言えますが、それからルビーもあります。

多くの言語が存在する理由は、単に多くのプログラマーがいて、その一部は新しい言語を作成したいからです。

誰もが同意する単一の普遍的な言語がない理由は、工芸としてのプログラミングは、すべての決定を下す機関によって決定されないからです。誰でも自由にやりたいことができます。

それはいいことだ。


また、それは良いことでも悪いことでもないが、ソフトウェアエンジニアリングは100年前のものではなく、存在する他のあらゆる種類のエンジニアリングと比較して非常に未熟であるという事実のアーティファクトでもあると主張します。
マイケル14年

0

これまでに書かれたすべてのことから、多くの新しい理論的根拠を追加することは困難ですが、いくつかを紹介します。

  • 進化:導入され、変異し、資源を獲得するのに最も適した競争と、独自のものと呼ばれるニッチを獲得するのは、生物系だけではありません。競争は良く、物事を前進させます。

  • 成熟度:おそらく1世紀未満でコンピューター言語を作成してきました。私たちはまだすべての質問すら知らないので、まだ答えを得ることができません。

  • 別個の起源:これに対する正しい言葉は定かではありませんが、世界には多くの地理的地域で始まった多くの書記体系があります。粘土板への彫刻の要求によって部分的に決定された楔形について考えてください。サンスクリット語、ギリシャ語、ヘブライ語、ローマ語、アラビア語のアルファベットについて考えてください。象形文字、多くの東アジア諸国で共有されている6000以上の記号を使用した中国の美しい書き方。キリル文字、カタカナ、ひりがななど、音声ベースのより現代的な混合アルファベットを考えてください。私は言語学者ではないので、不正確さを厳しく批判しないでください。しかし、世界中の文化が何かを必要とするとき、彼らはそれを作成し、それを必要から自分のものにします。コンピュータ言語は、世界中で多くのコミュニケーションが行われたときに登場しました。ImperialやMetricシステムなど、強力なアイデアリーダーシップを持つ場所から来ました。しかし、プログラミング言語は多くの異なる文化(一部は企業文化)に役立つため、それらを作った人々を反映しています。コンピューター言語には、その設計と使用を形作った文化遺産があります。OSカーネルカルチャでは、CおよびC ++は、ネイティブコード生成、ハードウェアアブストラクションレイヤーを作成するためのハードウェアとの緊密な/効率的な結合、およびかなりのインストールベースを可能にするため、Java(またはその逆)ですぐに非推奨になりそうにありません。

  • 設計の設計:プログラミング言語は、さまざまな組織パラダイムを使用して作成されます。COBOLとAdaは、多くの階層を持つDODの一部である委員会からのものでした。私がC、C ++、Java、そしておそらく他の多くのものを正しく思い出せば、1人または少数のデザイナーから来ました。Fred Brooksは、委員会の結果と彼の論文Design of Design(http://www.youtube.com/watch?v=pC-DlX-PaF4)の先見の明に基づいたアプローチを比較します。今日ユニバーサルプログラミング言語を定義するダヴィンチまたは委員会のいずれかを選択するために座った場合、どの方法で誰または何を設計する必要があるかがわかりますか?


0

たぶん、これらすべてについて少し異なる傾向があります:

言語とは何ですか?途方もなく簡単にするために、それは語彙、構文、およびセマンティクスです。

プログラミング言語で最初に行うことは何ですか?
物事-クラス、変数、メソッド-を定義し、語彙とセマンティクスを拡張します。

どうして?だから今、あなたはあなたが前に言うことができなかったその中で物事を言うことができます。
好むと好まざるとにかかわらず、新しい専用言語を作成しました。

私見、汎用言語で探すべきことは、それが特別な目的の言語を簡単に作成できるようにするかどうかです。


0

swiss-army-knifeの議論(点がある- ドメイン固有の言語よりも優れた広域スペクトル言語を設計するのは難しい)を除けば、それはそのような言語が両方ではないという意味ではない可能な良いアイデア)、「最高の機能を組み合わせる」には問題があります:

  • 言語の機能については、「最良」は主観的であるか、少なくとも(間違いなく)議論の余地があります。
  • 一部の機能には互換性がありません。ある言語の優れた機能を別の言語の優れた機能と組み合わせると、爆発する可能性があります。
  • 私たちはまだ新しい機能を思いついていません。

要するに、言語設計はそれよりも難しく複雑です。ただし、Scalaをご覧ください



-2

ユニバーサルプログラミング言語があります。これは「機械語」と呼ばれ、他のコンピューター言語のすべては最終的に機械語として実行されます。

どのように見えますか?0〜9およびAFの文字列。

しかし、それを使用するのは雌犬です。そこで、アランは機械語に翻訳できる言語を発明し、アランがやりたいことにより適しています。ビルは、ビルがやりたいことのために異なる言語を発明します。やがてCobolとFortran、LispとJavaが手に入ります。それらはすべて、機械語の単純化されたバージョンであり、特定の種類のプログラムを作成するのは簡単ですが、他の種類のプログラムを作成するのは困難または不可能です。1つは会計に適し、もう1つはスペースシャトルの制御に適しています。


6
機械語は普遍的ではありません。程遠い。各マシンには独自の言語があります。
長谷

3
また、0〜9およびAFの文字列ではありません。1と0です。
デビッドコンラッド

@hasen @Davidは、@ Andyがすべての言語が、ある観点からはドメイン固有の言語であり、他の言語で構築されていることを示唆するのは合理的ではありませんか?
アルマン

キーパンチマシンでマルチパンチコードを使用するために知っていなければならなかったので、0-9とAFを言いました。一度にどれくらいの大きさのチャンクに応じて、数値として取ると0-1または0-15または0-255のように見えます。そして、ハンセンは正しい。マシンのすべてのタイプには独自の言語があります。今日、ほとんどすべてのPCは80386コードを受け入れます。私の電話でも しかし、iPadはそうしません。
アンディキャンフィールド

@hasenjと大きく異なる特性を持つ。6502のプログラミングに必要な考え方は、x86のプログラミングとは異なり、RISCチップとは異なります。普遍的とはほど遠い。

-2

という理由だけで、

ユニバーサルコンピュータはありません。

ユニバーサルなプレートフォームではありません。

普遍的なプログラマーではありません。

ユニバーサルクライアントでさえありません。

:P

そのため、別のものに対して別のものが必要です。;)


-2

ここでのほとんどの回答は、各問題に最適なツールを使用することに焦点を当てています。これが十分な理由だとは思わない。

大企業に目を向けると、特定のプロジェクトに優れた言語がある場合でも、通常、企業は1つ(または少数)の言語とテクノロジを使用する傾向があります。

これは、標準化の改善、サポートの容易化、コード共有などから生じる利点が(ほとんどの場合)特定の言語の付加価値よりも大きいためです。


1
4種類未満の言語を使用したまともな企業プロジェクトを見たことはありません。そして、私は不適当なツールを選択することからのその「利益」を信じていません。うまくいきません。
SKロジック

-3

「彫像を鉛筆で彫らないから」という答えはすべて、ポイントが抜けていると思います。

TRULYは、新しいプロジェクトの前に言語を選択します。

真実は、少数のプログラミング言語だけが必要であり、プログラミングの世界はその方法のほうが良いでしょう。人々は、例えばpython / ruby​​ / perl / younameitに散らばるのではなくスクリプト言語をより良くすることに集中するでしょう。

C#はWindows向けにプログラムされています(さて、Monoがありますが、Monoアプリで毎日C#を実行している人はいますか?)、ユーザーはWindows7 / 8を購入し、Microsoftに利益をもたらします。
他の企業も同じことをし、オープンソースの方がよく知っていて、天才の方も知っています...そして、似たような言語がたくさんありました。それは人間の自己中心的な性質です。


同意-私たちは、高レベルの「安全な」言語、低レベルの「安全でない」システムプログラミング言語、すべてのアセンブリ言語(CPUごとに1つ、避けられないが隠れている)、および特別な目的(ドメイン固有)言語(SQLなど)。本当の問題は、誰かが言語を「非推奨」と宣言することは不可能だということです(たとえ言語デザイナーがそれを行おうとしても-例えばPython 2対Python 3)。毎年多くの新しい言語があり、古い言語が破棄されていないということは、最終的にはプログラマが使用する言語よりも多くの言語が使用されることを意味します。;-)
ブレンダン

-5

この質問に答えるには、経済学に目を向けなければなりません。言語を1つだけにすることでビジネスのお金を節約できれば、それが可能になります。彼らはそれを標準化し、誰もがそれを使用することを要求します。他の言語は、ほこりっぽいアカデミックな建物や野生の愛好家の地下室で苦労します。これは起こらなかったので、それらは普遍的なプログラミング言語で利益をもたらすインセンティブではないはずです。さもなければ、今では自然に進化しているでしょう。


1
「節約されたお金」は、(会計士の最善の努力にもかかわらず)ライフサイクル全体のあいまいで曖昧な概念です。メカニックが1つでもスパナのサイズを上の標準化に失敗しているのと同じように、全体のツールキットを気にしないで、ソフトウェア・エンジニアリングは、ツール(言語)、あるいはプロセッサ/ OS /環境を選択するための非常に多くの基準がありますので、標準化に失敗しました
アンドリュー・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.