なぜVBは扱いが低いのか (200レス)
1-

137: 名前は開発中のものです。 [] 2013/01/25(金) 23:08:54.93 ID:qyysk8iw(1/2) AAS
J#は無かった事にされてるな
あと、VBは.netになってから色々と機能が拡張されて
重ささえ気にしなければC#と同等の事が出来るようになった
138
(1): 名前は開発中のものです。 [sage] 2013/01/25(金) 23:27:51.17 ID:qyysk8iw(2/2) AAS
っつ〜か、仕事でVB6を使ったんだがVB2010のほうが簡単だった
タダで使えるから未だにVB6を使ってるなら乗り換えたほうが賢明かと
139: 名前は開発中のものです。 [] 2013/01/29(火) 13:09:02.23 ID:fF0fMRN2(1/4) AAS
>>138
VB2010はvatptr関数とかないのよ。
APIがポインタを要求してきたときに、VB6のありがたみが嫌というほどわかる。
140: 名前は開発中のものです。 [] 2013/01/29(火) 13:20:39.02 ID:fF0fMRN2(2/4) AAS
おっとスペル間違えた。
VarPtr関数です。VB2010だとガベージコレクタがらみで、ややこしい処理
になるのよ。
141
(1): 名前は開発中のものです。 [] 2013/01/29(火) 13:53:27.75 ID:fF0fMRN2(3/4) AAS
ちなみに文字列のポインタをAPIに渡そうと思うとVB2010の場合こんなふうになったまった。

  Dim Str As String = "AAAA"
Dim L As Integer
Dim C() As Char
Dim B() As Byte
Dim G As GCHandle
Dim Ptr As IntPtr

C = Str.ToCharArray()
B = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(C)
L = UBound(B) + 1 'サイズを指定する必要がある場合に使う
G = GCHandle.Alloc(B, GCHandleType.Pinned)
Ptr = G.AddrOfPinnedObject().ToInt32()
142: 名前は開発中のものです。 [] 2013/01/29(火) 14:05:52.11 ID:fF0fMRN2(4/4) AAS
ポインタ使い終わったら G.Free でガベージコレクタを開放します。
面倒だわVB2010。
143: 名前は開発中のものです。 [sage] 2013/01/29(火) 21:31:41.37 ID:z3bnl1cO(1) AAS
C#とVBの速度は基本的に同じ。(C#でポインタ使ってる部位を除く)
初心者にVBのどの辺が優しいのだのかが疑問だ。

VB
Dim i As Integer = 0;

C#, Java, C++
int i = 0;
144: 名前は開発中のものです。 [sage] 2013/01/30(水) 07:43:13.65 ID:TcumX8ss(1/2) AAS
VBは後ろに;を付けなくて良い点とインテリセンスが強力な点が初心者向けなんだよ。
まあ、複数行に渡る命令を書く場合や、メモリー使ったりする場合には面倒だが。
145: 名前は開発中のものです。 [sage] 2013/01/30(水) 07:55:35.07 ID:TcumX8ss(2/2) AAS
まあ、VBでメモリー使う場合は配列使うけどな
動的メモリーはVBでは使わん
あと、VBはExcelとかと連係する場合に楽だな
146
(2): 名前は開発中のものです。 [] 2013/01/30(水) 13:13:47.38 ID:ES7+KnHm(1/3) AAS
思うんだが、VBやVC#のガベージコレクタって、そんなにパフォーマンスに
影響するもんなの?

メインメモリを効率良く再配置してくれるといっても、コード組む側からしたら、
ポインタを使うとき、データを勝手に移動されないように、いちいちロックしないと
いけないので、面倒極まりないんですけど。

もしかしたら、メモリの開放忘れてメモリリークさせるバグが多かったので、
それを防止する為につけたのかもしれないけど…。

Vistaのせいかな?あのころ、メモリ不足でパフォーマンスが落ちるPCが多かったからな。
でも .net って Vista より先じゃなかったっけ?
147
(1): 名前は開発中のものです。 [sage] 2013/01/30(水) 15:29:37.03 ID:cZuhgiqX(1/2) AAS
何言ってんだこいつ。日本語が不自由な上に統合失調症の傾向がある。
ロックするとか意味不明だし、プログラム向いてないから病院いっとけ。
148: 名前は開発中のものです。 [] 2013/01/30(水) 21:44:46.30 ID:ES7+KnHm(2/3) AAS
>>147
>>141の下から2行目が、ガベージコレクタをロックしているコードなんだけど、
意味不明なのかい?

君にヒトを素人扱いできる程に技量があるとは、とても思えんが…。
149: 名前は開発中のものです。 [] 2013/01/30(水) 22:19:16.82 ID:ES7+KnHm(3/3) AAS
ロックについては、このページを見ておくといいだろ
外部リンク[html]:dobon.net
ヒトを病人扱いする前に用語のひとつもググってみれば?
150: 名前は開発中のものです。 [sage] 2013/01/30(水) 23:34:20.46 ID:cZuhgiqX(2/2) AAS
C#とかVBでわざわざポインタを使うのはdllとの繋ぎ目くらいだろ。
(JavaのJNIも同様)

繋ぎ目を隔離したラッパークラスを通さずに直接ネイティブを呼べば面倒なのは当たり前。
いたるところでガベージコレクションをロックするかのようなことを書いて、
GCが邪魔だと呟いているのは実に意味不明だ。
151: 名前は開発中のものです。 [] 2013/01/31(木) 08:48:10.87 ID:wVU/jdLo(1/13) AAS
cZuhgiqX
どうやらロックの意味は理解できたようだな。ひとつ勉強になっただろ。

では逆に問う。君はGCの利点として何か実感できるものがあるのか?

GCのある言語とそうでない言語で同じ動作をするプログラムを組んだとして、
あきらかにGCの優位性を感じる場面に遭遇できるのはどのようなケースだ?

ちなみに自分はVB5からのユーザーだが、APIは当たり前のように使っている。
152
(1): 名前は開発中のものです。 [sage] 2013/01/31(木) 12:02:16.21 ID:NyoQQhH7(1/17) AAS
直接ネイティブを呼びまくること自体が低脳のすることだといってるのに
ロックの意味もわかってないからあちこちでロックしまくってるわけだろ。
普通の人はそんなことしないので、ロックするといわれてもわかりません。

DLL、SQLとかVBの外にあるものは隔離して
VBのみで完結しているように設計を作るのは基本。

>APIは当たり前のように使っている。
Win32のことか?DirectXラッパぐらい作ってから言えよw

>GCの利点として何か実感できるもの
スマートポインタ(参照カウンタ)を使うようなケース。
153
(1): 名前は開発中のものです。 [] 2013/01/31(木) 12:36:26.25 ID:wVU/jdLo(2/13) AAS
DirectXライブラリならDX7ベースのものを作った。ところで、その口ぶりなら当然
自分もそのぐらいは作ったんだろうな。CPUで演算したデータをバック・スクリーン
サーフェスに転送する場合、ロックもかけず、APIも使わず、どーやーって
転送しているんだ?おしえてくれよ。

スマートポインタ使うと、アプリの速度が上がるとでも言いたいのか?
俺が聞いたのはコーディングの話じゃない。実行上の有利性だ。
154: 名前は開発中のものです。 [sage] 2013/01/31(木) 15:29:50.68 ID:NyoQQhH7(2/17) AAS
>いちいちロックしないと いけないので、面倒極まりないんですけど。
>俺が聞いたのはコーディングの話じゃない。アプリの速度だ。
生産性の話をしていたのに、突然実行速度の話に変わったな。
GCは主に生産性の向上を目的として導入されているのに、おかしな話だ。

まあGCが得意なパターンにマッチすれば速くもなる。
C++でRAIIだと重いdelete()が集中しがちだが、
GCだと実際に解放するのを後回しにして、
負荷が軽い頃合に並列GCが少しずつ解放してくれたりする。
155: 名前は開発中のものです。 [sage] 2013/01/31(木) 15:34:54.20 ID:NyoQQhH7(3/17) AAS
>DirectXライブラリならDX7ベースのものを作った。
ならライブラリを使っている限り、アプリケーション層ではAPI(dll)を呼ぶ必要はなく、
従ってロックなどしないはずだ。そうでなければライブラリに存在意義がない。
ライブラリを作ったような妄想に浸っていただけだったというオチだな。
156
(1): 名前は開発中のものです。 [] 2013/01/31(木) 16:10:41.97 ID:wVU/jdLo(3/13) AAS
馬鹿だなあ、ライブラリ自体をVBで作ったんだ。

バックサーフェスのLockメソッドを実行して、引数の構造体からポインタを
取得し、APIの movememory を使って転送する。

ちなみにDX9のフレームバッファに直接書き込む場合は、メソッドがあるので
APIは使わないようだが、ロックはしなければならない。

おまえさんのライブラリではどーやってんのかなあ?答えてないぞ。

なにしろ>>152で「DirectXラッパぐらい」って言ってんだから、「ぐらい」なんだろ。
簡単にできそうじゃねーか?当然作ってあるんだろ

強がっても本当はDirectXライブラリなんて作った事ないんだろ。まあ昨日までロックを
知らなかったんだから無理も無い。

そのくせ態度だけはでかいんだよな。ヒトを低脳よばわりとかして…

GCが効果を出すのはごく限られた状況だけ、ほとんどは余計なプロセスが動くだけで
STGなんかを作る人からは嫌われている。

GCがメモリをいじくりまわしても、無造作にメモリ使いまくるコード組んでりゃいつかは
足りなくなってスワップするし、ようはスワップがちょっと遅れて来るぐらいの効果しか期待できない。

とりあえず自分で「ぐらい」と言った「DXライブラリ」作ってみそ。そしたら少しは認めてやるわ。
157
(1): 名前は開発中のものです。 [sage] 2013/01/31(木) 17:50:35.50 ID:NyoQQhH7(4/17) AAS
俺はお前の先生じゃないからな。
初心者に1から10まで教えたりはしない。

あと話がコロコロかわるわ、分散するわ、人の書いたことが理解できないわ、
そんなお前と話をしても漠然と広がるばかりで一向に収束しない。
理由は単純、ID:wVU/jdLoがなりふり構わず言い返したいだけだからだ。
何がしたいの?そんなにくやしかった?
158: 名前は開発中のものです。 [] 2013/01/31(木) 18:37:22.22 ID:wVU/jdLo(4/13) AAS
「DXライブラリなら作ってある!!」と言い返せないんだな。

そして「ロックを使わずにピクセルデータをバックサーフェスに転送できる!!」とも言えないんだな

くやしいのう。くやしいのう。

>俺はお前の先生じゃないからな。
>初心者に1から10まで教えたりはしない。

じゃあひとつだけでいいよ。
ロックを使わずにピクセルデータをCPUからバックサーフェスに転送できる方法
とやらを教えてくれ。

コードを表示してこっちで試して正しく動作したらオマエの勝ちでいい。
できなければオマエの負け。

オレはロック使わないと絶対にできないと思ってる初心者だから、先生よろしくたのむよ

…しかしコイツ本当に一度でもDirectXのコード組んだことあんのかよ?
APIも使ったことないんじゃねーの?

どっちが初心者だよまったく…バカじゃねーの?
159: 名前は開発中のものです。 [sage] 2013/01/31(木) 19:51:45.92 ID:NyoQQhH7(5/17) AAS
何言ってんだこいつ。日本語が不自由な上に統合失調症の傾向がある。
ロックするとか意味不明だし、プログラム向いてないから病院いっとけ。
160: 名前は開発中のものです。 [] 2013/01/31(木) 19:55:05.86 ID:PSRqcy7K(1) AAS
VB使いって・・・
161
(1): 名前は開発中のものです。 [sage] 2013/01/31(木) 20:05:52.91 ID:NyoQQhH7(6/17) AAS
>ライブラリ自体をVBで作ったんだ。
こんな事書いてる辞典でお前がライブラリなんか作れないことは自明のこと。
一個一個ロックしてコールバック呼ぶ間抜けな姿が目に浮かぶわw

DirectXで頂点バッファとかVRAM転送に関するロックと
マネージコード(VB, C#, Java)のGCに関するロックは全く違う話だってのもわからないだろ?
初心者が強がったところでまたひとつ恥をかいてるよ。バカじゃねーの?
1-
あと 39 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.012s