なぜVBはそんなに人気があるのですか?[閉まっている]


28

私にとって、Visual Basicは不器用で、見苦しく、エラーが発生しやすく、読みにくいようです。他の人にその理由を説明 させます。VB.netは明らかに言語の機能面で大きな進歩を遂げてきましたが、なぜC#を介してVBでコーディングすることを選択するのか理解できません。

ただし、「MSショップ」の商用Webアプリの大部分はVBで構築されているようです(と思われます)。私はこれについて訂正することができますが、VBはそれが値するよりも人気があるようです。

誰でもこれらの質問のいずれか(またはすべて)に答えることができますか?

  • VBで何か不足していますか?学ぶのは簡単ですか、それともC#より「友好的」ですか?知らない機能はありますか?
  • VB / VB.netが今日特にWebプロジェクトで頻繁に使用されるのはなぜですか?

4
商用のMicrosoft Webサイトがどのように構築されているかをどのように知りますか?
サムジュソン2009年

30
「なぜ今日、VB / VB.netはそれほど頻繁に使用されているのですか」これは、「なぜラバ/トラックが今日、輸送でそれほど頻繁に使用されているのか」と尋ねるようなものです。
ダニエルダラナス2009年

2
後世のためだけに、私は(ひどく)修正します。VBには非常に忠実なユーザーのコミュニティがあり、それは非常に多くのことを言っています。

5
この質問は削除する必要があります。

25
この質問は削除しないでください。それは悪い、偏見、主観的なものですが、かなり頻繁に発生し、参考になる可能性があります。
コンラッドルドルフ

回答:


47

VBを使用して、GUI(gooeyと発音)を作成してIPアドレスを追跡できます。これは犯罪解決でしばしば使用されます。



4
ワオ。ただ。ワオ。それは私の一日をすごいものにしました。

1
おおおおおおおおおおおおお

2
CSIを同じ方法で再び見ることはありません。
ロバートハーベイ

3
ズームインします。

42

どこから来たのかによると思います。プログラマーとして始めたとき、VBはシンボルよりも単語に依存しているため、たとえばC#より読みやすいと思います。

私は長年VBプログラマーでしたが、.NETが登場したとき、最初の2年間はVB.NETで働いていました(C#でポイントが分からない)。現在、私は数年前にC#を使用していますが、C#コードよりもVB.NETコードの「デコード」に時間がかかることがあります。おそらく、それはいくつかのコンストラクトのシンボルよりも単語に依存しているためでしょう...


5
あなたも私の状況を正確に説明しています。

6
ここも同じです-Cスタイルの構文の観点から見ると、VB.NETコードは「ノイズ」に満ちています。VB開発者に対する攻撃はありません。C#からVBに移行するときの感覚。

2
VB.NETに耐えられない-構文は物語のようなものです...そして、はい、私は何ヶ月もそれを絶えず使用しなければなりませんでした。
ダル

2
C#プログラマーは普通の人ではありませんか?
右折

@rightfoldいいえ。VB.netプログラマーも正常ではありません。VB.netプログラマーは普通の人よりもすごいです。= D VB.netルール!!!!!!!
匿名のペンギン

27

以下に私の答えを別のスレッドにコピーしました:

私はVBとC#の両方を定期的に開発していますが、私の金moneyけのほとんどはC#に関係しています。個人的には、ほとんどの(ただし、すべてではありません...ラムダ!)作業にはVBを好みます。ジョンによって概説されたものを除いて、私は本当に難しい利点を挙げることはできません。実際、Herfriedは彼のWebサイト(ドイツ語で!)でいくつかを収集しましたが、かなり技術的です。

すべてのC関連言語について本当に私を悩ませているのは、愚かな構文です。これは純粋に文化的なものですが、C ++で専門的な仕事のほとんどを行い、非常に熟練している人として、私はまだ構文が嫌いです。そして、C ++のかわいい癖だけではありません。いいえ、パッケージ全体。なぜブレースですか?なぜセミコロン(おそらくすべてのプログラミングの歴史の中で最も愚かな決定)?なぜ愚かなCスタイルのキャスト構文なのか?変数宣言のキーワードがないのはなぜですか(実際、これは最も愚かな決定です)?

本当に私を悲しく怒らせているものはたくさんあります。VBは聖人ではなく、その言語には大きな欠点があります。しかし、私が上で言ったことと比較して何も。

私はこれらの声明のほとんどが正当化を必要とすることを理解していますが、これは私たちがそれらにとても慣れているからだということです。さらに、ここは適切な場所ではありません。C#の構文は、VBに対する主な利点であると同時に、主な欠点でもあると言えば十分です。

My名前空間のためにVBを好まない、XMLリテラルのためにそれを好まない、弱い型付けのためにそれを好まない、オプションのパラメータのために、またははるかに優れているためにそれを好まないswitchステートメント。いいえ、構文のために私はそれを好みます。


とはいえ、VBの構文がますます邪魔になることを認めざるを得ません。最新の誇大広告は、ラムダ関数でパラメータ化されたLinqクエリであるように思われます。これにより、多くのことがより簡単になります。残念ながら、ラムダに対するVBの構文は、C#と競合するには面倒です。Parallel.ForVBでの呼び出しがどのように肥大化したかを考えてみてください。自然に見えるC#と比較してください。私見、VB設計チームは読みやすさより保守的な一貫性を優先して、ここで間違った方向に進んでいます。


主観的告発に答えるには:

私にとって、Visual Basicは不器用で見苦しく、エラーが発生しやすく、読みにくいようです。

あなたは確かにそう考える権利がありますが、マークが以下に述べているように、これを客観的に議論することは難しいでしょう。私は間違いなく、VBに存在するものよりも客観的にエラーを起こしやすい多くのC構文要素を引用することができます。実際、VB構文は、このような状況を明示的に防止するために開発されました。

「不格好でugい…そして読みにくい」はすべて、あなたが慣れていないほぼすべての言語にタグ付けできる修飾子です。簡単に言えば、ugさは、言語に対する不慣れさの直接的な結果です。

言語をよく知ることは、コード内のパターンを認識することを意味します。よく書かれたコード実践のおかげでエレガントに見えますが、悪い(遅い、エラーを起こしやすい)コードは見苦しくなります。それはそれと同じくらい簡単です。


最後の発言:あなたが引用した記事には、いくつかの不正確さと古い情報が含まれています。非常に主観的で感情的な議論の唯一の正当化として、彼らはあまり適していません。


4
Blake:はい、Rubyのポイントです。最後にそれを正しく行う言語。Pythonも私と非常に高い得点を獲得しています。それでも、既存のすべての構文には部分的に不満があります。
コンラッドルドルフ

2
Rubyが嫌い:P ...私はそれを邪魔になったので...キーワードベースの括弧と括弧の間にあるmajoy構文の違いの本当の理由は、パーサーを書くのが簡単だということです。私は(一般的にはBASIC)ファンの巨大なVBにするために使用が、私はC#Iに移動してきたので、それは非常に簡単かつ迅速で動作するように見つける。
マシュー白く塗った

4
なぜブレースですか?適切に使用すれば、コードのブロックを視覚的に区別するためです。はい、VBのインデントもこれを実現しますが、ブレースはより明確にIMOを実現します。セミコロンを使用すると、コンパイラが簡単になります(これについては、VBコンパイラチームに問い合わせてください)。C#でのキャストは非常に直感的でコンパクトです。そして、そこにある変数宣言キーワードは:var
ロバート・ハーヴェイ

1
@Robert Harvey:1)VBは、インデントではなくキーワードを使用してブロックを示します。わかりやすくするために。2)キャストについて、C ++は視覚的に目立たない(良いことではありません ;キャストは目立つはずです、セマンティクスの変更と型使用の潜在的な弱点を導入するため)Cスタイルのキャストをずっと前に非推奨にしました 3)いいえ。すべての宣言に先行する構文上のヒントを意味しました。var int x頭に浮かぶ。他のすべてのステートメントとブロックは専用のキーワードによって導入されますが、変数とメソッドの宣言はなぜですか?フィー。一貫性がなくandい。
コンラッドルドルフ

4
@Konrad:最初は慣れるまで少し時間がかかりました。哲学的な違いの一部は、VBでプログラミングをしていたときのように、自分のプログラミング言語を英語のバリエーションとは考えなくなったことかもしれません。C#に移行することで、私が使用するプログラミング言語は、あまりにも不透明にならず、より象徴的(かつ簡潔)になりました。その象徴性によって、私は精神的に自由になり、オブジェクトの方向、メッセージの受け渡し、ラムダなどの概念についてより概念的に考えることができました。
ロバートハーヴェイ

15

私にとって、Visual Basicは不器用で見苦しく、エラーが発生しやすく、読みにくいようです。

私にとって、英語は不器用で、く、エラーが発生しやすく、読むのが難しいようです。特に、文法、スペルが不十分で、大文字と句読点を無謀に無視し、空間的および精神的に思考を整理する方法がありません。

言語の構文が原因でVisual Basicが読みにくい、または不器用であるというだけではありませんが、通常はプログラマーが自分の考えを表現するのがあまり上手ではないためです。

If blah = 10 Then If stuff = "foo" Then t = 1 + k: s = 42: dostuff21

そう、それは恐ろしいことです。しかし、他の言語で恐ろしいコードを書くことも特に難しくありません。正しく書かれていれば、コードがVBで書かれていても大いに意味があります。

If SelectedType = 10 And UserName = "Foo" Then
    CurrentUsers = CurrentUsers + 1
    UserConnectionID = 42
    PerformUserOperation
End If

少なくともそれはより読みやすく、理解しやすいものです。まだ基本です。プログラマーが読みやすい方法でコードをフォーマットし、適切な名前の識別子を使用し、理解可能なコードを書くことに注意を払うことで、意図を明確に表現できるかどうかにかかっています。

そうは言っても、VB3の時代からVisual Basicにはあまり触れていません(つまり、 "古い"構文の例です)。 。確かに、いくつかの欠陥があるかもしれませんが、これらの問題を回避するために考案されたアプローチは、あるプログラマーのスキルを別のものよりも示しています。

(無差別にスプレーOn Error Resume Nextすることは、.NET時代以前のVBの例外の欠如の欠点を回避するあまり良くない方法として思い浮かびます。)


13

VBに対するあなたの議論のほとんどは、VB-Classic(2番目のリンク)にのみ適用されるか、かすかなまたは古い引数に基づいています。

  • VBCでも、GoSub ... Returnなどは使用しません。
  • 何が問題なのstaticですか?C ++もこれをサポートしています。
  • VB10は暗黙的な行継続を導入します(C#のような冗長なセミコーラも必要ありません)
  • C ++とC#にも異なるキャスト関数が存在します。C#の(object)(expr)-Cast-Syntax object as typeは、さらに複雑で一貫性がありません。
  • 何が悪いのwith?C#では不可能な非常に直感的な方法で、ネストされたツリー構造を作成できます。
  • VBでのイベント処理は、C#よりもはるかにエレガントです。WithEventsデリゲート、eventhandler-procなどを初期化することなく、単一のキーワード()でイベントを導入および処理できます。これにより、VBでのGUIプログラミングがより快適になり、デザイナーがイベントコードを生成する必要がなくなります。
  • オプションのパラメーターが新しいC#に導入されます-したがって、それらは適切なようです。
  • VB.NETには厳密な演算子とショートカットブール演算子の両方があります。
  • あなたはないあなたは、スクリプト言語のようにVBを実行しない限り、コンパイル時に構文エラーをチェック。
  • End Ifは単なるより便利です}。複雑な構文構造を持っている場合、すべての中括弧は混乱を招くだけEnd ...ですが、具体的にはどのブロックが閉じられていないかを判断するのに役立ちます。
  • XMLリテラル-XMLスクリプトは現在、コードの一部であり、intellisenseによって完全にサポートされています。

全体として、構文を除き、VB.NETとC#の間には客観的な違いがいくつかあります。EG:VBでは、イベントシステムとIDEが優れているため、GUI設計の方がはるかに効率的です。たとえば、構文が簡潔であるため、C#ではアルゴリズムをより適切に表現できます。

残りはあなたの個人的なスタイルの問題です。Cスタイルのプログラマは、C#、VB(またはPascalですか?)スタイルのプログラマはVBを使用します。

しかし、単語ベースのより明示的なVB-Syntaxは、Cのすべての記号よりも初心者にとって読みやすいかもしれません。比較:

If (a < 15) Xor (b = 2) And Not Condition Then

if ((a < 15) ^ (b == 2) && !Condition())

これは、ある言語が他の言語よりも優れているという意味ではありません。

編集:-----------------------------------------

引数VBはエラーを起こしやすいでしょう。使用Option Strict Onする場合、C#と同じくらい厳密ですが、このような間違いを犯すことはできません。

// VB would initialize with zero (C/C++ doesn't)
int countZeros;
// No confusion with loop bounds with For x = 1 To Length
for (int i = 1; i <= length; i++) {
    // Never confusing == with = 
    if (data[i] = 0) 
        countZeros++;
}

1
C#では、countZeros(ローカルスコープ内)を初期化せず、ifステートメントでdata [i]に値を割り当てると、コンパイルエラーが発生します。コメントでc / c ++を参照していることは知っていますが、OPはVBとC#を比較していたと思います:)

1
私の意見では、VB10はC#10の大きな時間を打ち負かしています!
シミー

私はすべての言語が好きです:LISP、C、VB、PHP、あなたはそれに名前を付けます。
systemovich

+1とVBのSwitchステートメントはC#のような無駄ではないことを付け加えます。
ジョエルブラウン

12

歴史的に、VB開発環境は、特定の種類のアプリケーション(GUIアプリなど)を迅速かつ効果的に構築する方法でした。そのため、非常に人気のある選択肢になりました。VBは全盛期に最も使用されていた言語だと思います(例:VB6)。

この種のインストールベースでは、まだ多くの作業が行われていることに驚くことはほとんどありません。


2
+1 afaics VB6および特にVS IDEは、すべての問題と可能性を備えた新しいコーダーの世代を作成するエントリに対して(非常に)低い障壁を提供しました

7

すべてはC#が存在する前に始まりました

1999年に戻って、Visual Studio 5/6がありました。独立系ソフトウェアベンダーまたはWindowsを使用している企業で、たとえば従業員のプロジェクトに費やした時間を追跡できるアプリケーションを必要とする場合、いくつかの選択肢がありました。

  1. Visual Basicのフォーム。
  2. Visual C ++のMFC、ATLまたはWin32。
  3. Access 97/2000のフォーム。
  4. ASP Webサイト。
  5. Javaアプレット。

当時、私たちはドットコムバブルが崩壊する直前だったので、(4)または(5)に長けていた人は誰でも、魅力的なドットコムでストックオプションの交渉に出かけました。

(3)ロックと全体的なスケーラビリティに問題がありましたが、必要に応じてサポート機能を実行するためにシェルアウトする多くのアクセス駆動型ソリューションを見ました。

そのため、VBとVC ++が残ります。

当時、VBのフォームエディターは生産性に優れていました。ボタン、ラベル、テキストボックスだけでなく、巧妙なグリッド、Excelシート、IEインスタンスなどの再利用可能なコンポーネントの完全な「OLEコントロール」ツールボックスを使用して、コンポーネントをドラッグアンドドロップできます。ワイヤリングは舞台裏で行われました-すべてがオブジェクトのようであり、イベントハンドラを追加するためにダブルクリックするだけでした。これは、Visual C ++では非常に困難でした。当時のVisual Studio開発者サポートチームのメンバーとして、Visual Basicサポートの呼び出しは、どのコンポーネントを使用するのが最適であるか、特定の方法でアプリケーションを最適化する方法がほとんどでした。「X、Y、Zのユーザーインターフェイス機能を使用してアプリケーションを作成する方法」はほとんどありませんでした。

Visual C ++でリッチUIを構築することは、別の課題でした。ダイアログとSDI / MDIフォームのビジュアルエディターサポートがありましたが、かなり制限されていました。OLEコントロール(ActiveX)をMFCまたはWin32に埋め込むことのサポートは、ATLの方がやや簡単ですが、黒魔術でした。コンポーネントのカスタムイベントに必要な接続ポイントはもちろんのこと、イベントのサイズ変更やオーナー描画などの単純なものを作成するのは非常に苦痛でした。

はい、VC ++には実行速度、デバッグ機能、柔軟なフレームワーク/ライブラリ/ UIオプションがありましたが、IDEサポートではそのすべてをカバーできなかったため、ウィザード、包括的なMFCクラス階層、90日間などの最も一般的な操作に対処しました/ 2-free-incidentsサポートライン。

VRCに同梱されているアプリケーションパッケージャーであるIIRCは、アプリ、VBランタイム、および最新の共通コントロールDLLをパッケージ化し、CDに入れて顧客に提供できるスタンドアロンEXEインストーラーを提供します。この「msvcrtXX.dllとmfcxx.dllをインストールしましたか?」はどれも、MFC開発者を悩ませました。

そのため、市場投入までの時間とリッチなユーザーインターフェースの理由から、VBは非常に大きな支持を得ました。

Visual J ++とVisual InterdevがVS6でヒットしたとき、Visual Basic IDEがVisual C ++のものとの戦いに勝ったことは明らかでした。Visual Studio .NETに新しいCOOL C#言語用のVBのようなフォームエディタがあったことはまったく驚きではありませんでした。

これまでずっとVBの人々が楽しんでいたUIデザイナーと結合した新しいJava / C / C ++のような言語は、MFC / ATL / Win32で今やられていたC ++の人々に新しい移行パスを与えました。VB.netの100%下位互換性の欠如が気に入らないVB 3/4/5/6の人々にとって、これは使い慣れた環境で新しい言語を学ぶ機会を提供しました。


VBがこのような包括的な製品であった理由は、Microsoftの起源と関係がある可能性が高く、Basicは主力の開発者製品ですが、現時点では引用がありません。


6

しかし、特定の言語がいために固執する理由になる可能性があります:巨大なコードベースを廃棄するのは非常に高価であり、開発者がすでにその言語を知っているため、他の言語よりも使用が安くなります。


6

私の意見では、VB.NETは習得が容易であり、あなたは正しいですし、C#よりも全体的に簡単です。これが、VBが非常に人気のある最初のポイントです。もう1つ、そして最大のポイントは、VB 6とこの言語の古いバージョンで作業した開発者のコ​​ミュニティが非常に広く、新しい言語を学ぶよりもVB.netでアプリケーションを開発する方が簡単だということです。


6

他の人が言ったように、言語構文に対するあなたの審美的な判断は、あなたが以前に知っていたことに大きく依存します。10年以上にわたって、Cブロックのようなコンテストであり、「ブロック」の波括弧、間接(perl、php)の「->」、関数呼び出し引数の括弧、//コメント、および行末のセミコロン。一部の人々は、この「ペンセのユニークな」おかげで、あなたが言語を知っていれば、あなたはそれらすべてを知っているとさえ考えました。それは本当にばかげています。しかし、これにより、C ++ / Javaの人々の間で唯一の正しい構文美学であり、COBOLのクローンを作成しようとする他のすべてのアイデアが浸透しました。

数年前、私はルビーに切り替え、そして今はパイソンになりました。これ以上いセミコロン、中括弧、その他の意味のない文字には耐えられません。ソースコードは人間が読むことを意図しています。ビジュアルスタジオを試してみたとき、C#ではなくVBを選びました。一部のプログラマーは、Javaに似た構文で「真面目に見える」ためだけにC#を選択したのではないかと疑っていますが、実際には同じ機能があります。


4

まあ、あなたが.NETについて話しているなら、私が考えることができる1つの本当に簡単なものがあります:

Visual StudioのVB.NETのエディターは、C#のエディターよりも構文エラーをキャッチするのに優れています。

C#のエディターはVS2008 SP1で大幅に改善されましたが、プログラムをコンパイルしようとするまでエディターで認識されない構文エラーがいくつか残っています。


このバックグラウンドコンパイルは、VS2005での大きなVBプロジェクトの編集を非常に遅くしたものです。いずれにせよ、それはReSharperの目的です;)
ルーカス

バックグラウンドコンパイルだけでなく、自動フォーマットおよびコードクリーンアップツールは、ブロックから離れてコンパイルをトリガーする前に多くのことを修正します。これは、c#と比較してvbで大幅に時間を節約できます
ビル

4

VBの人気の多くは、VBのツールが他の利用可能な言語よりもはるかに友好的だった時代に始まりました。「クラシック」VBは、Win32 APIの基本を学ぶ必要もなく、手動でメモリ管理を行うことなく、Windowsアプリケーションを簡単に構築する方法を提供しました。VBの初心者プログラマーの参入障壁はC ++よりもはるかに低いため、多くの人がVBで歯を切っています。

最近では、C#に対するVBの利点の1つは、長年にわたってVBを扱ってきた人にとって馴染みがあることだと思います。もう1つの利点は、句読記号の代わりにキーワードを使用する傾向があるため、VBコードが読みやすいことです。VB、Java、C、C#、およびPythonで働いている人として、私はVBが何年も前に書いたコードをレビューするときに戻る最も簡単な言語であることに気付きました。構文はより冗長であり、多くの場合、コードが読みやすくなります。VisualStudioは常に、VBコードをフォーマットして、入力時にフォーマットをクリーンアップし、コードが一貫してフォーマットされるようにします(作成者のずさんさに関わらず)。

補足として、Pythonは同様の理由で非常に読みやすく、レビューしやすいと思います。Pythonでは、コードのフォーマットはIDEではなくインタープリターによって強制されますが、最終結果は同じです。Pythonは句読点よりもキーワードを好みますが、VBよりは間違いなくそうです。


3

他のどの言語よりも多かれ少なかれ「エラーを起こしやすい」と主張するのは難しいでしょう。また、「商用MS Webの大部分」についてのポイントも疑っています。私が見たものから、C#は.NET開発の先頭に立っています(.NETは、デバイスドライバーなどではないもののMSスタックの主力ツールです)。


3

VB.NETがC#(C#4で消滅する)よりも優れている1つの利点は、デフォルトの名前付きパラメーターです。これは、VSTOを使用するときに非常に便利です。


さらに、「動的」-C#に既存のVBの遅延/ディスパッチバインディングに匹敵するものを与えます。
マークグラヴェル

1
このいわゆる利点は私にとって常に問題でした-私の読んだことは、C#が同じ実用的な結果を達成するより安全な方法であるオーバーロードを持っているということです。

2
オーバーロードのマイナス面は、jsutがいくつかのデフォルト値を設定したい場合に、維持するのがより難しく、混乱を招くことです。コンパイラによってメソッドに直接解決されるのではなく、ネストされたメソッド呼び出しにコンパイラーするオーバーロードの複雑なチェーンになる可能性があります。
マシューホワイト

3

VB / VB.NETはRAD(Rapid Application Development)カテゴリに属します。ツールボックスからドラッグアンドドロップコントロールだけで、少ないコードでアプリケーションを開発できます。


ASP.net + C#コンボについても同じことが言えますか?

はい、ほとんどのVisual Studioベースの言語はそうです。

さて、VB(.netではない)の時代にはC#などはありませんでした。そのため、VBが唯一の素晴らしいものでした。その後、VBユーザーはVB.NETに移行しました。とにかくVB <> VB.NET。

3

さて、クラシックVBとVB.NETを区別する必要があると思います。

VB.NETはあまり人気がないと感じていますが、Visual Basicの「クラシック」はまだ1です。その理由は、Windowsアプリの作成が非常に簡単だからです。これをC ++ / MfcのWindowsアプリと比較してください。C++ / Mfcは、現時点ではほとんど唯一の代替手段でした。

同じ理由で、Delphiは昔々非常に人気がありました。


VB.netはクラシックVBほど人気が​​ないことに同意します。コードベースをVB.netに移行できなかった一部の開発者は、代わりにC#に移行した可能性があります。
-JBRウィルキンソン

3

VBは、大文字と小文字を区別するC#と比較して、非常に冗長で簡単に使用できます。初心者プログラマーにとって、それが最良の出発点です。


3

いくつか例を挙げると:

  • 使いやすさ
  • よく知られた名前(基本は最初の一般的なコンピュータープログラミング言語の1つでした)
  • マイクロソフトマーケティングを過小評価しないでください

3

理由の一部は、VBスクリプトがほとんどの部分で使用されているASPクラシック言語であるため、私が行ったように.NETにアクセスする古いASPプログラマーがすでにVBに非常に精通しているためだと思います。.BVを話す方法をすでに知っているので、.NETのVBでの書き込みにかかる時間が少なくなったと感じました。VBはC#よりも泣き虫です。私は両方で読み書きできますが、新しいプログラマーなら簡単に友達を作ることができるので、VBが好きです。


2

私は両方を使用する環境で働いています。従来のASPとVBを優先して、C#に切り替えました。私の意見では、これらの言語の間に契約違反はありません。ほとんどのプロジェクトでは、両方の言語で同じ作業を行うことができます。今、私はエラーが発生しやすいというあなたの見解を共有し、VBが散らかっていることを見つけました(理由はありません)

他の人が述べたように、VBは非常にシンプルであり、歴史的にプロジェクトを非常に高速にビルドできました。これは、Web開発(急速に開発された)で存続しましたが、C#が同様に高速に開発されていることを人々が認識すると、VBは消えていきます。私がそれがフェードアウトすると思うもう1つの理由は、Webアプリケーションを作成するときにコーディングする他のすべて(CSS、JavaScript)がVBよりもC#に似ているため、初心者でもC#を使用するのが理にかなっていることです。


2

個人的には、イベントが 'handles'キーワードを使用してvb.netにアタッチされる方法が好きです... IDE / Visual Studio /は、VBを処理するときの応答性も高く、ほとんどのend-ifなどを自動的に処理します... C#はもちろん、はるかに簡潔できれいです(私見、私は両方ともかなり協力しました)


私は自分でイベントを購読することを好みます。「ハンドル」とVSデザイナーで行われるすべての魔法の舞台裏のものではありません。
ルーカス

2

4.0フレームワークの時点では、C#と比較してVBに欠けているものはほんの一握りであり、逆も同様です。すなわち:

  1. 最も注目すべきは、VB.NETにYieldキーワードがないことですが、新しい非同期フレームワークを使用してVB.NETに間もなく登場します。
  2. unsafeキーワードはありません。必要だとは思いませんでしたが、確かに持っている人もいます。
  3. 複数行の文字列はありません。複数行の文字列は、行間で+(または従来の&)演算子を使用して実現されます。または、XMLリテラル構文を使用してそれらを実現できますDim s = <s>My string... multiple lines...</s>.Value。それはきれいではありませんが、あなたがうるさくなく、本当に複数行の文字列が必要な場合は動作します。そして、あなた<%= myVar %>は素晴らしい構文を使用してそれで文字列補間を行うことができます。
  4. に相当するスコープの変数はありませんdynamic。ダイナミック変数はVBで長い間使用されてきましたがOption Compare Off、それはファイルスコープであるため、スコープがそのように宣言された変数のみに制限されるdynamicため、あまり良くありませんdynamic
  5. VBには簡潔なラムダ構文がありません。ラムダはありますが、Function(x)またはを使用する必要がありますSub(x)

VB.NETには、C#にはない機能がいくつかあります。

  1. XMLリテラル。XMLだけでなく、あらゆる種類の物に便利です。
  2. 言語の大文字と小文字を区別しないことは、猫の鳴き声です。他の多くの言語では許可されていませんが、入力時にShiftキーを押す必要がなく、コードを希望どおりに自動フォーマットするだけでコーディングの速度が大きく異なります。
  3. しばしば不必要なSelect句は、Linqクエリから省略できます。
  4. Nothingキーワードがはるかに便利なよりもnull、そのすべて(偶数値の型)内に設定することができNothing、あなたはデフォルトを取得します。defaultキーワードは必要ありません。
  5. VB.NETはVisual Studioで常にコンパイルされるため、すぐにエラーが表示されます。C#のように一日中CTRL-SHIFT-Bを押す必要はありません。

私の店は、VB.NETを使用してMVC3をRazorで実行し、(ほとんど根拠のない)偏見を乗り越えると、実際に使用するのに非常に素晴らしい言語になります。これは、C#ほど多くのクレーム(ラムダの場合を除く)ほど冗長ではなく、C#とほぼ同じ機能を備えた機能です。嫌いな人のほとんどは、現代のVB.NETで実際にコーディングされていないことがわかっています。


私に関しては、VB.NETは冗長すぎます。多くの定型コードを手動で印刷する必要がありますが、ReSharperは実際には役に立ちません。私はすでに3年間、パララーでC#/ VB.NETでコーディングしています。
ヘディン

VBは、キーワードが長いため、実際には水平方向に冗長です。IDEが自動的に入力するため、頻繁に入力することはありません。しかし、IMHO C#は中括弧のために多くの場合縦に冗長です。VBのその他の利点:VBにはスタイルが1つしかないため、ブレーススタイルの議論を避けます。(舌が頬に入る)セミコロンとブレースのボイラープレートを際限なく入力するために、過剰な筋肉質の右小指の発達を避けます。
MarkJ

1
@MarkJ:私はそれがC#の支持者は、批判の道を面白いAndAlso[話されたとき、それは「二重のアンパサンド」より短いだと耐えない]が、という事実を無視If-Then/Else/EndIfC#の同等物は、少なくとも4を取るだろうが、3つのラインプラス制御文を取りに} else {単一の行として記述しない限り、中括弧の規則に応じて、場合によっては6つ。
supercat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.