これからMicrosoft Visual Studio 2005、2008、2010の中で何かプログラミング言語を勉強しようかと思っています。そこで次の条件を満たしている言語があれば教えてください。

・WindowsXP以降で動くGUIソフトを作ることができる
・実行ファイルのサイズが異様に大きくならない
・出来上がったプログラムを他人の環境(XP以降)で動かしてもらう際に、.NET Frameworkやランタイムのようなものを別途インストールしてもらわなくても良い

過去にVB6を少し使ったことがあるという程度の知識しかないため、習得難易度についても一緒にアドバイス頂けると有り難いです。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>・WindowsXP以降で動くGUIソフトを作ることができる


>・実行ファイルのサイズが異様に大きくならない
>・出来上がったプログラムを他人の環境(XP以降)で動かしてもらう際に、.NET Frameworkやランタイムのようなものを別途インストールしてもらわなくても良い

この条件だけで考えると、Microsoft Visual Studio 2005、2008、2010 はどれも同じです。
Visual Studio には C/C++、C#、Visual Basic などが入っていますが、C#、Visual Basic は .NET Framework なしでは動作しません。
C/C++ はどうかというと、 C/C++ の標準ライブラリや MFC ( Microsoft Foundation Class ) を使う場合、プロジェクトのプロパティで、スタティック ( exe に埋め込み ) にするか DLL にするかを指定できます。
スタティックにすれば、別途 DLL 類をインストールする必要はなくなりますが、これはこれでメリット・デメリットがあるので注意が必要です。
まず、実行ファイルのサイズですが、MFC アプリケーションのテンプレートを使用してそのままビルドした場合 ( Visual Studio 2008 で、Release ビルド )
MFC:「スタティック ライブラリで MFC を使用する」、ランタイムライブラリ:「マルチスレッド」の設定だと、約 3,000 KB
MFC:「共有 DLL で MFC を使う」、ランタイムライブラリ:「マルチスレッド DLL」の設定だと、約 400 KB
になりました。
あと、ランタイムライブラリにバグがあった場合 ( Service Pack などがリリースされた時 )、スタティックライブラリだと、ビルドしなおして配布をしなおさなければならなくなります。
MFC:「共有 DLL で MFC を使う」、ランタイムライブラリ:「マルチスレッド DLL」の設定でも、Visual Studio でインストーラーを作成すれば、必要な DLL がインストーラーに組み込まれますので、「他の PC で実行しようとしたら動かない」というリスクは下げられると思います。
.NET Framework を使用するアプリのインストーラーを作った場合は、インストーラーを実行すると必要なバージョンの .NET Framework がインストールされているかどうかを調べ、インストールされていなければ .NET Framework をダウンロードしてくれる作りになっていたと思います。( ダウンロードを開始するまえに、ダウンロードしてインストールするかどうかをユーザーに問い合わせを行います。)
    • good
    • 0
この回答へのお礼

どの回答も大変参考になりました。ありがとうございました。

お礼日時:2011/08/14 01:17

Side-By-Sideについて



私は、このあたりの事情を正しく理解していなくて、Side-By-Side って .NET Framework だけの機能だと思っていたのですが、調べてみると2005と2008ではSide-By-Side配置になるが、2010ではまた2003以前の非Side-By-Side配置に戻っているそうです…。
    • good
    • 0

> あと、ランタイムライブラリにバグがあった場合 ( Service Pack などがリリースされた時 )、スタティックライブラリだと、ビルドしなおして配布をしなおさなければならなくなります。



この点ですが、VisualStudio2005以降であれば、SideBySide(SxS)技術が取り入れられているので、 DLLのランタイム等を使用していても、マニフェストの変更をしない限り新しいバージョンのDLLを使用したりしないはすです。なので、スタティックライブラリの場合とさほど変わりはないはずです。
    • good
    • 0

CLRを使わないC++であれば、ランタイムやMFCをスタティックリンクすれば、「別途インストール」する必要はなくなりますが、その分実行ファイルのサイズは大きくなります。

それが「異様に」に該当するサイズかどうかは主観ですので判断できません。
    • good
    • 0

「.NET Frameworkやランタイムのようなものを別途インストールしてもらわなくても良い」という時点で、選択肢は「なし」です。

Microsoft Visual Studioで使える言語には、そのようなものはありません。一番近いのはC++ですが、これもランタイムライブラリは必要です(あなたのパソコンにもおそらく入っているでしょう)。まぁ、MFCなど一切使わず、すべてAPIを直接コールして書けば、C++ならかろうじてランタイムやライブラリなど一切不要のアプリが作れますが、全くおすすめしません(そんな馬鹿げたことをする人はいまどきいないので)。

そもそも、現在のVisual Studioは、.netフレームワークの開発を主眼において設計されていますので、「.netをインストールしなくても動く」というのはVisual Studioで動く(C++以外の)言語では無理があるでしょう。その他の言語を見渡せば、例えばDelphiがランタイム不要のアプリを作れますが、そうなると「実行ファイルのサイズが異様に大きく」なります。「ランタイム」か「できたアプリのサイズ」かどちらかを諦めてください。でないとどうしようもありません。

現在、.netのランタイムはOSに標準で組み込まれていますし、インタープリタなどでなくネイティブコードを生成する言語でランタイム不要な開発言語を求めるというのは、正直、難しいものがあるでしょう。

あるいは、インタープリタ言語(スクリプト言語)であれば、条件に合うものはあるでしょう。例えばWindows Script HostでJscript + HTMLでランタイム不要なプログラムは作れます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報