fortran66のブログ

fortran について書きます。

Guy L. Steele Jr. の講演と Fortran www

Guy L. Steele Jr. が Wirth 流の小さい言語を否定する講演

1998年の講演ですが、アナログビデオのくすんだ色調や OHP シートを手めくりするところなど、今となっては前世紀感の漂う雰囲気です。


Growing a Language, by Guy Steele

Fortran については冒頭で、チミ達が最初に好きになったころとは(言語がデブって)似ても似つかぬ姿になったろうとくさしています。Thinking Machine 社に居た頃、あんたが CM-Fortran や HPF (High Performance Fortran) でデブらせたんだろうとw 今世紀に入ってさらにデブってますけど。
f:id:fortran66:20170903021037j:plain

N. Wirth は必要最小限の要素まで言語要素を削ってゆく方針ですが、Guy L. Steele Jr.は小さい言語では駄目だと結論して、その実演のため1音節の単語のみがプリミティブだとして、二音節以上の英単語は定義してから話を進める面白講演をしています。

また言語が発達するには、言語自体を拡張する機能を持たせねばならぬとして、PASCAL・APL などが成功できなかったのは、その点にあると言っています。たしかに N. Wirth 言語は、言語自体の拡張という観念が欠落しています。

講演の最後では Java演算子オーバーロードとジェネリックを入れて、SUN が手を下さずともユーザーコミュニティーが自分で成長させる言語にすると言ってますが、その後の展開は如何でしょうか。数年前 Fortress 失敗の原因を Java の記述力の低さと言ってました。

Guy L. Steele Jr. が並列プログラムについて語る講演

講演冒頭で Fortran について DO LOOP を出して並列演算できない代表としてくさしていますが、30年前からソースコードレベルで、明示的に順序依存の DO LOOP と、順序非依存の配列演算や FORALL(25年前)を書き分けられることは HPF 規格策定にかかわってたあんたが知らないわけないだろうと(笑)


Four Solutions to a Trivial Problem - Guy Steele Jr.

従来の線形リストのような順序に依存する(イテレータ向きの)構造が並列化に向かないことを指摘していますが、出してくるネタは自分が 1980年代に Thinking Machine 社に居た頃考えた、結合則を利用して演算を Log2(N) ステップで実行するFFTっぽいアレでした。

Data parallel algorithms

https://scholar.google.com/citations?view_op=view_citation&hl=ja&user=Ur3sFscAAAAJ&cstart=120&sortby=pubdate&citation_for_view=Ur3sFscAAAAJ:u5HHmVD_uO8C


結合則はどのくらい成立するのか?スカラーの場合はいいとして、例えば行列-ベクトル積の反復は結合則が成り立つが、行列-行列積は演算量がオーダー一つ上がるのでこちらの累積冪を求めると並列化の効果が消されるのでは?などと様々な思いが去来します。

そもそも数学基礎論的な、ペアノ式に一次元全順序のリストから順序数を構成してしていく構造を写したイテレータ依存のアプローチは、基礎論でも実数論のところに来たところで選択の公理が突然でてきて、配列演算的(要素毎演算的)に順序に依らぬ処理が(手続きの詳細抜きで)一括で行われるようになる点に鑑みて、出発点がおかしい気がしなくもない。