アカウント名:
パスワード:
はじめてあれを読んだ時はよくできたジョーク文書だと感心するだけだったが、その後授業で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ですら後光がさして見えてくる。
プロトタイプ宣言の導入されたANSI-C前後以降のCならともかく、K&R Cと比べたらPascalの方が優れてる点はいくらでもあったと思うけどな。
だいたい1970年に仕様が制定された言語に対し、templateとかgenericsとかいったい何を考えているのか…
Pascalが開発された時点では、プラットフォームは非常に多種だったが、標準的なI/Oやモジュール化は一切なかった。当初のPascalにはモジュールはなく、I/Oも極めて貧相だった。配列長にはconstで定義した定数を使えるので、必要なら再コンパイルした。メモリも少なくプログラマが完全に把握する必要があった。あんたが知らないだけでそのへんが強化された処理系はいろいろある。Cと違い標準的なものが存在しなかっただけ。
不定長の配列を手続きに渡すには、引数としてアドレスと長さの2ワードが必要になる。これを嫌い、1引数1ワードの単純な実装を指向したという事情もある。まず制約の強い設計にし、知見が得られてから緩めるというのは正しい方針だ。制約を強めることは事実不可能で、MSが強力にコントロールしているC#ですらnull非許容型の導入まで20年もかかったし、他の有力言語はできていない。
言いたいことは概ね同意するけど、null非許容型は制約を強める方向の変更ではないのか?
おまけ: null参照の考案は10億ドル単位の過ち? [developers.srad.jp]
Microsoftですら制約を強める方向の変更を導入するには20年も掛かるほど困難だったと言いたいんでしょ。そんなに読解が困難な文章か? 確かに言われてみたら不可能じゃなかったのかよとツッコミたくなるが
まあ二度と使わないと決めたもののその後を知らないのは自然ではある
標準的なI/Oが無いとか言いつつプログラムの最初に program foo (input, output);とか書かせるとか、writeが標準手続きだったりと今となってはあまりよくないところがあるのは事実。
そのあたりをPascalとして機能を増やして直すよりもModula-2として新たにちゃんとしたのはある意味正しいやりかただったとは思う。これだってまだ70年代の言語なのでここ30年ぐらいで当たり前に入っている機能があるわけではないけどね。
ちなみにStandard Pascalは80年代にはISOやらANSIで規定されているし90年の改訂版はJISにもなっている。まあTurbo
Pascalはディスクじゃなくてテープドライブしかないようなシステムでも動いていたので。
文豪 miniやHC-88でCP/M用のalpha-Pascalで遊んでました。alpha-CはBDS-Cのサブセットだったけど、alpha-Pascalは何が元だったんだろう。
#alphaを一文字で書くとSPAM扱いされるのはなぜ?
そもそもオリジナルのPascalは基本的に教育目的のためのミニマルなコンパイラなんだから後から出てきたmodernなシステムと比較するなら、Modula-2やOberonを取り上げないとね#コマンドラインの簡単なツールを作るのにはOxford Oberonを今でも重宝してるよ(昔は32bit Delphiのコマンドライン版コンパイラを使ってた)
標準的なものが存在しなかったことを「だけ」で済ますなと思ったがそれもよく考えると後知恵か。当時はBASICもFORTRANもCOBOLもそんな感じ(ベンダー拡張ゴリゴリ使いまくり)だったな
極めて初期の段階で使わされた歴史の証人の方だったりします?オープン配列やマジック関数、汎用の文字列型(今でもPascal文字列と呼ばれている最大255文字のあれ)等々はTurboは勿論他の処理系でも早くから導入され一部はISO Extended Pascalのような規格化もされております。ただ、他の方が書かれてますように処理系によって微妙に違って統一されてないのがネック。
当時の貧弱な PC の能力で、構造化言語も確立されてなく、ましてオブジェクト指向など影も形も無い時代に良くやったほうだと思う。
ラベル/定数/型/変数宣言の順で書いて最後に関数の順番で書いてかな
これはもしかしたら Turbo PASCAL のせいかな。あれはコンパイルを 1 パスでやるために色々と制約をつけてた。各種宣言の順番もそう。
そのせいで未だに main() を最後に持ってくる習慣が抜けない。
VBAもそんな感じですね。ライブラリヘッダやサンプルコードはその方が読みやすいと思います。DRYの原則に従って書いていけばその形になっていくし。
Pascalはクソと感じる事を否定する気はないし、実際に問題は多い。
でも本当に「本物のプログラマはPascalを使わない」を理解している人がこれを示した上でPascalにtemplateもgenericsが無いと文句を言う筈がない。単にPascalを批判する事に権威を与える為に適当に引っ張ってきてるだけ。おそらくはPascalを批判している有名な文書ぐらいの認識なんだろ。
道具は選びましょう。道具のひとつとして、いいことがあったという話ですよ。学部の課題レポートで数時間使ってみるにはよかったという意味じゃないかなあ?人生で二度と使わない言語で課題をやるならCよりPascalはかんたんでいいかもしれないよ。
随分長文だけど、何か元ネタのテンプレがあるのかな
Wirth本人はPascalに満足してないからModulaやOberon作ったろうけど、Pascalほど流行らなかったね
クソ言語仕様な根幹のおかげでワンパスみたいな恩恵をもたらしLLも文系中心に支持を得られた。頭ん中の整頓方法次第で受け入れ方も違うからね。
言語仕様?実装仕様?
その昔、大学ではFortranとPascalを勉強したような。Fortranの方が便利というか、Pascalは面倒くさいという印象だったかな。
1980年ごろ、Pascalの本が無く、FORTRANの本でPascalを教えてた大学が
80年代初頭Pascalで他言語インタープリターを書くのが流行りだったな。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
本物のプログラマは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: (スコア:0)
Pascalはディスクじゃなくてテープドライブしかないようなシステムでも動いていたので。
Re: (スコア:0)
文豪 miniやHC-88でCP/M用のalpha-Pascalで遊んでました。
alpha-CはBDS-Cのサブセットだったけど、alpha-Pascalは何が元だったんだろう。
#alphaを一文字で書くとSPAM扱いされるのはなぜ?
Re:本物のプログラマはPascalを使わない (スコア:1)
Re: (スコア:0)
そもそもオリジナルのPascalは基本的に教育目的のためのミニマルなコンパイラなんだから
後から出てきたmodernなシステムと比較するなら、Modula-2やOberonを取り上げないとね
#コマンドラインの簡単なツールを作るのにはOxford Oberonを今でも重宝してるよ(昔は32bit Delphiのコマンドライン版コンパイラを使ってた)
Re: (スコア:0)
標準的なものが存在しなかったことを「だけ」で済ますなと思ったがそれもよく考えると後知恵か。当時はBASICもFORTRANもCOBOLもそんな感じ(ベンダー拡張ゴリゴリ使いまくり)だったな
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)
1980年ごろ、Pascalの本が無く、FORTRANの本でPascalを教えてた大学が
Re: (スコア:0)
80年代初頭Pascalで他言語インタープリターを書くのが流行りだったな。