- ベストアンサー
VBでVC++の処理速さを実現する
imogasiの回答
- imogasi
- ベストアンサー率27% (4737/17068)
VB->ソースプログラム-コンパイラで処理->機械語 VC++->ソースプログラム-コンパイラで処理->機械語 で、観念的には、最終の機械語を実行すると言う(インタプリタ方式に対し)スピード面のメリットは同じですが、 VBを機械語にブレークダウンするロジックはVBにお任せであり、VC++は、より機械語に近い位置にあり、コーディングする人が熟達した人なら、より無駄のない早い(プログラムステップ数が少ない)コードが書けると言うことです。 なんでも出きるように考えた汎用品と機能を特化した注文品の例と一脈通ずるものがあると思います。 実際のプログラムでは、「どのような機械語群に直すか」が解決すべき問題です。 コンパイラでは、一般的にはコード上でどこが無駄が出やすいか判っており、オプチマイズや最適化とか言われる努力がコンパイラ側で工夫されており、この点の解決がコンパイラが出来て以来の最大の課題です。上記で「熟達した人なら」と書きましたが、下手なプログラマが書くと、無駄が多くて、コンパイラに負けるコードしか組めない場合もあり得るわけです。 (VC++もVBと同じコンパイラですが、VC++はより機械語に近いと言う意味で、コンパイラ-機械語と対比した機械語の方に入れて説明して見ました。VC++もコンパイラとしての同じ問題を抱えていますので程度問題ですが。) コンパイラは全世界の優秀者、過去から今までの頭脳の知恵が結集された面があり、そう馬鹿にしたものではないのです。機械語の実行速度が飛躍的に上がり(昔の超大型コンピュタを今のパソコンが越える時代)、機械語実行時の無駄より、習得の易しいVBなどの言語を使って(一例ではVBなどはポインタなど意識させない)、ソースコードが早く、誤りが少なく完成するメリットの方が大きい時代になってます。 >「ふと疑問に思ったので」と書いておられるように 本質問は観念的な質問で、コンパイラに関する本を読んで ソースからどういうロジックで機械語に翻訳するか(むしろせざるを得ないか)、そこにどういう無駄が発生し勝ちか、どういう改善策のパターンがあり、それ講じられているかを調べてください。
関連するQ&A
- VB6, VB2005,VC# どれを学習したらよいでしょうか。
VB6, VB2005,VC# どれを学習したらよいでしょうか。 やりたいことはデータベースやテキストファイル処理、インターネットコネクションのプログラミングです。 仕事でExcelVBAを時々使うので、以前から持っているVB6かと思ったのですが、なぜかMSDNがなくリファレンスがなく微妙です。本かウェブしか頼れない・・・。 ある程度の処理速度を求めていますのでExcelVBAではない方がいいのですが、これからのことを考えたらVB6よりもVB2005でしょうか? それともどうせVB2005はexcelとは大幅に文法が変わってしまうのだからC#? いろいろ調べるほどわからなくなってしまいました。 なおエクセルVBAも本に一通り書いてあることも満足にできない程度です・・・。(こちらにも役立てられるとさらにうれしいです)
- ベストアンサー
- その他(プログラミング・開発)
- VC++とVC#について
VC#が出て久しいですよね。 MSが推奨する言語なのでそちらに移行するものと思っていましたが、処理速度が遅くなるという欠点があるそうですね。 プロの現場ではVC#へ移行しつつあるのでしょうか? それともまだまだVC++のほうが根強い人気なのでしょうか? いろいろなご意見お待ちしてます。
- ベストアンサー
- C・C++・C#
- C言語やC++、VC++について
C言語やC++、VC++について C言語やC++、VC++などはIL コードと呼ばれる中間言語が作成されるのでしょうか?それともコンパイラーがネイティブコードに変換されるのでしょうか?でもネイティブコードに変換すると機械語なので互換性がないのではないのでしょうか?それなのになぜ他のwindowsのパソコンで実行できるのはなぜなのでしょうか?そこら辺はどうなっているのでしょうか?
- ベストアンサー
- C・C++・C#
- .NET C++の処理速度
最近.NETについて調べていました。 .NETではコンパイル時にマネージドコードと呼ばれる中間ファイルが作成され、 それが.NETFramework上で動くという仕組みのため、C++で書こうがVBで書こうが 最終的にできあがるものは同じものになるということが分かりました。 私は、Cが有利な点は(Javaなど他の言語に比べ)処理速度が異常に早いことだと思っていましたが .NET上で動く場合はC++もVBも処理速度に差が出ることはあまりないのでしょうか? また、.NET、JVM、ネイティブのCの3つを比較した場合、 どのくらい処理速度に差があるでしょうか?(大雑把でもいいので) 私は [ネイティブC] >>>超えられない壁>>> [.NET] > [JVM] くらいかと思っているのですが‥ 以上、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 混ぜちゃダメなんですか?
プログラミングについて疑問があります。 最終的に機械語に変換されるなら、javaとRubyとかPHP、他の言語を混ぜたプログラムは作れるんですか? そういうの、やった人とかいるのでしょうか? (言語って沢山あるんだ~、コンパイラって何?という超初心者レベルです。 お返事は素人が理解しやすいように書いて頂けたら嬉しいです。 よろしくお願いします。)
- ベストアンサー
- その他(プログラミング・開発)
- シェルとカーネルの概念とプログラムの処理の流れ
興味本位で「プログラミング」について、調べ学んでる内にひとつの壁にぶつかりましたので質問させていただきます。 質問内容は「シェルとカーネル。そしてアプリケーション」になります。 素人ながら現在持っている論理を下記に列挙します。誤認識などあれば指摘いただければ幸いであります。 狭義での論争は、避けたいので、広義として理解頂ければと思います。(狭義や曖昧な点においてもある程度学習済み) 1. プログラミング言語には、低級・高級言語があり、ハードよりのC言語(影響下のC++, Objective-C)で作られたプログラムの実行速度は速い。 2. プログラム処理系には、インタプリタ・コンパイラがあり、一般ユーザーが使用するアプリケーションのほとんど(.exeなど)がコンパイラアプリケーション。 3. JavaなどVM環境下動作するアプリケーションは、中間言語で実行される。 4. OSには中核であるカーネルがあり、カーネルは人工言語(コンピューター言語)を機械語に訳し、各リソース(CPU・RAMなど)に処理を実行させる。 5. カーネルはシェルに覆われており、実際のユーザー側の処理のリクエストは、シェルを介して行われる。 6. シェルには大別して、CLI(CUI)とGUIがあり、CLIシェルはプロンプトが表示されるコマンドラインインタプリタ。 7. GUIシェルは、OSがオペレーションの意から、OSの各種機能(Windows System, エクスプローラー等)。※ 私は理解を容易する為にOSそのものをシェルと捉えてます。 長くなりましたが、上記を踏まえた上での質問が下記になります。 Q. iTunes, Word, などの各種アプリケーションの各種操作(処理、実行)というのは、コンピューター言語でシェルを介し機械語でカーネルまで橋渡しされるのでしょうか? なぜこのような質問になるかといいますと... プログラミング言語は機械語にコンパイルして、はじめてコンピューターに理解してもらえる事は百も承知です。 プログラミング言語で制作されたアプリケーションの処理や実行は当然、コンパイル済みの機械語で行うものと認識しております。(ここでは中間言語は除く) ここで冒頭に述べた壁に当たりました。洒落ではなく、私の中で「殻」もとい「壁化」してしまったシェルの存在です。 現在、持ち合わせてる論理から考察すると、機械語で実行された処理をシェルを介す意味がどこにあるのか?それとも介さずカーネルにそのまま引き渡してるのか? 私が間違っており、そもそも制作されたアプリケーションの処理や実行は、コンピューター言語であり、それをシェルを介しカーネルという流れがあるのならば、コンパイラの存在意義が分かりません。 本来はもっと自分が思ってる事を言語化出来ればいいのですが、これが現時点で精一杯です。
- 締切済み
- Windows系OS
- .NET frameworkについて
.NET frameworkとはJVMとほとんど同じような気がするのですが、いろんな言語が使えること以外に何かメリットあるのでしょうか? それと、たとえば、VC.NETで作ったプログラムはコンパイラで中間コードになって、実行時に.NET frameworkでインタプリタみたいに機械語に直して実行しているのでしょうか?
- ベストアンサー
- C・C++・C#
- Cで作成したDLLをVBで呼出
Cで作成したDLLの関数をVB6.0から呼び出す事ができず、悩んでおります。 ご教授お願いします。 どの様な関数を呼び出そうとしているのかというと、以下の通りです。 <DLL Cで作成(コンパイラVC6)> void WINAPI hoge(BSTR pgname,BSTR fmt,...){ ~処理~ } /* 宣言では頭にDLLExport*/ <呼出側 VB6.0で作成> '宣言 Public Declare Function hoge Lib "hoge" _ (ByRef pgname as String , _ ByRef fmt as String , _ ParamArray args()) '呼出 call hoge("foo","baa","array1",2) この様なコードを書いております。 C側、VB側ともに固定数の引数にしてみたところ、 通ったので「ParamArray args()」の定義が違うのではないか・・・?と思っているのですが、 どの様に宣言したらよい物なのでしょうか? もしくは、そもそも全然違う箇所を間違っているのでしょうか? 宜しくお願いします。 ※ 説明の足りない箇所があれば、仰ってください。
- ベストアンサー
- Visual Basic
- 各言語の特徴
いろんな言語の特徴が知りたいです。 C:処理速度がはやい VB:開発効率がいい VC++:ネットワークに強い JAVA:ネットワークに強い? Delphi: COBOL: 他たくさん知りたいですσ(^^) 教えてください、お願いします(^^)
- ベストアンサー
- その他(プログラミング・開発)
- VBでフォントデータを得る方法
PC上で動作する言語としてはVBだけが少々わかる程度です。 このVBだけを頼りに、文字のフォントデータを取得したいと考えています。 フォントとしては16x16で、フリーで装飾的要素のない一般的なものが希望です。 このデータによりLEDマトリクスに文字を再生したいのです。 用途としては商用です。 文字のシフトJISコードを得ることまではできました。 このコードによりフォントデータを得るためには、そのファイルそのものが VBで扱えるようになっていなければならないわけですが これが見当たりません。 ・・・というか、ここで以前フリーのフォントを教えていただいたのですが インストールさえできませんでした。 (なぜできないかを説明するのも、わからない用語が多すぎてできません) VBだけで処理できる都合のよいファイルがありましたら教えてください。 それともVBの初歩レベルだけでは無理でしょうか?
- ベストアンサー
- Visual Basic
お礼
回答ありがとうございます。