web-dev-qa-db-ja.com

いくつかの人気のあるプログラミング言語がCの影響を受けるのはなぜですか?

TIOBEインデックス によると、トップ10のプログラミング言語はCの影響を強く受けているようです。

1。 Java

言語の構文の多くはCおよびC++から派生していますが、オブジェクトモデルは単純で、低レベルの機能はほとんどありません。 -wikipedia.org

2。 C

Cは、最も広く使用されているプログラミング言語の1つであり、Cコンパイラが存在しないコンピュータアーキテクチャはほとんどありません。 -wikipedia.org

3。 C#

.NET Frameworkの開発中、クラスライブラリは当初、Simple Managed C(SMC)と呼ばれるマネージコードコンパイラシステムを使用して作成されていました。 1999年1月、Anders Hejlsbergは、「Cのようなオブジェクト指向言語」を表すCoolと呼ばれる新しい言語を構築するためのチームを結成しました。 -wikipedia.org

4。 C++

Bjarne Stroustrupによって1979年にBell LabsでC言語の拡張機能として開発されました。 -wikipedia.org

5。 Objective-C

Objective-Cは、Cプログラミング言語にSmalltalkスタイルのメッセージングを追加する、反射型のオブジェクト指向プログラミング言語です。 -wikipedia.org

6。 PHP

彼はこれらのスクリプトをCプログラミング言語のCommon Gateway Interface(CGI)バイナリとして書き直し、それらを拡張してWebフォームを操作し、データベースと通信する機能を追加し、この実装を「パーソナルホームページ/フォームインタープリター」またはPHP/FIと呼びました。 -wikipedia.org

8。 Python

Pythonは1980年代後半に考案され、その実装は1989年12月にオランダのCWIのGuido van Rossumによって、Amoebaオペレーティングシステムとの例外処理およびインターフェイスが可能なABCプログラミング言語(SETLに触発された)の後継として開始されました。 -wikipedia.org

ABC(プログラミング言語)その設計者は、ABCプログラムは通常、同等のPascalまたはCプログラムの約4分の1のサイズであり、より読みやすいと主張しています。 -wikipedia.org

9。 Perl

Perlは、C、シェルスクリプト(sh)、AWK、sedなどの他のプログラミング言語から機能を借用します。 -wikipedia.org

10。 JavaScript

JavaScriptはCの構文に影響された構文を使用します。-wikipedia.org

彼らのほとんどはCから構文を借用している、および/または他のいくつかの方法で、少なくとも最初は大きく影響を受けているようです。どうして?

24

1970年代のUNIXの台頭により、その標準システムプログラミング言語Cはすぐにプログラミング世界のlingua francaになりました。長い間、Cはすべてのプログラマーにとって実質的に必須でした。このように、Cが何らかの方法でCの後のほとんどすべてのプログラミング言語に影響を与えたという事実は、次の2つの理由から、驚くに値しません。

  • 新しい言語を設計するときは、その構文を、可能であれば、常識と見なすことができる人気のある既存の言語に基づいて作成するのが理にかなっています。
  • 学習曲線が浅い場合、新しい言語は成功する可能性が高く、既知の言語に似た構文は一般に学習が容易です(明らかな類似性にもかかわらず、根本的に異なる動作をしない限り)。そのため、Cから構文を借用する言語は、一般に、そうでない言語よりも速くトラクションを獲得します。

しかし、他の言語も存在し、現在でも存在しています。Cよりも古い言語もあります。LISPファミリー(CL、Clojure、Schemeが最も人気のある現代方言)、MLファミリー(いくつかの現代方言)があり、基本的な方言(VB.NETとVBAは最新の実装です)、Pascalとその関連(Delphiが最もよく知られているもの)、および他の多くの言語から影響を受けていくつかのことを発明した多くの「奇妙な」言語があります。例としては、Go、Python、Lua、Haskell(およびその前身であるMiranda)、Prolog、Erlangなどがあります。これらの言語(Pythonを除く)はどれもトップ10にはありませんが、多くの言語は安定したユーザーベースとアクティブなコミュニティを持っています。彼らは確かになくなるわけではない。

また、これらの言語におけるCの影響の量は、ほぼ100%のC互換言語C++やObjective-Cから、Python(意図的に多くのCの構文機能の1つです。これは構文のみです。セマンティクスに関しては、このリストのほとんどの言語はCとあまり共通点がありません。圧倒的多数がメモリ管理を言語に組み込んでいるため、セマンティクスをコピーします、引数の受け渡しなどは非常に異なります。たとえば、JavaScriptは、Schemeからの意味的な影響を強く受けますが、その構文はJavaに似ているように設計されています) -Cの構文(ただし、セマンティクスは除く)。その他の違い(C++およびObjective-Cを除き、ほとんどがCと下位互換性がある)には、エラー処理、スコープルール、標準ライブラリ、外部コードのインクルード(#include)、そしてこれらの言語の多くは「仮想化」されている、つまり、インタープリター、JITコンパイラー、または仮想マシンで実行されるという事実。

ちなみに、PythonにはCの影響がありますが、Cに「基づいている」わけではありません。構文もセマンティクスもCとは根本的に異なり、これは仕様によるものです。 Python「Zen of Python」のように、他の代替手段が同等に「良い」Cから機能を借用するだけです-import this = pythonインタプリタ)。

プログラミングの未来については;予測はさまざまです。 Cの影響はなくなりませんが、ハードウェアの最近の開発(マルチコアマシンが一般的になり、強力なGPU、CPUが通常のパフォーマンスのボトルネックでなくなる、高速で信頼性の高いネットワーク接続など)は、プログラミングに対する根本的に異なるアプローチを必要としています一般に。命令型言語でマルチスレッドの分散アプリケーションを記述したことがある人なら誰でも、それは信じられないほど難しいと言うことができますが、Haskellのような言語には、一般的な問題のほとんどを取り除き、分散処理、並行処理、並列処理に対してより抽象的で構造化されたアプローチを提供する機能があります(この文脈では純度が重要な概念です)。新しいプログラミング言語(C#やDなど)には、そのようなイディオムをサポートするための多くの機能がすでに含まれています。いずれにせよ、Cがプログラミングに与えた強い影響も、Cに似ていない言語の存在もなくなりません。

41
tdammers

これは、なぜ米国で英語が主要言語であるのかを尋ねるのとよく似ています。なぜスペイン語やフランス語ではないのですか?彼らはイギリスの植民地よりもアメリカの領土を支配した。なぜオランダ語ではないのですか?最初の米国の首都は、元オランダの植民地でした。これに対する「答え」が存在する可能性があるかどうかはわかりません。

ただし、「コンピューター言語の歴史」のタイムライン( http://www.levenez.com/lang/ )は、あり得るすべての答えを提供します。

1
S.Lott

新しいプログラミング言語を作成する場合、既存の一般的な言語と同様の構文を使用すると、新しいユーザーが学習しやすくなります。特に、多くの概念が言語間で類似している場合。

また、Cスタイルの構文は比較的読みやすいと思います。 Pascalと比較すると、コードのブロックに記号「{」と「}」を使用する方が、識別子と光学的に非常に似ている「begin」と「end」よりも読みやすくなっています。 Pythonはさらに読みやすくなりますが、構文に空白を含めると、編集に関する新しい一連の問題が発生します。別の例:LISPとJavaScriptはいくつかのアイデアを共有しますが、同じものがC-スタイル構文、それはあまり曖昧ではありません。

誰もが自分の好きな言語を持っているので、多くの人が2番目の段落に同意しないと思いますが、Cスタイルの構文の人気は部分的には歴史的な偶然だと思いますが、部分的にはCの作成者がいくつかの良いことをしたことも示しています決定。

0
Viliam Búr