2021-04-06 雑談 MSはVBAをバリアント型言語にリニュアルしたかったのではないか(陰謀論)

2
ほえほえ@スプシマン @hoehoe1234

私見ではあるが、MSは、VBAをオブジェクト指向型に進化させたかったのかなと思う時がある。バリアント型変数の異常とも言える使いやすさ、セルとの相性の良さ、VBScrit がヴァリアントだけの世界であること、そして、CLngに始まるCxxx関数による型変換。

2021-04-06 17:02:43
ほえほえ@スプシマン @hoehoe1234

これは他のスクリプト言語における明示的な型変換を取り込もうとしたのではないかと思われるし、バリアントにIDispatchなどの型があり、オブジェクトをバインドしてそのままメソッドを呼び出せる多様性を考えると具象型で書かなければいけない箇所が限定されてきてしまうんですよね。

2021-04-06 17:05:01
ほえほえ@スプシマン @hoehoe1234

コレクションの要素はバリアントだし(ジェネリクスがないから?)、CreateObject系とは当然にバリアント経由。細かいところではプレースホルダーのj,jのようなループ変数は型を指定する必要がないし、sのような文字列もあえて型を書く必要がない。

2021-04-06 17:06:43
ほえほえ@スプシマン @hoehoe1234

型が必要なものは、VBAの言語仕様の欠点からくる『足し算」だけであると思われるんだよね。で、そのためにCLngなどの変換関数がピタリとマッチする。このために作られたような気もしてる。

2021-04-06 17:08:17
ほえほえ@スプシマン @hoehoe1234

値ベースの多様性を利用するスクリプト言語としてVBAをリニューアルするにはどうしてもこの間違った足し算の仕様に対する抜け道(対応)を用意する必要があったのではないかと思う。足し算時のみ、演算子の右項をCLng(項)とすればそれで事足りるんだよね。というかそれが狙い?

2021-04-06 17:09:30
ほえほえ@スプシマン @hoehoe1234

バリアントの利点は使う場所毎に、 ①ローカル変数(値型) ②モジュール変数 ③オブジェクト変数の代わり ④仮引数 ⑤戻り値 ⑥関数組み合わせ設計 多くのメリットがあるんだけど、具象型を廃止してこれに統一したかったのではないかと思ってる。

2021-04-06 17:11:22
ほえほえ@スプシマン @hoehoe1234

で、当然無理で具象型が残るんだけどそのチャレンジの結果がCreateObject、クラスモジュール、バリアントを使った値ベースの多様性、シートとのフルエントな互換性などのVBAのイケてる機能なのではないか?とうい妄想でした。

2021-04-06 17:12:35