プログラム言語(読み)ぷろぐらむげんご(英語表記)programming language

日本大百科全書(ニッポニカ) 「プログラム言語」の意味・わかりやすい解説

プログラム言語
ぷろぐらむげんご
programming language

コンピュータプログラムを書き表す際の、形式および意味の取決めをいう。プログラミング言語ともいわれる。意味内容をもったことがらを定まった形式で表すというのは、定まったことばで表すということに等しい。そこでコンピュータ分野では、こうした取決めの一つ一つを言語languageとよぶ習慣がある。あわせて言語学での用語を借用して、形式の取決めを構文則(シンタックスsyntax)、意味の取決めを意味則(セマンティクスsemantics)、これらを総合して文法(グラマーgrammar)という。

[筧 捷彦]

機械語と高水準言語

コンピュータは与えられたプログラムに従って情報処理を遂行する。そのプログラムは命令の列であり、定められた形式のビット(デジタル情報量の基本単位)の組合せで表現されてメモリーにしまわれている。コンピュータごとに定められているこの表現形式を総称して機械語machine languageという。

 機械語では、個々の命令がどんなビット組合せになっているかを人が覚えて書き下していかなければならない。数値を指示する場合でも、その数値を二進法表現に変換して、ビット組合せに書き下さなければならない。そこで、命令には名前をつけてその名前を書き、数値はごく普通に十進法で書けばいいようにしたいという要求に応じてつくられたプログラム言語を、アセンブリ言語assembly languageという。また、コンピュータに計算をさせるのに、四則演算をどの順に行い、必要ならば途中結果をしまっておいて再利用する、などの手順を人が考えて書き下さなくても、計算したい結果を数式の形で書けばいいようにしたい。こうした要求に応じてつくられたプログラム言語を一般に高水準言語high-level(あるいはhigh-order)languageあるいは、コンパイラ言語compiler languageという。

[筧 捷彦]

言語処理系

アセンブリ言語で書き表したプログラムは、機械語での命令列に変換して、初めてコンピュータがそのプログラムの指示に従った情報処理(これをそのプログラムの実行executionという)を行ってくれる。この変換を行うために用意したプログラムをアセンブラという。同様に高水準言語で書き表したプログラムも、そのプログラムが示す計算を行う機械語の命令列に変換して、初めてコンピュータ上で実行できる。この変換を行うために用意したプログラムをコンパイラ(翻訳系)という。

 一般に、特定のプログラム言語で書き表したプログラムをコンピュータ上で実行するために、用意してある一連のプログラムやシステムを言語処理系language processorという。アセンブラやコンパイラのように、ある言語で書いたプログラムを他の言語に書き換えるものを変換系translatorという。変換前のプログラムをソースプログラムsource programといい、変換後のプログラムをオブジェクトプログラムobject programという。オブジェクトプログラムに並ぶ命令をオブジェクトコードobject codeという。

 言語処理系のなかには、機械語に変換することなしに、そのプログラム言語で書いたプログラムそのもの、または適当な別形式に変換した後のプログラムを逐一解釈しながら代理実行する方式をとるものもある。これをインタープリターinterpreter(「通訳」の意)という。

[筧 捷彦]

言語の世代

プログラム言語の発達を追って、世代分けすることがある。これによれば機械語を第1世代言語first generation language、アセンブリ言語を第2世代言語second generation language、コンパイラ言語を第3世代言語third generation languageという。

 多くの実務用のプログラムでは、画面設計をどうしておくか、そこにどのような入力が行われ、それに応じてどのような計算をして結果表示を行うかがその設計の根幹を占める。それなら実際に画面上に部品を配置し、テストデータを入れて、望む計算結果が得られるように式を書き込む、といった操作を積み重ねることで、必要なプログラムが自動的に組みあがるシステムがあればよい。こうした要求にこたえる形で生まれてきた言語を、第4世代言語fourth generation languageという。表計算言語とか、ビジュアル言語ともよばれている。

 なお、第5世代言語fifth generation languageという語もあるが、これは日本の通商産業省(現経済産業省)が1980年代に行ったプロジェクトのスローガンとして使われたもので、論理プログラム言語をさしていた。

[筧 捷彦]

言語の種類

機械語、アセンブリ言語、コンパイラ言語などは、いずれもデータを組み合わせてなんらかの計算を施してその結果を記録する、という動作を繰り返す形でプログラムを組み立てる。もちろん途中結果に応じて繰り返し回数を変えたり、処理の内容を変えたりもする。このように処理の手順を克明に指示する方式のものを手続き型プログラム言語procedural programming languageという。

 多くのプログラム言語は手続き型プログラム言語である。早くに設計され、いまなお広く使われているものに、科学技術計算用の FORTRAN(フォートラン)、事務処理用の COBOL(コボル)がある。教育目的でつくられたBASICベーシック)は、インタープリター方式で始まったこともあってパーソナルコンピュータ(パソコン)時代にも使われた。システム作成用には、C(シー)言語や C++(シープラスプラス)などが使われている。

 処理の手順を指示する手続き型という骨組みそのものが、プログラムをつくる際のむずかしさを増長させているのではないかという疑義から、まったく異なる骨組みをもつプログラム言語も試みられてきた。プログラムを書くのは、目的とする情報処理を行いたいからである。それなら目的とする情報処理そのものを書き表す方式を探ればよい。

 ある入力に対して特定の結果を出すというのは、数学でいう関数にほかならない。それなら基本となるいくつかの関数を用意しておき、それらから複雑な関数を組み立てていくための仕組みを提供する。プログラムはこれらを使って目的とする関数を定義する形で書くことにすればよい。この方式のものを関数プログラム言語functional program languageという。その出発LISP(リスプ、記号処理用プログラム言語の一つ)にみることができるが、代表的な関数プログラム言語には ML(エムエル)がある。

 また、入力と出力とがどんな関係にあるか(あってほしいのか)を書くことでプログラムとすることもできる。関係を書き表すには、いわゆる論理演算(「かつ」「または」「ならば」など)を基本とすればよい。この方式のものを論理プログラム言語logic program languageという。論理プログラム言語の代表は、PROLOG(プロローグ)である。

[筧 捷彦]

オブジェクト指向

現実の問題に対処するためのプログラムをつくるにあたって、現実に存在する「もの(オブジェクトobject)」をそのままコンピュータの上に映し込むという発想が有効に機能する。そこで、こうした発想を自然に反映できる形のプログラム言語が生まれてきた。画面上での図形表示を活かした入出力(GUI。graphical user interfaceの略称。グイともいう)が各種プログラムの主流となるにつれて広まった。

 オブジェクト指向言語としては、Smalltalk(スモールトーク)がその出発点となった。それぞれの言語がオブジェクト指向の機能を取り入れつつあるが、とくにC++は C言語を出発点として生まれた。Java(ジャバ)は、新しくつくられたオブジェクト指向言語であり、インタープリターを使ってインターネット上の、どのコンピュータでも実行できることを意図してつくられた。

[筧 捷彦]

出典 小学館 日本大百科全書(ニッポニカ)日本大百科全書(ニッポニカ)について 情報 | 凡例

ブリタニカ国際大百科事典 小項目事典 「プログラム言語」の意味・わかりやすい解説

プログラム言語
プログラムげんご
programming language

コンピュータに解釈できるようにつくられた人工言語。コンピュータへの指令であるプログラムを書くのに使われるためプログラム言語あるいはプログラミング言語といわれる。初期にはコンピュータが直接解読して作動することができる機械語が用いられたが,人の使う自然言語とあまりにもかけ離れプログラムの作成効率が悪いため,より自然言語に近くなるようにアセンブラ言語や,人間に理解しやすい記号や代数表現を用いて書ける高級言語が開発された。プログラム言語の設計は一通りではなく,その目的に応じてデータの形式,処理方法,文法などに違いが出てくる。たとえば,計算機のシステムをつくるにはより機械語に近い処理が可能な Cが使われ,科学技術計算には数値の扱いに適したフォートランが使われる。プログラミングの技法に応じて設計される場合も多く,手続き型言語のほか,論理構造を組み立てるのに適した PROLOGなどの論理型言語や関数を組み合わせて新しい関数をつくる LISPなどの関数型言語といった非手続き型言語がある。また,現実の「もの」を中心に考える C++などのオブジェクト指向プログラミング言語(→オブジェクト指向プログラミング)はプログラムの作成効率を上げるのに役立った。機種依存性がない言語である Javaインターネットに向いていることから世界中に広まった。

出典 ブリタニカ国際大百科事典 小項目事典ブリタニカ国際大百科事典 小項目事典について 情報

今日のキーワード

マイナ保険証

マイナンバーカードを健康保険証として利用できるようにしたもの。マイナポータルなどで利用登録が必要。令和3年(2021)10月から本格運用開始。マイナンバー保険証。マイナンバーカード健康保険証。...

マイナ保険証の用語解説を読む

コトバンク for iPhone

コトバンク for Android