プログラミング① 言語

プログラミング

コンピュータに計算させるためには、プログラミングを行う必要があります。
プログラムはプログラミング言語のルールに従って記述し、それを機械語に翻訳させて実行します。

プログラミング言語にはいろいろあり、現在ではPythonなどが使われています。

では、どの言語を使えばよいのでしょうか。

オススメ言語は、多くの方がいろいろな考え方で提案されていますので、インターネットで検索すればたくさんの情報が得られます。
そんな中で、多分、多くの方と違った視点で、オススメ言語の話をしたいと思います。

結論から言うと、オススメ言語は「C/C++言語」と「Python」です。

この時代、「C/C++言語」をオススメしている人は少ないのですが…
「C/C++言語」は比較的古い言語で、1972年に登場しました。
特徴は、
1.機械の構造を理解していないと致命的なデータ破損がおきる。
2.変数の型を明示する必要があり、間違えると致命的なデータ破損がおきる。
3.プログラムを記述した後、明示的にビルドを行う必要があり、その設定をしないといけない。
4.上記のように、かなり「書く人に優しくないかわりに、機械に優しい言語」なため、出来上がったプログラムは高速で動作する。

…「データ破損のリスクが高い」というと、全然、良くない言語のように思いますが、それだけコンピュータと仲良くなれる言語です。

C言語以降に登場したプログラミング言語は、C言語が持つリスクを軽減する方向で設計されてきました。それはそれで安全にプログラミングができ、プログラマーの負担を減らしてくれます。
しかし、即戦力でプログラミングを行う必要がないのであれば、「C/C++言語」から始めるのは、長期的には意味があると思っています。

また、現時点では、CUDAなどのグラフィックカードで超高速に計算を行うGPGPU処理は「C/C++言語」で記述することが多いです。
ゲーム作成で使用されるUnreal Engineも「C++言語」で記述します。

「C/C++言語」を学習した後、他の言語を使用するのは比較的容易です。

ということで、「C/C++言語」がオススメなのですが…
本当は、「C/C++言語」の学習は、コンピュータのハードウェアの学習と同時に行う方が効率的だと思います。

具体的には、「ディスクトップパソコンを、CPUやメインボードなどの部品を集めて組み立てる」と、コンピュータのスキルは非常に向上します。

どの部品を買い、どのように組み立てるべきかの情報を、インターネットや書籍から調べ、
通販でも、ショップでも良いのですが、購入し、
それらを組み合わせて、「動作する」パソコンを作ります。
そして、そのコンピュータで、プログラミングを行います。

コンピュータは高価です。たしかに、数十年前のよりは、比較的安い部品でも、実用的なコンピュータが出来上がりますが、それでも数万円の出費になります。
絶対に無駄にしたくないので、必死で事前調査を行うことになります。
また、組み立てるときに、数万円の部品を破損するわけにはいかないので、間違っていないかを何度も確認します。
更に…実際には、結構な確率で、組み上げた直後は動作が不安定な状況に遭遇します。
労力と費用を投入したコンピュータが、「動きませんでした」では済まされないので、何とか使えるように解決策を検討します。

そのようなことをしていると、CPUとメモリーの関係やら、GPUとチップセットの関係やら、知識が増えてきます。

機械的な知識があれば、「C/C++言語」で要求される、メモリー内でのデータ処理や、外部機器を制御するときのビットの立て方などをイメージできるようになります。

ところで、もうひとつのオススメである「Python」は、「C/C++言語」とは真逆の特徴を持っています。

「Python」は1991年に登場し、「書く人にとても親切な言語」です。また、簡単に他の人が作ったプログラムの機能を移植できるので、初心者でも高度な機能が簡単に実装できます。

そのプログラミング効率の高さは、圧倒的です。

「アセンブラ」などの、本当に機械と友達になれないと書けないような低水準言語は、思考回路が機械的でないと難しいので、一般にはオススメできません。そのため、少しだけ機械を意識して使う言語として「C/C++言語」をオススメします。

同時に、圧倒的な効率でプログラミングができる環境が整っている「Python」は、今の時代、使わないのはもったいないです。

最後に、もし、情報処理技術者試験などの資格取得も考えるなら、機械とプログラミングの関係を知っておくと役に立つを思います。

コメント