メイン

プログラミング言語とプログラミング アーカイブ

金田 泰, 東京大学大学院工学部計数工学科 卒業論文, 1979.

[ English page ]
[ 論文 PDF ファイル (8 MB !) ]

要旨: 共有メモリをもたない計算機システムのプログラムを書く場合,処理装置ごとにプログラムをかくのは問題が多い. かといって,全く逐次的なプログラムをコンパイラで書く処理装置にふりわけるのも難しい. この中間にあって,用途に応じたかきかたのできる柔軟さがあり,しかも効率のよい言語とその処理系はできないものだろうか. このような問題に関する考察は,過度に逐次的だった従来のプログラミングのありかたに対する再検討をうながすものでもある. この論文は不完全ながらもこの問題に対する 1 つの解答を与えるものである.

研究テーマ紹介: ベクトル / 並列計算機のためのプログラミング言語処理

P.S. マルチコンピュータ・システムのためのプログラミング言語を設計し,実装も 検討したが,処理系は完成しなかった. まだ Occam もなかった時代に C. A. R. Hoare の Communicating Sequential Processes に影響されて書いた 卒業論文である.

キーワード: プログラミング言語, 並列処理, Communicating Sequential Processes, CSP, マルチ・コンピュータ, マルチ・プロセッサ, マルチコンピュータ, マルチプロセッサ

金田 泰, 教育用計算センター報告, No. 13, pp. 3-25, 1979.

[ English page ]
[ PDF ファイル ]

研究テーマ紹介: スカラー計算機のためのプログラミング言語処理

これは論文ではないが,東大の教育用計算機センターにおいて 1979 年当時つかわれていた Pascal の標準 Pascal とのちがいなどについて書いたものである. 教育用計算機センターにおいてはその後, 金田が開発した Pascal コンパイラが導入されるが,この文章は もとのコンパイラに関するものである.

キーワード: プログラミング言語, Pascal

T.KY., I/O 別冊 システム・プログラム・ライブラリ 1, pp. 145-156, 1980.

[ English page ]
[ PDF ファイル ]

要旨: 文字列の形をしたプログラムやデータの編集ができる 「テキスト・エディタ」 を BASIC で書きました. テキスト・エディタは,特に成績処理など大量のデータを扱かうときには大変便利ですから,まだ使っていない方にはぜひ使っていただきたいと思います.

付記: T.KY. は金田がつかったペンネームです. 関連するブログのエントリーがあります.

キーワード: Apple II, テキスト・エディタ, テキストエディター, Basic

金田 泰, 第 21 回プログラミング・シンポジウム報告集, pp. 143-152, 1980.

[ English page ]
[ 論文 PDF ファイル ]

要旨: 従来の,Trunk からつくった 1 パスの Pascal コンパイラには,Trunk が改訂されたときの再移植がむずかしく,また最適化がむずかしいという欠点があった. この問題を解決するためには,適当な中間コードをえらんで,コンパイラを多パスにすればよいが, そのようなコンパイラを Pascal-P を拡張してつくった. この処理系 (の機械依存の部分) は display をもちいる方式をとったが, 非局所変数のないときには,わずかの最適化をすることによって, もともと非局所変数をもたない言語のばあいとおなじ効率を達成できる.

研究テーマ紹介: スカラー計算機のためのプログラミング言語処理

キーワード: Pascal, プログラミング言語処理系, コンパイラ

金田 泰, 東京大学大学院工学系研究科情報工学専門課程 修士論文, 1981.

[ English page ]
[ 論文 PDF ファイル (6 MB !) ]

研究テーマ紹介: プログラミング言語学

要旨

プログラミング言語を,機械のための言語というより,人間がかき,人間がよむための言語と認識すれば,その研究はむしろ人文科学に属するものであることがわかる. そして,そこからプログラミング言語を言語学的に研究する可能性がひらけてくる. そして,おなじ認識からプログラミング言語と自然言語を比較研究することの意義がみいだされる.

これまでプログラミング言語の言語学的研究は,興味はもたれていても実際におこなわれたことはないようである. したがって,まずその研究の基礎をきずくことが必要だとおもわれた. そこで,プログラミング言語の言語学的な見方をしめし,プログラミング言語のどの部分にどのような研究方法が適用可能であるかをしらべ,そして研究を方向づけることをこころみた.

本論文でのべる 「言語学的な見方」 のなかでもとくに重要なのは,まずプログラミング言語を慣習 (= 「非成文化規則」) をもふくめた体系としてとらえること,つぎにプログラム単位名の意味をその 「抽象」 との関係としてみることである. またプログラミング言語に言語学的方法をあてはめるための検討のなかでは,自然言語との構造上の類似点などを指摘した. そして,「形態論」 から 「意味論」 におよぶ研究分野をいちおう方向づけした. そのなかで重要な (意味論の) 部門のひとつは,プログラミング言語に存在するあいまい性の研究である.

言語学的研究はおもにすでに存在するプログラムを対象とするが,本論文ではそのような系統的研究をおこなうところまでは達していない. しかし,ここから研究のてがかりをえることはできるのではないかとおもう.

目次

  1. はじめに
    1. プログラミング言語にかかわる研究の分野
    2. プログラミング言語と自然言語の対照研究の意義
  2. プログラミング言語とはどういうものか
    1. プログラミング言語の 3 つの表現
    2. プログラミング言語の規則
      1. 成文化規則と非成文化規則 1
      2. 「非成文化規則」 は存在するか
      3. 成文化規則と非成文化規則 2
      4. 成文化規則の細分
      5. 伝達機能による規則の分類
      6. プログラミング言語の規則と自然言語の規則
      7. 規則の柔軟性
      8. 規則の複雑さについて
      9. 規則にかかわる言語学的研究の課題
    3. プログラミング言語の自立性
      1. 自立性を検討する理由
      2. 非自立性を支持する根拠
      3. 自立性を支持する根拠
      4. 工学的検討
    4. 「意味」のとらえかた
      1. 基本的三角形
      2. 「意味」の定義
    5. 言語の特性
      1. 「自然言語の特性」 A. 伝達機能,B. 記号の恣意性,C. 体系性,D. 記号とメッセージの線条性 (linearity),E. 単位の離散性 (discreteness),F. 2 重分節 (double articulation)
      2. プログラミング言語は言語の特性をそなえているか A. 伝達機能,B. 記号の恣意性,C. 体系性,D. 記号とメッセージの線条性,E. 単位の離散性,F. 2 重分節
    6. プログラミング言語のほかの特徴
      1. あいまい性について
      2. 閉鎖性と進化性
      3. プログラミング言語ははなされない
      4. 命名の頻度と語の有効範囲 (scope)
      5. プログラムは「つかわれ」,かきかえられる
    7. プログラミング言語の非言語的部分
      1. 式の性質 A. 非 2 重分節性,B. 非線条性
      2. 非言語的部分の存在意義
    8. プログラミング言語の変化 (variety and change)
  3. プログラミング言語学とその研究分野
    1. 個別的研究
      1. 個別的研究の分野
      2. 文法論
      3. 意味論
    2. 比較対照研究
  4. 形態論ことはじめ
    1. 記号の分類とその構造
    2. 識別子の分節
    3. 変数名の構造
    4. よびだしの構造
      1. 規定書上の構造
      2. 関数よびだしの構造
      3. 手続きよびだしの構造
      4. 手続きよびだしの構造に関する工学的考察
    5. 識別子の縮約
      1. 識別子のながさの制約と対策
      2. 縮約規則
  5. あいまい性の研究
    1. 一般的意味,多義性,同音性
    2. 多義性,同形性の起因
    3. あいまい性の解決の必要性
    4. 多義性,同形性の解決
    5. あいまい性の存在意義
  6. むすび
  7. 文献目録
  8. 謝辞

追記 (2007)

プログラミング言語を (人間の) 言語学的に (すなわち人文科学的に) 解析することをめざした論文である. (プログラミング言語に関しては,言語学的にみて当時と現在とでそれほどおお きな変化はないとかんがえられる. しかし,当時まだひろくつかわれていなかっ たデータを記述するための言語とくに XML が,現在ではひろくつかわれるように なっている. XML を言語学的に解析することでえられるものがあるだろうとおもう.)

キーワード: プログラミング言語学, プログラミング言語学, ソフトウェア言語学, 非成文化規則, 非自立性, 恣意性, 非線条性, 単位の離散性, 非2重分節, 非二重分節, あいまい性, 曖昧性, 閉鎖性, 進化性, 有効範囲, 形態論, 多義性, 同形性

金田 泰, 安村 通晃, 情報処理学会第 27 回全国大会, 7P-2, 1983.

[ English page ]
[ 論文 PDF ファイル ]

キーワード: プログラミング言語処理系, ベクトル化, ベクトル処理, 配列データフロー解析, スーパーコンピューティング, スーパーコンパイラ, ベクトルレジスタわりあて, ベクトルレジスタ割り当て, ベクトルレジスタ割当て

田中 義一, 金田 泰, 安村 通晃, 情報処理学会第 27 回全国大会, 7P-9, 1983.

[ English page ]
[ 論文 PDF ファイル ]

キーワード: プログラミング言語処理系, ベクトル化, ベクトル処理, データフロー解析, スーパーコンピューティング, スーパーコンパイラ

Yasumura, M., Tanaka, Y., Kanada, Y., Aoyama, A., Int'l Conf. on Parallel Processing, IEEE, pp. 258-290, 1984.

[ English pge ]
[論文草稿 PDF ファイル]

研究テーマ紹介: ベクトル / 並列計算機のためのプログラミング言語処理

キーワード: ベクトル化, プログラミング言語処理系, スーパーコンピューティング, スーパーコンパイラ

石田 和久, 金田 泰, 情報処理学会第 33 回全国大会, 1986, IPSJ により出版.

キーワード:

金田 泰, 石田 和久, 布広 永二, 情報処理学会論文誌, Vol. 28, No. 6, pp. 567-576, 1987.

[ English page ]
[ PDF 版論文へのいりぐち (IPSJ) ]

要旨: 配列参照どうしのデータ依存関係としてフロー依存,出力依存および 逆依存があり,これらをグラフ化したのがデータ依存グラフである. 配列参照どうしのデーク依存関係は,従来,各配列参照の添字を 比較してその結果から直接もとめていたが,この方法ではプログラムの 制御構造を反映したデータ依存関係をもとめることがむずかしい. 筆者らは,多重ループの添字を解析することができる添字比較法と, 到達定義 (reaching definitions) や露出使用 (exposed uses) を もとめる変数の大域データフロー解析法とをくみあわせることによって, 条件文や多重ループなどの制御構造を反映したデータ依存グラフを もとめる,配列の大域データフロー解析法を開発した. この解析法では,データ依存関係をループ独立依存, ループ運搬依存などに分類することができる. ここで, ループ独立依存とはプログラム中のループ内の文を1回実行する あいだに生じるデータ依存関係のことをいい,ループ運搬依存とは それを 2 回以上実行することによってはじめて生じる データ依存関係のことをいう. この解析法によって, 従来より強力なベクトル化や最適化ができるようになった.

研究テーマ紹介: ベクトル / 並列計算機のためのプログラミング言語処理

キーワード: プログラミング言語処理系, ベクトル化, ベクトル処理, 配列データフロー解析, スーパーコンピューティング, スーパーコンパイラ

Gotou, S., Tanaka, Y., Iwasawa, K., Kanada, Y., and Aoyama, A., Journal of Information Processing, Vol. 11, No. 1, pp. 22-31, 1987.

[ English page ]
[ PDF 版論文へのいりぐち (IPSJ) ]

要旨: A new FORTRAN 77/HAP compiler for Hitachi's supercomputers S-810 and S-820 has been implemented featuring new compiling techniques to enable users to easily obtain higher performance. The most important element of this compiler is an advanced global data flow analysis method which determines whether vectorization as well as optimization can be applied or not. Also important are powerful program transformation techniques for vectorization and optimization to vectorize more portions of the programs and produce more efficient code. The performance improvement of this new compiler is compared with the performance of the previous compiler. It is also pointed out that these method and techniques can be applicable to other supercomputers as well.

研究テーマ紹介: ベクトル / 並列計算機のためのプログラミング言語処理

キーワード: ベクトル化, プログラミング言語処理系, スーパーコンピューティング, スーパーコンパイラ

Kanada, Y., 未出版, 1989.

[ English page ]
[ 論文 PDF ファイル ]

要約: A loop-like control structure without using backtracking, or conjunctive iteration, is expressed using recursion in Prolog. However, recursion is too powerful to express an iteration, which needs more restrictive syntax and semantics. This paper presents a general-purpose iteration predicate do. Predicate do enables a programmer to write most iterations, such as arithmetical iterations, append, member, mapcar or reduce, and so on, more easily and in more readable way, in combination with the extended λ term, which is a concept similar to the λ expression in Lisp. Unification and logical variables in Prolog enables some extensive usage of the control structure compared with those of other programming languages, such as Lisp.

キーワード: プログラミング言語, 制御構造, 論理型言語, Prolog

金田 泰, 情報処理学会 「夏のプログラミング・シンポジウム」, 別冊 (105-112), 1997-7.

[ English page ]
[ 論文 PDF ファイル ]

要約: Web ページ中の JavaScript プログラムは,そのプログラムじたいをふくむ ページ内容を消去して,あらたにページ内容を生成することができる. JavaScript プログラムはそのプログラムをふくむ正確に同一のページ内容を 生成できる. したがって,Web ページはそこにふくまれる JavaScript プログラムによって自己再生産できる. 正確な再生産はやくにはたたないが, 内容の一部を変化させる "不正確な再生産" は実用的な目的でつかえる. この方法によって,たとえばページ中のボタンをおすことでアウトライン・モード から詳細表示モードに,またその逆に変化させることができる. この方法は, 自己再生産するプログラムを文書がふくむことができるなら,SGML や XML など,HTML 以外の文書にも適用できる. またここではプログラムを再生産せずに Web ページを再生産する方法についてものべる. 自己再生産する Web ページは 部分的にだが Netscape Navigator において実際に動作する.

研究テーマ紹介: Web ページの自己再生産

キーワード: 自己再生産, 自己増殖, プログラミング言語, JavaScript

Kanada, Y., ACM SIGPLAN Notices, Vol. 32, No. 11, pp. 49-56, November, 1997.

[ English page ]
[ 論文 PDF ファイル改訂版 ]
[ 論文 PDF ファイル (オリジナル) ]

要約:
A JavaScript program in a Web page can clear the page content including
the program itself and generate new content. The program can generate
exactly the same content including the program itself. This means that
a Web page can reproduce itself by JavaScript program that is included in
the page. Although exact reproduction is useless, inexact reproduction,
which transform part of the content, is usable for more practical purpose.
For example, Web pages that change its view from outline mode to detail
mode by clicking a button in the page can be implemented using this method.
This method can also applicable to other types of documents, such as SGML
or XML, if the document may contain self-reproductive program. Another
method for reproducing Web pages without reproducing programs is also
mentioned. Reproductive Web pages partially but really work on Netscape
Navigator.

研究テーマ紹介: Web ページの自己再生産

キーワード: 自己再生産, 自己増殖, プログラミング言語, JavaScript

Yasumura Michiaki, Tanaka Yoshikazu, Kanada Yasusi, 数理解析研究所講究録, 1999, IPSJ により出版.

キーワード:

金田 泰, 情報処理, vol. 44, No. 2, 2003.

[ English page ]

キーワード: 非決定性アルゴリズム, 非決定的アルゴリズム