アカウント名:
パスワード:
はじめてあれを読んだ時はよくできたジョーク文書だと感心するだけだったが、その後授業でPascalやらされたときに確信した。Pascalはクソ。滅ぶべき。慈悲はない。
なにがクソって、Pascalとかいう聳えたつウンコの根幹を成してる型システム。これ。たとえばintをtypedefしてint32という型として宣言したとする、その結果intとint32が各々別の型であると認識されるまでは良い。そこまでは。しかし配列をも型とみなしていて、int[32]とint[64]が別種の型と認識されるのは話にならない。現代的な文字列型などもないので、すなわちすべての文字列は長さによって別々の
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もそんな感じ(ベンダー拡張ゴリゴリ使いまくり)だったな
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
本物のプログラマはPascalを使わない (スコア:0)
はじめてあれを読んだ時はよくできたジョーク文書だと感心するだけだったが、その後授業でPascalやらされたときに確信した。
Pascalはクソ。滅ぶべき。慈悲はない。
なにがクソって、Pascalとかいう聳えたつウンコの根幹を成してる型システム。これ。
たとえばintをtypedefしてint32という型として宣言したとする、その結果intとint32が各々別の型であると認識されるまでは良い。そこまでは。
しかし配列をも型とみなしていて、int[32]とint[64]が別種の型と認識されるのは話にならない。
現代的な文字列型などもないので、すなわちすべての文字列は長さによって別々の
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もそんな感じ(ベンダー拡張ゴリゴリ使いまくり)だったな