x.x.x.x

| HOME | FrontPage | 記事編集 | RSS |

Hot Soup Processor 3   HSP

  1. 1. HSP3はめちゃくちゃ凄い
  2. 1-1. COM
  3. 1-2. OLE(2)
  4. 1-3. DLL
  5. 1-4. 理論上は
  6. 1-5. 浮動小数点演算
  7. 1-6. 関数スタックの上限
  8. 2. 開発言語の未来

書籍資料を画像ファイルで山のように貰ったので、これらを書籍形式で順参照するアプリケーションが欲しくなった。

改頁イメージ

↑のような形式で2頁ずつ表示して、右頁クリックで戻る、左頁クリックで進む。または右クリックで戻る、左クリックで進む。必要な機能はマウスクリックのイベント処理、複数画像のサイズ取得・拡大・縮小表示、任意ディレクトリ中のファイルリストの取得のみ。選択肢は色々あるけどHot Soup Processorの存在を思い出した。

1. HSP3はめちゃくちゃ凄い

2.6の頃に少し使ったけど、HSP3の紹介文を読んで少し驚いた。COMを使えるようになった。と云うか私が知らなかっただけで昔からプラグインはあったらしい。UNIX専の皆さんは10人中9人がCOMって何なんだと仰るであろうから、漏れがASCIIで調べてきた。

1-1. COM
Component Object Model

Microsoftが提唱するプログラムを部品化し、再利用するためのコンポーネント技術。
プログラム部品(ライブラリの1種)を組み合わせることで、ソフトウェア開発を簡単にした。
COMの仕様で作られたモジュールを「COMコンポーネント」と言い、開発言語やネット
ワークのトポロジーに関係なく利用できる。現在では、より簡単にCOMオブジェクトを
作成できるように機能を拡張した「COM+」が使われることが多い。

カヲル君が何を言っているのかわからないよ。COMとはつまりパイプのことです。あるアプリケーションの実行結果を別のアプリケーションに処理させる。全員が同じ機能をプログラムしなくても、ひとつの機能をみんなで共有すれば良いじゃないかという発想の下にWIN32で新規開発された画期的な新機能です。

「ライブラリのことじゃないか」

と思われるかもしれない。ライブラリにも色々あるけど、通常、ライブラリをアップデートしたら、全てのアプリケーションを再ビルドしなくてはいけない。でもCOMはパイプなので再ビルドなんて要らないし、どんだけ機能を使ってもファイルサイズが膨らむことはない。

「DLLのことじゃないか」

と思ったなら最初から読むな(;´Д`)y-~ とにかくCOMはWIN32の根幹を成す技術で、全く目新しい技術ではないけど、ActivePerlからは非常に使いづらかった。COMさえ使えれば、AccessもExcelもDirectXも、VisualCやVisualBasicと同レベルで利用できる。理論上は。HSPさえ使えれば、VCが不要とまでは言わないけど、VBが不要になる未来は十分に考えられる。

1-2. OLE(2)

OLEと言えば10人中7人はわかりそうな気がする。OLEこそCOMの代表的な応用技術です。ExcelでAccessのDBから値を取って来て表を作り、Word上でグラフにする。これがOLE。Windowsの世界でこのようなアプリケーションレベルの連携を実現する技術をOLEと言い、OLEの根幹技術(つまりアプリケーション間におけるデータの送受信管理機構)をCOMと言います。だからパイプなんです。

1-3. DLL

実際にCOMの存在を意識するのは、開発環境でCOMサーバにアクセスした時です。COMサーバはマシン上の(PATHが通っている)全DLL(動的結合らいぶらりぃ)を管理し、公開メソッドを全て把握しています。常に。これによりプログラマは
「どのDLLのどの機能を使いたい」
とは言わずに、
「どの機能を使いたい」
と言えば済むようになりました。理論上

HSP3はネット上に出回っているWIN32用DLLを全て利用できる。

標準で。たとえばunlha32.dllとか。bregexp.dllとか。もちろんActivePerlでも出来るけど、use Win32::OLEしなきゃいけないし、他の環境で動かすには先にActivePerlとモジュールをインスコしなきゃいけない。その点HSPは標準で出来るし、ビルドも出来る。

1-4. 理論上は

というわけでHSPさえ覚えれば、Windowsの全ての問題を解決し、全てを自動化し、全ての理想を実現できる筈だけど、懸念が幾つかあります。COM経由で提供される機能の内、Windows標準で提供する機能を特にWIN32APIと呼びます。APIはUNIXのシステムコールにあたる物の名称で、多くのプログラマはこれをラップした標準ライブラリを利用します。で、WIN32APIの大半が引数にポインタを要求します。また引数には型があります。どちらもHSPには無いようなので、そこを解決できるのか、できるならどう解決するのかは、私はまだ知りませんヽ( ´ ー ` )ノ

「出来ないじゃないか!」

の宛先は私ではなく↓こちら。
http://hsp.tv/

1-5. 浮動小数点演算

HSP2までは出来なかった。HSP3から出来るようになった。。

1-6. 関数スタックの上限

関数って言わないのか。HSP2.6の頃に、HSPの関数スタックは最大10だと小耳に挟んだことがあります。関数Aから関数Bを呼び出し、さらに関数Bが関数Cを呼び出し……と繰り返すと、関数Kを呼び出したところで暴走する。らしい。

2. 開発言語の未来

新言語を試すことが私の一種の趣味と言うか、本当は多少切羽詰まってますが、それはともかく巷でErlangと同等以上に名前が売れている「日本語○○」(なでしことか)を除く新言語を全て一度は試しました。Perl2Exeを比較対象として、全てイマイチ以下の出来でした。

簡単な処理は簡単に。
高度な処理はそれなりの難度で網羅する。


条件はたったこれだけですが、今もなおCとPerlの使い分けがベストという状況は変わっていません。Perl6の指向やCの生い立ちを考えれば現状維持で良いわけはないのであって、たとえばCの次という意味でD言語なるものが開発されていますが、Cの一番の問題点は宣言部です。malloc() -> free()とかは宣言部の仕様バグに比べれば枝葉に過ぎず、宣言部に変更が無い時点でD言語は何の意味もありません。

その点HSPはかなり理想の言語に近い。DBも扱えるし、Linux上で動くHSPの開発もちらほらと見受けられ、HSPさえ使えればPerlも要らない時代が来るかもしれない。

BlogMode speed member / 2007.12.26 14:20

These pages are designed for NN7 & IE6.
BBSWiki ver.1.50 Final blogmode.
Copyleft (!C) 2005-2007 SUICIDE BLONDE JP.
All Lefts Reserved.

Valid XHTML 1.0 Strict Valid CSS!