この本は 1981 年に東京大学大学院工学系研究科に修士論文として提出されたプログラミング言語の (人間の) 言語的研究に関する論文をほぼもとのままのかたちで (手書き文字で) 出版したものである.いまになってこの論文を出版しようとかんがえたのは Kindle による電子出版が可能になったためでもあるが, 2007 年にフランスからといあわせがあったこと, 田中 久美子 著「記号と再帰」に刺激をうけたことも理由である.
要旨
プログラミング言語を, 機械のための言語というより, 人間がかき, 人間がよむための言語 [そして人間と人間とのコミュニケーションのための言語] と認識すれば, その研究はむしろ人文科学に属するものであることがわかる. そして, そこからプログラミング言語を言語学的に研究する可能性がひらけてくる. そして, おなじ認識からプログラミング言語と自然言語を比較研究することの意義がみいだされる.
これまでプログラミング言語の言語学的研究は, 興味はもたれていても実際におこなわれたことはないようである. したがって, まずその研究の基礎をきずくことが必要だとおもわれた. そこで, プログラミング言語の言語学的な見方をしめし, プログラミング言語のどの部分にどのような研究方法が適用可能であるかをしらべ, そして研究を方向づけることをこころみた.
本論文でのべる 「言語学的な見方」 のなかでもとくに重要なのは, まずプログラミング言語を慣習 (= 「非成文化規則」) をもふくめた体系としてとらえること, つぎにプログラム単位名の意味をその 「抽象」 との関係としてみることである. またプログラミング言語に言語学的方法をあてはめるための検討のなかでは, 自然言語との構造上の類似点などを指摘した. そして, 「形態論」 から 「意味論」 におよぶ研究分野をいちおう方向づけした. そのなかで重要な (意味論の) 部門のひとつは, プログラミング言語に存在するあいまい性の研究である.
言語学的研究はおもにすでに存在するプログラムを対象とするが, 本論文ではそのような系統的研究をおこなうところまでは達していない. しかし, ここから研究のてがかりをえることはできるのではないかとおもう.
目次
1. はじめに
1.1 プログラミング言語にかかわる研究の分野
1.2 プログラミング言語と自然言語の対照研究の意義
2. プログラミング言語とはどういうものか
2.1 プログラミング言語の 3 つの表現
2.2 プログラミング言語の規則
2.3 プログラミング言語の自立性
2.4 「意味」のとらえかた
2.5 言語の特性
2.6 プログラミング言語のほかの特徴
2.7 プログラミング言語の非言語的部分
2.8 プログラミング言語の変化 (variety and change)
3. プログラミング言語学とその研究分野
3.1 個別的研究
3.2 比較対照研究
4. 形態論ことはじめ
4.1 記号の分類とその構造
4.2 識別子の分節
4.3 変数名の構造
4.4 よびだしの構造
4.5 識別子の縮約
5. あいまい性の研究
5.1 一般的意味, 多義性, 同音性
5.2 多義性, 同形性の起因
5.3 あいまい性の解決の必要性
5.4 多義性, 同形性の解決
5.5 あいまい性の存在意義
6. むすび
7. 文献目録
8. 謝辞
Abstract
If we recognize that programming languages are not languages only for machines but are languages that human beings write and read, we can see that studies on them rather belong to humanities. This recognition enables possibility to study programming languages using methods of linguistics. This recognition also leads us to find significance of comparative studies on programming languages and natural languages.
Until now, some software scientists have had interests on linguistic research on programming languages, but they seems not to have performed it. So I believe that this paper should establish the basis of linguistic research. Therefore, in this paper, I show linguistic viewpoints on programming languages, show what types of analysis methods can and should be applied to which parts of programming languages, and try to show the direction of linguistic researches.
The most important linguistic viewpoints among the viewpoints shown in this paper are to regard programming languages as systems that include customs (i.e., rules that are not codified, or, not specified in language specifications), and to regard program unit names as relationships to the abstractions. In addition, in a study of applying linguistic methodology to programming languages, this paper lists and explains several structural similarities to natural languages. This paper also try to show the research direction of the fields of programming linguistics from morphology to semantics. Among them, one of the most important branch (of semantics) is research of ambiguity in programming languages.
Linguistic researches mainly target existing programs. Although this paper does not go deep into analysis of existing programs, I believe future research projects will find many clues from this paper.