訃報: Pascal言語設計者ニクラウス・ヴィルト氏 62
ストーリー by headless
訃報 部門より
訃報 部門より
コンピューターの先駆者で、プログラミング言語 Pascal などを設計・開発したニクラウス・ヴィルト氏が 1 月 1 日に死去した。89 歳だった。家族によると安らかに息を引き取ったという
(チューリヒ工科大学のニュース記事、
The Register の記事)。
ヴィルト氏は 1934 年 2 月 15 日、スイス・ヴィンタートゥールに生まれる。子供時代からテクノロジーへの熱意を示していたヴィルト氏はチューリヒ工科大学を卒業後、1960 年にカナダのラヴァル大学で修士号を取得。カリフォルニア大学バークレー校でコンピューターとプログラミング言語、コンパイラーに出会い、ハリー・ハスキー氏の元でプログラミング言語 Algol 60 の一般化の研究により博士号を取得する。
スタンフォード大学とチューリヒ大学でのアシスタントプロフェッサーを務めたのち、1968 年にチューリヒ工科大学へコンピューターサイエンスの教授として帰り、1999 年まで教鞭をとってスイスにおけるコンピューターサイエンス確立に重要な役割を果たした。
ヴィルト氏はチューリヒ工科大学での 31年間に Pascal のほか、Euler やPL360、Algol W、Modula、Modula-2、Oberon、Lolaといったプログラミング言語を開発し、1984 年にはチューリング賞を受賞。ハードウェアの進化を上回る速さでソフトウェアの低速化が進むというヴィルトの法則や、小惑星 21655 Niklauswirth にもその名を遺す。
ヴィルト氏は 1934 年 2 月 15 日、スイス・ヴィンタートゥールに生まれる。子供時代からテクノロジーへの熱意を示していたヴィルト氏はチューリヒ工科大学を卒業後、1960 年にカナダのラヴァル大学で修士号を取得。カリフォルニア大学バークレー校でコンピューターとプログラミング言語、コンパイラーに出会い、ハリー・ハスキー氏の元でプログラミング言語 Algol 60 の一般化の研究により博士号を取得する。
スタンフォード大学とチューリヒ大学でのアシスタントプロフェッサーを務めたのち、1968 年にチューリヒ工科大学へコンピューターサイエンスの教授として帰り、1999 年まで教鞭をとってスイスにおけるコンピューターサイエンス確立に重要な役割を果たした。
ヴィルト氏はチューリヒ工科大学での 31年間に Pascal のほか、Euler やPL360、Algol W、Modula、Modula-2、Oberon、Lolaといったプログラミング言語を開発し、1984 年にはチューリング賞を受賞。ハードウェアの進化を上回る速さでソフトウェアの低速化が進むというヴィルトの法則や、小惑星 21655 Niklauswirth にもその名を遺す。
Pascalは助かる (スコア:1)
C言語でランタイムエラーになるものの多くがPascalではコンパイル時のチェックで引っかかるので助かる
C言語でデバッガに頼らなければならないデバッグ作業がPascalでは関数の実行経路のトレースバックのチェックで済むことが多いので助かる(言語仕様で規定されているのではないが、Pascal系というかWirth系の言語のコンパイラ作成のお約束になっている機能がいろいろあって助かる)
Modula-2やOberonもいろいろと勉強になった
Re:Pascalは助かる (スコア:1)
PascalはLL(1)文法なので、文法エラーの指摘がわかりやすいのも助かりましたね。
初期のCコンパイラの無茶苦茶大量のエラーを解読するのは難しかった。というか、あきらめて最初のエラーだけ取って再コンパイルしまくったり。
プログラマーとして無能なほどコンパイル回数が多いと誰かが言ってたなあ。
Re:Pascalは助かる (スコア:1)
TeXとかPhotoshopとか複雑で巨大なソフトをあの時代に作れたのも、Pascalの文法と実装のおかげかも知れませんね。
Re:Pascalは助かる (スコア:1)
TeX の B巻(program)は読みました。
最初のPascalの文法と機能は厳しかったですね。でも読みやすかったです。
このストーリーとはズレますが、こんな大規模programも作れるのだと思いました。
maruken
Re: (スコア:0)
> C言語でランタイムエラーになるものの多くがPascalではコンパイル時のチェックで引っかかるので助かる
この部分の意味が判らないのですが、
Pascal のコンパイラはコードの静的解析を行っていて、静的解析で実行時エラー(ランタイムエラー)が検出できる、ってことですか?
コードの静的解析がまともに使える様になったのは2010年以降で、1980年代のコンパイラがそこまでの静的解析を実装できていたとは俄かに信じられないのですが
一体何が「助かる」だったんでしょう?
Re: (スコア:0)
当時のC言語は宣言されてない関数も呼べたりして引数の数や型が合わなかったら普通に暴走してたり(今でもできるかも)returnを書き忘れても何の警告も無かったりしたので、そういうのをちゃんと弾いてくれる、程度の意味でしょう。
程度は低くても静的解析と言えなくもない。
Re: (スコア:0)
> 当時のC言語は宣言されてない関数も呼べたりして引数の数や型が合わなかったら普通に暴走
当時のC言語はプロトタイプ宣言がなく、一方でPascalはプロトタイプ宣言(に準ずるもの)があった、と言う事ですか?
> 程度は低くても静的解析と言えなくもない。
プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
Re: (スコア:0)
#4590507 とは別人ですが
> 当時のC言語はプロトタイプ宣言がなく、一方でPascalはプロトタイプ宣言(に準ずるもの)があった、と言う事ですか?
そうです。
Re: (スコア:0)
>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
プロトタイプ宣言に限りません、C言語だと警告もなく素通しして暴走するけれどPascalだとエラーチェックしてくれるケースがたくさんありました。
「Pascalは型に厳しい」みたいな話を聞いたこと無いですか?
今の水準ですと全く厳しくないどころかむしろゆるゆるの部類ですが、CLU経由で各種OOPLに、間接的に関数型言語にも続く「型で静的なチェックを行う」流れを作ったのは間違いなくPascalです。
Re: (スコア:0)
>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
プロトタイプ宣言が必須の言語仕様しか知らないとそう感じるだけでは?
Re:Pascalは助かる (スコア:1)
>>プロトタイプ宣言のことでしたら、それは静的解析とは全く別次元の話です。
> プロトタイプ宣言が必須の言語仕様しか知らないとそう感じるだけでは?
そうですかね?1995年に書かれた、静的解析ツールに関する論文(結構有名なやつ)でさえ
- 静的解析ツールのアイデア自体は1970年代からある
- C言語のプロトタイプ宣言程度の技術は静的解析とは言えない
と書いてありますよ。
具体的にはこのpdfの2.1節の後半です。
https://web.archive.org/web/20110927010304/http://www.ida.liu.se/~TDDC... [archive.org]
Turbo PASCAL (スコア:1)
きみがPASCALだと思っているのはTurbo PASCALだ!
# AWKの話題のときに、みんなGNU AWKの話しかしてなかったからわかる。
Re:Turbo PASCAL (スコア:1)
以降の開発ツールに大きな影響を与えたという意味でTurbo PascalとDelphiの存在感はでかい。
あと昔のMacもPascalが標準の開発言語だったから、そこでPascalに触れた人もいるだろうな。
Re: (スコア:0)
Delphiには大変お世話になりました プログラマーだったころ これで数年仕事やってた
Re:Turbo PASCAL (スコア:1)
Pascalに触れたのは大学の講義だけで教科書も培風館のやつだったから純正Pascalだ!
Re: (スコア:0)
教科書が「データ構造とアルゴリズム」だけど、実機はTurbo Pascalだったような…それで結局「はじめてのPascal」を買わなければならなくなったような…もうはるか昔のことですが。
Re: (スコア:0)
処理系は確かSun Pascalでした。なにが違ったかは忘れてしまいましたが、すくなくともTurbo Pascal的なものではなかったはずですね。
Re:Turbo PASCAL (スコア:1)
統合環境、特に描画機能が好きでした。
Re:Turbo PASCAL (スコア:1)
UCSD Pascalの方がずっと以前から存在する正統派だよね
雑誌広告で名前しか知らないけど
Re:Turbo PASCAL (スコア:1)
最初に触ったのはUCSD Pascalだったかな。その頃はまだUCSD P systemではなかった。
Re: (スコア:0)
FDベースからHDDへの移行期CP/MでSorcimPASCAL。コンパイル時はFDDがガチャンガチャンww。
Re: (スコア:0)
不思議なほどコンパイルが速かったですね。
学生時代の情報処理の講義で使ったのがPC-9801のTurbo Pascalでした。
処理系がアセンブラで書かれていたのでしょうかね。
Re:Turbo PASCAL (スコア:1)
// 当時はFDでしたからね
Re: (スコア:0)
Turbo PASCAL って一時期フリーでダウンロードできてたけど、今はどうなんだろう。
手元では DOSBox で動かしてみたなぁ。コンパイルの速さは変わらず。
Pascal と言えば、氏の例の本の第1版では処理系の完全なソースが載ってたとか。
これの貢献って大きかったのではないかな。当時、日本語の本を探したけど無かった思い出。
Re:Turbo PASCAL (スコア:1)
https://www.amazon.co.jp/dp/476490098X/ [amazon.co.jp]
完全なソースが載っているのはこの本です。
Re:Turbo PASCAL (スコア:1)
ここですかね?
https://cc.embarcadero.com/prodcat.aspx?prodid=7&catid=14 [embarcadero.com]
Re: (スコア:0)
云十年昔にMS-DOSのKT-BBSがPASCAL言語で記述されていて、
私自身はZ80マシン語からの2番目の取得言語だったからある意味異色存在だったなぁ~
(最近の人にKT-BBSって言っても理解できないよなぁ‥‥)
Re: (スコア:0)
PASCAL言語で記述されたBBSってば、WWIVを思い出すよね。
W-TERMとかも有った気がする。
ご冥福をお祈りする。
Re: (スコア:0)
mmmも。
A+D=P (スコア:1)
# 「読書するプログラマ」には、このくだりも再録されたんだろうか?
Re: (スコア:0)
> (と云うか出版元)がけなされてたな…
「例の本郷」と呼ばれてた会社ですね。
本自体は名著なのになあ…
本物のプログラマはPascalを使わない (スコア:0)
はじめてあれを読んだ時はよくできたジョーク文書だと感心するだけだったが、その後授業でPascalやらされたときに確信した。
Pascalはクソ。滅ぶべき。慈悲はない。
なにがクソって、Pascalとかいう聳えたつウンコの根幹を成してる型システム。これ。
たとえばintをtypedefしてint32という型として宣言したとする、その結果intとint32が各々別の型であると認識されるまでは良い。そこまでは。
しかし配列をも型とみなしていて、int[32]とint[64]が別種の型と認識されるのは話にならない。
現代的な文字列型などもないので、すなわちすべての文字列は長さによって別々の型として認識されるということ。
templateもgenericsもない世界では致命的欠陥。なぜあの言語デザインで総称型を入れようと考えなかったのか?
細かいこと言やstaticがないとか、LL型ゆえにラベル/定数/型/変数宣言の順で書いて最後に関数の順番で書いてかなきゃないとか、演算子の強さがたったの4レベルしか定義されておらず、その結果(Cと比較してもまったく話にならないほど)評価順序に未定義動作が多いとか、他言語だったら袋叩きにされる要素が他にも色々あるけど、あの型システムのクソさの前ではすべてが霞む。
一刻も速く滅ぶべき。
てかなんでN. Wirth死んだ途端に「良い言語だった」とかいってる知能障害がわいてきてんだ?
あんなもん思い出補正でどうにかなるレベルじゃねーぞ。
当時、C/C++やる前にまずいっぺんPascal学ばせるという狂ったカリキュラム組まれたら、誰だってLinusよろしくC言語信仰はじめるわって確信できるレベル。
素のCどころか、K&R Cですら後光がさして見えてくる。
Re:本物のプログラマはPascalを使わない (スコア:1)
プロトタイプ宣言の導入されたANSI-C前後以降のCならともかく、
K&R Cと比べたらPascalの方が優れてる点はいくらでもあったと思うけどな。
だいたい1970年に仕様が制定された言語に対し、templateとかgenericsとか
いったい何を考えているのか…
Re:本物のプログラマはPascalを使わない (スコア:1)
Pascalが開発された時点では、プラットフォームは非常に多種だったが、標準的なI/Oやモジュール化は一切なかった。
当初のPascalにはモジュールはなく、I/Oも極めて貧相だった。配列長にはconstで定義した定数を使えるので、必要なら再コンパイルした。メモリも少なくプログラマが完全に把握する必要があった。
あんたが知らないだけでそのへんが強化された処理系はいろいろある。Cと違い標準的なものが存在しなかっただけ。
Re:本物のプログラマはPascalを使わない (スコア:1)
不定長の配列を手続きに渡すには、引数としてアドレスと長さの2ワードが必要になる。これを嫌い、1引数1ワードの単純な実装を指向したという事情もある。
まず制約の強い設計にし、知見が得られてから緩めるというのは正しい方針だ。制約を強めることは事実不可能で、MSが強力にコントロールしているC#ですらnull非許容型の導入まで20年もかかったし、他の有力言語はできていない。
Re: (スコア:0)
言いたいことは概ね同意するけど、null非許容型は制約を強める方向の変更ではないのか?
おまけ: null参照の考案は10億ドル単位の過ち? [developers.srad.jp]
Re: (スコア:0)
Microsoftですら制約を強める方向の変更を導入するには20年も掛かるほど困難だったと言いたいんでしょ。そんなに読解が困難な文章か? 確かに言われてみたら不可能じゃなかったのかよとツッコミたくなるが
Re: (スコア:0)
まあ二度と使わないと決めたもののその後を知らないのは自然ではある
Re: (スコア:0)
標準的なI/Oが無いとか言いつつプログラムの最初に
program foo (input, output);
とか書かせるとか、writeが標準手続きだったりと今となっては
あまりよくないところがあるのは事実。
そのあたりをPascalとして機能を増やして直すよりもModula-2として
新たにちゃんとしたのはある意味正しいやりかただったとは思う。
これだってまだ70年代の言語なのでここ30年ぐらいで当たり前に
入っている機能があるわけではないけどね。
ちなみにStandard Pascalは80年代にはISOやらANSIで規定されているし
90年の改訂版はJISにもなっている。まあTurbo
Re:本物のプログラマはPascalを使わない (スコア:1)
Re:本物のプログラマはPascalを使わない (スコア:1)
極めて初期の段階で使わされた歴史の証人の方だったりします?
オープン配列やマジック関数、汎用の文字列型(今でもPascal文字列と呼ばれている最大255文字のあれ)等々はTurboは勿論他の処理系でも早くから導入され一部はISO Extended Pascalのような規格化もされております。
ただ、他の方が書かれてますように処理系によって微妙に違って統一されてないのがネック。
Re:本物のプログラマはPascalを使わない (スコア:1)
当時の貧弱な PC の能力で、構造化言語も確立されてなく、ましてオブジェクト指向など
影も形も無い時代に良くやったほうだと思う。
これはもしかしたら Turbo PASCAL のせいかな。あれはコンパイルを 1 パスでやるために色々と制約を
つけてた。各種宣言の順番もそう。
そのせいで未だに main() を最後に持ってくる習慣が抜けない。
Re: (スコア:0)
VBAもそんな感じですね。
ライブラリヘッダやサンプルコードはその方が読みやすいと思います。
DRYの原則に従って書いていけばその形になっていくし。
本物のプログラマならtemplateもgenericsも使わない (スコア:1)
Pascalはクソと感じる事を否定する気はないし、実際に問題は多い。
でも本当に「本物のプログラマはPascalを使わない」を理解している人が
これを示した上でPascalにtemplateもgenericsが無いと文句を言う筈がない。
単にPascalを批判する事に権威を与える為に適当に引っ張ってきてるだけ。
おそらくはPascalを批判している有名な文書ぐらいの認識なんだろ。
Re: (スコア:0)
道具は選びましょう。
道具のひとつとして、いいことがあったという話ですよ。
学部の課題レポートで数時間使ってみるにはよかったという意味じゃないかなあ?
人生で二度と使わない言語で課題をやるならCよりPascalはかんたんでいいかもしれないよ。
Re: (スコア:0)
随分長文だけど、何か元ネタのテンプレがあるのかな
Wirth本人はPascalに満足してないからModulaやOberon作ったろうけど、Pascalほど流行らなかったね
Re: (スコア:0)
クソ言語仕様な根幹のおかげでワンパスみたいな恩恵をもたらし
LLも文系中心に支持を得られた。
頭ん中の整頓方法次第で受け入れ方も違うからね。
Re: (スコア:0)
言語仕様?
実装仕様?
Re: (スコア:0)
その昔、大学ではFortranとPascalを勉強したような。
Fortranの方が便利というか、Pascalは面倒くさいという印象だったかな。
Re: (スコア:0)
80年代初頭Pascalで他言語インタープリターを書くのが流行りだったな。