- ベストアンサー
VB.NETからC言語への乗りかえについて
- VB.NETからC言語への乗り換えについて悩んでいます。プログラミング未経験者ですが、新たにプログラム言語を習得したいと考えています。VB.NETは入りやすく奥も深い言語ですが、将来的にはC/C++を習得したいとも考えています。VBからCに移行するのは難しいのでしょうか。プログラミングの考え方は似ていると聞きますが、実際には文法の相違があって覚えるのは大変なのではないかと心配しています。
- プログラミングの難しさは何にありますか。多くの人が難しくて脱落してしまうのでしょうか。年齢的にも時間的なゆとりもないため、どの言語を選ぶべきか迷っています。VBは初心者にとっては扱いやすい言語ですが、C/C++をマスターするためには最初からCを学んだ方が良いのでしょうか。
- VB.NETとC言語の特徴について教えてください。将来性や機能的な側面など、どの言語を選ぶべきか考えています。VB.NETはOSやネットワークに強いと言われていますが、C言語はポインタを含む直接的なハードウェア操作が可能など、それぞれの言語にはメリットがあるようです。アドバイスがあれば、とても助かります。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>お聞きしたいのはCを飛ばして、いきなりC++からでも >勉強開始できるのでしょうか。 飛ばすという発想は適切ではありません。 なぜなら、C++にはCの仕様がほとんど含まれるから・・ #極論すれば、Cにオブジェクト指向を加えたのが C++ 言語の比較でちょっと面白いサイトを見つけましたので紹介します。 http://mag.autumn.org/Content.modf?id=20050504145851 私はパラダイムという見方はしていませんでしたが、比較的 これに近い意見です。 ただ、現実にどれが使われる(役にたつ)かというと、私の 経験ではC++が必要になったことはほとんどありません。 (Cが必要だったことは多数あります) #パッケージソフト開発などの経験がないせいかも・・ どの言語が良い・・と言う場合には、スタンドアロン、 クライアント/サーバ、Webなどの使用方法の前提が必要です。 たとえば、市販のソフトなど(Officeなど)はたぶんC++で 開発されていることが多いと思いますが、これらは、膨大な 開発コストをかけてパッケージとして多数売るから成り立つの ですが、業務系の個別開発の場合には、C++の可能性はかなり 低いでしょう。 クライアント/サーバの場合は、C、C++、VBその他いろんな 選択肢があります。 Webの場合には、大規模な場合にはJavaが多いでしょうが、 規模が小さめだとJavaや.Net以外にPHP、Rubyなどもある でしょう。(少し古いのではPerlも・・) #Webでは、C、C++の可能性はかなり低いですが、CやCOBOLで #Webのバックエンドを作成している例は大規模なシステムでは #見かけます。 どの言語が・・はこのくらいで、本論の >仕事としてプログラミングをやっていきたいと考えております。 ですが、30代でプログラミング未経験から始めるということは 現実にはとても困難です。 #極端な人手不足の時代ならまだしも、あまっている現状では #ありえない選択肢です。 ほんとうに、プログラミングを仕事としたいと思っておられる なら、どの言語でもよいから、まず、実績(経験)をつくること です。 #30代未経験では、書類審査で3秒で没です・・ (書類審査の前ではねられるというのが正しいかも) とでもきびしい見方ですが、昨今の状況は優秀なSEやプログラマ さえ、仕事がなくて苦労している状況です。 例外があるとすれば、あなたのプログラム以外の業務の経験が とても役にたつ会社が存在すれば、プログラマとしての技術 ではなく、貴重な業務経験を買ってくれるところがあるかも 知れません。 #ただ、これもすぐ陳腐化するので数年以上のブランクがあると #難しいです・・ 本来のQAとはかけ離れてしまいましたが、現実を見つめなおす ことから始めましょう。 #ちなみに私は数回の転職の経験があります・・
その他の回答 (6)
- equinox2
- ベストアンサー率48% (321/660)
>プログラミング未経験者のものです。 >これから、新たにプログラム言語を習得したいと考えています >年齢的にも30代で、仕事をしながらですので、時間的なゆとりも >あまりありません。 上記からは真の目的が読み取りにくいですが、仕事で使いたい・・とかではなく、 あくまで個人的なスキルアップとして考えられているのでしょうか。 初めに覚える言語としてなにが良いか・・についてはいろんな意見が出てくる と思いますが、いくつかの観点での選択肢を考えてみました。 #5の方の回答を引用させていただくと >ハード ← C C++ VC++ VC++[MFC] C# VB.NET → GUIアプリ ・比較的短時間で覚えて、そこそこ実用的な物を作ってみたい → C# ・着実に(時間をかけて勉強したい) → C++(VC++) ・Cを最初の言語としてはお勧めしません (私はCの経験が一番長いですが・・) 【理由】 ・これからの言語には「オブジェクト指向」は必須だと考えています。 そのため、Cではなく、あえて時間をかけるのであればC++のほうが良い ・VB.NETはあまりお勧めしません。 (私は、VB5,VB6,VB.NETと経験していますが・・) 【理由】 ・VB6などの経験がないのに、.NETフレームワークを使用する言語として あえてVBを選択する理由がない。 ・Windows環境での開発が前提なら、C#から入ったほうが、C++や Javaなどに移りやすい。 私は、アセンブラから初めて、FORTRAN、C、(C++)、BASIC、VB、VB.NET、 C#、Java、COBOLなどなどいろんな言語に携わってきましたが、言語なんて 所詮、道具でしかなく、本質は「どのような問題をどのような方法で 解決するか!」であり、その手段として、その時々の条件や制約、開発 環境などを加味して、必要かつ十分な言語を選択するものだと思って います。 質問者様の目的などがもう少しあきらかになれば、より具体的な回答が できるかも知れません。
補足
回答ありがとうございます。 説明不足で申し訳ありませんでした。 仕事としてプログラミングをやっていきたいと考えております。 頂いた回答、理由を挙げて頂きたいへん参考になりました。 よろしければ、補足でお尋ねさせて頂きたいのですが、Cではなく、C++のほうをオススメするとありました。 このふたつの言語の違いはわかるようでわからないのですが、お聞きしたいのはCを飛ばして、いきなりC++からでも勉強開始できるのでしょうか。
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
「何を目的にするか」という点についてはすでに意見が出ておりますので、少し違う視点から。 私は今、VBからC#への乗り換えを行っている最中です。別に、VBを捨てるわけではなく、VC++が目標であり布石としてC#を書いています。各言語の類似性に着目してを並べてみると ハード ← C C++ VC++ VC++[MFC] C# VB.NET → GUIアプリ こんな感じになると考えています。(少々乱暴な説明ですが)CとVB.NETは両極端に位置しており、同時に学習するのは効率が悪いような気がします。いずれCを学ばれるつもりならC#からでもよいと思います。 > VB.NETはOSや、ネットワークに強い これは、VBが.NET Framework上で動いている要因が大きいでしょう。その点で見れば、C#でも対等に競えます。 > 機能的なこととか、将来性とか・・・ Cはまずなくなることはないでしょうね。機能的にもハードからGUIアプリまでをカバーしてますし。将来性を見ても覚えておいて損はないと思います。これに対して.NETはいまだ発展途上ですしアプリケーションのプラットホームとしては規模が大きすぎます。 ですが、「PC(主にWin)のGUIアプリケーション」に焦点を絞ると.NET Frameworkの存在は無視できなくなると思います。生産性で比べたときに.NETを選ぶ場面は増えていくのではないかと考えています。(それよりもWeb開発のほうが盛んになりそうですけども…) と、つらつら書きましたが、詰まるところどの言語から出発しても、「書き方」よりも「考え方」のほうが重要になってきますから、自分に合った言語からスタートするのがよろしいかと。
補足
回答ありがとうございます。 頂いた回答で各言語がハードとGUIアプリのどちらに近いかという図解がわかりやすく、たいへん参考になりました。 CとVB.NETは両極端なのですね。将来的にCが習得目的ならC#からのほうが、よいですか。 本当にC言語って長生きですよね。Javaや、C#が今後、もし減退してもCは幅広く使えるので生き残りそうですね。 Web開発でVB.NETが多用されるようになるかもしれないとのご意見も参考にさせて頂きます。
- imogasi
- ベストアンサー率27% (4737/17069)
システムの会社に転職しようとしているのかどうかがポイントではないですか。30台になると、既にスキルが無いと、システムの会社も 雇ってくれないかも。昨今では新卒は別として、1-2年教育してくれる会社は極く少ないのでは。職安ででも(システム関連の求人は数は多いと思うが)その辺の様子を調べてみればどうでしょう。 内容的なことは、VBとCの初等解説本を買って来て読んで比べて判断すればよい。 人に聞いてもそんなに参考にならないと思う。社会の情況や、個人の興味、向き不向きは色々だから。 勉強時にCの解説書ではなかなかウインドウズの表示なども出てこないうちに、終わりになり、エクセルなどのGUIが当たり前化している昨今、解説例題などにも興味がもてるかな。C++なら諸概念の芽が出ているので勉強にはなるだろう。JAVAはそっくり(後発の.NETは、VBのJAVA化ではないかと思っている。) VBなどは、そういうレベルの例題から始める。 BASICも旧BASICからVBへ、また、VB.NETになり、格段の変化があって、もう独学で初学から習得は無理ではないかと思う昨今です。ただし例外を作るのはあなたですが。 いや、私は独学で習得しましたという人や、いま本コーナーの.NET回答をしている人は、仕事の縁でVB.NETに入った人ではないかな。 彼らは過去に ・仕事でやらなければならない逼迫性があった。 46時中VB.NET関連を考えたり勉強せざるを得ない体験をして居る ・その言語について周りに聞ける先輩などが居る。また初めには(長期外部・社内の)その言語の講習などにも行かせてもらえた。 ・中には他言語で腕を磨いた経験があって、プログラムというものの体験を多々しており、VB.NETに入った。 などで、今の彼があるのではないかな。 だから、普通の独習者の人で、在る程度の域に達するのは至難の業ではないかな。本気でプログラマーやSEになるのなら、本などの勉強はほどほどにして、システムの会社に就職するしかないのでは無いだろうか。しかし会社も得意分野や顧客の希望や従来の開発言語の延長で、VB.NETだけとは限らない点が困った点だ。 またシステム会社は専用ライブラリを多用して居るのではないかな。 経理、人事、在庫などのシステム以外を扱うシステムの会社では、解説本の例題のような事項は、まるっきり別の様相ではないかな。 (例ゲームを作る、組み込みソフトを作る、通信、WEBなどの分野)使用主言語もVB.NETでは無いと思う。 独学内容も無にはならないはずだが。 旧BASIC時代の少数の指令から、クラス(Cでは関数)の数が劇的に増えて、難しいことになったものだ。 むしろWEB関連のスペシャリストを目指したほうがよいかも。 UNIX、LINUX関連の勉強も必要になる。 あくまで上記は個人的見解です(読者層の高い立場からの反論は多々あると思うが)が、どこか思い当たる節があれば参考にしてください。
補足
回答ありがとうございます。 長文でたいへん感謝致します。 まったく仰るとおり、「Cの解説書ではなかなかウインドウズの表示なども出てこないうちに、終わり」になり、興味を持続させるのもたいへんですよね。大概はまずは基本からと言うのも判るが、計算結果などの仕方を解説して大体1冊終わっているものが多いと思います。 VB.NETはJavaのVB版ではないかというのもおもしろいなと思いました。 本当に本などの勉強はもとより、経験って大切ですね。 VB.NETはこれから発展するかもしれないと聞いてもいますが、 各系統・分野でまだまだ開発使用主言語ではないというところも不安です。
- Han1344
- ベストアンサー率30% (7/23)
私はかつてCOBOLからCに乗り換えました。 COBOLは仕事として使っていたので、かなり突っ込んで、場合によってはバグに悩まされながら使っていました。 その後、Cに乗り換えたときは、COBOLの経験が生きていたと思っています。 ただ、2番目の回答者のように複数の言語を操れる人は少ないと思います。(あるいは仕事で使っているプロだから出来ることかも知れません。) 最終目的がC/C++なら、最初からC/C++から始めたらいかがですか? 私はVBを使ったことがありませんので、C/C++との比較は出来ませんが、VBなら簡単に出来る、というものではないと思います。 どんな言語でもそれなりに難しい部分はあります。 コントロールを貼り付ける、ということに魅力を感じるなら、C++Builderでも同じように出来ます。 SDKで作っていたときよりC++Builderの方が、数段上のプログラムが出来るような気がします。
補足
回答ありがとうございます。 そうですね。複数の言語を自在に操れるというのは、なかなか離れ技なのでしょうね。 確かに、VBといっても、ましてや.NET版ともなれば、相当、仕様も充実しており、習得は容易ではないと思います。 ですので、それを学習している時間を割く位なら、Cが最終目的でもあるからして、Cから始めてみたい気もしています。
- eternalx
- ベストアンサー率35% (7/20)
プログラミングは何を作るかという目的がないと続きませんし、それに合わせた言語というのも選択できないのは確かです。 しかし、とりあえずやってみたいというのであれば入門用にVBかVC#をお勧めしたいと思います。スクリプトであれば、RubyやPHPなどもお勧めです。 僕の場合、何を作るかによって言語を使い分けています。 簡単なデスクトップアプリを作るのならばVC# ウェブアプリケーションを作るのならばPHPとMySQL(データベース使ったほうが楽なので) 簡単な環境をいじるとか軽いプログラムならRuby。 WindowsならVBScriptのほうがよさそうですが。(僕はRubyのほうが好きなのでRubyでやれるならRubyにします。) windowsの本格的なゲームを作るのなら、C/C++とDirectXもしくはDXライブラリを使用したり、ほかのOSなどでは互換性の問題でJVMで動作するjavaを使用したりと。 機能によって使い分けますがこの機能はどこで確認してるかというとドキュメントです。公式サイトのドキュメントやそこらへんのウェブサイトとかで何が得意か、あるいはどういうメソッドや関数があるかなどであらかた決めてしまって作業に取り掛かります。 途中で無理だと気付いたら言語やライブラリを変えます。 このような感じでやっていくと、言語の扱える幅も広くなるし、最適な使用方法で、簡単だと思います。 無理しない程度にやっていくのが一番かなとは思いますね。
補足
回答ありがとうございます。 確かに目的観が無いと、なかなかプログラミングって一見おもしろそうですが、意外と長続きしないですよね。本を見て文法を理解して覚えても、さてそれからいったい自分はなにをしたいんだろうと立ち往生してしまうこともあると思います。 C#って最近出てきた言語だと思いますが、なかなかオススメですか。JavaとC/C++を足して2で割ったような言語でしょうか。
- hornet3
- ベストアンサー率19% (12/62)
補足要求します。 プログラムで何をするのか、ということも重要な選択材料だと思います。 転職のために学びたいのか、サンデープログラマーとして楽しみたいのか、そして具体的にどんなプログラムをつくってみたいのかということです。
補足
回答ありがとうございます。 言葉足らずですいませんでした。 そうですね。趣味ではなく、やはり仕事としてプログラマーに転職してやっていきたいと思っています。 それから、具体的になにをしたいのかと言うことですが、これは私にはなかなか実務のことはわからないのです。 アプリケーションをつくることにも関心があるし、モノ作りも好きなので組み込みのようなことにも興味があります。 アプリの場合は、もちろん転職してもすぐに自分が作りたいソフトを作れるわけではないことはわかっていますが、例えば語学の学習ソフトなどを作ってみたいです。こんな風にすれば楽しく効率よく学べるのではないかと思うものを開発してみたいわけです。 また、後者の組み込みも結構、マイコンや回路などにも大いに魅力を感じているので、本格的なCなどを用いて制御してみたい気もします。
補足
回答ありがとうございます。 皆様からの頂いた回答でCとC++の関係も以前よりわかるようになりました。 参考URL読みましたが非常におもしろかったです。 私、実は今度、VB.NETを公共職業訓練で3ヶ月間、受講することになりそうなのです。受講自体は受けられるのかも知れませんが、その後の就職がどうなるか回答者様の仰るとおり、厳しいかもしれません。プログラミング以外の経験で特に役に立つ経験と言うのもあまり思いつきませんし。