にゃあ

VBAを書いててPHPが懐かしくなった(涙)

最近、卒論関係でデータ処理をしなきゃならなくて、VBSやVBAを書くことが多くなった。WindowsやOfficeちょっとしたことをやりたいなってときは、Cとかと違ってコンパイルする必要もなく、その場で書いてその場で使える。卒論はつらいが、VBAはとても便利だ。

PHPばかりやってると、VB系のコードを書いたとき、PHPのくせが出てしまう。よくやるミスとしては↓

  • 行末に;を書いてしまう。
  • 関数とかを小文字にしてしまう。
  • 文字列結合は&であることを忘れて、ドットでつなげてしまう。
  • 変数の定義を忘れる。
  • 関数がよくわからないときは、とりあえずPHPにある関数を書いてみるが、当たらない。sleepとか、returnとか。

自分がよく知ってる言語の習慣を、よく知らない言語にそのまま当てはめることを、言語学でトランスファー(転移)というけれど、プログラミング言語でも同じようなことをしている。関数名が偶然同じで、そのまま処理がとおれば正の転移、エラーが出て起こられた負の転移。言語学は自然言語しか扱わないことになってたんだっけな。言語学のふりして人工言語のことをあれこれ言ってはいけないな。

PHPと違う特徴に出会うと、すこし学んだ気がしてくる。

たとえば、VBAでもクラスが作れるが、クラス内のメンバ変数にアクセスするとき、PHPの$this->なるものがないというところ。だから、メソッド内で変数がメンバ変数なのか、それともメソッド内のただの変数だかわからなくなる。そこでハンガリアン記法が有効になる。m_というので、これはメンバ変数ですよ、ということを明らかにする習慣が生まれる。同じようなことを、XOOPS Cubeのコーディング規約でメンバ変数の接頭辞はmとするというのがあるけれど、PHPではあまり意味がないかな。個人的には接頭辞をつけるのは好きなのだけれど。

Class A

'メンバ変数
Private m_B As Integer

' 関数
Public Function GetB()

        GetB = m_B

End Function

' サブルーチン
Public Sub SetB(B As Integer)

        m_B = B

End Sub

VBAだと、関数のほかに、サブルーチンというのが定義できる。関数とサブルーチンってなにが違うの?って感じだが、関数は値を返すが、サブルーチンは値を返さないという違いがある。サブルーチンという概念がPHPでは無い。無いと断言していいのかわからないが、少なくとも、VBAみたいに形態に現れてこない。こういうところも実におもしろい。

自然言語でも、複数形とか名詞の性にうるさい西洋語があったり、敬語にうるさい日本語や韓国語があったりと、言語ごとに関心事がちがうのとおなじで、人工言語でもその言語によって、関心の持ち方が微妙に違う。

PHPみたいに型にうるさくない言語を使っていると、型にうるさい言語で、よくつまづくようになる。文字列と思っていたら、数値だったり。"0"と0の違いはPHPが思ってるほど単純じゃなかったり。

ずっと型を意識していると、PHPでももう少し型について厳しく接してもいいんじゃないかと思うようになってくる。でもやっぱり、PHPのルーズさってどうも嫌いになれない。型が勝手に判断されて、泣きたくなることもあるけど、それでも型を気にしないで書きたいときはそうできるからいいというとこもある。一長一短というところか。

VBAとは話が変わるが、自分には「あこがれの言語」というものがある。自然言語ならロシア語、人工言語ならC#。そして、先日、ついにあのあこがれの言語 C# をちょっと触ってみた。気分転換程度ののりだったので、HelloWorldしてひとりで盛り上がっていた。コンパイル言語はどうしても、そのワンステップのために近づきがたかった。C言語をやろうとして、開発用のソフトが高くて諦めたのは中学生のころだっただろうか。今とそのときじゃ比べものにならないくらいフリーな開発環境が増えた気がする。C#はJava系の影響をうけているから、VBAよりは親近感あるかな。今度ローカルで使うアプリを作るときはC#でやってみよう。C#が一人前に書けるころにはロシア語もぺらぺらになってるかな。


コメント&トラバ

トラックバックを送る

無関係なスパムのトラックバックを防止するため、リンク先で本サイト(suin.asia)への言及が確認されないトラックバックは破棄しています。

トラバURL : http://suin.asia/trackback/121

コメントを書く

お名前* URL
本文*
合い言葉* ←「rcenopleer」と入力して下さい。
* この記事の話題と関係ないコメントはどんな内容でも削除します。(移動できないので)

トラックバック

トラックバックがないのはさみしいにゃん…。

コメント

minahito(2009.02.28) #
VBAは詳しくないのですが、 C++ C# あたりだと、 this が省略できるだけで this を書いても大丈夫です。明示的に this をつけるシーンもありますし、 this をつけるのが好きな人もいます。
(特に演算などで this + B をするときに、ごっちゃになるのを防ぐ)

ひょっとしたら VBA でも this をつけることができるかもしれないですよ。

このブログの著者


Suinと申します。

@suin on Twitter

サブメニュー

最近気になるモノ!

WindowsからMacに乗り換えて半年ですが、Macは細かいところまで丁寧に作られていて、親切なユーザーインターフェイスが気に入ってます。iMacはMagic Mouseと洗練されたデザインのBluetoothキーボードがついてくるので、お得だなあ、なんて思ってます。私に買ってもいいという方、いたら教えてください 笑。

最近のエントリ

XOOPS Cube Dev Ring

最近のコメント

最近のトラックバック

ひとりで喜ぶログ
デュラララに登場するチャットを再現した (04/09)
ひとりで喜ぶログ
デュラララに登場するチャットを再現した (03/28)
http://www15.atpages.jp/~classicalstudio/wordpress/?p=50
getcwd()とdirname(__FILE__)は違う結果になるときがある (12/22)
Re:
CSSのtext-align:center;は<div>には通用しない (12/15)
XOOPS専門-株式会社RYUS - d3blog
Shiori 1.02 (12/02)
9deMaio.com - blog
Koins 1.00 (11/11)
インターネット覚え書き「ビボウログ」
CSSのtext-align:center;は<div>には通用しない (09/16)
hinoeuma1966
CSSのtext-align:center;は<div>には通用しない (07/03)
Suin.org
ブログ作ってみた (03/23)
Suin.org
ブログ作ってみた (03/23)