パスワードを忘れた? アカウント作成
11887205 story
プログラミング

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, おもしろおかしい)

    by Anonymous Coward on 2015年01月28日 8時04分 (#2751327)

    バールに比べて細かすぎる感は否めないから過少に見られてもしかたない。

    #こっちは部門名で除外されてなかった

    • by Anonymous Coward

      バールのようなもの?

      • by Anonymous Coward

        ミリバールとか懐かしい。
        今はヘクトパスカル。

  • PascalはPascal (スコア:2, 参考になる)

    by Anonymous Coward on 2015年01月28日 8時42分 (#2751336)

    もともと教育用途のために作られ分割コンパイルすら想定していなくて、規格になったものも極めて簡素でコンパクトな仕様だった
    本家本元Wirth大先生は次いでModula-2、Oberonを作りPascalには拘泥しなかった
    良い言語だとは思うが、産業応用には取り残された感は否めない....................
    #本当にTurbo Pascalは衝撃的だった(廉価なスクリーンエディタを買うとただでPascalコンパイラがついてくる~と言われたもんだ)

    • by Anonymous Coward on 2015年01月28日 10時20分 (#2751401)

      もともとが教育用途

      って、これにつきるわな。
      最初のサンプルに Pascal コンパイラを提示したのも Pascal が toy language でなく十分なアルゴリズム記述能力を持っていることを示しただけだと思うよ。
      分割コンパイル(ライブラリ提供)の仕組みがないことしかり、入出力が順アクセスファイルモデルで対話処理ができないことしかり、配列長・文字列長がコンパイル時に固定されることしかり、可変引数の関数・手続きが作れず組み込みの write, writeln だけ特別扱いなことしかり、ポインタの指す先は new で新たに割り当てるしか無くてしかも解放する手続きが無いことしかり、実用性は考慮されていないというよりも排除して言語をシンプルにしている。
      実用言語たる C と比較された事自体が妥当ではないし、実用を目指したり新たな概念を実現しようとして新たな機能を追加しようとしてきたのも妥当ではない。その目的ならば実用言語や新しい言語を使うべき。
      Pascal の実用性に関する過大な評価と期待が教育言語としての過小評価につながったんではないのかな。

      親コメント
      • by Anonymous Coward

        ポインタが指してる先を解放するdisposeはあるよ。Cのfreeと同じような。ポインタに足したり引いたりは出来ないけど。

        数年前まで教育用に使ってた立場からすると、余計な事が出来ないので、確かに初学者用には向いている。

        さすがに時代遅れだろうとCに切り替わったけど、Cは、範囲外アクセスやらなにやら、
        行儀の悪いコードでもとにかくコンパイルが通って動き初めてしまうし、
        転けたときにも、なぜ転けたかを教えてくれないので危なっかしい。
        どこが悪いのかをなるべくきっちり教えてくれるという機能は教育用としては得がたい。

        ただ、ちゃんとした処理系を使わないと、

        • by Anonymous Coward on 2015年01月28日 11時56分 (#2751479)

          dispose はもともと無かったのよ。で、困った処理系がそれぞれ勝手な名前勝手な仕様で解放を定義し出したの。mark & release とかあったような気がする。で、後から dispose に収束して規格にも取り入れられたの。
          整合配列とかも後から入ったから、配列長がコンパイル時に決っちゃうってのも緩和されてるけどね。

          親コメント
        • あと、添え字が1から始まるとか、他の言語では見られない機能(どうせPascalで仕事はしないだろうと言う意味で、学習しても後に役に立たない)が付いてるとか教育用としての問題点もいろいろあるので、

          まともに教育できているかの試金石なのでは。教育結果としてそんな枝葉末節が引っかかるような教育は失敗している、みたいな。

          親コメント
        • by Anonymous Coward
          もともと教育用に開発された言語がベースで圧倒的普及率を誇るWindowsがメインターゲット、長年数々の実用アプリケーションが作成されてきた実績を持ち、そのうえ処理が無料で使えるあの言語使うといいと思うよ。
        • by Anonymous Coward

          PythonとかRubyとかはどうでしょうか?

    • by Anonymous Coward

      教育用途のためだったのかわかりませんが、結構ライブラリとかでもソース付でアップロードされてるものが多かった。勉強にはなった。

    • by Anonymous Coward

      Wizardlyのプログラムに採用され、
      Turbo Pascalでは一世を風靡した(お世話になりました)。

      それで十分じゃないですかね。
      何が不満なんだろう?

  • by Anonymous Coward on 2015年01月28日 8時24分 (#2751333)

    他の言語も進化しているので相対的な地位は変わらない気がする。

  • コンパイラ論で「PascalはLL(1)文法(キリッ)」と言うのがかっこいいなぁと思うんですけど、今でもちゃんとLL(1)文法なのかなぁ?
    --
    -- 哀れな日本人専用(sorry Japanese only) --
  • by SteppingWind (2654) on 2015年01月28日 12時49分 (#2751513)

    最近のPascalの入出力って, 初期の特定の変数経由で行なうパターンから変わっているんですかね? このあたりが問題になって, Pascalでは実用的なプログラムを作成するのは制限が厳しいと批判されていたと記憶しているんですが.

    # 個人的にはModula-2/3の方が好き

    • by T.SKG (20663) on 2015年01月28日 14時38分 (#2751586) 日記

      VCL(Visual Component Library)群も含めた Delphiならその辺りは全くノープロブレムですね、
      Windows上で、GUIやらファイルやらデータベースやら通信やらから入出力するなら他の環境より
      楽ですよ。

      標準付属のものやサードパーティのもの自作のものを含めて多数あるVCLのほとんどは何かしらの
      入出力用ですから。統合開発環境上でのドラッグドロップとプロパティの指定だけでコーディング
      をほとんどしなくても、自分のコードにデータが届いて目的の場所へデータを送ることもできます。

      親コメント
  • by Anonymous Coward on 2015年01月28日 9時10分 (#2751352)

    little Pascal

  • by Anonymous Coward on 2015年01月28日 9時15分 (#2751354)

    俺がPASCALに戻れないなと思った理由は、当時、どこでも var できないのはうっとおしいって思ったから
    今ならもうできる?

    がんばってC++に行ったのもそれが理由だった 今ならCでも、{var {var ... }} みたいに書くことは覚えてる

    PASCALは多少は覚えた言語だから、実用になる(俺に使いこなせそう)なら「研いで」おきたい

    • by Anonymous Coward

      俺の場合はbegin endと書くのがめんどくさい
      というもっと頭悪そうな理由だったりする・・・

      • by nekopon (1483) on 2015年01月28日 11時17分 (#2751435) 日記
        PascalにもFORTRANにも予約語が存在しない、って言ったら信じる?
        # 下線引いたり太字にしたりして「英字の並びではなく1個の記号」であることを示したいのだけど苦労した例多数
        親コメント
      • by Anonymous Coward

        ほんとコレ。
        ブロックの開始終了ごときで英単語使うなよ。
        読むのもめんどくさい。(他の識別子が埋没する)

      • by Anonymous Coward

        ということは、Ruby は半分めんどくさい?

        • by Anonymous Coward

          むしろrubyをやらない原因にこれが含まれない理由がない

      • by Anonymous Coward

        { } すらもないPythonが手につかない理由はそれ
        避けて通れないのはわかってるんだけどねえ。。

    • by Anonymous Coward

      そういう人はむしろ Knuth 先生方面へ行くといいかもしれない.

      # いまどうなってるんだっけ?

    • by Anonymous Coward

      一方で、CはC++から取り入れたのかブロック内のどこでもローカル変数を宣言できるようになりましたね(C99より)。

  • by Anonymous Coward on 2015年01月28日 9時21分 (#2751360)

    後藤英一先生が自らお書きになった原稿の青焼きで授業をしてくださった。
    今でもその青焼きは家のどこかにあるはず。

    ジジィなのでac

    • by Anonymous Coward

      後藤先生か… なんと懐かしい.さすがに授業を受けることはなかったけど、孫弟子か曾孫弟子ぐらいに相当するので出てきました.

      # まだジジィではないけど ac

  • by Anonymous Coward on 2015年01月28日 9時33分 (#2751365)

    目的の結果を最小の労力で得られるなら

    #最小が故にメンテは必要なし。作り直す方が早いから

    • by Anonymous Coward

      ただし、作りなおすためのドキュメントで、正確なものはソースだけ。

      • by Anonymous Coward on 2015年01月28日 12時30分 (#2751499)

        ソースコードはやっている事は書いてあっても往々にしてやろうとしたかった事が抜けているので
        ドキュメントとしては不完全な事が結構あったりしますけどね。

        親コメント
  • by Anonymous Coward on 2015年01月28日 9時59分 (#2751388)
    Delphi6あたりを頂点として落ちていく一方

    フリー実装は申し訳ないけど魅力がない
    言語そのものではなく、IDEも含めた総合力が魅力だからね
    似て非なるものだよ。GIMPとPhotoshopぐらい違う
    • 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を薦めようとは思いません。

      親コメント
    • ところで、Kylixってどうなったんだろ?
      親コメント
    • by Anonymous Coward

      フリーソフト界隈でDelphi全盛期ってのがありましたねぇ…。2000年前後?
      たぶんDelphi6近辺ですね。

      その少し前から私は趣味でフリーソフト書いていて、VBを選択していました。
      Delphiの方が作者仲間が多いし、Win32APIの資料が豊富だし(VBで使う時の資料が大抵Delphi用)、VBはなぜか馬鹿にされるしで選択ミスったかなーと思ったもんです。

      職業プログラマになってからは、VBで良かったと思いましたけど。
      ※同時に馬鹿にされる理由も分かった…。

      当時はVBとDelphiがライバルみたいな所ありましたね。画面から簡単に作り始められるから入門用に向いていたんだろうな。
      VBは早々に言語仕様の拡張あきらめちゃいましたが、Delphiはがんばってたんですねぇ。
      VB.NETはC#の見た目をVBにしただけなので今から学ぶ意味は無いですが、Delphiはどうなんでしょね。
      クロスプラットフォームで画面作れるならまだ価値がありそうですが、フリー実装とやらが駄目なのかな。

  • by Anonymous Coward on 2015年01月28日 10時12分 (#2751397)

    Delphiが今後生き残るかがわからん

    Delphi大好きな友人がいたから、強力なツールだというのはわかってるけど

    • もうDelphiは、個人で買うには、かなりお高い言語ですからね。

      C++からTurboPASCAL→BorlandPASCAL(ForWin含む)→Delphiに移行した口ですが、
      「Pro版のバージョンアップ価格が6万を越えた」時にバージョンアップを諦めました。
      (日本語の文献も、かなり減りましたし。)

      Delphiは私にとって他のコンパイラ言語より使いやすかったですが、
      んな高額出しつづけるくらいなら、他の言語でよいと思ったのです。
      (他の言語ができない訳でもないので。)

      親コメント
    • by Anonymous Coward on 2015年01月28日 13時19分 (#2751540)

      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を試してみて欲しい。

      親コメント
      • 今なお健在な「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ベースの本アプリを立ち上げるなんていう面倒くさいことをしましたよ…。面倒くさかった…

        親コメント
  • by Anonymous Coward on 2015年01月28日 11時38分 (#2751452)

    結構見逃しがちだけど、Turbo Pascal 開発者のアンダース・ヘルスバーグは、Delphi を作ったあと、C# を作って、.NET Framework を作ってるんだよね.

    だから、Pascal の正統後継者はもしかすると C# か .NET Framework とみなすべきかもしれなくて、「現在の Pascal」を批判するならこれらについて語らないといけないのかもよ?

    # GNU Pascal のマニュアルを読むと意外な機能があって驚く.だけど、記述が為されてないままという箇所も多くて、使うとなると大変…

typodupeerror

192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり

読み込み中...