Pascalは過小評価されている 105
ストーリー by hylom
学者のパスカルの話ではない 部門より
学者のパスカルの話ではない 部門より
eggy 曰く、
Slashdot記事「Ask Slashdot: Is Pascal Underrated?」より。
D言語に関する最近のSlashdot記事で、Pascalに対する批判的なコメントを見て驚いた。それらの批判が、古い情報や大昔の実装に基づくものであったからだ。もちろん、たとえばBrian Kernighan氏のPascal批判が1981年においては正当性があったことは私も認めるが、それ以後Pascalは進化している。
現在のObject PascalはすでにKernighan氏に指摘されているものの大部分を改善しており、また、匿名メソッドやリフレクション、属性、クラスヘルパー、ジェネリックス等の言語機能を含む。
さらに、Pascalを使ったクロスプラットフォーム開発は、かなりやり易くなっている。統合開発環境のDelphiはWindowsやOS X、iOS、Androidなどで利用できる。またFree Pascalは、さまざまなオペレーティングシステムやアーキテクチャで利用でき、LazarusはFree Pascal向けにDelphiに似た統合開発環境を提供している。
いかにPascalが過小評価されているかについて、皆さんのお考えをお聞かせ頂きたい。
バールのような (スコア:2, おもしろおかしい)
バールに比べて細かすぎる感は否めないから過少に見られてもしかたない。
#こっちは部門名で除外されてなかった
Re: (スコア:0)
バールのようなもの?
Re: (スコア:0)
ミリバールとか懐かしい。
今はヘクトパスカル。
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が無料になるなら大歓迎、どとねとはちょっと。。
オフトピ120% (-1) (スコア:1)
>何でだろう。
月例パッチの適用処理時間が.NET関連以外の他の障害対策に比べて長大なことが好きになれない理由。
Re: (スコア:0)
PythonとかRubyとかはどうでしょうか?
Re: (スコア:0)
教育用途のためだったのかわかりませんが、結構ライブラリとかでもソース付でアップロードされてるものが多かった。勉強にはなった。
Re: (スコア:0)
Wizardlyのプログラムに採用され、
Turbo Pascalでは一世を風靡した(お世話になりました)。
それで十分じゃないですかね。
何が不満なんだろう?
Re:PascalはPascal (スコア:1)
いくら進化してても (スコア:1)
他の言語も進化しているので相対的な地位は変わらない気がする。
Pascalの最大の特徴と言えば (スコア:1)
-- 哀れな日本人専用(sorry Japanese only) --
入出力の問題 (スコア:1)
最近のPascalの入出力って, 初期の特定の変数経由で行なうパターンから変わっているんですかね? このあたりが問題になって, Pascalでは実用的なプログラムを作成するのは制限が厳しいと批判されていたと記憶しているんですが.
# 個人的にはModula-2/3の方が好き
Re:入出力の問題 (スコア:1)
VCL(Visual Component Library)群も含めた Delphiならその辺りは全くノープロブレムですね、
Windows上で、GUIやらファイルやらデータベースやら通信やらから入出力するなら他の環境より
楽ですよ。
標準付属のものやサードパーティのもの自作のものを含めて多数あるVCLのほとんどは何かしらの
入出力用ですから。統合開発環境上でのドラッグドロップとプロパティの指定だけでコーディング
をほとんどしなくても、自分のコードにデータが届いて目的の場所へデータを送ることもできます。
Hidy Hidy (スコア:0)
little Pascal
Re: (スコア:0)
Rascalな
気軽に聞かせて (スコア:0)
俺がPASCALに戻れないなと思った理由は、当時、どこでも var できないのはうっとおしいって思ったから
今ならもうできる?
がんばってC++に行ったのもそれが理由だった 今ならCでも、{var {var ... }} みたいに書くことは覚えてる
PASCALは多少は覚えた言語だから、実用になる(俺に使いこなせそう)なら「研いで」おきたい
Re: (スコア:0)
俺の場合はbegin endと書くのがめんどくさい
というもっと頭悪そうな理由だったりする・・・
Re:気軽に聞かせて (スコア:1)
# 下線引いたり太字にしたりして「英字の並びではなく1個の記号」であることを示したいのだけど苦労した例多数
Re: (スコア:0)
ほんとコレ。
ブロックの開始終了ごときで英単語使うなよ。
読むのもめんどくさい。(他の識別子が埋没する)
Re: (スコア:0)
ということは、Ruby は半分めんどくさい?
Re: (スコア:0)
むしろrubyをやらない原因にこれが含まれない理由がない
それを言うなら (スコア:0)
{ } すらもないPythonが手につかない理由はそれ
避けて通れないのはわかってるんだけどねえ。。
Re:気軽に聞かせて (スコア:2)
一番有名なのは、Bourne 氏が作った Bourne Shell (UNIXの /bin/sh) [tuhs.org]でしょうね。Pascal風にするためではなく、その祖である ALGOL 風にするためだそうですが。
Re: (スコア:0)
そういう人はむしろ Knuth 先生方面へ行くといいかもしれない.
# いまどうなってるんだっけ?
Re: (スコア:0)
一方で、CはC++から取り入れたのかブロック内のどこでもローカル変数を宣言できるようになりましたね(C99より)。
なつかしい (スコア:0)
後藤英一先生が自らお書きになった原稿の青焼きで授業をしてくださった。
今でもその青焼きは家のどこかにあるはず。
ジジィなのでac
Re: (スコア:0)
後藤先生か… なんと懐かしい.さすがに授業を受けることはなかったけど、孫弟子か曾孫弟子ぐらいに相当するので出てきました.
# まだジジィではないけど ac
言語なんてなんでもよい (スコア:0)
目的の結果を最小の労力で得られるなら
#最小が故にメンテは必要なし。作り直す方が早いから
Re: (スコア:0)
ただし、作りなおすためのドキュメントで、正確なものはソースだけ。
Re:言語なんてなんでもよい (スコア:1)
ソースコードはやっている事は書いてあっても往々にしてやろうとしたかった事が抜けているので
ドキュメントとしては不完全な事が結構あったりしますけどね。
Delphiが優れているという発想がもう古い (スコア:0)
フリー実装は申し訳ないけど魅力がない
言語そのものではなく、IDEも含めた総合力が魅力だからね
似て非なるものだよ。GIMPとPhotoshopぐらい違う
Re:Delphiが優れているという発想がもう古い (スコア:1)
Delphiが素晴らしかったのは、Pascalだからではなく、IDEが良かったから、だというのは本当にその通りだと思います。
直感的にGUIプログラムが作れるRADのハシリ。対抗はVisualBasicになりますが、「コンパイル方式による、高速なコード実行」がアドバンテージでした。「VisualC++の速度」と「VisualBasicの手軽さ」を兼ね備えた感じ。
一瞬でコンパイルが終わるので、コンパイル方式ではあることをほとんど意識せずにすむ。インタプリタなVBよりもレスポンスが良いぐらい。
で、「コンパイルが速い」という「レスポンスの良さ」を実現したのは「Pascal言語のおかげ」でしょう。
C言語とPascal言語は、ぱっと見の言語仕様は似てはいますが、
「C言語はなんでも曖昧にすませることができる」のに対して、「Pascalは、なんでも厳密に書かさせる」というポリシーの違いがあって、C言語はどうしてもコンパイルに時間がかかるのに対し、Pascalは高速なコンパイルが可能です。
(Cは前方参照が許されるので、素直に実装すると、コード生成に2パス、さらにプリプロセッサも必要なので合計3パスが必要になりますが、Pascalは1パスでコード生成可能です。)
おかげで、DelphiのC++言語版であるC++ Builder は、言語が違うだけでコンポーネント類はまったく同じなのに、コンパイルはすごくもっさりでした。
その後、Delphiは重くなる一方だし、MS自身からDelphiと同じ立ち位置、VBとVC++の両方のメリットを兼ね備えた「C#」を出して来ていますので、今から新規にDelphiを使うメリットは少ないですよね。
Delphiは好きだし今もたまに使ってますけど、今から新規にプログラミングを始める人にDelphiを薦めようとは思いません。
Re:Delphiが優れているという発想がもう古い (スコア:1)
Re: (スコア:0)
フリーソフト界隈でDelphi全盛期ってのがありましたねぇ…。2000年前後?
たぶんDelphi6近辺ですね。
その少し前から私は趣味でフリーソフト書いていて、VBを選択していました。
Delphiの方が作者仲間が多いし、Win32APIの資料が豊富だし(VBで使う時の資料が大抵Delphi用)、VBはなぜか馬鹿にされるしで選択ミスったかなーと思ったもんです。
職業プログラマになってからは、VBで良かったと思いましたけど。
※同時に馬鹿にされる理由も分かった…。
当時はVBとDelphiがライバルみたいな所ありましたね。画面から簡単に作り始められるから入門用に向いていたんだろうな。
VBは早々に言語仕様の拡張あきらめちゃいましたが、Delphiはがんばってたんですねぇ。
VB.NETはC#の見た目をVBにしただけなので今から学ぶ意味は無いですが、Delphiはどうなんでしょね。
クロスプラットフォームで画面作れるならまだ価値がありそうですが、フリー実装とやらが駄目なのかな。
Borlandから分離したし、転々としてるし (スコア:0)
Delphiが今後生き残るかがわからん
Delphi大好きな友人がいたから、強力なツールだというのはわかってるけど
Re:Borlandから分離したし、転々としてるし (スコア:3)
もうDelphiは、個人で買うには、かなりお高い言語ですからね。
C++からTurboPASCAL→BorlandPASCAL(ForWin含む)→Delphiに移行した口ですが、
「Pro版のバージョンアップ価格が6万を越えた」時にバージョンアップを諦めました。
(日本語の文献も、かなり減りましたし。)
Delphiは私にとって他のコンパイラ言語より使いやすかったですが、
んな高額出しつづけるくらいなら、他の言語でよいと思ったのです。
(他の言語ができない訳でもないので。)
Re:Borlandから分離したし、転々としてるし (スコア:1)
Microsoftが Visual Studio のフルセットを無償提供し始めたし、Delphi の将来は結構厳しいと思う。
Turbo Pascal の頃からの付き合いなので何とか生き残って欲しくてバージョンアップの毎にお布施も払ってきたけれど。
---- 以下 Dephiに詳しくない人のために
1.他の方も書いているけれど、Delphi の良さは統合開発環境(IDE)の良さだ。今となってはIDEの魅力と言語自体の魅力との関係は薄いと思うけれど Delphi の統合開発環境の思想は Objective Pascal の思想だったのだと思っている、昔のUNIXとC言語の関係のようなもの。
2.Wirth氏の Pascal と Objective Pascal(あるいは Delphi言語)は、Ritchie氏とKernighan氏の初版本のC と最新のC++くらいに違う、別言語。
---- 以下 言語あるいは開発環境の比較について
古いPascalと比較されても仕方の無い話。Delphiあるいは Pascalでしか書けないようなプログラムは無いけれど、それは極一部の言語以外同じこと。変数宣言有無とかコーディングの祭のタイプ量とか、そういうのは使う目的次第、変数宣言不要な言語は沢山あるしマウス操作だけでコーディングできる処理系もある。
結局目の前にある目的に適しているか否かなのだが、Windowsで動かすプログラムで、規模とか処理内容の点で軽量言語で作るには苦しそうな場合、Visual Studio や Eclipse より Delphi の方がトータルの開発効率はまだ頭一つ上だと思う。その度合いを客観的に示すのは難しいけれど、それなりに高価で利用者も少数派であるというハンディを補って余りある魅力があるから、Delphiはかろうじて生き残っているのだと思う。
繰り返しになるけれど Visual Studio の無償化は効くだろうなあ、Delphiが消えてしまう前に、プログラムを飯の種にしている人は一度はDelphiを試してみて欲しい。
Re:Borlandから分離したし、転々としてるし (スコア:1)
今なお健在な「Delphiのメリット」って「ランタイム不要なexeファイル」、インストーラ不要ないわゆる「ポータブルなアプリ」を容易に作れるところあたりじゃないかと思いますね。本当に作るの簡単で何も考えなくていい。
C#やVB.net の場合、OS側に.net Framework を入れる必要がありますが、OSに標準でインストールされているFrameworkは古いので、ポータブルを目指すと古い低機能なものになっちゃう。
(ていうか、XPはデフォルトで.netが入ってないので、XPまで視野に入れると、.netでポータブルなアプリを作ることは不可能…)
.net化前のVBの時は、ランタイムDLLをシステムに入れずに.exeと同じフォルダに入れておくという技ができたので、その頃の方がまだマシだったぐらい。
#以前ClickOnceアプリを作った時は、.net 2.0 ベースのブートストラップアプリが.net 4.0 を入れてから、4.0ベースの本アプリを立ち上げるなんていう面倒くさいことをしましたよ…。面倒くさかった…
Re:Borlandから分離したし、転々としてるし (スコア:1)
1983年、Borland設立
→1998年、Inpriseに社名変更
→2001年、Borlandに社名を戻す
→2006年、売却を前提として、IDE部門をCodeGearに分社化
→なかなか買い手が見つからないので、しばらくはCodeGearブランドで活動
→2008年、Embacaderoが買収
って流れなので、一言で説明すると、元コメの言う「Borlandから売られてEmbarcaderoに移っただけ」なまんまでしょう。
#CodeGearの分社化は、ちょうどコードギアスを放送してたころ [srad.jp]だったよなーと懐かしんでみる。
Turbo Pascal - Delphi - C# - .NET framework (スコア:0)
結構見逃しがちだけど、Turbo Pascal 開発者のアンダース・ヘルスバーグは、Delphi を作ったあと、C# を作って、.NET Framework を作ってるんだよね.
だから、Pascal の正統後継者はもしかすると C# か .NET Framework とみなすべきかもしれなくて、「現在の Pascal」を批判するならこれらについて語らないといけないのかもよ?
# GNU Pascal のマニュアルを読むと意外な機能があって驚く.だけど、記述が為されてないままという箇所も多くて、使うとなると大変…
Re:いや過小評価じゃないでしょ (スコア:1)
かと言ってJavaやHaskellを「本物のプログラマ」が使うかといえば、使わない。
本物のプログラミング言語は FORTRAN しかないから。
Re:いや過小評価じゃないでしょ (スコア:1)
JavaってC++に比べてずいぶんと周回遅れなんですね。
Re: (スコア:0)
> 日本語のタレこみ文がなぜ読めないの?
Re: (スコア:0)
>この手の脊髄反射的なアホな煽りが増えましたね
つーか、ごく少数、もしくは特定の個人が粘着してるか、bot並みの脊髄反射してるだけだと思う。
#botだったら、それなりに高度なのでちょっと尊敬する
受験を投げた人間が出る頃なのかなとも思うけど、考えていれば、年がら年中煽りが湧いて出る理由にはことかかないんだよな。
#酒飲み音頭もしくは明日から本気出す系