メイン

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

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

[ English page ]
[ 論文 PDF ファイル (> 4 MB) ]

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

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

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

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

[ English page ]
[ PDF ファイル ]

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

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

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

[ English page ]
[ PDF ファイル ]

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

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

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

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

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

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

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

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

[ English page ]
[ Kindle 版 ]
[ 論文 PDF ファイル (> 3 MB ) ]

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

要旨

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

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

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

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

キーワード: プログラミング言語学, プログラミング言語学, ソフトウェア言語学, 非成文化規則, 非自立性, 恣意性, 非線条性, 単位の離散性, 非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 ]
[ 論文 (コピー) ]

要旨: 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, 京都大学により出版.

[ 論文 PDF ファイル ]

キーワード:

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

[ English page ]

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

金田 泰, 電子情報通信学会 第 7 回 ネットワーク仮想化時限研究会, 2013-7.
[ English page ]
[ Paper PDF file ]
[ Slides ]

Abstract: ネットワーク・プロセッサは高性能でプログラマブルなネットワークのためにひろく使用されている. しかし,ネットワーク・プロセッサのプログラムは移植性と開発者数がかぎられ,開発コストが高い. この問題を解決するためにオープンで高級かつ移植性のあるプログラミング言語 CSP とそのための開発環境 +Net を開発した. この環境においては,パケットの高速処理に必要な SRAM と DRAM のつかいわけをプログラマにできるだけ意識させずに高 いスループットがえられるようにした. ネットワーク・プロセッサ Cavium Octeon のためのプロトタイプを実装し,ネット ワーク仮想化基盤の一部を使用して評価した結果,かんたんなプログラムでワイヤレートにちかい 7.5 Gbps 以上の 性能をえた.

研究テーマ紹介: Network virtualization

キーワード: ネットワーク・プロセッサ,プログラマビリティ,移植性,SRAM,DRAM,Octeon,ネットワーク仮想化

Kanada, Y., 2nd International Workshop on Network Management and Monitoring (NetMM 2014), May 2014, http://dx.doi.org/10.1109/waina.2014.112
[ English page ]
[ 論文 PDF ファイル ]
[ スライド PDF ファイル ]

Abstract – A network processor (NP) usually contains multiple packet processing cores (PPCs) and a control processing core (CPC), and the synchronization and communication between CPC and PPCs, which is required for controlling an NP, is very complex. To reduce the complexity, a method for controlling packet processing in NPs by using PPCs is proposed. By means of this method, complex control messages are partially processed and divided into simplified control packets by a CPU outside the NP chip, and these packets are sent to a control-processing PPC. The control-processing PPC controls data-processing PPCs by using data-exchange mechanisms, such as a shared memory or an on-chip network, which are more uniform and simpler than those between a CPC and PPCs. This control method is applied to a virtual-link controlprocessing task and packet-processing tasks in a network node with a virtualization function. Both tasks are described by a hardware-independent high-level language called “Phonpl,” and communication between the PPCs is programmed following normal and uniform shared-memory semantics. As a result, programming the control-processing task and porting the program become much easier.

研究テーマ紹介: ネットワーク仮想化

キーワード: Network processors, Multi core, Control processing, Packet processing, Network virtualization

Yasusi Kanada, ACM SIGPLAN Workshop on Memory Systems Performance and Correctness (MSPC 2014), poster, June 2014.
[ English page ]
[ ポスター写真 ]
[ ポスター原稿 ]

研究テーマ紹介: ネットワーク仮想化

キーワード:

金田 泰, 情報処理学会 夏のプログラミング・シンポジウム 2014, 2014-8.
[ English page ]
[ スライド (日本語 PDF 版, 動画なし) ]
[ スライド (日本語 Keynote 版, 動画つき, Macintosh 用) ]
[ スライド (英語 PDF 版, 動画なし) ]
[ スライド (英語 Keynote 版, 動画つき, Macintosh 用) ]
[ 論文 PDF ファイル ]
[ 印刷のようす (YouTube) ]

[ “3 次元タートル・グラフィクス” Python ライブラリと使用例 ]

English version of this paper (IJERA)

skewedPyramid.jpg要旨: 3D プリンタで造形するとき,通常は 3D CAD で設計した静的 (宣言的) なモデルのデータを加工してプリンタにおくる. しかし,普及している FDM 型 3D プリンタが入力するのはプリント・ヘッドの移動とフィラメントの射出を制御する動的な手続きであり,これをより素直にプログラミング言語化ないしライブラリ化すれば,タートル・グラフィクスのような方法で 3D オブジェクトが生成できる. この 「タートル 3D 印刷」 のライブラリを Python によって記述し試用してみた. このライブラリは公開している. 3D プリンタでは宙に印刷できないことがネックになるが,その問題をうまくクリアできれば 3D タートル・グラフィクスでえがいた図形を実物にすることができる.

研究テーマ紹介: 3D 造形技術

キーワード: 3D 印刷, 3 次元印刷, Solid Free-form Fabrication, SFF, Fused deposition modeling, 3 次元タートル・グラフィクス, 3D Turtle Graphics, FDM 型 3D プリンタ,タートル・グラフィクス,Fused Deposition Modeling,熱溶解積層型 3D プリンタ

Kanada, Y., Communications and Network, Vol. 7, pp. 55-69, http://dx.doi.org/10.4236/cn.2015.71006
[
English page ]
[ 論文 PDF ファイル ]

Abstract – Network processors (NPs) are widely used for programmable and high-performance networks; however, the programs for NPs are less portable, the number of NP program developers is small, and the development cost is high. To solve these problems, this paper proposes an open, high-level, and portable programming language called “Phonepl”, which is independent from vendor-specific proprietary hardware and software but can be translated into an NP program with high perfor- mance especially in the memory use. A common NP hardware feature is that a whole packet is stored in DRAM, but the header is cached in SRAM. Phonepl has a hardware-independent abstrac- tion of this feature so that it allows programmers mostly unconscious of this hardware feature. To implement the abstraction, four representations of packet data type that cover all the packet op- erations (including substring, concatenation, input, and output) are introduced. Phonepl have been implemented on Octeon NPs used in plug-ins for a network-virtualization environment called the VNode Infrastructure, and several packet-handling programs were evaluated. As for the eval- uation result, the conversion throughput is close to the wire rate, i.e., 10 Gbps, and no packet loss (by cache miss) occurs when the packet size is 256 bytes or larger.

キーワード: Network Processors, Portability, High-Level Language, Hardware Independence, Memory Usage, DRAM, SRAM, Network Virtualization

Kanada, Y., Int. Journal of Engineering Research and Applications (IJERA), Vol. 5, No 4, Part-5, April 2015, pp.70-77.
[ English page ]
[ 論文 PDF ファイル (IJERA) ]
[ 論文 PDF ファイル (local) ]

この論文の日本語版 (情報処理学会)

skewedPyramid.jpg要旨: When creating shapes by using a 3D printer, usually, a static (declarative) model designed by using a 3D CAD system is translated to a CAM program and it is sent to the printer. However, widely-used FDM-type 3D printers input a dynamical (procedural) program that describes control of motions of the print head and extrusion of the filament. If the program is expressed by using a programming language or a library in a straight manner, solids can be created by a method similar to turtle graphics. An open-source library that enables “turtle 3D printing” method was described by Python and tested. Although this method currently has a problem that it cannot print in the air; however, if this problem is solved by an appropriate method, shapes drawn by 3D turtle graphics freely can be embodied by this method.

研究テーマ紹介: 3D 造形技術

キーワード: 3D printer, Turtle graphics, Fused Deposition Modeling, FDM

Kanada, Y., XIIIV Generative Art Conference (GA 2015), 2015-12.
[ English page ]
[ Paper PDF file ]
[ Slides PDF file ]

Abstract: 3D models are usually designed by 3D modelling tools, which are not suited for generative art. This presentation proposes two methods for designing and printing generative 3D objects. First, by using a turtle-graphics-based method, the designer decides self-motion (self-centered motion) of a turtle and print a trajectory of the turtle as a 3D object (Fig. A). The trajectory is printed using a fused-deposition-modelling (FDM) 3D printer, which is the most popular type of 3D printer. Second, by using the assembly-and-deformation method, the designer assembles parts in a palette, each of which represents stacked filaments, applies deformations to the assembled model, and prints the resulting object by an FDM 3D printer. The designer can also map textures, characters, or pictures on the surface of the object. Various shapes can be generated by using the assembly-and-deformation method. If the initial model is a thin helix with a very low cylinder (i.e., an empty cylinder with a bottom), shapes like cups, dishes, or pods with attractive brilliance can be generated, and a globe and other shapes can be generated from a helix (Fig. B).

研究テーマ紹介: 3D 造形技術

キーワード: Design, Directed 3D printing, Fused deposition modelling (FDM)

金田 泰, 情報処理学会 プログラミング研究会 2015 年度 第 5 回, 2016-2.

[ English page ]
[ 論文 PDF ファイル ]
[ スライド Keynote ファイル (Mac 用, ビデオつき) ]
[ スライド PowerPoint ファイル (ビデオつき) ]

要約: 機械加工や 3D 印刷をコンピュータを使用しておこなうとき, 工作機械や 3D プリンタを手続き的 に制御するためのプログラムが必要になる. この目的のためにひろく使用されているのが G コードである. G コードはもともと切削加工の制御のために開発され,当初は設計者がそれによるプログラムを記述 していたが, 現在は設計者は CAD によって宣言的なモデルを記述し, それをコンピュータが G コードに 変換する. しかし, 3D 印刷のような付加加工のプロセスは切削加工より直観的なので, 設計者が抽象化された手続き的記述をすることが場合によっては利点があるとかんがえられる. そこでこの論文では手続き 的な 3D 設計用ライブラリを使用した抽象化された Python プログラムによって G コードのプログラムを 生成し 3D プリンタで印刷する方法とその使用例を示す. この方法では印刷可能な形状は限定されるが, 層をなくして層のつぎめもなくし, 従来の方法においてはオーバハングがあるときに必要だった支持材料 (サポート) もなくして, シームレスでより美的な印刷を実現した.

研究テーマ紹介: 3D 造形技術

キーワード: 3D 印刷, 付加加工, 宣言的モデル, 宣言的記述, 手続き的記述, 3D プリンタ, G コード

金田 泰, 情報処理, Vol. 58, No. 6, pp. 17–23, 2017-6.

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


梗概: 現在主流の 3D 設計・印刷法は汎用性があるが万能ではないから,ほかの方法が必要なこともある.表面形状を指定するだけでは不十分なこともあり,主流の方法ではうまく印刷できない形状もある.このような際にはモデル上の各点で方向(印刷方向)を指定できる場指向オブジェクト・モデルや,手続き的なプログラムを使用した設計法,水平方向に限定されない印刷法などが有効である.これらの方法は主流の方法が持つ汎用性はないが,それが適する目的たとえば中空立体の造形においては有効である.この方法の概要や使用するライブラリ draw3dp については別の論文に記述したが,この記事ではその背景,関連動向,応用などを紹介する.



研究テーマ紹介:
3D 造形技術

キーワード: 3D設計, 3D印刷, ジェネラティブ・デザイン, ジェネレーティブデザイン