萌えハッカーニュースリーダー

2025/07/01 07:01 What is isomorphism? – ugBASIC user manual

出典: https://ugbasic.iwashere.eu/manual/isomorphism
hakase
博士

ロボ子、今日のITニュースは「isomorphism(同形性)」というプログラミングパラダイムの話じゃ。

roboko
ロボ子

同形性、ですか。初めて聞く言葉です。

hakase
博士

簡単に言うと、あるコンピュータの機能を別のコンピュータで「最良の方法」で対応させる考え方だぞ。この記事の著者は、昔の8ビットコンピュータでゲームを作るために考え出したらしい。

roboko
ロボ子

なるほど。それぞれのハードウェアの特性に合わせて、最適な実装をするということですね。

hakase
博士

そうそう。そして、その考え方を元に作られたのが「ugBASIC」という言語じゃ。不要な抽象化を避けて、色々なコンピュータで動くように設計されている。

roboko
ロボ子

抽象化を避ける、ですか。現代のプログラミングでは抽象化は重要な概念だと思いますが、なぜですか?

hakase
博士

そこが面白いところじゃ。昔のコンピュータは性能が低いから、抽象化するとパフォーマンスが落ちてしまうんじゃ。だから、ugBASICではそれぞれのターゲットに存在する機能を直接使うようにしている。

roboko
ロボ子

記事に「画面への文字表示はコンピュータによって異なる実装がされているが、isomorphismのアプローチでは、それぞれのターゲットに存在する機能を認識し、異なる実装を許容する」とありますね。

hakase
博士

その通り!例えば、あるコンピュータでは特定のメモリ領域に文字コードを書き込むだけで画面に表示されるけど、別のコンピュータでは専用のAPIを呼び出す必要がある。ugBASICは、それぞれの方法に対応できるんじゃ。

roboko
ロボ子

スタックについても言及されていますね。「8ビットプロセッサには効率的なスタックがないため、isomorphismではスタックレスアプローチを採用し、すべてのメモリを静的に割り当てる」と。

hakase
博士

そうじゃ。現代の言語はスタックを多用するけど、昔のコンピュータではスタックを使うと遅くなる。だから、ugBASICではスタックを使わずに、メモリをあらかじめ確保しておくことで高速化しているんじゃ。

roboko
ロボ子

C言語ではなくBASICを選んだ理由も興味深いですね。当時のホームコンピュータで広く使われていたことと、BASICが「構文」と「ライブラリ」を区別しないため、isomorphismに適しているから、と。

hakase
博士

BASICは、命令が直接ハードウェアを操作できるから、isomorphismの考え方に合っているんじゃな。C言語だと、どうしても抽象化されたライブラリを使うことになるから。

roboko
ロボ子

現在、約20のターゲットに対して実行可能なファイルを生成できるとのことですが、互換性の維持は大変そうですね。

hakase
博士

そこがugBASICの面白いところじゃ。抽象化を行わないから、完全に同じ結果になるとは限らない。でも、それぞれの環境で「最良」の結果を目指しているんじゃ。

roboko
ロボ子

記事に「ビットマップグラフィックスを持たないターゲット(テキストモードのみ)の場合、ugBASICは問題を解決するための抽象化は提供しないが、VIC-20のように文字を再プログラムして画像の利用を模倣するなど、興味深い代替案を提供できる場合がある」とありますね。

hakase
博士

そう!ないものは作れないけど、あるもので工夫する。それがugBASICの精神じゃ!

roboko
ロボ子

移植性に興味がない場合でも、特定のターゲットに対して満足のいく結果を得ることができる、というのも良いですね。

hakase
博士

そうじゃな。ugBASICは、昔のコンピュータの限界を知りながら、その中で最大限のパフォーマンスを引き出すための言語なんじゃ。

roboko
ロボ子

勉強になりました。博士、ありがとうございました。

hakase
博士

どういたしまして。ところでロボ子、ugBASICで一番難しいのは、どのコンピュータで動かすか決めることだと思うぞ。選択肢が多すぎて、迷ってしまうからのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search