プログラミングって、そもそもナニ?
はじめに
プログラミング(正確に言うとコンピュータプログラミング)は、パソコンやスマホをはじめとするコンピュータを動かすためには欠かせない技術であり、今では様々な家電製品に組み込まれたマイクロコンピュータを含め、いたるところで行われています。今回はこのプログラミングについて取り上げてみたいと思います。
プログラミングとは
プログラミングを一言で言えば…
「コンピュータ(CPU)を希望通りに動かすための手順を作成すること」
ここで最初に用語を整理しておきたいと思います。
プログラミング
意味・使われ方
コンピュータ(CPU)を希望通りに動かすための手順を作成すること
CPU
意味・使われ方
Central Processing Unitの略でコンピュータの心臓部となる集積回路。(右の写真参照) メーカとしてはIntelやAMDが有名。
プログラミング言語
意味・使われ方
プログラミングするためには様々な言語があり、目的や用途に応じて使い分ける必要がある。
C, C++, Java, C#, Python …etc.
コンパイラ
意味・使われ方
人間がプログラミング言語で記述したものをCPUが理解できる形式(マシン語)にコンパイル(翻訳)してくれるツール
マシン語とは
CPUが理解できる「マシン語」とは何でしょうか。CPUに限らず、デジタル回路で動作しているデバイスは下図のようにHIGHレベル”1”またはLOWレベル”0”の2値のみで動作しており、これがすなわち「2進数」となります。
アドレスバス | CPUからメモリなど他のデバイスをアクセスするときに「番地(アドレス)」を指定するために使われるもので、方向はCPU → 他のデバイス(1方向) |
データバス | CPUと他のデバイス間でデータのやりとりをするために使われるもので、双方向でやりとりされる。ちなみに、データバスが64本あるとき「64ビットCPU」のように呼ばれる。 |
CPUはメモリに記憶されたマシン語のプログラムを読み取りながら実行するようになっており、一般的に2進数のままではわかりにくいので、以下のように16進数で表記するのが普通です。とは言っても、人間にとっては16進数でもわかりにくいので次項で紹介するアセンブリ言語が登場しました。
アドレス | データ(16進数) | 備考 |
0000 | 0000 | 2進数では、0000000000000000 |
0001 | 1234 | 2進数では、0001001000110100 |
0002 | FFFF | 2進数では、1111111111111111 |
: | : |
アセンブリ言語とは
コンピュータの黎明期には2進数や16進数のマシン語でプログラムすることもありましたが、さすがにそれでは効率が悪いので、人間にも理解可能なアルファベットの略語で記述するようにした以下のような「アセンブリ言語」が開発されました。この略語のことを「ニーモニック」と呼びます。
ニーモニック | 意味 | 説明 |
LD A, 12 | Aレジスタに12を代入 | 12は10進数 |
ADD A, 1 | Aレジスタに1を加算 |
このようなアセンブリ言語で記述したものをCPUが実行可能なマシン語に変換してくれるツールを「アセンブラ」と呼びます。16進数のマシン語と比較すると、だいぶわかりやすくなってはきましたが、まだまだ分かりにくいですね。そこで登場したのが次項で紹介する高水準言語です。
高水準言語とは
特に英語圏の人々には理解しやすい表現方法で記述できるように開発されたプログラミング言語を「高水準言語(または高級言語)」と呼びます。例えば以下のように記述することができます。
// サンプルプログラム(C言語の例) int func() { int a; // 整数の変数 a を定義 a = 12; // 変数aに12を代入する a = a + 1; // 変数aに1を加算する return (a); // 処理結果として a を返す }
※ //で始まる記述はプログラムのコメント
アセンブリ言語と比較して、日常的に使用する数式と似ているのでかなりわかりやすいですね。このように記述できるのが高水準言語であり、主に次のようなものがあります。
名称 | 概要 |
C言語 | 高水準言語のご本家と言っても良いもので、1972年に米国のAT&Tベル研究所によって開発されたもの。最もマシン語に近い高水準言語で実行速度が高速。 |
C++ | C言語から派生し「クラス」の概念を取り入れて構造化プログラミングできるようになり、大規模システムの開発に対応可能としたもの |
BASIC | 初心者向けのプログラミング言語として1970年代に普及したが、構造化が不可能でメンテナンスが困難になるため、C言語の登場とともに衰退していった。 |
Java | 稼働するOSに依存しないプログラミングを特長としており、ネットワークアプリケーションやAndroidスマホなど様々な分野で普及している。 |
Kotlin | Androidの公式開発言語として採用されており、Javaの資産を流用可能 |
C# | 名称だけ見るとC言語に似ているが、文法はJavaに近い。Microsoft社から開発環境が無償公開されており、Windowsアプリケーション開発の近道とも言える。 |
VisualBasic (VB) | Windowsアプリケーションを比較的容易に作成できる環境としてMicrosoft社からリリースされたもので、現在はVB.NETに引き継がれている。 |
VBA | Visual Basic for Applicationの略で、Excelなどのオフィス製品に組み込まれており、すぐに使用することができる。 |
Python | YoutubeやInstagramなどのWebアプリケーションや、最近ではAIの開発で広く普及している。膨大なライブラリが用意されており、(既存のライブラリが使えれば)驚くほど簡単にアプリケーションを開発することができる。 |
終わりに
プログラミングの概要について駆け足で説明させていただきましたが、いかがでしょうか。Excelに組み込まれたVBAはすぐに使えますので、日常業務の効率化などプログラミングしてみてはいかがでしょうか。VBAについては下記の関連ページ「検査自動化の最短開発ガイド」をご覧ください。
あわせて読みたい
関連ページ
プログラミング不要の評価システム https://www.keisoku.co.jp/pw/product/system/eval/
検査自動化の最短開発ガイド https://www.keisoku.co.jp/pw/u-po/autotest_01/