って、これにつきるわな。 最初のサンプルに Pascal コンパイラを提示したのも Pascal が toy language でなく十分なアルゴリズム記述能力を持っていることを示しただけだと思うよ。 分割コンパイル(ライブラリ提供)の仕組みがないことしかり、入出力が順アクセスファイルモデルで対話処理ができないことしかり、配列長・文字列長がコンパイル時に固定されることしかり、可変引数の関数・手続きが作れず組み込みの write, writeln だけ特別扱いなことしかり、ポインタの指す先は new で新たに割り当てるし
PascalはPascal (スコア:2, 参考になる)
もともと教育用途のために作られ分割コンパイルすら想定していなくて、規格になったものも極めて簡素でコンパクトな仕様だった
本家本元Wirth大先生は次いでModula-2、Oberonを作りPascalには拘泥しなかった
良い言語だとは思うが、産業応用には取り残された感は否めない....................
#本当にTurbo Pascalは衝撃的だった(廉価なスクリーンエディタを買うとただでPascalコンパイラがついてくる~と言われたもんだ)
そもそもが過大評価だった(Re:PascalはPascal (スコア:1)
って、これにつきるわな。
最初のサンプルに Pascal コンパイラを提示したのも Pascal が toy language でなく十分なアルゴリズム記述能力を持っていることを示しただけだと思うよ。
分割コンパイル(ライブラリ提供)の仕組みがないことしかり、入出力が順アクセスファイルモデルで対話処理ができないことしかり、配列長・文字列長がコンパイル時に固定されることしかり、可変引数の関数・手続きが作れず組み込みの write, writeln だけ特別扱いなことしかり、ポインタの指す先は new で新たに割り当てるし
Re:そもそもが過大評価だった(Re:PascalはPascal (スコア:0)
ポインタが指してる先を解放するdisposeはあるよ。Cのfreeと同じような。ポインタに足したり引いたりは出来ないけど。
数年前まで教育用に使ってた立場からすると、余計な事が出来ないので、確かに初学者用には向いている。
さすがに時代遅れだろうとCに切り替わったけど、Cは、範囲外アクセスやらなにやら、
行儀の悪いコードでもとにかくコンパイルが通って動き初めてしまうし、
転けたときにも、なぜ転けたかを教えてくれないので危なっかしい。
どこが悪いのかをなるべくきっちり教えてくれるという機能は教育用としては得がたい。
ただ、ちゃんとした処理系を使わないと、例えばgccベースのやつだと、Pascalの皮を被ったCになってしまっていて、
「配列の範囲外アクセスを検出する」というオプションは用意されているけど、未実装だったりして意味がなかったりするけど。
あと、添え字が1から始まるとか、他の言語では見られない機能(どうせPascalで仕事はしないだろうと言う意味で、
学習しても後に役に立たない)が付いてるとか教育用としての問題点もいろいろあるので、
もうちょっとよく使われる言語のサブセットっぽく、ちゃんとした処理系があればそっちの言語の方が教育用としても優れるだろうと思う。
Re:そもそもが過大評価だった(Re:PascalはPascal (スコア:1)
dispose はもともと無かったのよ。で、困った処理系がそれぞれ勝手な名前勝手な仕様で解放を定義し出したの。mark & release とかあったような気がする。で、後から dispose に収束して規格にも取り入れられたの。
整合配列とかも後から入ったから、配列長がコンパイル時に決っちゃうってのも緩和されてるけどね。
Re:そもそもが過大評価だった(Re:PascalはPascal (スコア:1)
まともに教育できているかの試金石なのでは。教育結果としてそんな枝葉末節が引っかかるような教育は失敗している、みたいな。
Re: (スコア:0)
CCEでいいですから (スコア:0)
6が無料になるなら大歓迎、どとねとはちょっと。。
Re: (スコア:0)
今でも.NETが嫌いな人がいるんだね。
何でだろう。
起動もパフォーマンスももはや問題にならんのに。
つーかAndroidなんて大多数のアプリがJavaじゃねーか。
しかもVMの性能が.NETよりずっと下な。
オフトピ120% (-1) (スコア:1)
>何でだろう。
月例パッチの適用処理時間が.NET関連以外の他の障害対策に比べて長大なことが好きになれない理由。
Re: (スコア:0)
性能じゃない
基本食わず嫌い、これは正直に申告しとく
ただ技術的には、VB6なら、ことブートレベルなら、追加ランタイムがほぼナシで済むから。
vb5cceはmsvbvm50がいるが、それでもいわゆるUSBポータブルにはしやすい
msvcr*はしばらくマニフェストまわりの手間があったが、最近は転がしとくだけで動く
Re: (スコア:0)
PythonとかRubyとかはどうでしょうか?
Re: (スコア:0)
アルゴリズム+データ構造=pascal と言われた通り、配列って初期の頃から
var
foo : array[-10..15] of hoge; (* 変数 foo は hoge型で添え字は -10 から 15 までの配列 *)
といった具合に自分で、対象を自然に扱えるよう指定できたはずですよ?
Re: (スコア:0)
「配列長がコンパイル時に固定される」と何も矛盾していないと思いますがいったい何に対するコメントなのでしょうか。
Re: (スコア:0)
「添え字が1から始まる」だろ。
Re: (スコア:0)
> ただ、ちゃんとした処理系を使わないと、例えばgccベースのやつだと、Pascalの皮を被ったCになってしまっていて、
> 「配列の範囲外アクセスを検出する」というオプションは用意されているけど、未実装だったりして意味がなかったりするけど。
どうせ処理系を選ばなければいけないなら、教育用に設計されたCの処理系を作ればいい気がするのだが、なぜかそういう話はいっこうに聞かないな。
C言語の「危険」とされている操作(配列の境界外のアクセスとか)はたいてい未定義動作だから、静的に検出できるならコンパイルエラーにして実行時にもすべての配列アクセスをチェックしたとしても、完璧に規格準拠だ。そういう処理系が現実に実装可能なことはすでに証明されている [aist.go.jp](これ自体は教育用ではないが)。