• ベストアンサー

VBは多少間違ったコードでも動くって本当?

最近C#を始めました。 そもそもC#ってどんな言語かネットで調べると、VBと比較すると難しいと書かれていました。 VBは多少の記述の間違いがあっても動くとありました。 プログラムって人間と違って融通が聞かないものの典型だと思っていたのに、記述の間違いがあっても動くってどういうこと?と疑問に思い質問させていただきました。 どなたか少し具体的に教えていただくことが可能であればお願いいたします。 具体的が無理ならイメージでも構いません。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (743/5656)
回答No.4

難しいよりは厳しいと言った方が正解な気がします。 コンパイルチェックやデータの型に厳しいと言う意味です。 例えば、 VBでは .ToString がエラーになりませんが、 C#では .ToString() のように括弧がないとエラーになります。 他には、 VBでは 1 + "1" は 2 になりますが、 C#では 1 + "1" は "11" になります。 コードで書くとこんな感じと結果になります。 VB ---- Dim a = 1 Dim b = a.ToString Dim c = a + b Console.WriteLine(c) ==== 1 1 2 ---- C# ---- var a = 1; var b = a.ToString(); var c = a + b; Console.WriteLine(c); ==== 1 1 11 ----

gennya
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • dell_OK
  • ベストアンサー率13% (743/5656)
回答No.5

回答No.4です。 結果の 1 だけの行は無視してください。 以下のようにaとbを表示していたのをコードからなくしていました。 Console.WriteLine(a) Console.WriteLine(b)

gennya
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

コードが間違っていて動くプログラミング言語などありません。 但し、VBには「小さな親切、大きなお世話」的な機能が、 存在していることは確かです。 プログラマの手抜き(無知)について、 暗黙の型変換や、指定がなければ引数を参照渡しにする、 プロシージャ呼び出しを明示的にしなくても、名前だけで 呼び出しと判断する・・などなどですが、 プログラマの想定外の挙動を呼び起こす可能性も 無くはありません。 私はこれは逆に良くない機能だと思っています。 なのでVBでプログラムを書く場合は、 ・明示的に型変換する ・引数はByVal・ByRefを必ず書く ・呼び出しは必ず「call」を書く ・繰り返し構文のnextは対象変数を明記する など、プログラマが自分で厳格なポリシーを設ける必要があると思っています。 C言語系はこのような「大きなお世話」をせずに、 「プログラマ考えたとおりに動作する」仕様に成っていますので、 間違えれば1mmも動かなかったり、暴走したり、 意図せぬ領域を書き換えたりと、神経を使いますが、 ちゃんと書けばちゃんと動きます。 VBの「大きなお世話」も万全ではありませんので、 プログラマが「ちゃんと書く」事が必須なのは、 実は同様であり、難しさも差はありません。

gennya
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

> VBは多少の記述の間違いがあっても動くとありました。 文法に間違いが無ければエラー中断せずに動くけど、期待した、思ったようには動かないのでは。 例えば、 a=2 b=3 c=a+b Msgbox a & "たす" & a & "は" & c は動くけど、 「2たす2は5」 って表示内容は期待したものでないと思うけど。

gennya
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • sknbsknb2
  • ベストアンサー率38% (1137/2947)
回答No.1

ロジックの間違いがあれば期待通りに動くはずはないので、それ以外の要素ということだと思います。 変数には型があって、文字列を示す文字列型とか、数値を示す数値型とかがあります。 例えば、数値型での10と文字列型での10は厳密には違うもので、普通両者を足しても20にはなりません。(型違いの演算でエラーになる) でもVBは文字列型の10が数値として矛盾のないものだったら、気を利かせて20という結果を出したりします。このあたりが「VBは多少の間違いがあっても動く」ということかと思います。 でもこういう仕様は、わかっててそういうコードにしたならともかく、間違えていてもとりあえず動いてしまうので、バグを見つけるのが困難になったりもします。

gennya
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBからFortran、Cを呼び出すことはできますか。

    PCフォートラン・C言語で作成したアプリケーションがあるのですが、VBのユーザーインターフェース機能を生かして、対話型のプログラムにしたいと思います。 VBとフォートラン・C言語をリンクして、できれば変数の受け渡しもできるようなプログラム(メニューをVBで作成して、処理をフォートランに渡す)をイメージしています。 上記のような処理を経験された方、又は知識を有しておられる方がおられましたら、よろしくお願い致します。

  • プログラム言語

    こんばんわ! プログラム言語ってVBやC、C++とか色々ありますが、できることに差があるのでしょうか? VBなんかは多少いじったことがあるのですが、C++等でできてVBでできないこと(もしくは逆)など具体的にどんなものがあるのでしょうか? もしくは処理速度等のだけの問題なのでしょうか?

  • VB.NETからC言語への乗りかえについて。

    プログラミング未経験者のものです。 これから、新たにプログラム言語を習得したいと考えています。 そこで、数ある言語の中から、選択に迷ったのですが、奥も深くて比較的入り口も入りやすいというVB.NETからはじめようかとも考えました。 しかし、将来的には、高い仕様を具えるC/C++言語を習得してみたいとも考えています。 この場合、VBからCに移行するというのは、かなりたいへんなことなのでしょうか。よく聞く話なのですが、どれかひとつの言語を習得すれば、プログラムの考え方はどれも似ているので、他の言語を学ぶときにもそれほどの障壁はないという話も聞きますが、ほんとうでしょうか。実際には、かなり、文法上の相違があって、覚えるのはそうとうたいへんなのではないでしょうか。 まあ、英語を習得したあと、スペイン語を習得するほど困難ではないかもしれませんが。 また、多少本を読んで独学しているものの、演算子、条件判断、繰り返し、配列、ファイルの入出力など、基本的な作り方なども知ったのですが、プログラミングの難しさってどういうところにありますか。 たいていの人は難しくて脱落してしまうのでしょうか。 年齢的にも30代で、仕事をしながらですので、時間的なゆとりもあまりありません。 ずっとVBだけでいいのならともかく、後々、CやC++もマスターしてみたいと思っていますので、それなら、最初からCをやったほうがいいのでしょうか。 でも、VBはVBでフォームも簡単に描けますし、コントロールを貼り付けるという操作はたいへんわかりやすく、初心者がプログラミングの楽しさを味わうのにはうってつけの言語だとも思います。 ただ、VBにあまりどっぷりつかっても、Cを一から勉強する際、Cの文法に違和感を感じしてしまい、挫折してしまうかもしれません。 それならいっそのこと、初めからCをやったほうがいいのかなとも思うわけです。 また、このふたつの言語の特徴をいいますと、どのようなことがいえるでしょうか。機能的なこととか、将来性とか、いろんな角度からでも結構です。 VB.NETはOSや、ネットワークに強いとも聞いています。 でも、Cは、ポインタなどもありますし、CPU・ハードを直接操作できる強みもあるようですね。ハードに関与する場面というのがどれほどあるのかはよくわかりませんが。 どなたか、もしアドバイスを頂けましたらありがたく感謝致します。

  • VBは速度が遅い?

    VisualBasic6でプログラムを組んでいて疑問がわきました。 主に計算主体の場合、C言語と比べて速度が遅いと言われますが、どうしてVBで作ると同じアルゴリズムなのに 速度が遅いのでしょうか? VBで早くする方法が知りたいです。 ActiveBasicというものがあり、そちらで動作させると 早いといううわさがあり、本当かわかりませんが、 どうなのでしょうか?VBのコンポーネントは使えるのでしょうか? ※昔、Delphiと同じアルゴリズムで速度を比べたら Delphiの方が早かったです。理由はわかりませんが・・・

  • VB(ビジュアルベーシック)について

    今、C言語で出力された値(一つの値を入力するとX、Yが出ます。.txtで出す予定です。)をVBに持ってきたいんですがその方法が分かりません…(>_<) C言語で2つの値XX(数値),xx(数値)を算出し、 VBで Xa=XX Ya=xx と言う感じで、XX,xx(C言語で出した数値)を持ってきたいです。 全てをVBで行えばいいのですが、C言語の知識が多少あるだけでVBはまったく分からない状態なので困ってます。 どなたか分かるいましたらアドバイスお願いします。

  • なぜ、VBよりC#を勧めるのですか?

    プログラミング初心者やBASIC経験者に対して、C#を勧める人が結構いるみたいです。 C#よりVB2005を勧めるといった人はほとんど見かけません。 BASIC系の言語を知っていればVBScriptやVBAなどの理解も早いと思いますし、VB.NET(2005含む)の方が参考書や参考Webページが多いように思われます(初心者向けの物は特に多いのでは…) VB6の頃はオブジェクト指向の機能が不完全でしたが、VB.NETになってからは、完全なオブジェクト指向言語となったように聞いていますが… C#の方が洗練されているとか美しいとかいった事を聞きますが、その程度の事は所詮好みの問題ではないでしょうか 生産性や開発コスト、プログラムの管理といった具体的な観点でC#を勧める理由が知りたいです。

  • アセンブラの機能について

    今、アセンブラの勉強をしているのですがある書籍の説明文において 「ハードウェアすなわちコンピュータが用意している機能を原理的にはすべて使用してプログラムを作成できる。」 ということや、 「C言語などの高級言語には存在しない、ハードウェアに予め用意されている機能を利用してのプログラム製作が可能」 という記述があったのですが、具体的にアセンブラには高級言語には存在しないどのような機能が内臓されているのでしょうか? 私は多少C言語およびJavaの経験があるのですが、是非ともアセンブラとの比較を勉強したいと思い、この疑問が浮かび上がりました。 分かる方、よろしくお願いいたします。

  • VB6.0とC言語

    VB6.0とC言語 見習い中の見習いプログラマーです。 VB.NETのコードを読めるくらいしか知らないのですが、 外注のVB6.0とC言語を使用した仕事をしています。 プログラムの世界は、こういうものなのですよね。。。 自分の知識の無さに、気持ちがめいってます。。。

  • VB6についての質問です。

    VB6.0のプログラムについての質問です。 VB6.0の初心者ですが、 [-1.0,1.0]の区間内に一様分布する乱数系列raを発生させるプログラムを作りたいです。 c言語では、GetRandom(-1.0, 1.0)を使えば出来ますが・・・ ご教授お願いします。

  • VB.NETとC#の違い

    JOBで使用する開発言語をVB.NETにするかC#にするかで迷っています。 画面アプリと裏タスクという構成ですが、 今までは画面=VB、裏タスク=Cという固定概念でしたが、このままでよいのか疑問です。 下記は私なりに調べてみた比較なのですが、 ●従来Cの短所とされてきたこと ・画面設計のし易さ  C#はVBと同じようにVisualStudio上で簡単に設計できる。イベントドリブンも可能。 ・言語のとっつき易さ C#でASPを組んだ経験もありますので大して抵抗はありません。                しかも、VB6.0→VB.NETの移行は従来のVB5.0→6.0へ移行ほど安易ではない。 ●従来Cの長所とされてきたこと ・処理速度     VB.NETと差が無いような記事も見たことがあります。 こう考えるとC#とVBの差が、どんどん縮んできており、長所短所を見出すことができません。 いったい違いって何でしょうか、ご存知の方、ご教示いただきたくお願いいたします。