トップ «前の日記(2004-04-13) 最新 次の日記(2004-04-15)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-04-14

_ インターフェイスとVB

誤読ってことはないです。

一面的な見方で書いているので(「恣意的」って言葉でそれを否定はしているけど)そう読めるようにしています。

VBについては、そういう一面的な(ネガティブな)見方のほうを良く見かけて謎ってのがあるので、入れ子にして書いてみたのです。ここではJavaが一面的な(ネガティブな)見方の対象として記述されています。

VBは2面性があって、単に好き/嫌いだと嫌いな言語ですが、たとえば

・値を戻す呼び出しは引数に()を付け、そうでなければ()付けないかまたはcall を付ける

->バッカじゃなかろうか。そんなもの1種類にしておけ

->メイヤー言うところのファンクションとプロシージャの分類の強制=圧倒的に正しい

・条件節で等価性検査に==じゃなくて=を使う

->紛らわしい(C頭)

->文脈依存で演算子の意味が変わることより、演算子の種類を少なくしておくほうが覚えることが少なくて済むから良い

・条件節を全部検査する

->紛らわしい(C頭)――って言うか、これには泣かされた過去があったり

->書かれていることは実行されることとしたほうが明確である

などなど、Cと違うだけで、それはそれで合理的な言語デザインなのです。

でも、どうもカス言語みたいな印象が強いようなので、それはなぜかと考えると、要は、使い方にあるのかなぁ、と。

で、現在のCOBOLの置き換えとしてのJavaというのが、適用業務の置き換え(使われ方)なら良いのですが、設計手法(使い方)までそのままだと、簡単にVBのようになりかねないだろうな、というあたりです。(これは他人事)

上で、条件節の評価で泣かされたと書きましたが、結局、VBをなめてかかって(だってお手軽に使えるから)、最初に言語仕様(しかし、どこにあるんだ?)を読まずにほいほい書いてしまったのが原因です。これは逆にC++を知っていれば、同じようにJavaでもほいほい書いてしまう可能性がある、でもそうすると、C++にはインターフェイスは無いので(ちょうど、VBにはプロシージャとファンクションの明示的な区別があるのと同じくJavaには明示的なクラスとインターフェイスの区別がある)最初から設計に問題が出てくるかもなぁ、という自戒の念を書いたのです。(これは自分事――でも無いか)

ちなみに、昨日るいもさんから仕入れたネタ。

――MSDNを読んでいたら「VB6で実装継承する方法」というのが出ていた。で、読んでみたら、コンポジションの説明が出ていた……(くず折れる人)

VBをカス言語に仕立てたのは結局MSではなかろうか?

_ rjb(sparc)

~/ruby/rjb-0.0.6>ruby test.rb
start RJB(0.0.6) test
Loaded suite test
Started
Error occurred during initialization of VM
Signal chaining not allowed for VM interrupt signal, try -Xusealtsigs.
~/ruby/rjb-0.0.6>
Rubyがシグナルを使うからか……。先は長そうだなぁ。っていうか、どうやって-Xxxxを与えるのか調べなきゃな。

_ ビッグエンディアンか!

本日のツッコミ(全2件) [ツッコミを入れる]
_ takubo (2004-04-16 01:49)

プロのコード、アマのコードが盛り上がってますが、"VBの2面性"、思い当たることばかりです。<br>使いづらいところもありますが(そういう意味ではVB.NETは正常進化な気がします)、インターフェースとイベント構文を使うと結構楽しめることに最近気づいてます。<br>不幸なのは、やさしい、初心者向けというレッテルを貼られたことと、クローズドな開発中心で良質なソースが流通しなかったことかなと。<br>そういう意味ではartonさんのVB本とか読んでみたい気がします…<br>ずれたことを書いてましたらごめんなさいです。

_ arton (2004-04-16 02:58)

いえ、全然、ずれていないと思います。確かにクローズドな開発中心+MSの売り方の問題(しかも誤用した用語を押し付けたり)というのが大きかったと思います。もっとも、その売り方があったから売れたんだろうけど。あと、そのクローズドな開発が粗製濫造された初心者プログラマ(設計手法は教えないんだろうなぁ)の手になるところとか。<br>#使いづらいところがあるというのも同意です。<br>End Ifとかのくどさはやはり好きじゃないですけどね。でもrubyでendを書きまくっていたらなんとなく折り合いがついてきてたりして。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|

ジェズイットを見習え