by
Anonymous Coward
on 2015年01月28日 10時20分
(#2751401)
もともとが教育用途
って、これにつきるわな。 最初のサンプルに Pascal コンパイラを提示したのも Pascal が toy language でなく十分なアルゴリズム記述能力を持っていることを示しただけだと思うよ。 分割コンパイル(ライブラリ提供)の仕組みがないことしかり、入出力が順アクセスファイルモデルで対話処理ができないことしかり、配列長・文字列長がコンパイル時に固定されることしかり、可変引数の関数・手続きが作れず組み込みの write, writeln だけ特別扱いなことしかり、ポインタの指す先は new で新たに割り当てるしか無くてしかも解放する手続きが無いことしかり、実用性は考慮されていないというよりも排除して言語をシンプルにしている。 実用言語たる C と比較された事自体が妥当ではないし、実用を目指したり新たな概念を実現しようとして新たな機能を追加しようとしてきたのも妥当ではない。その目的ならば実用言語や新しい言語を使うべき。 Pascal の実用性に関する過大な評価と期待が教育言語としての過小評価につながったんではないのかな。
PascalはPascal (スコア:2, 参考になる)
もともと教育用途のために作られ分割コンパイルすら想定していなくて、規格になったものも極めて簡素でコンパクトな仕様だった
本家本元Wirth大先生は次いでModula-2、Oberonを作りPascalには拘泥しなかった
良い言語だとは思うが、産業応用には取り残された感は否めない....................
#本当にTurbo Pascalは衝撃的だった(廉価なスクリーンエディタを買うとただでPascalコンパイラがついてくる~と言われたもんだ)
そもそもが過大評価だった(Re:PascalはPascal (スコア:1)
って、これにつきるわな。
最初のサンプルに Pascal コンパイラを提示したのも Pascal が toy language でなく十分なアルゴリズム記述能力を持っていることを示しただけだと思うよ。
分割コンパイル(ライブラリ提供)の仕組みがないことしかり、入出力が順アクセスファイルモデルで対話処理ができないことしかり、配列長・文字列長がコンパイル時に固定されることしかり、可変引数の関数・手続きが作れず組み込みの write, writeln だけ特別扱いなことしかり、ポインタの指す先は new で新たに割り当てるしか無くてしかも解放する手続きが無いことしかり、実用性は考慮されていないというよりも排除して言語をシンプルにしている。
実用言語たる C と比較された事自体が妥当ではないし、実用を目指したり新たな概念を実現しようとして新たな機能を追加しようとしてきたのも妥当ではない。その目的ならば実用言語や新しい言語を使うべき。
Pascal の実用性に関する過大な評価と期待が教育言語としての過小評価につながったんではないのかな。
Re: (スコア:0)
ポインタが指してる先を解放するdisposeはあるよ。Cのfreeと同じような。ポインタに足したり引いたりは出来ないけど。
数年前まで教育用に使ってた立場からすると、余計な事が出来ないので、確かに初学者用には向いている。
さすがに時代遅れだろうとCに切り替わったけど、Cは、範囲外アクセスやらなにやら、
行儀の悪いコードでもとにかくコンパイルが通って動き初めてしまうし、
転けたときにも、なぜ転けたかを教えてくれないので危なっかしい。
どこが悪いのかをなるべくきっちり教えてくれるという機能は教育用としては得がたい。
ただ、ちゃんとした処理系を使わないと、
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](これ自体は教育用ではないが)。
Re: (スコア:0)
配列長・文字列長がコンパイル時に固定されることしかり、
PASCALに文字列長がどうこうするデータ型なんてないだろ
Re: (スコア:0)
教育用途のためだったのかわかりませんが、結構ライブラリとかでもソース付でアップロードされてるものが多かった。勉強にはなった。
Re: (スコア:0)
Pascalといえば、個人的には国内開発圧縮アーカイバの祖みたいなlarcの印象が強いですね。
Turbo Pascal とアセンブラとTurbo Cが混在で開発が進んでたので、コードの比較というか、そう言う面でも
面白く追っかけてた記憶があります。
Pascalは確かに判りやすさという点で強みがあったですね。
Re: (スコア:0)
大学のプログラム実習で最初にやらされたのがPascalコンパイラ。
「アルゴリズム+データ構造=プログラム」の巻末コードまる写しから始めて、その後こういう言語拡張してみなさい、っていう感じだった。
たしかに勉強にはなったな。今さら戻ろうとは思わないけどw
Re: (スコア:0)
Wizardlyのプログラムに採用され、
Turbo Pascalでは一世を風靡した(お世話になりました)。
それで十分じゃないですかね。
何が不満なんだろう?
Re: (スコア:0)
Wizard"r"yでは
Re:PascalはPascal (スコア:1)
Re: (スコア:0)
Pascal文字列もそうですが、関数呼び出し規約もPascal型でしたよ。
もともとMacの開発言語がPascalをベースにしていたのはその通りです。
当時アップルが使えたコンパイラはPascalしかなかったのではなかったかな。
もちろんメモリと性能の制約が大きすぎるので最終的にはアセンブリで書きかえたでしょうが。
Pascal型の方がわずかながらコードサイズと実行時間が小さくなることも採用の後押しをしたのかなと思います。
Win16のAPI呼び出し規約も基本Pascal型だったような気がしますが、気がします程度なので眉唾でw
Re: (スコア:0)
なんというか、1980年代半ばころまではPascalのほうがメジャーな言語で、そちらを採用するのが自然だったんですよ
Re: (スコア:0)
まあそうですね。
PCの世界では80年あたりにBASICの次は構造化言語のPascalだ、なんてキャンペーンが始まって、
apple ][やPC-8001にUCSD Pascalが移植されてました。
この処理系はP-CODEとかいう仮想マシンの上で動く、今の.NETやJVMみたいなものでした。
Cというものがあるらしいぞというのも一応聞こえてはいたのですが、
実際に処理系が提供されたのがPascalの方が先だったのでしばらくはPascal優勢だった記憶があります。