回答
1970年代のUNIXの台頭により、その標準システムプログラミング言語Cはすぐにプログラミング世界の lingua franca になりました。かなり長い間、Cはすべてのプログラマーにとって事実上必須でした。そのため、Cがその後に続くほとんどすべてのプログラミング言語に何らかの形で影響を与えたという事実は、次の2つの理由から驚くことではありません。
- 新しい言語を設計する場合、可能な場合は、一般的な知識と見なすことができる人気のある既存の言語に基づいて構文を作成します。
- 学習曲線が浅い場合、新しい言語が成功する可能性が高くなります。構文は、既知の言語に似ています。一般的に習得が容易です(明らかな類似性にもかかわらず根本的に異なる動作をしない限り)。そのため、Cから構文を借用する言語は、一般に、そうでない言語よりも早く牽引力を獲得します。
しかし、他の言語も存在し、現在も存在し、Cよりも古い言語もあります。 LISPファミリー(CL、Clojure、Schemeが最も人気のある現代の方言)、MLファミリー(いくつかの現代の方言)、「BASIC方言の軍隊全体(VB.NETとVBAは現代の実装)」、Pascalそしてその親戚(Delphiが最もよく知られている)と他の多くの言語から影響を受けていくつかのものを自分たちで発明した多くの「奇妙な」言語。例としては、Go、Python、Lua、Haskell(およびその前身であるMiranda)、Prolog、Erlangなどがあります。これらの言語(Pythonを除く)はどれもトップ10に入っていませんが、それらの多くは安定したユーザーベースと活発なコミュニティを持っています。それらは「確かになくなることはありません。
また、これらの言語でのCの影響の量は、ほぼ100%C互換の言語C ++およびObjective-Cから、最大で大きく異なることに注意してください。 Python(Cの構文機能の多くを意図的に放棄します)。そして、それは構文だけです。セマンティクスに関しては、そのリストにあるほとんどの言語はCとあまり共通点がありません。圧倒的多数は言語にメモリ管理が組み込まれているため、セマンティクスのコピー、引数の受け渡し、など、非常に異なります。たとえば、JavaScriptはSchemeから強いセマンティックの影響を受けますが、その構文はJavaに似せて設計されています(Javaは、セマンティクスではなく、Cに基づいてビットアンドピース構文を作成します)。その他の違い(C ++とObjective-CはほとんどCと下位互換性があります)には、エラー処理、スコープルール、標準ライブラリ、外部コードの組み込み(#include
)、そして、これらの言語の多くが「仮想化」されている、つまり、インタープリター、JITコンパイラー、または仮想マシンで実行されているという事実。
ちなみに、PythonにはCの影響がありますが、それは確かにCに「基づいている」わけではありません。構文とセマンティクスはどちらもCとは根本的に異なり、これは仕様によるものです。 Pythonは、他の選択肢も同様に「優れている」Cから機能を借用するだけです(「ZenofPython」のように-Pythonインタープリターでimport this
と入力します)。
プログラミングの未来については、予測はさまざまです。 Cの影響はなくなることはありませんが、ハードウェアの最近の開発(マルチコアマシンが一般的になり、強力なGPU、CPUが典型的なパフォーマンスのボトルネックではなくなった、高速で信頼性の高いネットワーク接続など)では、根本的に異なるアプローチが必要です。一般的なプログラミングに。命令型言語でマルチスレッド分散アプリケーションを作成したことがある人なら誰でも、それは非常に難しいと言うことができますが、Haskellのような言語には、典型的な問題のほとんどを取り除き、分散、並行、および並列処理(このコンテキストでは純度が重要な概念です)新しいプログラミング言語(C#やDなど)には、このようなイディオムをサポートする多くの機能がすでに含まれています。いずれの場合も、Cがプログラミングに与える強い影響も、 Cに似ていない言語はなくなります。
コメント
回答
これは、なぜ英語が米国の主要言語であるのかを尋ねるのとよく似ています。なぜスペイン語やフランス語ではないのですか?彼らはイギリスの植民地よりもアメリカの領土の多くを支配していました。なぜオランダ語ではないのですか?最初の米国の首都は、かつてのオランダの植民地にありました。これに対する「答え」があるかどうかはわかりません。
ただし、「コンピューター言語の履歴」のタイムライン( http://www.levenez.com/lang/ )は、考えられるすべての答えを提供します。
コメント
回答
If新しいプログラミング言語を作成します。一般的な既存の言語と同様の構文を使用すると、新しいユーザーの学習が容易になります。特に、多くの概念が言語間で類似している場合。
また、Cスタイルの構文は比較的読みやすいと思います。 Pascalと比較すると、コードのブロックに記号「{」と「}」を使用すると、識別子と光学的に非常に似ている「begin」と「end」よりも読みやすくなります。 Pythonはさらに読みやすくなっていますが、構文に空白を含めると、編集に関する新しい問題が発生します。別の例:LispとJavaScriptはいくつかのアイデアを共有していますが、同じものがCスタイルの構文で記述されている場合、それはそれほど曖昧ではありません。
多くの人が2番目の段落に同意しないと確信しています。独自の好きな言語がありますが、Cスタイルの構文の人気は部分的には歴史的な偶然だと思いますが、部分的にはCの作成者がいくつかの良い決定をしたことも示しています。
回答
プログラミング言語は自然言語と同じように時間とともに進化し、一部の古い言語は他の言語よりも強力にその進化に影響を与えます。 、他の人は曖昧になり、それらの影響を表面レベル、つまり構文で追跡するのは困難です。
Cの影響は多くのソースから来ています-それは低レベルで、広範囲に渡っており、支持されていましたUnixとMicrosoftの両方のサークル。それはまた、適者生存の問題の存続でもあります。簡潔なCのような構文が、1970年代と1980年代のPascalや他のCの競合他社の冗長なAlgol派生構文よりも魅力的であったことは容易に理解できます。そのため、その後の言語で広く採用されました。
マルチスレッドプログラミングの重要性が現在高まっており、関数型言語が特にそれに適しているため、その影響力は次のように大きくなると思います。未来。好例:Pythonは、質問の投稿でそのリストを作成しました。
熟考する言語履歴の優れたタイムラインビュー
コメント
回答
ほとんどのあなたがリストする言語は、無関係な構文の類似性を除いて、Cとは実質的に何の関係もありません。実際のC派生語はObjective-CとC ++の2つだけです。
コメント