テーマによるバリエーション
FORTRANは C よりも古く、数値計算の主要なプレーヤーの 1 つです。1990 年 (言語が大幅に近代化されたとき) まで、言語には (チェックされているかどうかに関係なく) ポインターの形式はありませんでした。この欠如は、メモリを動的に管理する方法がないことを意味していました。また、コンパイラにとってエイリアシング解析が容易になりました。これは、Fortran コードを高速にする要因の 1 つです。
ALGOLは最初の構造化プログラミング言語です。プログラマーの成功は限定的でしたが、言語設計者には強い影響を与えました。
Adaは、強力な型システムと優れたモジュール性を備えた命令型言語であるため、強力な保証要件を備えた低レベルのプログラミングに適しています (軍事および航空電子工学のアプリケーションを念頭に置いて米国政府が後援しました)。Modula-2やModula-3などのPascalに触発されました。
低レベルの命令型プログラミングの主流からさらに進んで、FORTHがあります。FORTH は、メモリが非常に少ないデバイス用にコンパイルでき、さらに解釈することもできます。マイクロコントローラーを含むローエンドの組み込みシステムで多くの用途があります。この言語は、HP 電卓で有名になった逆ポーランド記法に基づいています (実際、HP 電卓の言語は FORTH の影響を強く受けています)。多くの実装には変数がありません。すべてのデータは 1 つ以上のスタックに保持されます。
余談ですが、難解な言語の祖先であるINTERCALについて触れておきます。
あなたの心を吹き飛ばすもの
難解な言語は有益な場合があり、かなりの数の言語がマシンの近くで機能します (通常は仮想マシンですが、原理的には、十分に夢中になれば実際のコンピューターに実装できます)。ブレインファック(チューリング マシンと C の間の一種の中間段階) や、多くの単一命令言語、またはbefunge (メモリが2次元配列だったら?)を見ることができます。
Cycloneは C によく似ています。構文は同じで、Cyclone にはポインター、タグなしの構造体と共用体、goto ステートメント、および手動のメモリ管理があります。それでも安全な言語です。ダングリング ポインターやバッファ オーバーフローはあり得ません。また、パターン マッチング、例外、ポリモーフィズム、抽象型、およびオプションの自動メモリ管理 (ガベージ コレクションだけでなく領域も含む) などの高レベルの機能にアクセスできます。サイクロンは便利で有益です。C の頑固な人にとっては、安全な言語を作るものを発見する良い方法になる可能性があります。Cyclone は C にコンパイルできるため、C コンパイラがあればどこでもプログラムを実行できます。
別の方向に進んで、実際にハードウェアを設計していなくてもハードウェアに近づきたい場合は、LustreやEsterelなどの同期言語を見てください。これらの言語は、原子力発電所、航空機、鉄道信号などの高保証リアルタイム システムのプログラミングに使用されます。これらの言語は、チューリングの完全性を放棄し、プログラマーがプログラムの実行速度と必要なメモリ量を正確に知ることができるという保証を獲得します。C言語が機械に近いと思っているなら、実際に機械に近い言語を見つけるとショックを受けるかもしれません。