t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

C系とVB系、それぞれの好きなところ、嫌いなところ

CとVB系のそれぞれ好きなところ、嫌いなところを書いてみる。

これは私の個人的な好き嫌いであって、言語の優劣を議論するつもりはない。
こういう視点もありますよということで読んでもらえればと思う。

VB系はVBファミリー(VB6、VBA、VBS、VB.NET)のことである。
C系というのは、Cっぽい(行末のセミコロン、ブロックを示す{}などの特徴を持つ)言語全てのことである。

Cのコード

int Main() {
    int i = 0;
    for (i = 0; i < 10; i++) {
        printf("Hello, World!\n%d回目です。\n", i);
    }
}

好きな点:
 宣言と代入が一度にシンプルに書ける。
 インクリメント演算、合同演算(+=とか、-=とか)
 printfのフォーマット付き出力

嫌いな点:
 記号が多くて入力中にイラっとする。
 行末のセミコロンとか、{}とかの小指系が特に。
 配列のカッコが小指系[]なのも。
 小文字と大文字を区別(Cの利点ではあるが、嫌い)
 変数の初期値が不定。(CとC++のみ?)

VBAのコード

Sub main()
    Dim i As Integer
    For i = 0 To 10 Step 1
        Debug.Print "Hello, World!" & vbNewLine & i & "回目です。" & vbNewLine
    Next i
End Sub

好きな点:
 ブロックの終了条件が分かりやすい。
 (End Subとか、Nextとか、End Ifとか Loopとか、何が終わるのか明瞭)
 小指系の記号がCに比べて少ない。
 IfやForがカッコを使わずに書ける。
 小文字と大文字を区別しない点
 Pascal記法は先頭文字がアイキャッチになるので、見やすい。(主観)
 変数の初期値が決まっている。

嫌いな点:
 & vbNewLine &が煩わしい。
 変数宣言で、いちいち As 型名が要る。
 (Cだと、int i, j, kは全部intになるが、
 VBではDim i As Integer, j As Integer, k As Integer)
 VBAの場合、インクリメントが面倒くさい。x = x + 1とか。
 Cのx++; x+=1はエレガントだと思う。
 VB.NETでインクリメントに対応したのはGood。

個人的にはどちらかといえばVB派。
でも、こう書けたらいいなと思う。

Sub Main()
    Integer i
    For i = 0 To 10 Step 1
        Printf "Hello, World!\n%d回目です。", i
    Next i
End Sub

以上

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。