A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
VS2008ベースで。
VB.NET
*キーワードが想像しやすい(MustOverride, Shared とか)
*厳密な型付可変引数関数を一宣言で実装できる(Optionalキーワード)
*設定次第で厳密型付しなくてもプログラムできる(Strict Off)
*VB6の感覚でコーディングすると必ず嵌る
C#
*Javaでプログラム経験がある人に取っ付き易い
*.NETのために作られた言語なので、親和性が高い
*過去の柵に囚われず、言語拡張が起こりやすい
*unsafeによるポインタ操作が可能(VB.NETは不可)
*(私感)言語としてのお行儀は3種類の中で一番良いと思う
VC
*.NET/Win32コードの混在が可能で、できることが一番多い
*他プラットフォーム移植を考える場合、唯一の選択肢
*他アプリケーション連携でも唯一の選択肢(COMやPluginとか)
*互換性維持のため、記法が複雑になっている(new,gcnewとか)
*(私感)下手なプログラマに触らせると一番性質が悪くなる
.NET はちゃんと理解していないと、バリバリなプログラマさんでも
カウンタ不正な凡ミス起こしたりします。
VBやVCでのプログラム経験が"ある"人は要注意です。
質問者さんはJava経験者のようなので、こういった点には嵌りづらいと思います。恐らく言語周りでは苦労されないでしょう。
苦労されるとすれば、Windows特有の文化ですかね
(MessageDispatch, Handle とかのAPIと、相互運用のためのP/Invoke, CCW/RCW)
No.2
- 回答日時:
VB,C++,C#を語る場合、どうしてもWindowsとVisual Studio(以下、VSと略記)の経緯を無視できないので、けっこう長くなりました(申し訳ない)。
なお私はVBと長く付き合っているので、VBよりの回答になります。(1)言語として
これはもう、#1さんの参考URL(以下、URLと略記)に尽きますね。
(2)太古のBasicとC
URLに書いてある太古のBasicがあるように、太古のCもあります。自分はFortranからプログラムに入ったので、Basicを見たとき、これはアマチュア用に骨抜きにされた C だと感じました。その後、両者の距離は縮まっていきますが、最初のVB2のVisual開発環境だけは、C++よりも遥かに進んだものでした。ただし出来る事は、まさに玩具。そのため実用レベルでは多量のAPIの支援が必要でした。実際いまでも、VBプログラマーズAPIレスキューマニュアルなんて本が現役で売れてます。つまりVBもやはり、C の骨抜き版として始まったのです。
(4)Windows小史
初期のWindows3.1の開発モデルは、WindowsSDKです。これはC++を使って、何でもかんでもAPIで処理するスタイルです。この頃がVB2です。
Windows95からモデルは、Vocument-View方式になりVC2が出て、その開発環境が始めてVisual Studioと呼ばれます。VB4のVSは、まだそう呼ばれていません(そう呼ばれるのは、VB5から)。その後のWindows98のモデルはWindowsDNAと三階層モデルですが、これらはVocument-View方式の明らかな延長線上にあり、すぐに陳腐化し、Windows2000でいちおう完成したと見ています。以上がVB4~VB6,VC2~VC6の時代で、VCの正体は、Visual C++でした(Visualの意味は、(6)に書きます)。
WindowsXP以後のモデルは、Softoware Factories に移行し、.NETが導入され、VB.NET(2002~2008),Managed C と C# が出ます。C++を.NET仕様にしたのが、Managed C です。従って現在のVCは、Visual Managed C(2002~2008)と言えます。Managed C のWindows機能を多少圧縮し、Web機能を強化したのが C#(2002~2008)です。
(5)プログラムスタイル
C++(VC)では、組み込みObjectを使って、Event Driven も出来る手続き型を書く事も可能ですし、Object指向をやる事も可能です。一方VBは、Event Driven も出来る手続き型を書く事が王道になります(MSの公式見解です。ただしVB6まで)。実際VB5でClassを持てるようになりましたが、VB6でも実装継承はサポートされませんでした。この頃、Objectとは名ばかりのVB、Visualとは名ばかりのVCなどと囁かれました。
.NET以降は、VBも正式なObject指向が出来るようになり、VCのVisual度も上がり、現在では普通のWindows Applicationを書くだけなら、VBとVCはほとんど同じです。Cが必要になるのは、WindowsにInsideする場合です(Insideする理由は述べませんが)。
URLにある高級AssemblerとしてのBasicは影も形もありません。しかし.NET Libraryがそれを肩代わりし(決して使い良くはないですが)、じつは.NET Library は、全ての C からも使えます。
(6)Visual Studioのやって来た事
VSが今までやって来た事は、Windowsの開発モデルに従ってGUI周りのコード生成を、自動化した事です。VS2002でそれは、ほぼ完成の域に達しています。これが#1さんの「Javaに比べてGUI周りの開発が容易」の意味です。
これと平行してもう一つの自動化が進んでいました。Data Base 周りの自動化です。これもVS2005 の Data Set で基本的にはほぼ完成と思われます。後はドライバーの種類が増えるでしょう。Data Setの目標は、表面上SQLを使わない、使わせないです。
(7)今後
Softoware Factories には DSL という概念があり、UML の対極にある概念です。このDSL路線を歩んで来たのがVSです。.NETは当初、MSのJava退治に見えましたが、Softoware Factoriesが真の目的だったのかと、今では思っています。MSさんは、また何か企んでるようです。
WindowsVistaには、新しい3つの基幹技術がFundationの名で搭載されており、VS2008には、それらに対するInterfaceまで付いています。3つのFundationを通して眺めるとこう思えます。「Application構造レベルでのコードの自動化に踏み切った」と。そう思えるのは、DSLとUMLの本質的違いからです(なぜ企みかも)。
No.1
- 回答日時:
VBもVC++もVC#も主な開発環境はVisualStudioです(最新は2008)。
Express Editionであれば無償で学習が可能です
Javaに比べてGUI周りの開発が容易だと思います
(最近はNetBeansもGUIの開発を強化してるそうですが)
ただしExpress~はVSSによるソースコード管理などの機能がないので
そういった機能を求めるなら有償の上位editionを選択してください
VBは、VB6.0以前とVB.NET以降で区別したほうがいいかもしれません
Javaをかじってたのであれば本格的なオブジェクト指向言語に改良された.NET以降が
とっつきやすいと思われます
あとは言語の違いになると思います
参考URLに参考になりそうなサイトをリンクさせていただきました
目を通してみてください
参考URL:http://mag.autumn.org/Content.modf?id=2005050414 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 Va=1/4πε × (q1/a + q2/b + q3/c) Vc=1/4πε × (q1+q2+ 2 2023/04/16 14:08
- 工学 非対称三相交流について 2 2022/07/06 00:36
- 物理学 コンデンサを並列接続とする見方がイマイチ理解できません。 等価回路を考えてみると、赤線が等電位という 4 2023/05/22 04:02
- Microsoft ASP ASP.NETや.NET、C#とかVBとか 2 2022/05/16 21:16
- その他(SNS・コミュニケーションサービス) ゲームでボイスチャットを使いたいんですが、親にどう説明したらいいですか 2 2022/08/03 14:07
- 物理学 2物体の単振動 1 2023/08/17 20:27
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) VBプロジェクトでのフォルダ構成について 1 2023/07/22 03:49
- Visual Basic(VBA) VBでExcelの表形式の様なデザインを作りDBと連携させる。 4 2023/02/28 11:39
- C言語・C++・C# visual studioでフォームデザインを作成する時のVB.netとC#の違い 2 2023/06/22 03:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String^の^自体が何を意味して...
-
HTMLってホームページ以外どん...
-
基幹システムからデータを抽出...
-
なぜHTMLのソースコードが無料...
-
python urlopen error について...
-
VB.NET とドットNET(.NET...
-
ライブラリ作成時のグローバル...
-
ワード2010で、箇条書きの「行...
-
iCloudフォトライブラリ内の画...
-
C言語/画像処理をしたいです/ex...
-
unix-c と linux-c の違いは?
-
VisualBasicプログラミング技術...
-
Delphiライブラリの再利用について
-
SSE命令やUSBドライバ作成ってC...
-
【VBA】イベントログの取得
-
【iTunes】CDをiPhoneに取り込...
-
ATLとSTLの違いは何でしょうか?
-
gcc に mktemp 危険と怒られ...
-
外付けHDDにあるiTunesのデータ...
-
C++/CLIで画像処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
String^の^自体が何を意味して...
-
なぜHTMLのソースコードが無料...
-
VB と VC++ と VC#の違いは?
-
HTMLってホームページ以外どん...
-
c言語の本を教えてください。分...
-
これからAI分野のプログラミン...
-
C#とc++の違いは何がありますか...
-
visual C#の本を買ったんですが...
-
初心者におすすめのC言語開発環...
-
clock_gettimeでミリ秒の時間差...
-
プログラミングで何かゲームを...
-
c言語の仕事について
-
C言語が解りません。。。
-
asp.net VB、HTML
-
VBAはいつまで時代遅れの言語を...
-
簡単なシューティングゲームの...
-
お勧めのC言語勉強用フリーソ...
-
VC++とVC#の違いを教えて下さい
-
C言語で自動販売機のプログラ...
-
C#のクラスが理解出来ない
おすすめ情報