FreeBASICを使ってみた。
高木です。こんばんは。
最近、思うところあって、いろいろな開発ツールに触れています。
比較的モダンなものは他の方が言及している思いますので、私はどちらかといえばレガシーなものや珍しいものについて言及していきたいと思います。
今回取り上げるのはFreeBASICです。
名前の通りBASIC言語を使った開発環境で、ネイティブコードを出力できるコンパイラの形態を取っています。
FreeBASICはQuickBASICの後継を謳っているようで、ユーザーが記述するソースコードはQuickBASICの上位互換になっているのだと思います。
QuickBASICといえば、私が社会人2年目か3年目のころに使い倒した開発環境です。
当時の私はプログラマーでもなければ開発職でもなかったので、手元に自由に使えるコンパイラがなかったのです(あるコンピュータ機器のためのアセンブラは使っていました)。
そんな状況の中、職場にQuickBASICならすぐ使える状況で存在してたため、他に選択肢もなく、それを使い始めました。
学生時代にN88-BASICは結構使っていました。
QucikBASICはN88-BASICに比べれば構造化されていて使い勝手もずっとよかったので、結構重宝しましたね。
このQuickBASICがのちのVisualBasicの前身となります。
VisualBasicを最初に触ったとき、あのVariant型が気持ち悪くてなかなかなじめませんでした。
現在のVisualBasic.netではVariant型を使うことはほとんどなくなったようですね。
というわけで、私はQuickBASICは結構使い込んだこともあって、決して未経験者ではなかったのです。
ところが、さすがに四半世紀も使っていないとすっかり忘れてしまっていました。
そして、FreeBASICにはQuickBASICにはなかった仕様もかなり盛り込まれていました。
私がQuickBASICに見切りを付けたのは、バイナリデータを扱おうとすると、ごくごく単純なものなのに、とんでもない処理時間がかかることに気付いたからです。
たとえば、バイナリファイルのチェックサムを求めるといった本当に簡単な処理でも、とんでもなく時間がかかったのです。
当時の私の腕が悪かったこともあるかもしれませんし、当時のコンピュータの性能が低かったこともあることでしょう。
いずれにしても、とんでもなく時間がかかり、とても実用的とはいえませんでした。
今回、懐かしさもあって、FreeBASICでチェックサムを求めるプログラムを書いてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 | dim as string file_name dim as ubyte c dim as ushort sum input "ファイル名? ",file_name open file_name for binary as #1 do until(eof(1)) get #1,,c sum = sum + c loop close #1 print hex(sum) |
QuiclBASICでは使えなかったuByte型なんかも使えるようになっていて結構いい感じです。
FreeBASICはLinuxでも使えるようなので、時間を取ってもう少し深掘りしてみたいと思います。