プログラミング言語
出典: フリー百科事典『ウィキペディア(Wikipedia)』
プログラミング言語(プログラミングげんご)はコンピュータに対する一連の動作の指示を記述するための人工言語の総称である。この一連の指示をプログラムと呼び、それを記述することをプログラミングと呼ぶ。
目次 |
[編集] 自然言語との違い
プログラミング言語は、人間がコンピュータに命令を指示するために作られており、コンピュータが曖昧さなく解析できるように設計されている。多くの場合構文上の間違いは許されず、人間はプログラミング言語の文法に厳密にしたがった文を入力しなければならない。
これに対して、一般に自然言語の文法規則はプログラミング言語にくらべてはるかに複雑であり、例外も多い。ただしこれは規則が一般にいいかげんであったり、曖昧であるということではない。一般に自然言語の規則は奥が深く、驚くほどの合理性に裏打ちされていることがある。
また、自然言語の意味は、その文脈(コンテキスト)によって定まる部分も多い。これに対して、プログラミング言語は、コンピュータによって扱いやすいように、文脈によって意味が変わることができるだけないように設計されている。
自然言語は、誤用や流行などにより長い時間をかけ、たくさんの人間の利用により、意図せざる形で変化していく。しかし、プログラミング言語の規則は、言語設計者の意図と作業によってのみ、変更される。
[編集] 意義
プログラミング言語の存在意義は、人間が直接扱うには難しい機械語に代わって、より人間が扱いやすい形を提供することにある。
コンピュータが直接理解し実行することのできる言葉は、そのコンピュータの種類に固有の機械語だけである。従って、最終的には機械語を使ってコンピュータが行うべき作業・計算を指示しなければならない。
しかし、機械語は複雑な決まりに従って並べられた数字の列であるので、人間にとっては理解しづらい。ごく簡単なプログラムでさえ、その機械語形式を扱うにはそれなりの習熟が必要である。まして、現在様々な業務で実用されているような複雑化したプログラムを機械語で書くことのできる人間は皆無である。
そこで、より人間に分かりやすい言葉で書いた指示を自動的に機械語に翻訳するプログラムをあらかじめ書いておく。そして自動翻訳で生成された機械語をコンピュータに実行させることにする。翻訳するプログラムは種類に応じてアセンブラ、コンパイラ、インタプリタなどと呼ばれる。必要な翻訳プログラムさえ書いておけば、人間は自分が最も扱いやすい言葉でコンピュータに指示することができる。
[編集] 文法
人間がふだん使っている日本語などの自然言語を使ってコンピュータに指示することができるのが理想ではある。しかし、自然言語はあまりにも複雑で曖昧で変則的なので、それを機械語に翻訳できるようなプログラムを作成することはとても難しい。そのような研究も進められているが、未だに汎用で実用になるプログラムは作成されたことがない。
そこで、自然言語よりも制限が強く、単純で厳密で規則的な人工言語を作って代用する。これがプログラミング言語である。プログラミング言語は自然言語よりもいくらか人間には扱いづらいが、機械語よりは遥かに親しみやすく、人間の指示の手間を軽減している。
また数式がそうであるように、簡略化された言語が正確な思考を促す側面もあるため、かえって暗号的な記号性を突き詰めるケースもある。
自然言語とちがってほとんどのプログラミング言語は厳密に定義されており、規則に従わないプログラムは実行されない。大部分のプログラミング言語の文法は文脈自由文法によって定義されている。
プログラムを作る人間がプログラマである。史上初のプログラマは、詩人バイロンの娘、エイダ・ラブレスと言われている。彼女はチャールズ・バベッジが作成した解析機関のオペレータであった。
[編集] 低級言語と高級言語
機械語やアセンブラ言語は、よりハードウェアに近い言語であり、このようなプログラミング言語を低級言語あるいは低水準言語という。また、それ以外の言語は、機械語と一対一で対応せず、より人間に近い言語であり、高級言語あるいは高水準言語という。最近ではプログラムの開発効率向上のために、沢山の高級言語が生まれてきている。その中でもプログラムを作るためのプログラミング言語というものも有る。簡単なパラメーターを入れて行ったり、選択肢を選んでいくだけでプログラムが出来てしまう高級言語もある。しかし、こういった高級言語は、ハードウェアに大変遠いため、コンピューターに大きな負荷が掛かり、ハードウェア、ソフトウェア(主にOSなど)ともに、高度な能力が必要とされる。
[編集] プログラミング言語
以下に、主要なプログラミング言語を挙げる。詳細な一覧は、プログラミング言語一覧にある。Category:プログラミング言語も参照のこと。
[編集] 関連項目
- プログラミング言語一覧
- プログラミング言語年表
- Hello world
- 抽象化 (計算機科学)
- 低級言語 - 高級言語
- 開発ツール
- 開発手法
- さまざまな言語
- コンピュータ言語