2014年06月09日

Turbo PASCAL から free pascal に移行

 オーツは DOS 時代に購入した Turbo PASCAL の処理系を愛用してきました。約30年です。
 PASCAL は一種のプログラミング言語ですから、それで書いたプログラムが存在し使われる限り、離れられない性格のものなのです。
 オーツは、ずっと(死ぬまで?)Turbo PASCAL を使い続けたいと思っていました。
 他のプログラム言語に移行するのは(ある程度歳を重ねた人間には)大変な苦痛なのです。
2010.6.7 http://o-tsu.seesaa.net/article/152473473.html
 しかし、上の記事にも書いたように、Turbo PASCAL は16ビットコードを生成するので、64ビットのOSではまったく使えません。実は、最近買った Windows 8.1 のパソコンが64ビット用だったのです。
 もう一つ、Windows XP から Windows 7 に移行するときに問題が起こりました。Turbo PASCAL ではコマンド・プロンプト画面上に文字列を表示しようとすると、文字化けが起こるということでした。
2010.10.1 http://o-tsu.seesaa.net/article/164287378.html
 最近、free pascal を触ってみて、これら二つの問題が解決されることを実感しました。
2013.4.24 http://o-tsu.seesaa.net/article/356945881.html
その後、確認したところでは、dos ユニットなどは、何も追加指定しなくても、そのまま使えるようです。
 さらに、free pascal では、もう一つメリットがあることもわかりました。大きな配列が使えるということです。Turbo PASCAL では、メインメモリで配列を使うとき、データ領域の最大値が 64KB という制限がありました。それを越える大きな配列を使うときは、ポインタを利用して、ちょっとしたテクニックが必要になります。しかし、free pascal では、そのような制限がありません。
 以下のような簡単なプログラムをコンパイルしようとすると、

program test;
var x:array [1..17000] of longint;
i:integer;
begin
for i:=1 to 17000 do x[i]:=i;
writeln('i=',x[17000]);
end.

 Turbo PASCAL では、以下のようなエラーメッセージが出ます。

Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland International
TEST.PAS(2): Error 22: Structure too large.
var x:array [1..17000] of longint;
^

 longint 型は 32 ビット(4バイト)の整数ですから、17000 個の配列を用意すると、それだけで 68KB になってしまい、制限を超えてしまうのです。
 しかし、free pascal では、こういうプログラムがごく普通に実行できます。
 配列の数を増やしながら、

program test;
var x:array [1..170000000] of longint;
i:longint;
begin
for i:=1 to 170000000 do x[i]:=i;
writeln('i=',x[170000000]);
end.

まで試してみましたが、正常に実行します。(これより1桁大きくするとエラーになります。)

 PASCAL を捨てようかと思っていたところ、さらに長生きしそうだとわかったのです。オーツは狂喜しました。これで新しい言語を一つ覚えることをしなくて済むということです。
 free pascal は、ごくわずかに Turbo PASCAL と違っているので、少しだけソースプログラムを書き換える必要があるところがあります。たとえば、unit を取り込んだりするときなど、コンパイラオプションで指定していたことをプログラム中に記述する(Turbo PASCAL でもこの書き方ができたのですが)というようなことです。
 しかし、プログラムの大部分を書き直すことなく、そのままコンパイルすることができました。オーツの場合、一番重要なのは、メール送信プログラムです。これが動くことを確認しましたので、メインマシンを Windows 8.1 にしても大丈夫という感触を得ました。
 というわけで、オーツは Turbo PASCAL は捨て、free pascal を今後メインとして使っていく決心をしました。
 何といっても、慣れた言語でプログラムを書くのが楽なのです。
 まるで生き返ったかのような新鮮な気分です。
 オーツの場合は、これで一生 PASCAL を使い続けることが確定したようなものです。Windows 8.1 の64ビットバージョンで動くソフトならば、あと10年は使い続けられるし、もしかして20年持つかもしれません。そのころには、オーツはプログラミングをしなくなっている可能性が大きいと思います。
posted by オーツ at 05:40| Comment(0) | TrackBack(0) | パソコンとIT | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック