プログラミング言語とは
ソフトウェアはプログラミング言語で作られる
コンピューターは人間の言語(日本語や英語など)をそのまま理解することができません。
画面上には日本語や英語などの文章が表示されていますが、これはコンピューターが理解して表示しているわけではないのです。
最近よく目にするようになった人工知能には人間と会話ができている「ようにみえる」ものもありますが、これも本当の意味でコンピューターが言葉を理解しているわけではありません。
コンピューターに理解してもらうには、コンピューターが理解できる言葉で命令をする必要があります。
そのための言葉がプログラミング言語(プログラム言語)です。
(なお、便宜的にコンピューターが「理解」できると書きましたが、これも本当に正しいとは言えません。あくまでもイメージを掴むための説明です。)
コンピューターの内部では、すべてのデータを0と1のデジタル信号で処理しています。
コンピューターに何か処理をさせるには、本来は0と1の羅列で命令しなければならないのですが、人間が「010001101…」といった並びを見て意味を理解することはほとんど不可能です。
その橋渡しをする、コンピューターに命令を与えるための専用の言語がプログラミング言語です。
プログラミング言語にはいくつかの種類がありますが、大抵のプログラミング言語は英語をベースとした記述方法が用いられています。
英語や日本語などの言語(自然言語という)に比べて文法が厳密に決められていて、文法的な間違いがあるとエラーとなってしまいプログラムは動きません。
プログラマの言いたい事をパソコン側が上手い事理解して実行してはくれないのです。
あるプログラミング言語の文法に従って記述されたファイルをソースコード、ソースプログラム、あるいは単にソースやコードといいます。
ソースコード上には作りたいプログラムの具体的な動作が記述されています。
ソースコード自体は普通のテキストファイルで、メモ帳等のテキストエディタで編集することができます。
プログラミング言語の種類
プログラミング言語にはいくつかの種類があります。
言語によって得意不得意がありますが、基本的にどの言語を選んでも実現できる機能はだいたい同じと考えて構いません。
(本当は違うけど、そう考えても当面差し支えはない)
しかし主に使用される分野というものがありますので、簡単に説明しておきます。
アプリケーション開発向け
電卓ソフトなどのOS上で起動するソフトウェアの開発に向いている言語です。
- JAVA
- C、C++
- C#
- Visual Basic
C++言語はC言語を拡張したもので、共通する部分が多い言語です。
実際にCのコードとC++のコードを混在しても問題ありません。
C#もC言語をベースとした言語ですが、別の言語になっておりコードの混在もできません。
Webアプリケーション向け
ホームページを閲覧中に動作するプログラムを作るための言語。
- JAVA
- PHP
- Perl
- Visual Basic
- JavaScript
ホームページを作るためのHTMLも広い意味でプログラミング言語の一種と言えますが、HTMLを作る人をプログラマとはあまりいいません。
(HTMLコーダーなどと呼ばれます)
JavaScriptはサーバー上で動く場合と、ユーザーのコンピューター上で動く場合との二種類があります。
(言語的には同じ物です)
JAVAとJavaScriptは別の言語で、CとC++のような関係はありません。
組み込み系
ハードウェアのチップ上で動作するプログラム開発に向いている言語です。
(電子機器の制御等)
- C、C++
- アセンブリ言語
アセンブリ言語はその他のプログラミング言語に比べて、人間にとってはかなり分かりにくい言語です。
その代わりに、他のプログラミング言語を使用したプログラムではタッチ出来ない部分まで細かくいじることができます。
パソコン用のソフトウェア開発ではそれほど出番がない言語ですが、組み込み系はメモリなどのハードウェア性能の制約が厳しい場合が多く、こういった場合にはアセンブリ言語のほうが有利な場合があります。
番外・機械語
機械語とはコンピューターが直接理解出来る形の命令です。
マシン語とも呼ばれます。
要するに0と1の二進数のカタマリです。
どのプログラミング言語でプログラムを書いても最終的に出来上がるのはこの機械語です。
人間が直接機械語を書くのは非常に労力のいる作業で、よほどのことがなければ普通はやりませんし、普通の人はできません。
直接の編集が必要な場合は二進数を十六進数に置き換えて表示することが多いです。
高水準言語と低水準言語
プログラミング言語には高水準言語と低水準言語という分類があります。
高級言語、低級言語とも呼ばれます。
高水準言語は私たちが普段使っている言葉(自然言語。英語や日本語など)に近い形の記述が可能で、低水準言語はよりコンピューター寄りの記述になる、と説明されます。
一般的なプログラミング言語は高水準言語に分類され、アセンブリ言語や機械語が低水準言語に当たります。
低水準言語が高水準言語に劣っているわけではなく、それぞれにメリット、デメリットがあります。
- 低水準言語の特徴
- ハードウェア寄りの処理が書ける
(処理の高速化に有利) - 反面、ハードウェア依存のプログラムになる
- ぱっと見ただけではコードが理解しづらい
- ハードウェア寄りの処理が書ける
- 高水準言語の特徴
- ハードウェアを(それほど)意識せずにプログラムが書ける
- 自然言語に近いので動作を理解しやすい
- 反面、処理速度が若干劣る
低水準言語の代表はアセンブリ言語です。
高水準言語は一般的なプログラミング言語が当てはまりますが、C言語はハードウェアを制御するためのコードも書けるため低水準言語だとか低水準言語寄りだと言われることがあります。
なお、高水準言語は処理速度が劣るとはいっても、最近のパソコンの性能ではほぼ違いはないと言っても差し支えありません。
一般的なソフトウェアのほとんどは高水準言語で書かれているので、これが理由で速度が遅いと感じる事はありません。
また、最近のコンパイラは最適化が優秀なため、人がアセンブリ言語で最適化をするよりも優れた結果となることもあります。
(コンパイラについては次ページで解説します)