C言語の仲間たち

本授業では主にC言語を扱います.C++に慣れた方はC++でも構いません.
言語形態は完全な上位互換ではありませんが,A言語(APL),B言語(C言語の前身といわ
れている),C言語といった感じで年代を追って開発されてきています.

余談ですが,その後継でD,E言語もありますし.別仕様,あるいはAPLの後継として様々な
言語が開発されており,無いのはO言語くらいのようです.

そのような状況ですが,C言語は今も当たり前のように使われており,これから派生した言語
あるいは,類似した言語もあります.

大雑把な違いなどをいくつか示します.

C <-> C++ <-> JAVA <-> C#

※ C#は,C, C++, JAVAの文法含んでいるが,Pascalをオブジェクト指向にしたDelphiを基に
したものとなっています.プログラム作成の対象はWindowsのほか,ブラウザ上で動作する
ものが対象となっています.

右に行くほど,予め用意されている関数やオブジェクトなどが豊富であり,エンドユーザがやり
たいと考える動作や機能を基準とした記述がしやすくなっています.即ち,同じことをするので
あれば,より簡単に書けるという利点があります.だからこそ,よりオブジェクト指向であると
言えるのです.
また,宣言の方法などが,緩和され自由に記述できるという印象を持たれるようになります.
上の※の通り,対象となるプログラムはOSが限られたり,ブラウザ上に限られるなどオンライン
に依存したものになってしまいます.
開発のしやすさと引き換えに,同じ内容のソフトウェアになると,サイズや実行速度では少し
劣ってしまう点もあるのです.

さて,左にある程,コンピュータ寄りであり,コードを細かい手続き(プログラムの動作)通りに
書く必要があります.エンドユーザがやりたい動作も,処理系内では複数のプロセスを要すため,
より多くの設定をし,コードを記述する必要があります.
また,各種の宣言や文法が厳密であるからこそ,高級言語の中では低級言語寄りであると言われる
由縁です.
C++はオブジェクト指向であるものの,やはり厳密さがあるため,難解さもあると言われています.
プログラムの対象は,上記のほかにも,組み込み機器用のマイコンなど,OSを持たないものから,
各種のOSに対して開発環境が用意されており,ソフトウェアを用いる対象に広く使える言語であると
言えるのです.
記述の面では難しくなりますが,同じ内容のソフトウェアになると,サイズや実行速度ではよく
なる上,様々な対象に利用できる点で覚えておく価値があると言えます.

CやC++などはさらに低級なアセンブラを組み込むこともでき,ハードウェアに直接アクセスする
ような高速な処理を実行しやすくしたりできるなどの利点もあります.

※※ 上記は完全互換ではないことをご承知おき下さい.相互の知識は有用ですが,記述の仕方や
コーディングの考え方が異なります.


Pythonについて

C言語とは異なるPythonを授業で扱いました.昨今盛んに使われるようになってきており,ホビー,
アマチュアを含め,実に多くに人に使われております.
各種の宣言がC言語ほど厳格でないため,扱いやすそうと感じられた方もいるのではないでしょうか.
多くの人が使うことは,プログラム開発において大きな強みであり,誰かが完成度の高いコードを
公開してくれるライブラリが充実しているということとなります.
よく理解した上で,ライブラリを活用するのはとても有効ですので,Pythonを活用するのも良いかと
思います.
C/C++言語からPythonにアクセス(コマンドラインにタイプしたのと同様な処理をC/C++で生成)して,
便利なところを使うことも可能です.
Pythonで便利なアルゴリズムのライブラリを見付けたが,C/C++用のものが見付からないがC/C++を使う
必要がある場合,この方法が有効です.