• ベストアンサー

C言語系の将来性と現在の有用性について

いつもお世話になっております。 以前もこちらのカテゴリで似たような質問をさせていただきましたが、違う視点からまた質問させていただきます。 現在社内では、WindowsVista向けアプリケーションの対応として、VisualBasic6.0で作成した多くの資産をVisualBasic.NET2005に移行する作業を行っております。 資産はPCIボードやシリアルポートを使用してリアルタイム制御を行ったり、ウインドウに数値表示するための、ループ構造のロジックが主です。 私としては、VB6資産独特の不具合(応答性の悪さや、C++向け他社製DLLを呼び出した時の原因不明な動き)が頭に引っかかっているので、.NETへ移行するならば、C++へ移行する方が制御には向いているのではないかと考え、暇を見つけてはVCの移行作業を実験的に並行して行っています(VC++.NETはまだ購入していないので、所有しているVC6.0を使用しています)。 C++が制御に向いている、または処理系を変更することでLinux移行も可能である点を踏まえるとC++言語での開発は今後の転換が柔軟に行える要素を持っていると思います。 一方、VB.NETは生産性やデバッグ機能性が非常に高い、また実行速度もかなり改善させれていると言われて、会社の方針はもっぱらVB.NET化で固まってしまっています。 うちのシステムはハードウェアメーカが公開するAPIがCかVBにしか対応できないので、言語的には二者択一になってしまうのですが、使用OSはWindows/Linuxの選択肢は用意されています。 これらを前提として、VB.NETへ移行するメリット/デメリット、またC++言語へ移行するメリット/デメリットにはどんな事があるのでしょうか? ちなみにVB6.0以前での開発は、MicrosoftCでMS-DOSアプリケーションを作っており、Windowsマシンの普及によってVBへ移行した実績があります。

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

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.4

No.3 捕捉 (1)次期Visual Studio 米Microsoft、次期Visual Studio "Orcas"のベータ1をリリース ttp://journal.mycom.co.jp/news/2007/04/20/016/ 既に次期Visual Studioベータ版が出ているようです。 (2).NET Framework 3.0 環境構築 http://www.microsoft.com/japan/msdn/netframework/downloads/netfx3.aspx .NET Framework 3.0 ランタイム及びVisual Studio 2005 Extensionsを追加インストールする事により .NET Frame work3.0での開発が行える様です。 但し、 >※Visual Studio 2005 Extensions WCF, WPF で提供する >機能は、次期 Visual Studio “Orcas” で正式にリリース >する予定です。Visual Studio 2005 Extensions WCF, WPF >に関しては Visual Studio "Orcas" のプレビュー版として >先行リリースされ、正式サポート対象ではありません。 及び、Express Editionで一部制限があります。 訂正 No.3 >.NET 2000, 2002, 2003, 2005とバージョンアップが   ↓ >.NET 2002, 2003, 2005とバージョンアップが

その他の回答 (4)

noname#30727
noname#30727
回答No.5

ANo.4です。 >C++用DLLしか用意されていないものをVCのDLLをワンクッション入れてVBで使うシステムがあり、目下この問題がペンディング状態です。これがVB.NETで解消されえるかは微妙な情勢です。 C++用DLLというのは汎用DLLの事でしょうか。 汎用DLLでインターフェイスにマーシャリング可能なデータ構造だけを使用しているなら.NETアプリから直接呼び出せます。DLLを作る側が無茶をしていなければ問題になる事はないのですが、例外はあると思います。 http://msdn2.microsoft.com/ja-jp/library/w4byd5y4(VS.80).aspx DLLが不具合なく簡単に呼び出せなければ、フレームワークが優れていたとしても、.NETはゴミの山ですから、ここで問題になるならVB.NETは切り捨てるべきしょうね。

natural_aspirate
質問者

お礼

inthefloiさん、度々のご回答ありがとうございます。 不勉強なもので、汎用DLLとその他の違いが分からないのですが、 本体のDLLの引数が構造体渡しであるためにVBからダイレクトに呼べず、一度VCのロジック上で呼び出すDLLを作成し、受け取った構造体のアドレスを更にVBで受け取る、というフローになります。 構造体を含めた引数や戻り値の型はVBと同じ(DWORDです)なので、ひょうっとしたらマーシャリングというのは可能かもしれません。

noname#30727
noname#30727
回答No.3

>C++が制御に向いている、または処理系を変更することでLinux移行も可能である点を踏まえるとC++言語での開発は今後の転換が柔軟に行える要素を持っていると思います。 C/C++が制御に向いているというのは、ネイティブコードである事で、速度が重要な割り込み処理が直接書けたり、マイコンなどではC言語しか用意されていない事が多いというのが理由ではないでしょうか。 そういうドライバレベルの処理がライブラリで用意されているなら、あえてC++にこだわる必要はないと思います。 処理系を変更すればLinuxにも移行できるというのも、実際にはそんなに簡単な話ではありません。WindowsでVBからC++に移行する事と、WindowsからLinuxに移行する事は、どちらも同じくらい大変です。 企業として柔軟性を持っていたいという事はわかります。 短期目標としてVB.NETに移行して足場を固め、長期目標としてマルチプラットフォーム化を考えるというような現実論であれば良いのですが、あまりにもハードルを上げすぎてしまう事は賛成できないです。

natural_aspirate
質問者

お礼

inthefloiさん、とても現実的なご回答、ありがとうございます。 >あまりにもハードルを上げすぎてしまう事は賛成できないです。 ->おっしゃる通りです。会社は既にVB.NETで移行作業を行う方針を固めてしまっている、またC++言語の処理系がVB.NETより優れているかどうか証明できない点で、短期的には方針を転換するだけの説得力がありません。 >ドライバレベルの処理がライブラリで用意されているなら、あえてC++にこだわる必要はないと思います。 ->先の方々のお礼でお伝えした中で、C++用DLLしか用意されていないものをVCのDLLをワンクッション入れてVBで使うシステムがあり、目下この問題がペンディング状態です。これがVB.NETで解消されえるかは微妙な情勢です。 一部のハードウェアメーカはVB用のドライバが用意されていて、これは問題なく稼動しています。 C++化やLinux化の両方共通ですが、現状は実業務と別に移行作業を行い、その過程でサンプル的に小規模なシステムを一度作成し、プレゼンしたいと考えています。 VB6.0資産を.NETへ移行する作業が滞っているだけに、歯痒いです・・・

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

■VB.NETのメリット  新規作成時の生産性やデバッグ機能性が非常に高い  (ハードウエアの制御を伴わない場合)  #生産性が高いのは.NET Frameworkの枠内での話  ハードウエア制御を伴う場合には、ハードウエア メーカの対応次第  OS・言語がバージョンアップされたら、アップデート 対応のプログラム修正またはリプレース需要が発生して 儲かる ■VB.NETのデメリット  数年先にどうなるかが不明  .NET 2000, 2002, 2003, 2005とバージョンアップが されてきていている  また.NET 2000でそれまでのVBから多きな仕様変更が 行われたが2005になって若干旧VBに近いものへと仕様が 変わるといった揺れ戻しともいうべき状況もあり、言語 仕様が安定していません  さらに現行の VB2005 では.NET Framework 2.0対応と なっていますが、既にVistaでは.NET Franework 3.0が 出ているので今までの経緯からして.NET Framework 3.0 対応(及び64ビットCPU対応)のバージョンが近年中(2007 または2008)に出てくると予想されます #再度の移行作業発生(!?)  製品寿命が長い場合、開発環境をOS、言語共に保持して おく必要がある #環境・バージョンへの依存性が高い為 ■C++のメリット  VC++ 2005ではWindowsネイティブと .NET Framework の 両方に対応が可能  OS依存のクラスライブラリ等を使用しなければ、OSに 依存しないアプリケーションの作成が可能  ハードウエア制御が楽にできる。  Windowsネイティブの場合は、仕様が枯れているので大きな 仕様変更は少ない  MS以外からもC++が出ているので、移行が可能  他のOSへの移行も可能 ■C++のデメリット  MSがあまり力を入れていないせいか開発環境が若干不便  一般に習得が難しいとされる

natural_aspirate
質問者

お礼

don_goさん、ご回答ありがとうございます。 具体的な展望をいただけて参考になりました。 うちの会社は特にユーザでWindowsにこだわる人、更にはWindowsVistaにこだわる人がいないので、常に最新の実行環境を求めていません。 一方、XPからライセンス管理が厳しくなり、仰る通りOS環境と、それが動作するハードを常に保管しておく手間が発生しています。 うちのシステムは、基本構造のループ部分以外はほとんど既存の共通部品を流用するので、C++へ一度移行してしまえば、以後の開発は大きい労力が掛からないのではないかなぁ、と考えています。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

■VB.NETのデメリット VB.NET(というか.NET系全般?)から、非.NETのDLLを呼ぶのはちょっと面倒ですが、把握されますか。 # CかVBと書かれている場合、普通VB.NET用ではないと思われます。 # VB.NETはVBというよりは.NETなので、.NET用でないとこうなります。 VB.NETとVB6以前は、似て非なる別言語ですが把握されてますか。 (それゆえにMSも"VB6の延命"をせざるを得なくなったほどです) .NET frameworkが環境に必要です。1.1,2.0,3.0等のバージョンがありますが、 PCにより、インストールされていない可能性があります。 ■VB.NETのメリット .NET frameworkが提供する便利なクラスライブラリが使えます。 メモリ管理などの点で簡便です。 C#との親和性が高まります。 ■C++のデメリット VB.NETと比べればメモリ管理等が面倒です。 MSがあまり力を入れていないようです。 # 「C++でしかできないこと」もあるので捨てはしないでしょうが、 # やはりできれば.NETに誘導したいのでしょう。 ■C++のメリット Linuxでも使えます。 (恐らくネイティブ同士なので).NETから呼ぶよりはDLLが楽に呼べます。 "作り方次第で.NETより高速な処理が実現可能"です。 (大差ない可能性もありますけど) .NETに依存しません(MFCは静的リンクなども可能で配布しやすいです) ・VB.NETと異なりC++はISO/IEC標準で、仕様が枯れています。 (MSと心中する可能性が低いです) # C++/CLIなどという.NET2.0以降用のC++風言語(似て非なる別言語)なんてのもありますね。

natural_aspirate
質問者

お礼

MrBanさん、こんにちは。スレ間違いにも関わらず、親身にご回答ありがとうございます。 逆のご質問については、お伝え不足な部分があったので、補足でお伝えさせてください。 二度手間になってしまいますが、もし余力をお持ちでしたら、どうぞお付き合いください。

natural_aspirate
質問者

補足

>VB.NET(というか.NET系全般?)から、非.NETのDLLを呼ぶのはちょっと面倒ですが、把握されますか。 ->現在VB.NET資産は移行開発中で、テスト段階にも至っていません。 メーカ配布のC++言語で作成されたDLLが上手く動作しない件 ->このDLLを一度VBで使用できるよう、引数の型をVB用に置換するプログラムを別にDLLとしてVCで作成し、VBアプリケーションからはこのDLLのみを呼ぶ仕組みです。 納入したユーザから、この手法に問題があるのではないか、と指摘を受けた経験があります。 >VB.NETとVB6以前は、似て非なる別言語ですが把握されてますか。 ->VB6からVB.NETへの移行が必要である点で言語仕様がかなり違いがある、などのざっとした相違点は知っています。 また、現在並行してVC6で作成中の資産移行作業は、あくまでテンポラリのもので、VCより良い開発環境があればそちらへ更に移行したいと考えています。

関連するQ&A

  • c言語やjavaのソースを読みたいのですが

    c言語やjavaのソースを読みたいのですが ゲームやアプリのプログラムを公開しているサイトを御存知でしたら 教えてください。言語の開発環境は、VC++・vc#・Eclipse・visualBasic(2005)です。

  • Visual C# について教えてください

    今まで、VB を使って Windows アプリを作ってきました。VB 歴は 10 年弱で、RS-232C 経由で測定機器を制御する Windows アプリなどを多数書いてきました。 先日 ANSI C の研修を受け、コマンドプロンプトで動くプログラムなら、C 言語でもある程度のものが書けるようになりました。これを機に、開発環境を VB から C ベースのものに移そうと考えています。 最近 VC# という言語がありますよね? 本屋でパラパラと見たところ、VC# は VB と似た環境で Windows アプリの開発ができそうで、その詳細を知りたくなりました。 現在、VC++ をはじめるか、VC# をはじめるか、悩んでおります。 質問は以下の3点です。 ・VC# で、EXE ファイル単体で動く Windows アプリが作れるのでしょうか? ・本やネットなどで、VC++ のサンプルソースは多く見かけますが、VC# のソースはあまり見かけません。これは開発を行う上で不利になりますか? VC# は VC++ のサンプルソースをほとんど流用できるのでしょうか? ・総合的に判断して、私には VC++ と VC# のどちらが適当だと思いますか? 個人的な判断で構いません。 以上、宜しくお願いいたします。

  • VB系のみの開発にC言語の追加

    今までAccess(業務ソフト作成レベル)/VB(個人ツール作成程度)/VB.NET(少し触った程度)をやってきたのですが、C言語も勉強しておかないといけないと思い、 早速VC#とVC++の入門書を買ってきました。(違いがわからなかったので^^;) パラパラと見た程度なのですが、書き方はVC#の方がマイクロソフト独特の書き方で自分的には解りやすいのですが、 ハードウェア制御やDLL作成となればVC++の方が優位の様な事をWebで書いてありました。 ・今の自分にとって可読性の高いVC#を勉強してからVC++に移行するのが良いのでしょうか? ・VC#にもDLL作成出来る様なのですがVC++で作成したDLLとの違いはあるのでしょうか? 以上2点質問させて下さい。 よろしくお願い致します。

  • プログラム言語を勉強したいのですが

    最近プログラム言語を勉強したいと思っているのですが、あまりにも種類がおおすぎて 迷っています。 C・C++・VC・VC++・Java・LINUX いろいろあるのですが、独学で覚えられるものでこれから先役に立つような言語を教えて もらえないでしょうか? 私的には、最終的にはアプリケーションの開発などに役立つものを覚えたいのですが このような言語に関わった経験が全くないのでよろしければおすすめの書籍などがあれば 一緒に教えてもらえないでしょうか。 乱文ですが、このメッセージを見た方よろしくお願いします。

  • Vsual Studio .NETのWebアプリケーションのVB言語と

    Vsual Studio .NETのWebアプリケーションのVB言語とC#言語について 現在、Vsual Studio .NETのWebアプリケーションのVisualBasicプロジェクトで開発の勉強をしています。そこで使用されている、コントロールを使用した時に命令する言語、VB言語の辞書や、参考になるサイトがあればご教授願います。例えば、VB言語の別のフォーム(○○○.aspx)に移動させるためには、Response.Redirect("./WebForm2")といった具合に、Response,RedirectというVBの言語は、Windowsアプリケーションで使用する命令言語と異なっている部分等があるので、.NETのWebアプリケーション用のVB言語辞典みたいなのがあれば、幸いです。又、同じく、C#言語の辞典もあればご教授願います。また、Webアプリケーションで、データベース(アクセス)と、やりとりをするお勧めの参考書もご教授願えれば幸いです。初心者ですので、何卒宜しくお願いいたします。

  • 今、開発言語をどれにしようか、迷っています。

    マシンはデュアルコアのAthlon64 4800+は 決定しているのですが開発言語をどれにしようか、迷っています。 Windows: ASM, C, VB, Delphi, C++Builder, VC++, Java, VB2005, VC2005, C# ... Linux:GCCが良いよでしたら、Linuxにするかもしれません。 計算とグラフ表示が主な処理で、なかなかアルゴリズムが難しく、開発途中で試行錯誤しますので、開発のし易さも選ぶポイントです。 以下の優先順位です。 1番目:実行速度の早いもの(最適化など) 2番目:Profile機能がある(サードパーティでもよい) 3番目:ソースの記述量が少ない。(簡単) 4番目:書籍や情報が多い 5番目:汎用性が高い(今後のメンテナンスも考えて) 1番目の実行速度にこだわるのは、VB6でプログラムを書いて実行させたところ、昔BCCで書いていたプログラムより遅かったので驚愕しました。 簡単なのはよいのですが、速度が遅いのとプロファイル機能が手に入れなかったので、VisualBasicは断念しようと思います。 仕事とは直接関係ないのですが、今後の参考にしたいので、皆さまのご意見をお聞かせください。

  • C言語(UNIX)からVB・VC・C++に移植したことあるかた

    C言語(UNIX)からVB・VC・C++に移植した ことあるかたいませんか? ある方がいらっしゃいましたら、移行の仕方等教えて下さい。その際注意点等ありましたらお願いします

  • 言語の特徴

    VBとASPはかじった程度ですが、どういうような言語かは知っているのですが VC C# C++ VC.NET VB.NET などの違いがよくわかりません。 また、Cとベーシックとの種類は上記だけでしょうか?

  • 開発言語の選択

    新しくWindowsアプリケーションや、Webアプリケーションを構築するのにVisualStudio.Netを利用しようと思っています。しかしこの統合開発環境にはVB.NET、C++.NET、C#、J#等さまざまな言語が利用可能となっており、どの言語を使うべきなのか悩んでおります。 普通はどのように開発言語を選択するものなのでしょうか? もしもそれぞれの言語ごとに明確な違い、得意分野や、パフォーマンス(実行速度)の差があるのでしたら、開発言語選択の指標となりますので是非教えてください。

  • Windows系GUIプログラム開発のお勧め言語またはツールについて

    こんにちは。 私は主にUNIX、Linux系のアプリケーションやドライバを作ってきましたが、Windowsアプリケーションは、VC++、C++Builderでデモプログラムを作った経験がほんの少しあるだけです。ただし、X-Windowのアプリケーションを作ったことはあるので、GUI系のアプリケーションがどんなものかはだいたい想像がつくつもりです。 今度、業務でWindows系アプリケーションを作らなければならなくなり、どの言語で作るのがいいのか悩んでいます。 作ろうとするアプリケーションは、以下のようなものです。 ○装置監視のデータ表示系。Linuxマシン上のMySQLデータベースに装置監視データが入っていて、これを画面に表示する。画面からデータベースへのアクセスはSQLを使いたい。 ○Linuxマシンと監視系Windowsマシンは遠く離れており、ISDN(64K)でLANをつなぐ予定。通信帯域が64Kしかないので、通信量がネックになるかも。 ○監視画面には、トレンドグラフやリアルタイムの表示更新が発生する。更新周期は秒単位。 ○監視画面はさまざまな機能を持ち、およそ30種類ほどの画面を開発する必要があるので、開発の手間の大小は重要。 画面の作り易さということで言えば、VBがいちばんいいのでしょうか?私はVBはさわったこともないのですが、画面作成ではVBがいちばんポピュラーなのかなと思います。それとも、VBもVCもあまり変わらない? Javaという選択肢もあると思うのですが、私のまわりにはJavaで画面を作っている人はいなさそうです。Javaで開発している人はEclipseを使っているようなのですが、はたして使い易いのか? 「業務用画面プログラムを作成するとき、特に開発のしやすさで選ぶなら、どの言語(開発ツール)をお勧めしますか?」ということで、いろいろご意見を頂ければ幸いです。 よろしくお願いいたします。

専門家に質問してみよう