• ベストアンサー

VBはCを混乱させる?

最初Cの勉強はじめるときこなこと数人の方にいわれました。「CとVB同時に学ぶと頭が混乱するから避けたほうが良い」と。 これって本当ですか? VBのいいところって何? VBとCの違いってなに? もう一度みなさんの意見がききたいです。

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

  • ベストアンサー
回答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では戻り値のある関数の戻り値は捨てても全然問題ない。戻り値を使う・使わないはプログラマの自由だ(ここら辺も論理的、ヒュ~!!)。

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

その他の回答 (9)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.10

VBでは関数の引数がデフォルトで参照渡しになると読んだことがあります。 値渡しが標準だと思うんですがなぜなんでしょうね。

全文を見る
すると、全ての回答が全文表示されます。
  • TT414
  • ベストアンサー率18% (72/384)
回答No.9

No.6さんへ >Cの配列は、 >val[foo()][func()] >のような使い方もできる。 Cだけでなく、最近の言語で出来ないのはありません。 出来ないのはFORTRAN位(Fortran77以前の)です。

全文を見る
すると、全ての回答が全文表示されます。
  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.8

> 最初Cの勉強はじめるときこなこと数人の方にいわれました。「CとVB同時に学ぶと頭が混乱するから避けたほうが良い」と。 > これって本当ですか? CとVBよりもCとC++とJavaを同時にやると、 構文が似通っているのに、 何でこれができないのかに迷うと思います。 VBはまったくといっていいほど、 Cとは異なる言語という発想でいけば、 それほど難しいとは思いません。 構文がまったく違うといってもいいです。 > VBのいいところって何? 1.画面設計が楽。 2.敬称という概念が無い。(悪いところでも有るけど。) > VBとCの違いってなに? &&という論理演算子が有るか無いか。 Cで出来ることの90%はVBでも出来る。 VBで出来ることの100%をCはできる。 ちなみにVBにもポインタの概念は有ります。 関数ポインタはあたりまえのように使えますが、 変数ポインタはほとんど使えないに等しいです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

言語と言語の差・優劣 言語の特徴 などの質問が時々質問でのりますが、あまり意味がないように思う。 なぜなら 1冊の本に説明するようなテーマに対し、回答許容文字数は数百字。とても十分説明できない場合が多い。 エッセンスの説明や根底概念は、これから学ぶ人には理解が難しい。 回答の優劣、正否を判定する力が質問者にない場合が多いはず。 他人の習得エッセンスを借り物にしてしまう危険性あり。自分が本を読むなり、練習問題をやるなりすべき。 意見・回答は個人差が大きい。群盲象を撫ず。 いつも質問のテーマ念頭に置きつつ、自分で体験中、体験後にまとめるべきテーマであると思う。 ----- 一般になぜ同時に学ぶのか理解できないが、学校の授業プログラムならやむをえないが、独学なら、そんな余裕はないでしょう。仕事で、両者を結合しないとならないのなら、つべこべいえないでしょう。 ーーー プログラム記法(たとえば文の区切りの;と改行、配列記法、演算子、If、ForNext、大文字小文字、他多数) 概念の問題(ポインタ、データ型、オブジェクト諸関連、引数、クラス) コンパイル型 などありますが C->C++->Java--> Basic->VB->VB.NET以後ー> と近づいた感じです。 ーーーー 言語のどれを選ぶよりも、むしろ仕事を解決するために利用する場合、アルゴリズムや処理の流れ、文書化、データネームをはじめ書法の統一、分割化(共通部分の分割) などの方が、立ちふさがる問題のように思いますので、そちらにもご留意が必要と思う。

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

#5です。 もう一つ、CとVBの違いがありました。 ※配列の表現方法が違う。 Cでは、変数に[]を付けることで配列にする。しかも、これは、演算子の一つである。VBでは()を付けるが、これは次の問題点がある。 foo(1,3,5) ' 果たしてfooは関数か変数の(3次元)配列か? 変数名()という表現は関数名()と同じなので、関数と変数の違いがわからない。 Cでは、val[4]とすればvalという変数の5番目の要素となり、foo( 8 )とすれば関数foo()に8を渡しているとなる。 Cの2次元配列は、 val[2,5] と表現しないで val[2][5] となる。すなわち、変数valに[]という演算子が付いてval[]となり、さらにval[]に[]という演算子が付いてval[][]となったのだ([]内の数値は省略)。 Cの配列は、 val[foo()][func()] のような使い方もできる。ただし、foo()とfunc()の型はint(またはchar)であるかint(またはchar)にキャストされなければならない。 やはり、理論的なんだ、Cは。 ※※※ C言語の論理性に惹かれてC言語を主として使っているのでC言語に偏っていることをお詫びします。 ※※※ 誰か、間違いがあったら指摘してくださいね。 いい加減に覚えてるところもあるので。

全文を見る
すると、全ての回答が全文表示されます。
  • azicyan
  • ベストアンサー率21% (368/1747)
回答No.4

VBSを最近使っているのですけれど、 うっかりやってしまうのがセミコロンです。 セミコロンつけるとエラーになるんですよ・・・無視してくれてもいいのに・・・ IF文やFor文は書き方が違うのですけど、 実は大昔BASICをかじったことがあるので、実はVBの書き方のほうがなじみがあったりします。

全文を見る
すると、全ての回答が全文表示されます。
  • NNori
  • ベストアンサー率22% (377/1669)
回答No.3

うーん、人それぞれだと思いますよ。同時に学ぶと混乱するかもしれませんが、言語の違いが良く分かっていいかもしれません。 今私はASP(ほとんどVB)の中にJavaScript(割とC++に似ている)を埋め込んでるんで、混乱しまくりです。 文末にセミコロン; を付けるの忘れたり、コメントに ' を使っちゃったりします。

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

一番の違いは、IF文ではないでしょうか? 例 aが1ならbに1を設定、それ以外ならばbに   0を設定 C言語 if(a == 1){ b=1; }else{ b=0; } VB if a = 1 then b-1 else b=0 endif C言語では、   if(a = 1){ b=1; }else{ b=0; } という記述もできますが、この場合、  『a=1』という代入の結果を評価して  しまうため、常に真になってしまい、  b=1となります。(文法エラーになり  ません。)

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

単純に、言語を2つ一度に学習しようとすると混乱しやすいというだけで、VBとCに限った話ではないと思いますよ。 VBのいい所は手軽なところですね。explicitをonにしておかないと宣言なしで変数を使えるところはバグのもとですが。 Cって、VC++の事ですかね?6.0までは結構違いがありましたけど、.netになってからは壁が低くなってきているような。

nVIDIA
質問者

補足

基本の基本から学んでますのでC++ではなく、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できたことになるのでしょうか?