From: Kikutani Makoto Date: 1997-12-05T10:50:34+09:00 Subject: [ruby-list:5536] Re: wave viewer (Re: postscript) きくたにです。 Fri, Dec 05, 1997 at 10:35:51AM +0900 において Kikutani Makoto 曰く: > http://www.eis.or.jp/muse/kikutani/tkwaviewer.rb に置きました、 本当はメインページから辿れるページも書いたのですが、それだけ アップし忘れました(マヌケ)。以下平文に直した内容です。 -------------------------------------------------------------------- rubyによるVerilog用波形ビューワ rubyによるTk拡張の実例として、Verilogシミュレータから呼ばれる 波形ビューワを作ってみました。VerilogのPLI (Programming Language Interface)から http://www.eis.or.jp/muse/kikutani/tkwaviewer.rb をサブプロセスとして起動します。 実際にLiux用のVerilogシミュレータから走らせた画面はこれ。 http://www.eis.or.jp/muse/kikutani/viewer.gif Verilog PLIをいじれる人は小数でしょうから、rubyによるテストプログラム http://www.eis.or.jp/muse/kikutani/wavtest.rb を付けときます。 tkwaviewer.rbとwavtest.rbを同じディレクトリに置いて、 tkwaviewer.rb の実行ビットを立ててから ruby wavtest.rb としてみてください。プロット機能はまだインプリメントしてません。 また、Dismissボタンを押してもSEGVになったり、サブプロセスが残ること がありますので(なんでや?) 手でkillしてください。菊谷はrubyもTkもシロートなので、まだ 実用的なものには程遠いです。おまけに、今のruby-1.0のTk拡張の実装は ruby-1.1では全く変わる予定なので、このコードを詳しく読んでも 無駄かもしれませんね。 次に、比較のため tkwaviewer.rb を tclスクリプト http://www.eis.or.jp/muse/kikutani/tkwaviewer.tcl に書きなおしてみました。 ruby wavtest.rb tcl で動きます。tcl版ではシミュレータ中断中の作業はインプリメント してないです(どうやるべきか、fj.lang.tclで質問中)。 ruby版とtcl版で、どっちが読み易いかは好みでしょうが、 書くときは、間違いなく rubyのほうが書き易い です。もっとも、rubyのクラスを無理にtclで大域変数を使ってインプリメント してるせいかも。最初からtclで書く人は違った書きかたになるので しょうねえ。逆に、スクロールなんかさせると、 ruby版はとっても遅い ことに気付きますね。ダイレクトにwishで動くtcl版と、 その前にrubyインタープリタをはさんでるのを比較するのは気の毒かもね。 ruby-1.0のtk拡張は実装上遅いことは確からしいなので、 ruby-1.1のtk拡張に期待 しようという結論ですね。まあ今のruby/Tkでもプロトタイピングには いいと思いますよ。俺やっぱりtclは好きになれそうもないもん。 ただ、今回書いてて今のruby/Tkで一番困ったのは、 ドキュメントがまったくない なんてことではなく(これはライブラリの tk*.rb を見ればなんとか想像が付く)、 上例のようにサブプロセスで動くプログラムだと、文法エラーしか発見できん ことで、 実行時エラーはその瞬間何も言わずに死人と化す ことなんですね。 wishが吐くエラーメッセージをそのまま、stderrに出してくれるだけで いいのにねえ。 -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani@eis.or.jp kikutani@jdc.ericsson.se hgf03701@niftyserve.or.jp http://www.eis.or.jp/muse/kikutani/