• ベストアンサー

VBはCを混乱させる?

naru_fumi2005の回答

  • ベストアンサー
回答No.5

C言語とVBの明確な違いを挙げて見ます。 C言語はかなり使い込んでいるのですが、VBは使い込んでいないので「もっといい」方法があるかもしれません。 ※ポインタの有無? VBにポインタってあったっけ? Cでポインタに慣れてしまうと、その他のポインタの使えない言語でプログラムが書きにくくて仕方ない。 例えば、ある文字配列(Cでの表現)の8文字目が知りたいとき、Cなら *(string+7) // これは式だから速い!! だがVBだと関数を使わなければならない? mid( string, 8, 1 ) ' 関数だから遅い!! 関数のポインタなんて覚えた日にゃ、ポインタを使えない言語がかわいそ過ぎる。 逆アセンブラを作ったときに実感した。 ※配列の添え字がCでは0から始まるが、VBでは1から始まる。1から始まるのは、どう考えてもおかしい。要素1つ分損する。 ※VBでは文字列の連結を string1 = string1 + string2 と書くが、コンピュータの仕組み(ハード的なことやOSのこと)を細部まで知っていると、なぜこのような文法が許されるのかが疑問になる。 ※VBは、数値・文字・文字列が曖昧だけど、Cでは明確に分かれている。 VBでは、文字列で宣言されたstringに"123.456"が代入されているときに整数で宣言されたint_valにstringを代入できてしまう。勿論、実数で宣言されたreal_valにも代入できてしまう。 int_val = string ' これができてしまう。int_valの値は、123だ。 real_val = string ' これができてしまう。real_valの値は、123.456だ。 Cでは、値のキャストができる。すなわち、実数型変数realの整数部分が欲しいときは、 (int)real // 変数のキャスティングと言う。 とすれば良い。しかし、VBでは、 int( real ) ' ここでも関数を使わなければならない。 とする必要がある。 ※Cはフリーフォーマットだけど、VBは書式に制限がある。 式が長くなりすぎて、2行に分けたいときに行末に _ を書かなきゃいけないって、おかしいぞ、VBよ。 ※Cは、非常に理論的な言語である。 #2の回答にもあるが、Cの代入は = で表し、比較の等号は == である(Pascalでは、代入は :=、比較の等号は =。)。 したがって、if ( a = foo( z ) ) ... と記述できる。 これは、関数foo()にzを渡した結果をaに代入して、if文で条件分岐、と言うこと。 VBではこのような記述はできない。なぜなら、VBのif文での = は、比較の等号だから代入にはなり得ない。 ※VBでは関数とプロシージャ(サブルーチンだっけ?)と意味的に同じモノを区別しているが、Cでは関数しかない。 VBで関数の戻り値を捨てるとエラーになる。これは余計なお世話だ。Cでは戻り値のある関数の戻り値は捨てても全然問題ない。戻り値を使う・使わないはプログラマの自由だ(ここら辺も論理的、ヒュ~!!)。

関連するQ&A

  • VBからC++へ

    こんばんは。 1年半ほど前からVBをはじめていて、そろそろVBの速度の遅さに限界を感じてきました。そこで、いっそのことC++を勉強しようと思い、BorlandのC++コンパイラーをダウンロードしてきて少しずつやり始めているのですが、VBとC++との文法の違いになかなかなじめず、挫折しかけています。どうにかして、C++を習得したいのですが、なにか良い方法はありませんでしょうか?よろしくお願いします。

  • VB.NETからC#は難しい?

     とある案件に興味を持って応募してみようかと思ってるのですが、そこではC# + SQLServerの 環境で経理システムの開発管理をやってるそうです。帳票ツール等は何を使っているのか不明 です。  私は今までVB.NETとSQLServerの開発経験は長く(5年以上)、C#の知識はないのですが、 なんとか調べながらやってみようと思うのですけど、難しそうでしょうか?  @ITとかで基本的なC#の入門がやってて、そちらで少し勉強してみて何とか違いはわかった ような気がします(苦笑) あとは実際にやってみてかな~って自分的には思ってます。  それでもやはりC#未経験ではやめといたほうがいいでしょうか?   ちなみに経理は財務会計のシステムを8年携わったことがあり、日商簿記2級ももっています。  ざっくりな感想でけっこうですので、ご意見を伺えると助かります。  よろしくお願い致します。

  • VB.NET とドットNET(.NET)と違うのですか

    Cをこれから勉強しようと思って、 「VISUL STUDIO 2005」という本を買って勉強中です .NETというのが出てきて VB、、C++、C##、J#を扱っているようです そして この、教えて、なんかで よく出てくるのが、VB.NETで .NETはあまりでてきません そこで、この違いを知りたいのですが よろしくお願いします

  • VBとCとJAVA

    VBとCとJAVA  今日は,質問させていただきます. どうぞよろしくお願いいたします.  VB.NETが好きでずっとコーディングしておりますが, 使ってもらう友人に毎回.NET Frameworkをインストールしてもらうのが手間でございます... 他の言語も触ってみたいのでございますが,CとJAVAのことをぜんぜん知りません... そこで, 1.VB.NETのように,コントロールを配置したりして  アプリケーション開発できるツールってCやJAVAにもあるのでしょうか? 2.それがもしあれば,それで作成したEXEファイルを使用する時に  .NETのようにPCに何かインストールする必要はないのでしょうか?? 3.VBを始める前から,ネット上でよくVBは独特の癖があって  扱いにくい,といったようなといったようなご意見を見かけます.  VB.NETと他のアプリ開発ツールとの比較(長所や短所などでも)を  簡単にでもお教えいただけないでしょうか.  もしお詳しい方がいらっしゃいましたら, どうぞよろしくお願いいたします.

  • VB5.0、VB6.0

    4月の下旬にSE、PG見習いとして転職しまして、5月の連休明けからVBを勉強しております。 今は会社からVBの本を渡されPCに向って勉強しているの毎日です。(経験知識は全くありません) 本に書いてある通りにやれば、やっていることはわかるのですが、これで本当に理解できているのか?理解できるのか?と不安です。(もちろん1週間でなんでも理解できるとは考えておりません。) 自分が理解できていると実感できるようになるにはどうしたらよろしいでしょうか?それと初めはどんなことから勉強していけばよろしいのでしょうか? ささいな事でも結構ですので、皆さんのご意見お願いします。

  • 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の差が、どんどん縮んできており、長所短所を見出すことができません。 いったい違いって何でしょうか、ご存知の方、ご教示いただきたくお願いいたします。

  • 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・ハードを直接操作できる強みもあるようですね。ハードに関与する場面というのがどれほどあるのかはよくわかりませんが。 どなたか、もしアドバイスを頂けましたらありがたく感謝致します。

  • VB6から#C or .NET VB どちらが易しい? OS or 言語

    マシンが64bit対応なので VisualBasic6から #Cか .NET VBに書き換えて64bitで動作するように検討しています。 VS2005 Proは購入済みで、OSはWindowsXP x64 proか Windows2003を検討しています。どちらがよいかわかっていないのですが、まず最初にプログラムをどちらにコンバートするか悩んでいます。 いっそC#の方が将来性があるのでしょうか? また、.NET VBの方が書き換えが簡単でしょうか? 以前、VB6のプロジェクトファイルを開こうとしたら なんか変換したような気かしましたが、フォームやメインが無かった?ようなへんてこなCが出来上がりました。 VBからの移行された方でどちらを選んだのか知りたいです。

  • VB6.0からC#などへの移行

    私の会社では自社の製品の検査機器の管理用のプログラミングにいまだにVB6.0を使っています。 私としてはC#などに移行すべきだと思うのですが、この業務の主任がVB6.0しか使えず、 ほかにプログラミング技術を持つのは私だけなので意見が通りません。 プログラムとしては、簡単なもの(ファイル管理とデジタル入出力による検査結果の管理)なので 他の同僚、上司なども別にVB6.0から変更する必要がない(=特に生産性に影響がない)と いった考えのようです。 しかし現在一般的には古くなった言語を新しい社員に教育し、それをこの先を続けていくことが 正しいとも思えません。 みなさんをこれに関してどう思いますか?またC#等の言語に変えるべきであれば、 その明らかなメリット、現状のままでは今後生じるかもしれない問題など あれば教えていただければ幸いです。

  • Cがメインだけど VB 触れないほうがいいのかしら?

    連休明けになったらCをみっちり勉強します。 そして、はやくも7月のC検3級が待ち受けてる(◎-◎;) てなわけで勉強のためにVS2003を購入しました。 でもプログラムは今まで経験のない土素人(+。+) VS.NETには四つの言語がありますけど、 Cやる人はVB覚えないほうがいいのでしょうか? ついでにC++できればCできたことになるのでしょうか?