今さら聞けない!モダンなObject Pascal入門:プログラマのための再学習ガイド
Modern Object Pascal Introduction for Programmers
Modern Object Pascal Introduction for Programmers
Object Pascalは、古き良き言語だと思っていませんか?実は現在のObject Pascalは、堅牢な型システム、強力なコンパイラ、そして広範なクロスプラットフォーム対応を備えた、非常に洗練された言語へと進化しています。DelphiやFree Pascal (Lazarus) を通じて、モダンな開発環境でいかに効率的にアプリケーションを構築できるか、その魅力を紐解いていきましょう。
かなり昔、Delphi 2の頃に使い始めたよ。言語としてはすごく好きなんだが、実用化する上で主に2つの問題が立ちはだかってる。
コードが最適化されきっていない。
人材プールが限られている。いわゆる卵が先か鶏が先か問題だね。
もうずっとこの状態だから、今後変わることはないだろうな。
Object Pascalがいかに過小評価されているか、本当に驚かされるよ。一部の連中や競合は、この言語を終わったものだとか死んだ言語だと決めつけたがるけど、実際には(様々な方言を含めて)バリバリ現役だしね。
昔Delphiを買ったんだけど、結局あまり活用できなかったのが心残りなんだ。
また手を出してみたいと思っていて、このドキュメントはかなり期待できそう。特にこれと組み合わせれば:
https://wiki.freepascal.org/pas2js (https://wiki.freepascal.org/pas2js)
今確認したらLazarusでサポートされてるんだな。
もしこれを使ってJavaScript込みのHTMLページにコンパイルするグラフィカルなプロジェクトのサンプルを持ってる人がいたら、ぜひ見てみたい。必要なツールチェーンのインストールやデプロイに関する詳細なビルド手順やメモがあればなお嬉しい。(ちなみに今はPythonでflet.devを使って小さなプロトタイプを動かしているけど、セルフホスティングや、より複雑なものへの挑戦も検討中なんだ)
2025年に出版された『Free Pascal From Square One』っていう、プログラミングとPascalを学べる新しい本もあるよ。
懐かしいな。俺のプログラミングの原体験は12歳の頃、DOSのTurbo PascalでPongのクローンを作ったことだった。その経験は後々20代でDelphiエンジニアとしてフリーランスをやっていた時に役立ったよ。Hacker NewsでPascalの話題を見るとは思わなかった。
自分だけのHaskellを実装するのに最高かもね :p
俺はApple IIのUCSD Pascalから入ったけど、Turbo Pascalが出る頃にはAdaに乗り換えたな。
この入門編はいい感じだけど、ヴィルト系の言語が好きならAdaを選ぶのが一番だと思うよ。
Photoshop 1.0は、そのほとんどがObject Pascalで書かれていて、一部に68000のアセンブリ言語が使われていた。ソースコードはここで公開されてるよ:
https://computerhistory.org/blog/adobe-photoshop-source-code... (https://computerhistory.org/blog/adobe-photoshop-source-code/)
当時PascalとModula-2を書くのが大好きで、両方使っていた時期は確実にプログラマとしての腕を上げてくれた。Pascalは素晴らしい教育ツールだったけど、10年間はビジネス的にも大きなインパクトを与えたよね。
Pascalに対する批判の多くは、例えば
https://www.cs.virginia.edu/~evans/cs655/readings/bwk-on-pas... (https://www.cs.virginia.edu/~evans/cs655/readings/bwk-on-pascal.html)
に挙げられているようなものだけど、これらは拡張によって修正済みか、あるいは簡単に修正できるものだった。
少し冗長なところも、CとCOBOLの中間くらいだし、個人的には短所というより長所だったと思う。
今となっては、AdaとJuliaが最もPascalに近い現役の言語かな。
かつてObject Pascalをメイン言語にしていたけど、いいところはたくさんあるよね。でも今振り返ると、足を引っ張っている点が2つあると思う。
変数の事前定義が必要なこと。最初の代入で変数を定義して、それが実行されるbegin/endのスコープに限定できるようにしたいな。文の前に変数を置かなきゃいけない合理的な理由はもうないはずだ。
あと、ネームスペースがレガシーな用法で溢れかえっているせいで、長年の進歩を活かそうとすると奇妙なプレフィックスの組み合わせが必要になってしまう。
名前を変えて差別化し、数十年の知見と改善を活かしてRTLをゼロから作り直すような、ライトなフォークを作る余地はまだあるんじゃないかと思ってる。