C言語の歴史

現在、C言語について聞いたことがない世界のIT分野の専門家を見つけることはおそらく不可能です。 この言語は世界中で非常に人気があり、他の多くのプログラミング言語に大きな影響を与えています。 C ++、C#、Javaなどの言語の先駆者は彼です。 あまり知られていない(例:J#)。 Microsoftは、.Netプラットフォーム用のネイティブ言語を開発するためにCのような構文を選択しました。 好きなことを言ってください。しかし、C言語は前世紀のプログラマーの生活を大きく変え、低レベルプログラミングの分野で事実上の存在となり、アセンブラーはパフォーマンスが重要な場所のみを残しました。



多くの人が言語の作成者であるケン・トンプソンとデニス・リッチーの名前を覚えていますが、私は言語の作成と開発の歴史をより深く掘り下げて覚えることに決めました。 このトピックに興味のある人は誰でも-猫へようこそ。



C言語は、ALGOL言語(ALGorithmic Languageの略)に根ざしています。ALGOL言語は、1958年にチューリッヒのスイス高等技術学校で開催された会議で、ヨーロッパおよびアメリカのコンピューター科学者の委員会と共同で作成されました。 この言語は、FORTRAN言語のいくつかの欠点に対する答えであり、それらを修正する試みでした。



ALGOL-60言語に着想を得て、ケンブリッジ大学の数学研究所は、ロンドン大学のコンピューター部門とともに、1963年にCPL(Combined Programming Language)を作成しました。



CPL言語は複雑であると見なされ、これに対応して、Martin Richardsonは1966年にBCPL言語を作成しました。その主な目的はコンパイラを書くことでした。 現在は実際には使用されていませんが、一時的な移植性のために重要な役割を果たしました。



BCPLは、ケントンプソンやダンスリッチーにも馴染みのあるAT&T Bell Telephone Laboratoriesで1969年に開発されたBee言語の祖先を務めました。



Bee言語は、ベル研究所で開発されているMulticsプロジェクトへの応答として作成された、UNIXの最も初期のバージョンを記述するために使用されました。 C言語の前身として機能したのはこの言語でした。



C言語の登場に関して、Peter Moylanの著書「The Cに対する事例」では、「私は、ほとんどの高レベル言語に組み込まれている厳格なルールのいくつかを回避し、信頼性を確保できる言語が必要でした。 必要なのは、アセンブラーまたはマシンコードのレベルでのみ実装できるようになる前に、何かを実行できる言語でした。「Cはまさにそのような言語になりました。 これにより、ドライバの作成や低レベルプログラミングの他の側面などのプログラミング分野での人気が高まりました。



Cプログラミング言語は、1969年から1973年の間にベル研究所で開発されました。 リッチー自身が認めたように、創造性の最も活発な時期は1972年でした。



C言語は、その存在を通じて、その作成の動機について伝説になっています。

ある伝説によると、カーニガンとリッチーは1つのコンピューターゲームが大好きで、同社のメインサーバーで実行していました。 後で、彼らはそれをオフィスのコンピューターに転送したかった。 しかし、残念なことに、彼はオペレーティングシステムを持っていなかったため、カーニガンとリッチーはそれを書くようになりました。 彼らがシステムを別のコンピューターに移そうとしたとき、システムは完全にアセンブラーで書かれていたので、それは簡単な仕事ではありませんでした。 それから、彼らはそれを高級言語に書き直すという考えを持っていました。 最初は、これらの目的でBi言語を使用することが計画されていましたが、システムの転送先のコンピューターの新機能を完全に使用することを許可しなかったため、独自の言語を作成することが決定されました。



別の伝説によると、C言語はエイプリルフールのジョークであり、これは深刻な人気を得ました。

Cコンパイラは、Nicklaus Wirthが定めた伝統を継承し、C自体で記述されました。 大多数によると、C言語の名前はアルファベットの3番目の文字です。 これは、C言語がB言語よりも高度であることを示すものとして現れました。 しかし、リッチー自身が言語の名前について次のように語っています。「新しい言語に適した型システム、適切な構文、コンパイラを作成したので、新しい名前に値すると感じました。 私は1文字のスタイルに従うことにし、C(C)という名前を付けました。Bの後にアルファベットの次の文字であるか、BCPLの名前であるかという疑問を残しました。



Cの成功の主な理由は、UNIXオペレーティングシステムの重要な部分を記述したことであり、最終的には非常に人気がありました。 UNIXに基づいて開発された現在使用されているオペレーティングシステムの数を考慮すると、それは世界で最も一般的なシステムです。 現在、オペレーティングシステムのボリュームは数百万行のコードで測定されているという事実(たとえば、最新バージョンのLinuxには10,000,000行を超えるコードが含まれています)により、UNIXを別の言語に書き換えるタスクはほとんど不可能になります。 (また、手動で書き換えると必然的にエラーが発生し、作業の安定性が大幅に低下するという事実を考慮する必要があります。ソフトウェアを使用して翻訳すると、コードのパフォーマンスが低下します)。 さらに、C言語は、コンピューターのハードウェア実装に近いため、他の多くのプログラミング言語よりもはるかに多くの言語を絞ることができます。 この事実は、UNIXを別の言語に翻訳する無意味さを示しています。 したがって、時間の経過とともに他のプログラミング言語が消えて新しいテクノロジーに取って代わる場合、C言語はUNIXが存続している間も存続します。 つまり、コンピューターは私たちが想像する形で存在しています。



Cに関する最初の本は、1978年にKerniganとRitchieによって書かれ、C Programming Languageというタイトルで出版されました。 プログラマーの間ではK&Rとして知られているこの本は、非公式のC言語標準となっています。



1970年代後半、C言語はBASICに取って代わり始めました。BASICは当時、マイクロコンピュータプログラミングのリーダーでした。 1980年代には、IBM-PCアーキテクチャに適合し、その人気が大幅に高まりました。 同時に、Bjarn Straustrupは、人気のあるC言語の構文とオブジェクト指向プログラミングの概念を組み合わせたプログラミング言語の開発を開始しました。オブジェクト指向プログラミングの概念はますます普及し、C ++言語の開発が始まりました。



Cの人気が高まっている一方で、Cのコンパイラはさまざまな企業によって作成され、多くの場合、ある会社のコンパイラでコンパイルされたプログラムは別の会社ではコンパイルされませんでした。 これはすべて、C言語の明確に定義された標準がないためです。 すべての開発者は、カーニガンとリッチーの本に導かれましたが、独自の方法で解釈しました。



C言語標準の開発は、米国規格協会(ANSI)によって行われました。 1983年に彼と一緒に、X3J11委員会が設立され、標準の開発に従事しました。 標準の最初のバージョンは1989年にリリースされ、C89と呼ばれていました。 1990年に規格にわずかな変更を加えて、ISOに採用されました。 その後、彼はコードISO / IEC 9899:1990で知られるようになりましたが、プログラマーの間では、標準が採用された年に関連付けられた名前C90が修正されました。 標準の最新バージョンはISO / IEC 9899:1999であり、C99としても知られ、2000年に採用されました。



C99標準の革新の中で、変数の宣言の場所に関する規則の変更に注意を払う価値があります。 新しい変数は、複合ブロックの先頭やグローバルスコープだけでなく、コードの途中で宣言できるようになりました。 これにより、Pascalに存在する関数の先頭にある変数宣言の概念からCが取り除かれます。 C ++で書くことに慣れている多くのプログラマー(この制限が存在しない場合)と同様に、私はこのコンパイラーの動作に不満を感じていました。 ただし、C99標準が採用されていても、Borland Embarcadeo RAD Studio 2010プログラムでは、コードブロックの先頭で変数を宣言する制限が引き続き適用されます。 C標準が完全に尊重されていない他の場所を指定することもできます。 これは、MicrosoftやBorlandなどの大企業の主な関心が新しいプログラミング言語に集中しているという事実によると考えられています。 ただし、Sun Microsystemsによると、Sun Studio開発環境はC99を完全にサポートしています。



C99標準は、現在のすべてのCコンパイラで多かれ少なかれサポートされています。 理想的には、標準を遵守し、ハードウェアおよびシステムに依存する呼び出しを使用しないCで記述されたコードは、ハードウェアベースおよびプラットフォームに依存しないコードになりました。



2007年、次のC言語標準の作業が開始されました:C1x。



All Articles