ふらっとVisual C#,C♯,C#(初心者用) Part106
XNAが終了ということを知ったんですが
いまだとirrlichtが最強なのかなと思いました
このスレの先輩にもご意見をお伺いしたいのですがこのライブラリはどうでしょうか?
>>2 ゲームなら今やUnity一強
.NETじゃないけど言語はC#だよ
Unityっすか
実はUnity使ってみたかったんですが
ぼくのPCだと重すぎて
メモリ1GB オンボード Celeron1コア なんですが先輩方はどのくらいのスペックでUnityを快適に開発しているのでしょうか?
Unityが重いならVSの最新版もまともに動かんよ
>>4 さすがに買い換えろよ
それだとVS2003で精一杯なレベルだ
UnityもVS2012も今のでっかいソフトにしては決して重くない
最新のPCなら安いノートで十分快適に動くよ
3〜4万も出せばPCを買える時代の終わりは近い
これからは1万円台か
TypeLoadException が出たのですが、どうやって直したらいいでしょうか?
アセンブリは、ちゃんとexeと同じ場所にあるので、アセンブリ(*.dll)は読み込めてると思います。
でも、たぶん型が読み込めてない(??)みたいなのですが……
教えてください
System.TypeLoadException はユーザー コードによってハンドルされませんでした。
HResult=-2146233054
Message=アセンブリ 'HogeHoge, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ab81addb3b46712a' から型 'HogeHoge.ClassA' を読み込めませんでした。
Source=MameMame.ClassB
TypeName=HogeHoge.ClassA
try{
>>9}
catch(Exception e){
int n= 0; //ここにブレークポイント設定して e の中身見ろ。解決方法が載ってる
}
メッセージ通りとしか言いようがない
こういうのは全ソースとバイナリ貼ってくれないと解決しないパターン
必要も無いのにGACに登録してて、
コンパイルのとき指定したアセンブリと
GACのアセンブリで同期が取れてないとか
こうして欲しい
DLLプロジェクトを名前変えて作り直す
厳密名その他Hogehogeの設定に近づけつつ動かす
動かなくなる設定を突き止めたら調べて正しい設定にする
ダメならダメな理由を添えてここで質問
全エレメントを列挙してscrollTopを取得したのに
0より大きい値がひとつも取れないってどうゆうこと?
俺んとこじゃBody.ScrollTopでちゃんととれてるから
ただの環境依存じゃない?
とれたよ。マジでありがとう。
現在マルチスレッド処理を行うプログラムを書こうとしています。
Form1とForm2が存在し、初めはForm1のみが表示されています。
Form1のボタンを押すとForm2が表示され、Form2では重い処理を行っています。
この際Form1ではそのまま処理を続行したいのでForm2のclassを作ることから表示するまでをThreadクラスを使って別で処理させて、そのままForm2の描画および処理を行っています。
ですがボタンのイベント内で行っているので、イベントを抜けた途端にForm2も消滅してしまいます。これを解決する方法はないのでしょうか?
Form2の表示はApplication.Runを使う必要があると思う
スレッドはSTAね
重い「処理」だけスレッドに追い出せばForm2自体はスレッド分ける必要ないだろ
別にフォームごとサブスレッドにしてもいいと思う
どう実装してるのか解らないけど、Form1のフィールドとしてForm2とスレッドの
変数を用意し、ボタンイベント内でそれぞれをインスタンス化すればいいんじゃ
ないの?
ボタンイベント内で変数を定義していないか?
何言ってるのかさっぱり意味不明な質問によく回答できるよね。
ア○な質問者よりそっちに関心するわ
>>21 そうだね
前にグレープシティのコントロールがマルチスレッドだと落ちるって情報を見かけたし、
UIは安易にマルチスレッドに頼らない方が良い
でもフォームごと別のスレッドにしないと元スレッドのUIの処理の
影響受けちゃうからなぁ。あれは嫌だなぁ。
>>24 暇なんだw
確かにForm2が全然イメージ出来ない
重い処理をForm2に押し付けたらすぐ応答なしになっちゃうし、何がしたいんだろうねw
>>26 影響受けちゃうと言うか受けないように作るべきだけど面倒だよね
29 :
デフォルトの名無しさん:2013/09/07(土) 18:01:58.30
C#で作ったアプリケーションを起動してみたら
アプリケーションを正しく起動できませんでした(0xc000007b)
ってエラーがでたんだけど解決方法わかります?
64bit環境で32bitアプリを起動したとか?
ワオキツネザルを無効にしてるんじゃなければ(そもそも無効にできるかどうか知らんけど)
それで問題が起こるとは思えませんが。
自分でも何を質問してるのかわからない状態に陥っていますが…
再度整理すると、
現状ではボタンのクリックイベント内に別のFormクラスを宣言させて、Show()メソッドでForm2を表示しています。
Form2で行いたいことは、Form2内のボタンを押すとファイルを読み取りファイルを編集し、終わった後にForm2を自動的に閉じる、というものです。
ですがファイルサイズが大きいので動作が重くなってしまい、呼び出したForm1が止まってしまいます。
Application.Run()を使ったら
単一スレッド上で 2 回目のメッセージ ループを開始することは有効な操作ではありません。Form.ShowDialog を使用してください。
というエラーが表示されてしまいました。
うんそうだね
>>32 >Form2内のボタンを押すとファイルを読み取り
この「ファイルを読み取る」のが遅いんだから、その部分だけを別スレッドにすればいい
非同期も選択肢がだんだん増えて便利になった分、ゼロから覚える人は大変だよな。
まあデキる人ならどの道3日ぐらいでものにしちゃうのかもしれんが。
ファイル読み取りを別スレッドにわけて、その処理の最後にfinishフラグのboolをtureにし、Timerで1秒間隔で読ませて、条件を満たしていたらFormを閉じるという無理やりな処理ですが、一応目標は達成できました…
もっといい処理はないものでしょうか…?
invokeする
>>38 スレッドにフォーム渡しておいて、読み込み終わったらform.Close()
↑こういうやり方すると誰かが文句いうが気にしない
処理が終わったら閉じるとか、form2って単に処理中とか
プログレスバーを表示するだけのものなのか?
だったらそれ自体不要なんじゃないのかな
その重い処理から定期的にメッセージループを回せよ。
どうせプログレスバーも更新する必要もあるんだし。
>>41 invokeでだよね
>>42 ボタンを押したらって書いてあるからファイル選択するんじゃないか?
NET4.5以降ならAsync/Awaitの出番
TaskやBackgroundWorkerでもよい
ファイル読み込みなんだからボトルネックはHDD。
いちいちスレッド使うなよw 同期とかで余計に複雑になるわw
Form2にはファイル選択とどの動作を行うかの選択のボタンやチェックボックスがついているため、Form2は必要になっています。
Invokeの使い方をまだよくわかっていなかったため使用を見送っていました。
メッセージループということは、Application.DoEvents()で良かったでしょうか。
Frameworkは4を想定していたので、それは使えませんね…
>>48 ファイル読込ループにDoEvents()でも入れとけ。
Windows7って標準で.Net4.0がインストールされていますか?
>>47 invokeならこう
this.Invoke((MethodInvoker)delegate
{
this.Close();
});
DoEventsだとForm1の反応も悪くなる
>>49 ファイル読み込みなんだからボトルネックはHDD。
だからスレッドなんて使わずDoEventsにしろ。
全く意味が分かりませんねぇ┐(´〜`)┌ ヤレヤレ
コード書いてるけど分からんわ
ややこしそうだからスルーで
同期考えないでスレッド生成しまくってるタイプか。
不定期にデッドロックしてもマイクロソフトだからですとか言いそう。
そういうプログラマを何人も見てきた。
DoEventを素人にすすめる低能は死んでくれる?
素人にマルチスレッド薦めるなw
>>52 みたいなアホが大量生産されるw
doeventsよりスレッドのほうがわかりやすいけど
同期考えないからだろwww
過去にハイパースレッドとか出始めたときどんだけフリーズするアプリがあったんだよw
どんだけあったの?w
CPUの知識てw
CPUの知識ワロタ。どうせおまえもCPUの知識なんてカスほどしかねーだろ
原理から理解する必要があるって言ってた奴とかぶるものがあるなw
原理主義者だな
テログラマーか?
いくつ抽象化レイヤーをぶち抜いたらCPUの話になるんだよ
>>63 落ち着け。初心者だと言ってるようなものだぞ。
さて、この勘違いした初心者をスルーすべきか相手にすべきかだな。
おれはパス。
>>68 ほう。なぜこれが同期できてないかCPUレベルの話なしで初心者に説明してくれ。
これは典型的な初心者が書く馬鹿コードだから。既に稼動してるシステムで何度も見てきた。
Form1とかで
bool lock = false
int data = 0;
別スレッドで
if(!lock){
lock = true;
data処理
lock = false;
}
確かにスレッド案はまだ停止用フラグの実装とかやる事あるけど、
今回は独立性高いし勉強用としては良いと思う。
釣りでなければ、どこにCPUレベルの話があるのかわからんが
もしかして、スレッドの話=CPUの話だとでも思ってるのか
volatileが必要とでも言いたいの?
そもそも説明を要求された理由が分からない
このスレのあまりのレベルの低さに同情する。
>>70
CPUの知識がどのレベルなのか分からないけど
レジスター、スタック、ヒープの構造と
各スレッドのコンテキストに割り当てられるリソースの
関係については知ってる必要があるし、それはCPUの
知識と言えるかもしれない
ロックってmonitor使うんじゃないの?騙された?
アセンブラのプログラマーの方ですか?
ここはC#スレですよ
初心者ならそれこそBackgroundWorkerだろ
同期やロックはBackgroundWorkerイベントで
隠蔽されて安全に使える。
精々lockやReaderWriterLockSlimで終わる話
なぜにCPUまで持ち出さないといけないのか
初心者にはマルチスレッドは無理。
知ったかに説明しても逆ギレするだけ。
>>85 while(1)にしても同期できないよ、素人。
while(true){
if(!lock){
lock = true;
data処理
lock = false;
}
}
これなら同期できると思ってる馬鹿がいる件について
>>86 だからそんなの使わないって書いてるだろ。日本語ぐらい読めるようになれ
>>70は会社員なのかなんなのかしらんが
既に稼動してるシステムでこのレベルのコードでマルチスレッド扱うプログラマがいるの?
ちょっといくらなんでも信じられん
>>89 このスレで誰も答えを言えないのが答えさ。
>>85は知ってるが
>>70のコード断片から導くのは困難だわ
CPUのキャッシュとメモリの同期の話とかかと思いきや何だよ考えて損したw
>>91 その中で一つでも同期できない理由を説明したものがあるのか。
ないじゃんwww
素直にマルチスレッドなんにも分からないから教えてください、って言えよ
>>95 while(true){
if(!lock){
lock = true;
data処理
lock = false;
break;
}
}
これで同期できる?
はい解散〜
解散解散〜
>>96 それで同期出来るなんて誰も言ってないしw
もう引き下がってくれよw
めんどくせーよー
>>96 できない
>>85にあるだろ。こんなイメージ
while(true)
{
manualEvent.WaitOne();
//処理
}
>>96 もちろんできない。
それ以前にその同期って言葉の使い方はちょとおかしい気が
>>96 無理。動いたり動かなかったりデバッグ困難な糞コード。
>>96 じゃ同期できない理由を説明しろ、糞ども。
してもいいけどそれがどうCPUと関係するのかも説明してくれよ
頼む。説明してくれ。論理的な間違いが見つけられないw
>>104 ガチで言ってるの?
仮にlockが不揮発だとしても、「data処理」実行中の値は?
>>105 処理中にlockが変更されても問題ない(処理なら問題ない)
いやif(!lock){とlock = true;がアトミックじゃねえって話だろ
こう言った方がいいか。
シングルコアを前提としても、3行目が実行される直前に別のスレッドに
実行権が移ったらどうなる?
>>102 詳しそうだからスルーしといたんだけど、
lockが予約語だって知らないでしょw
if(!lock)
と
lock = true
の間に、他のスレッドがlockの値を書き換える可能性がある
こんなチェックはなんのあてにもならない
でCPUの知識はいつ生きるの?
>>110 breakで飛ばす処理だから値書き換えられても問題ない
すくなくともC#でのプログラムに、概念的な知識以上のCPUの知識なんていらん
C#の1行とマシン語の1行が違うってこと?
機械語1命令と実際のCPUの動作も違うな
OoO μOPとかややこしいのがあれこれ
C#でスレッドやるなら出来る限り高いレベルの同期命令を使うのが吉
>>113 どんなコードを書こうとOSが提供する同期オブジェクトを使わないかぎり
同期できない理由を説明するにはCPUの話をするしかないんだけどね。
スレッド切り替えの粒度は機械語レベルだから。
CLRのスレッドをOSが管理しているわけがないだろ
midoriでも使ってんのか
結局はmonitor使っておけばいいんだよね?
だからマルチスレッドは初心者には無理だと言ったんだ。
C#に(というか.NETに)スレッド同期のための仕組みが用意されているんだが?
スレッドについても、実際のコンテキストがどうであろうが、それは.NETによって隠蔽されているわけで
OSよりさらに上位のレベルで抽象化されているわけだが
よし。これからはファイル読み込みにmonitorとかいうの使うぞw
マルチスレッドなんて簡単、簡単w
>>118 そのレベルだとMonitorも危険
BackgroundWorkerだけでいいよ
CPUの知識(笑)という言葉で想定されている知識の範囲もよく分からんけど、
どっちにしろそんなもの知らなきゃ非同期のコードが書けないわけでもないし、
知ってたからってより最適化されたコードが書けるってわけでも恐らくないよね。
それともパイプラインとかキャッシュとかHTとかマルチコアとか、CPUアーキテクチャーについて
深いレベルの知識があるのとないのとで何か違ってくることがあるのか?
>>123 俺は一番軽い同期オブジェクトを使いたい
マルチスレッドの話題は高度なので専用スレで、どうぞ。
質問されてから同期オブジェクトの話が出てくるまで50レス近く消費するおまえらってw
初心者スレらしいなw
C#がどういうCLRになって、それがどういうアセンブラになるかまで理解できて
その上で、動かしてるOSのプログラム管理に関して精通していて
実行しているCPUにたいしてパイプラインやキャッシュについての知識があれば
より最適化されたコードが書ける かもしれないな
130 :
デフォルトの名無しさん:2013/09/07(土) 23:06:25.90
NANDやNORのTTLレベルの回路とか、ALUとかマイクロプログラミングとか、CPUのムダ知識は大学で習ったな
>>129 もう使いまくってるから今頃使ってもいいよとか言われても困ります
>>70 簡単じゃん。同期オブジェクト使ってないから。
>>126 いくらでも気づきにくい落とし穴が作れるという意味では高度だけど、
非同期の処理って言ったって大半は単純なもので、そこまで複雑でも高度でも
ないと思うんだけどね。
基本的なアイデアはそう難しいものではないし、WPFみたいに覚えることが膨大に
あるわけでもないし。
>>133 それはアプリによる。
どんどんForm開く仕様で共通データを処理しまくるとかは頭使う。
ロックするデータの範囲でパフォーマンスが全然変わってくるから。
下手すると簡単にデッドロック。しかも場所がどこだかログ追うだけでも地獄。
スレッドの使い方は2種類あって、
1.重たい処理をバックグラウンドで処理してユーザーインターフェイスを硬直させない
2.処理をCPUコアに分散して処理効率を上げる
というのがあって、1は普通に使っていいと思うよ
これは構造的にもそんなにややこしくならないし、
ややこしくなるようなら設計がおかしい
>>133 どう考えても「どんどんForm開く」というViewの仕様が
非同期処理の難易度を上げる(デッドロックを起こさないようコーディングすることを
困難にする)ことに貢献するとは思えないけどw
>1.重たい処理をバックグラウンドで処理してユーザーインターフェイスを硬直させない
ややこしいだろ。UIが操作できるんだぞ。処理中にあれこれ動かされたらたまらん。
結果、コントロール全部、Enabled(false)
>>137 再入の問題ならdoeventsでも同じだろ?
139 :
デフォルトの名無しさん:2013/09/07(土) 23:30:11.62
WCF使って、重い処理を別プロセスに追いやるのが最強だろ
最後は別のコンピューターまで使えるし
もういいから
>>137 それはビューの状態管理の問題であって非同期処理に限った問題じゃないでしょ
実例でいうと年金DBはデータがぐちゃぐちゃ。
>>133 オラクルのバグに関していいたいが、契約に違反するので我慢することにしよう。
必ずOSの同期を使わないいけないのは
スレッドスイッチングがC#コードやILレベルではなく、機械語レベルだからだな。
ロックは高級言語だけでは実装はできない。アセンブラ言語必須。
「すべて」は機械語レベルで動いてるから機械語レベルじゃないとできない
だけどその機械語レベルの処理をC#なんかから呼び出すことができるからC#レベルからスイッチできるよ
もうなんか書いてて頭いたくなって来た
C#は言語レベルでメモリモデルが規定されてる。
x86限定のメモリモデルでコーディングしてしてしまうと
移植性が無くなる。
C#で実装できないという話と、C#で機能を提供しているとでは意味違う。
C言語でもロックの実装は書けない。
>>147 おまえは「CでもC#でもそれはそのままじゃ動かない。機械語での実装が必要」って言ってるようなもんなんだよ
何が言いたいのかまったく意味不明
fenceもcasもILレベルであったような気がするな
C言語のような古い言語の場合はいまさら統一した
メモリモデルを導入するのは難しいけど
新しい言語ははじめからマルチスレッド前提だから、
メモリモデルはしっかり規定されているよ
なにこのグダグダ感は
2chでクダ撒いてるような素人Lv2が何したり顔してんだって言う
初心者にはマルチスレッドは無理ということで終了。
馬鹿に同期とか無理でしょ。
馬鹿には無理
初心者でも想像力があって頭いいなら平気
155 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
ところで、イマドキの初心者がスレッドを使い始めて同期の必要性を認識したとき、
>>70みたいに変数の値を使おうって思いつくもんなんだろうか?
プログラミング歴はそれなりだけどマルチスレッドや.Netはよく知らないという
ジジイ初心者ならわからんでもないけど。
むしろジジィなら当たり前だが若者が知ってることはまずない。業務PGならなおさら。
基本情報受かってスマフォは知っていてもWin32がそのAPI提供してるなんてまず知らないし、
必ずそれを使わないといけないなんて知るよしもない。
というかおまえ働いたことないだろ?
>>159 俺、読解力がないから何言ってるのかさっぱりわからね
>むしろジジィなら当たり前だが若者が知ってることはまずない。
爺なら当たり前に知ってる?知らない?何を知ってる?
>業務PGならなおさら。
なおさら知ってるのが当たり前?知らないのが当たり前?
俺はスマフォの基本情報受かって働いてるぜってことだろjk
オレ持ってないわw
おれだって持ってない。持ってる奴はゆとり世代だろw
ゆとり世代はマルチスレッド禁止。
>>160
.Netのようなフレームワークがそろっているところから始めた初心者だと、
スレッドの開始にフレームワークの機能を使っている以上、同期だって
まず.Netの中を探すのが自然だろう。
というか、
>>70のコードで同期できる(実際はダメだが)ということすら
理解できないかもしれん。
通訳してみた
(同期オブジェクトのことは)むしろジジィ(初心者)なら(知らないのが)当たり前だが若者が知ってることはまずない。
業務PGならなおさら(知ってるはずがない)。
基本情報受かってスマフォは知っていてもWin32がそのAPI提供してるなんてまず知らないし、
(=スマホ基本情報を持っているほど薄識(誤字)でもスマホに用意されてる同期用APIと同等のAPIがwin32 APIにあることなん
てまず知らないだろうし)
(マルチスレッドプログラミングに)必ずそれ(=同期オブジェクト)を使わないといけないなんて知るよしもない。
つまり初心者もプロも同期オブジェクトが必須なんて知識は持ってないという意味
まず同期って言葉を説明できるんだろうか
どうでもいい。
俺は非同期処理がそんなに高度な技術とは思ってないけど、
さすがに競合の問題やスレッドの同期機構も理解せずに使うのは論外。
論外の人間を前提にした
>>157みたいな問題設定は何の意味もないよ
>>167 国語も弱そう。国語力ない人はPGに向かないんだぞ。
同期オブジェクトを探すかどうかの違い
無職「俺は非同期処理がそんなに高度な技術とは思ってない」
>>170 おまえは人に言いたいことを伝える能力が不足してる。PGに向かないぞ
初心者
ぐぐってマルチスレッド例を見てそれをコピペ改変する
=ぐぐった先がきちんとしたソース書いてればきちんと動く
原理主義者
ぐぐってマルチスレッド例を見てそれを自分なりに改変する
=理解できないオブジェクトは使いたくないから理解できる変数を使った
>>70のようなソースになる
自己流でマルチスレッドを始めると、
いろいろ勘違いすることが多いかな
じっさい、x86でコア1つだと相当いい加減なコードでも動くから
>>172 ベテランもそう思ってるよ
目線が違うだけで
>俺は非同期処理がそんなに高度な技術とは思ってない
これはほんとない。
マルチスレッドが難しいのはバグが出た時再現性が不安定で、
動いたり動かなかったりすることを知らないんじゃないのか。明らかに経験不足。
デバッガで原因を追うことが困難なんだよ。
網羅テストも現実的に不可能でテストをパスしてしまう。
>>180 一回りすると、逆にそういうトラブルにならないように考えてスレッド作るようになる
これは世の中は怖い病のイトコと同じ症例です
>>180 動かないなんてラッキーなほう。
この手の不具合は不定期にデータが上書きされるタイプだから、
どんどんデータが壊れていく。気づいたときにはマジ背筋が凍る。
Win8で素人にも非同期を強要するようになって
MSってホント世間が見えてねえよな
半端に頭がいいとああいう馬鹿をやってしまうんだろう
>>180 だから前にも書いたが、いくらでも発見困難な落とし穴を作り込むことが可能という意味では
高度ともいえるが、それは非同期処理のコードなら必ずそうなるということじゃない。
むしろ大半のケースではそんな落とし穴にはまることはない。
もちろん書いてる本人が馬鹿ならこの限りじゃないけど。
それは例えば、C#(CでもJavaでも何でもいいけど)で高度な処理を記述できるからといって
C#そのものが高度で習得が難しいことを意味しないのと同じこと。
非同期処理なんてjQuery使ってるデザイナー崩れでも書ける
>>185 バグが出た時の話をしてるのに何を言ってるんだ?
>>185 おまえが馬鹿PGチームのテスト責任者のときこんな一言言える?
テスト責任者「俺は非同期処理がそんなに高度な技術とは思ってない」
>>186 簡単に書けることと、デッドロックを防ぐ設計をすることとは天地ぐらいの差がある。
衝撃告白。彼の開発にはテストは含まれませんw
これは一人の馬鹿が騒いでるだけだね。ID表示あればNGして終わりなのに…
マルチスレッドが簡単とかほんと馬鹿すぎる。
>>129 がマルチスレッドの泥濘の例だな
かなりの上級者でもなぜ 0, 0が現れるかわからない
見ただけで怖いコードなんだが。ゼロレイテンシムーブがある時代に。
答え教えて。
>>129 このコードはマルチスレッドうんぬんの前に、ifの条件式や変数名その他の書き方がバグを生み出す元凶。
数行だからまだいいけど、これが長くなったらperlのコードなみに読めなくなる
いやこんなマルチスレッドの問題点を指摘するためだけの数行のコードで
変数名を指摘されても…
このサンプルにおける良い名前付けの例を見せてほしい
かなりの上級者どころか同期の説明で一番最初に出てくるコードじゃないの
>>129 どの辺が上級者なのか80文字以内で説明してくれ
馬鹿の相手はいいから答えいえ。CPUに依存するのか依存しないのか。
.NETに限ればしないで終わり
>>198 マルチスレッド
扱えるなら
上級者
ってことでねえの
C#のvolatileは次のような特性があって(少々省略してるけど)、完全なメモリバリアではない。
読み取りと書き込みは、volatile の読み取り前に移動することができない。
読み取りと書き込みは、volatile の書き込み後に移動することができない。
なので、
CPU内での命令の並び替え(OoO)でs_y, s_xの読み取り操作が
書き込み操作の前に移動することがありえる。
s_x = 1; // W
s_ya = s_y; // W, R
これが、こうなる。
var temp = s_y; // R操作がW操作より先行することはルール違反ではない
s_x = 1; // W
s_ya = temp; // W
対策としては明示的にメモリバリアを使いましょうとなる。
s_x = 1; // W
Thread.MemoryBarrier(); // これで完全な分離が可能
s_ya = s_y; // W, R
答えを言わないあたりが理由を知らないんだな。
お前が無視してるだけで何べんも答え貰ってんだろw
オツムより先に目玉の治療してこい
沸点の低い奴だ。
指摘は否定しないんだな
つまり分かっててやってるんだなクズ
>>198 プチ上級者 (C言語で) volatileはメモリバリアではないので不思議に思わない。
上級者 C#ではvolatileがメモリバリアの意味があると知っているのでわからなくなる。
1,0 であったり、0,1であったりする可能性だけ分れば十分です。
>>210 CPU内での命令の並び替えどうのこうの言ったのはおまえじゃないか。
>>211 それに気づいて対策すれば0,0も出ないしな。
cscの話だろボケ
>>204 頑張ってるのを評価されるのは、義務教育までだぞ。
だからマルチスレッドは簡単だと言ったんだ。
簡単に煽れるってこと?
それは真理だな
結局、CPUの話か。知ったか初心者玉砕。
>>129 何だこれ。
嘘つけそんなケースありえないだろ
>70=>217=>220がうざいな
>>221 蒸し返すなよ周回遅れ
そのまま世間に埋もれて死ね
>CPU内での命令の並び替え(OoO)でs_y, s_xの読み取り操作が
>書き込み操作の前に移動することがありえる。
CPUつってんだろ。何度も言わすな。メモリモデルはCPUの話なんだよ。
両方ともまだ答え出てないことになったのかよwww
白雉もいいとこだなw
医者も大変だろう
CPU君は昨日からしつこいねw
CPUは関係ないよ。
メモリーモデルなんていうとなんかご大層に聞こえるけど、
要するにプログラマが期待する結果を裏切らない範囲でコンパイラが最適化を行う
ルールのことを言ってるだけ。
OOOEプロセッサとコンパイラのリオーダーがごっちゃになってんだろ
これを知ったかと言わずしてなんというって話
>>230 メモリモデルやコンパイラの最適化はCPU依存の話でしかないよ。
依存しないそもそもメモリモデルも最適化ルールも規定化する必要がない。
実際初心者プログラマの期待を裏切る例を出してるし何を言いたいんだろうか。
>>231 デッドロックしないためにスルーするコードなんて普通だから。
現存するCPUアーキテクチャに合わせた仮想マシン作ってるから依存してるように見えるんじゃない?
読みだされない変数が消えたりするのもCPU依存ですか?
>>233 コンパイラと言ったのは不適切だったかも知れないが、
CPUに依存する最適化コードを吐き出すのはJITの仕事。
メモリモデルは、プログラマがそんな環境ごとのCPUの違いを意識しないで済むための決め事。
>答えが出てないことになった
最終的には問題が出てないことになるであろうw
>>238 箱庭である以上、仮想CPUを規定してんだろ。
このメモリモデルはその仮想CPUのロード、ストアの仕様でしかない。
x86とは何だったのかね
ケケケ
x86でも全然違うんだけどな。
自己書き換えできたりできなかったり。
>>240 ルーピーって話がループするからルーピーって言うんだねw
実はおれもそう思ってたんだ。
>ここまでは、ECMA C# 仕様で定義された C# メモリ モデルについて説明し、メモリ モデルを定義するスレッド コミュニケーションの最も重要なパターンについて示してきました。
>コンパイラとハードウェアは、プログラムのメモリ命令をわずかに変化させることがあり、
>その方法によってはシングルスレッドの動作に影響しなくても、
>マルチスレッドの動作に影響することがあるため、
>これがマルチスレッド プログラミングを複雑にする要因の 1 つになることがあります。
>if (!(s_xa == 1 || s_ya == 1))
だからこうしてたのか。糞ワロタwww
>ポーリング ループ: ポーリング ループは、一般に推奨されませんが、
>実際には (いくぶん残念なことに) 頻繁に使用されるパターンです。
老害はMS開発者だったんだね。
>>72 >実際には (いくぶん残念なことに) 頻繁に使用されるパターンです。
MSにこう言われるとは随分と恥ずかしいな、初心者wwww
知ったか初心者
「俺は非同期処理がそんなに高度な技術とは思ってない」
MSのParallel LINQ、タスク並列ライブラリ開発者
「コンパイラとハードウェアは、プログラムのメモリ命令をわずかに変化させることがあり、
その方法によってはシングルスレッドの動作に影響しなくても、マルチスレッドの動作に影響することがあるため、
これがマルチスレッド プログラミングを複雑にする要因の 1 つになることがあります。」
まあ非同期と並列の区別がつかない奴には無理だわな
>>254 C#はその非同期を射程に含めるわけだが、お前さんの理屈だと
じゃあC#は高度な技術なのかと。
馬鹿だろお前。
>抽象型の C# メモリ モデルに従えば "バグ" を含んでいる多くのプログラムでも、
>特定のバージョンの .NET Framework を実行する特定のハードウェアでは正常に実行されます。
>とりわけ、x86 と x64 のプロセッサは特定の限られた場合にしか命令の並べ替えを行わず、
>同様に CLR の just-in-time (JIT) コンパイラは許可されている変換の多くを実行しません。
要約するとMSはPGは馬鹿、Intelはビビりと言っている。
>>256 双方の意見をコピペしただけで他意はありません。
MS技術者の圧勝。
Cスレでのポインタ議論()と通じるものがあるな
マルチスレッド少しかじった奴がギャーギャー自論を喚き散らし、初心者がそれを煽り、知ってる奴がたまにヒント投下しつつ傍観する
煽りが一番楽しいよ
おすすめ
>>262 論破されすぎて頭がおかしくなってんだな。MSのソースひとつで反論でぎずwww
>>262 つくづく思うけど、馬鹿と下衆が地上で最強だなw
なりたいとは思わんが
>>264 だなw
完全論破されてもそのことに気付かないから負けることがない
ここはMS技術者の溜り場なの? どうりでレベルが低いわけだ。
マルチスレッドが複雑とかw
はいはい、MS技術者がプロセッサ、プロセッサと言ってんだからCPUの話なんでしょ。
俺たちにとってMSは神だからな。批判すらことすら許されない。
ネトウヨ王に、俺はなる!まで読んだ。
>>270 まず分からないところを具体的にピックアップしてみる
わざわざ潰さんでも既に潰れそうだ
>>270 スクリーンキャプチャ c#
マウスカーソル位置取得 c#
Bitmap トリミング c#
初心者から少しレベルアップした人には、この本がおすすめ。
C#による マルチコアのための非同期/並列処理プログラミング
マルチスレッドとマルチコアは多くの場合あんまり関係ないのに誤解を招くタイトルだなあ
コアをフルに回すためにマルチスレッド使うなんて相当極端な状況だぞ
俺もそう思う。本っていうメディアだし、情弱ホイホイだろうな
馬鹿だなぁ。並列化して速度アップするための本なんだよ、きっと。
シングルコアだと意味ないだろ?
CPUぶん回すための並列処理ってあんまり複雑な排他制御とか必要としない単純な処理が多いしな
ややこしいケースは大抵あんまりCPU使わない
そりゃ同期ってコストが高いもの。
将棋の思考とかある程度の塊で投げれる処理でないと無理。
また基地外が釣り針投下してきたな
またMS様にケンカを売る知ったか馬鹿。
>>281 シングルコアでも意味あるよ
マルチコアで速くなるのはCPUを100%使ってる場合だけな
そして重い処理って意外とCPU使ってないことが多い
>>286 まじか。
シングルコアでCPU使用率が20%程度の処理をマルチスレッドしたらどれぐらい速くなるんだ?
>>286 >マルチコアで速くなるのはCPUを100%使ってる場合だけな
ダウト
逃亡早すぎw
>>287 IOしてる間にCPUの処理を済ませられるから最大で実行時間20%offじゃない?
IOがボトルネックなのになぜ速くなるのか。
多数のIO待ちで遅いなら、直列の待ち時間を並列にすることで、トータルの待ち時間を短くできるだろ
1時間の行列の買い物を、一人で10回やると10時間かかるけど
10人でやれば合計1時間ちょっとで終了する
ボタンを押して次の作業ができるようになるまでの時間だったら、別スレッドにすればほぼゼロ時間にまで速くなる
>>292 IOにも非同期APIあるんだから使えよ。
オンラインゲームでMMOとかFPSとかあるじゃないですか
あれって接続ユーザーの数だけ並列で動いてるから
リアルタイムにユーザーが動けるのでしょうか?
>>292 ディスクが沢山つながってたり通信相手のサーバーが遅かったりする場合の話だろそれ
chartControlを3.5で使いたいんだけどツールボックスに無いから、
一度プロパティを4.0にして貼り付けて、その後3.5にして使っても問題って無いですか?
Windows7に.NET Framework4.0入れたく無いので・・・。
MSのフォーラムで聞いて来いよ
ソーシャルゲーム用のツールが欲しいんです。自動で巡回、目的のカードが指定した価格以下になったら購入。といったようなツールです。
このようなものは簡単に作れるのでしょうか?
無知なので、出来ればサンプルや作り方などを教えてもらえれば……
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
進撃のバハムート
どうしたんでしょうか^^;
おっぱいが出るかと思ったのに
VBAだろスレ違い
つーかゲームばっかしてないで勉強しろクソガキ
>Windows 8以降などでは非同期処理が必須
最近ミングスレで同じ言い回し見た気がする。そうかもな
今日VSExpress2012インスコして思ったのがc#書いててブロックが
getter()
{
}
こういう形になるんですけど自分的には
getter() {
}
こういうふうにしたいんですけどどこから設定したらいいでしょうか?
もうひとつデザイン側をダブルクリックした際に生成されるイベントメソッドを削除したら自動でデザイン側のコードも削除するような設定もどこから設定したらよいですか?
お願い致します
>>310 オプションぐらい見ろよ
後者はたぶんない。やりたいならプラグイン作れ
いい難読化ツールないです?
・無料
・VS2012でビルドと同時に難読化実行することも可能
また悪いツール作る人か。
超ロングパスとかどんだけくやしかったんだよwww
基地外湧いたようだな
知ったかして、MSのソースで撃沈キチガイはほんと消えてくれ。
これだけコテンパンに叩かれたのに
またマルチスレッドは簡単君が出てきたか。
>>275 ためになるなぁ
今までテキトウにvolatileつけてたはw
つけりゃいいんだろ?あん?みたいな
フィールドが全部volatileなコードがそのうち出てくるなw
class Hoge{}
volatile hoge = new Hoge();
エラーが取れません。どうしたらいいでしょ?ってなるな
volatile Hoge hoge = new Hoge();
Javaもやったことある先輩に質問です
C#とJavaどっちが難しいですか?
どっちも同じ
Javaかな
>>321 第二部のReadIntroってクラスがエラーになるのはなぜ?
>_obj フィールドの読み取りが、このフィールドの 2 回の読み取りに分割されているため、ToString メソッドが null ターゲットに対して呼び出されるようになることがあります。
2回に分割される事のどこに問題があるの?
>null ターゲットに対して呼び出されるようになることがあります。
ぬるぽ
>バージョン 4 までの .NET Framework ではこのケースが適切に処理されないことを指摘しておかなければなりません。
>実際、_A フィールドを volatile とマークしても読み取り順序の入れ替えは避けられません。
>この問題は、.NET Framework バージョン 4.5 で解決されました。
もうカオスだね。
仕事でC#使ってる人ってArgumentNullExceptionのことをあなるって言うの?
うん君みたいな幼稚なのはね
>>331 だからMSは、4.0をなかったことにしたいのか。黒歴史なわけだ。
そんな大げさな。
大半のプログラマはそんなメモリモデルなんて知らないし、従ってそんな規約に
厳密に従うことなんか期待してない。
期待するのはvolatle付けた変数が実際にvolatileであることだけ。
4.5を入れたら4.0は削除される。
互換性を重視するMSがこんな強引な抹消をするなんて。まさしく黒歴史。
どうせx86/x64だと再現しない不具合だろ
だれがItaniumでC#アプリ開発するんだよ
世界で2人くらいだろ
じゃあOutlookとかも黒歴史か
ItaniumはIntelの黒歴史なので、MSは気を使って.net 4.5から Itanium はなかったことになりました。
Vistaの時、3.0温存したまま3.5インストールできたっけ?w
Vistaはバルマーの黒歴史。
安心して使いたいなら重い同期オブジェクトを使いなさいってこった。
なんでCPUの話になってんだよ。
バックグラウンドでファイルを読むっつーvolatileもクソもない要件のはずなのになんか沸いてきたから
そうそう。
マルチスレッドなんて簡単。CPUの話を持ち出すMS技術者はアホ。volatileなんか使ったことないし。
>>345 コレwww
CPUの話がしたかったんだろうが導入部が雑過ぎて荒れた
CPUの話は関係ないと知ったかしたら、
MSがCPUの話ばかりで説明してました。
-------------終了-----------------
デスクトップアプリはUIスレッドがあるからまともな設計ならロック取得が並列処理になったりはしません
>>349 基地外なおまえ(
>>70)はコロコロ主張変えすぎなんだよ
>とにかくvolatile 使えってことだな
>安心して使いたいなら重い同期オブジェクトを使いなさいってこった
>volatileなんか使ったことないし
終了つってんだろ。
>>321 で終わり。
この説明で理解できない奴はマルチスレッドを使うな。
void PrintObj() {
4. Object obj = _obj;
5. if (obj != null) {
6. Console.WriteLine(obj.ToString());
7. // May throw a NullReferenceException
8. }
この程度が分らないなら初心者なんだよ。圧倒的な知識不足。
コピペしただけじゃん
>>352 おまえとっくに論破されたんだから引っ込めよ。
このスレにいる人はほぼ理解してるよ?
理解してないのは
>>353だけだよ
昨日、マルチスレッドは簡単、CPUの知識はいらないと言って暴れてた馬鹿起きたの?
>>353は前提削ったせいで何の意味もない戯言になってる
x86アセンブラすら書いたことない馬鹿の知ったかはもういいよ。
CPUに依存するし、.netのバージョンにも依存する。
はい、終わり。
MASMでも使ってたのか?そんな長くやっていまだにマルチスレッド理解できないって悲しいな
まだやってんだ
省みられないって大変だね
>>364 このドキュメント書いた人、Parallel LINQ、タスク並列ライブラリの開発者なんだが。
開発者だとなんだい?
権威を傘に着たければチューリング賞受賞者でも連れてきな
オナニーの片手間くらいに聞いてやるよ
ここまでの経緯。
知ったか「マルチスレッドは簡単。CPUの話は関係ない」
MSタスク並列ライブラリ開発者「マルチスレッドは複雑。CPUに依存する」
知ったか「ムッキーッッッ」 荒らし中。
MSDNマガジンをドキュメントって呼ぶ人初めて見た
ごく最近誰だかがVistaは失敗って言ってましたし、
偉い人の発言なんてその程度のことですよ。
たかだか
>>70を馬鹿にされたくらいで72時間もキレてるのかよ
さすがだわ
>>368 さすがそれは違う。
っていうかお前も馬鹿だろ
よしんば正しかろうが欠陥人間だよね
>>375 ちゃんと読めよ。
その記事はメモリモデルの実装方法がCPU依存だと言ってるんであって、
マルチスレッドがCPU依存なんてどこにも書いてない。
話のレイヤーが違う
第一部の方には「ECMA仕様で定義されている」って書いてあるからもう貼らないのか
やぶ蛇でクソ笑えるw
>>376 知ったか君よ、キミ往生際が悪いよ。
>バージョン 4 までの .NET Framework ではこのケースが適切に処理されないことを指摘しておかなければなりません。
不具合を知らないと知ったかなんだ
日本語は難しいね
傍観してて思うんだが、
レイヤーが違う相手なんだろ?通じるわけがないのになぜ説得を続ける。
心を込めれば異星人に話が伝わるとでも思ってるのか。
頭に不具合があるからな。会話が成立しない
>>70「x86アセンブラすら書いたことない馬鹿の知ったかはもういいよ。」
「MASMでも使ってたのか?そんな長くやっていまだにマルチスレッド理解できないって悲しいな」
>>70「このドキュメント書いた人、Parallel LINQ、タスク並列ライブラリの開発者なんだが。」
>>380 もちろん、不具合があると書いてる資料見て、不具合はなかったと言うのは知ったかじゃないよw
ただの馬鹿か嘘つきかな。
>>381 全く。
高級言語レイヤみて簡単だという奴にマルチスレッドを理解させようとすることが間違いだよな。
また自演始めたぞ
387 :
381:2013/09/10(火) 22:15:46.08
うわ、話しかけられた。腐るわ。
おれが悪かった。マルチスレッドは簡単。.netのバージョンにもCPUにも依存しない。
だからこれ以上、荒らさないでくれ。
知ったか君、自演はもういいから。
まだまだ、これからだ
メモリモデルがCPUに依存することがどんだけ悔しかったんだよ?w
393 :
381:2013/09/10(火) 22:23:57.99
さすがに俺は違うw
>>393 バレバレの自演いつまで続けんだ? 荒らしてんじゃねーよ、チンカス。
>>70 当たり前だな。
実行単位はC#言語の単位じゃなく、CPUの命令単位だからな。
if(!lock)の後のブロックはアトミックと保証されていない。なのでifパスした直後、
ブロックに入ってlock=trueの前にスレッドの切り替えが起こる可能性がある。
初心者がよくするミスだな。
連続投稿ですか??に引っかかって出てこれないとか可愛いなww
>>396 void PrintObj() {
4. Object obj = _obj;
5. if (obj != null) {
6. Console.WriteLine(obj.ToString());
7. // May throw a NullReferenceException
8. }
これは?
>>396 lock=trueの前にスレッドの切り替えが起こったらどんなときにどんな問題が起こりえるの?
>>70のゴミコードから意図を読み取れるエスパーが登場
急遽登場(寒)
この程度でエスパーなら毎年新人PGの謎コードの問題点を指摘できないよ。
また知ったか君が釣られるwww
知った君やっと釣られたことに気づくwww
レベル低すぎて笑えるwww 知ったか君ガンバレwww
知ったか君まだ釣られたことに気づいていないwwww
void PrintObj() {
4. Object obj = _obj;
5. if (obj != null) {
6. Console.WriteLine(obj.ToString());
7. // May throw a NullReferenceException
8. }
どうみてもMSのバグです。MS技術者レベル低すぎ。
なにかターボかかってきたようだけど、誰か興奮させるようなこと言ったの?
答えれないから誤魔化しながら今必死に検索中だろw
>>410 4.0のときC#に並列化ライブラリ入れて、見直したら大量にそういうのが後から見つかったんだろうね。
.net4.0 以前でマルチスレッド使うのは避けたほうがいいね。
>>413 マジでマルチスレッド理解できてないんだなw
>>413 4.5はXPを排除するためかと思ったら違ったんだな。
WPFのバインディングって1対多もできるの?
ターゲットは普通に複数にできる
ソースの場合はMultiBinding
ありがと、しらべてみる!
ItemsSourceの話のような気もする
よく考えたら、1対多ってよりも、バインディングの切り替えって感じかなぁ。
複数のTabItem上のプロパティ値を、ソースにしたいんだけど、
(タブの切り替えに対応するように)
ちょっと複雑になりそうですね。
結局、Selected Changeイベントに書いたほうが見通しはよさそうですね。
マウスポインタの下にあるコントロールを取得する
または
あるコントロール上にマウスポインタがある
のどちらかを取得する方法があれば教えてください。
[DllImport( "user32.dll" )]
static extern IntPtr WindowFromPoint( System.Drawing.Point Point );
...
IntPtr hwnd = WindowFromPoint( Control.MousePosition );
Control ctrl = Control.FromHandle( hwnd );
if( ctrl != null ){
...
}
天才か
C#を基礎から学びたいんですがこの1冊読めっていうのおしえて
本を読んでも学べませんよ
ネットで検索する方法学べる本よめ
427 :
デフォルトの名無しさん:2013/09/11(水) 12:49:04.35
AがBを保有していてBのメンバー変数に変更があったかどうか知りたいのですが、
BにIsModifiedプロパティを作るよりもっとエレガントな方法を教えて下さい
class A a = new A();
a.MenberChanged += (sender, e) =>
{
MessageBox.Show("変更ありました");
};
429 :
427:2013/09/11(水) 12:59:00.51
BにMemberChangedイベントを作ってAが登録ですよね?
Bはメンバーが変更される度にイベントを呼び出す
イベント登録とか難しいことは無しでお願いします
class B
{
public event EventHandler MemberChanged;
public int MyProperty
{
get{...}
set{...
if( this.MemberChanged != null )
{
this.MemberChanged( this, EventArgs.Empty );
}
}
}
}
class A
{
B b;
public A()
{
b = new B();
b.MemberChanged += new EventHandler( b_MemberChanged );
}
private void b_MemberChanged( object sender, EventArgs e )
{
// Bのメンバー変数に変更があった
}
}
>>429 面倒な奴だなIsModifiedプロパティ作っとけよ
IsModified
確認したらfalseに戻しといて下さい
ダッサw
>>432 Saveまでの間フラグ立てといて、saveしたらリセット。よくある方法だろjk
>>424 そりゃ、くめい先生の名著、猫でもわかるシリーズは、はずせないねえ
読んでわかるかどうかは、知らんよ
この本の利点は、なんせ10時間もあれば読めるので、
すぐ元を取れるってことさ
>>426 これ
今の時代ぐぐれないんじゃプログラミングできない。そんな低レベルな質問聞くよりもググったほうがはやいよ
436 :
427:2013/09/11(水) 17:17:32.33
>>432-433 それはBが複数のAから参照されてたら破綻しませんか?
A1 --> B
A2 --> B
結局うまい方法がない気がします
437 :
デフォルトの名無しさん:2013/09/11(水) 17:23:49.35
lockとCPUについて
>>436 なぜ破綻するの?マルチスレッドなら破綻する作りにできるけど、シングルスレッドで普通に組めば破綻しないでしょ
>>436 イベントでの実装例上げてくれてるじゃん。
これが複雑でうまくないと言われると何を期待してんのか分からない。
IsModifiedも複数回の変更が無ければ破綻しないだろ。
そもそもメンバ変数の変更を把握しようという発想がおかしいと思うんだが
普通プロパティにするだろ、それだったら
逆に考えるんだ。そのメンバ変数を自分で保持しておけばいいんだよ。
>>436 そういう要件は先に出さないと。
たしかにA1がBの持つフラグをおろしちゃうとA2はその変化を知ることができない。
登録オブジェクトごとにフラグを用意する機構を考えることもできる(作ったことある)けど
イベントの方が圧倒的に簡単だわな
つまりstatic public bool IsModified〜の出番だな
いやいや、そのばあい、メンバ変数の変更とはどういう事か正確に定義しないとな
A1が0読み取り→A2が1セット→A2が0セット→A1が0読み取り
さて、A1にとってこのメンバ変数は変更されたの?
446 :
デフォルトの名無しさん:2013/09/11(水) 18:27:48.30
C#の勉強中なのですが、
htmlのコードに記述されているものを呼び出して、
そのwebページ上へ命令を出すことはできますか?
馬鹿みたいな質問ですいません
C#でjavascriptの
funcionとかを呼び出したいのです
まーたwebbrowserか
具体的に何がやりたいわけ?
まーたゲームの自動化か
また悪いツールか。
これはワルですね
>>446 c# WebBrowserで検索。できるけど面倒だから仕組みが分かるまで大変。がんばれ
ゲームでチートしようと考える時点で勉強する根性はないだろうな。
454 :
デフォルトの名無しさん:2013/09/11(水) 20:28:21.21
チートじゃなくて、サーバー管理ツールを作りたいのです(自分のサーバー)
友人に聞いたらhtml〜なんたらと言っていたのですが、
僕の勘違いかもしれません。
ゲームの管理ツールなので、ステータス等を変更できるようにしたいのです。
チートとか、不正をするとかは全くないです。
他にやり方など有りましたら 初心者の僕に教えていただければと思います。
怠惰はプログラマの美徳だろう
自分のサーバならどうやればいいのか自分でわかるだろ
自分でサーバ立てて、サーバ側で行われる処理とクライアント側で行われる処理の区別もつかんのか
VB6とC#、API使わないコード勝負でどっちがどれだけ速いですか?
C#
460 :
デフォルトの名無しさん:2013/09/11(水) 23:06:03.38
>>459 こっちではVB6のコンパイル済アンマネージドコードの方がC# JITコンパイル後コードより平均63%高速と出た
どうせVB6にできることのみでの比較だろ
そんなの意味ないんだよなぁ
VB6にできることをフルにやったらゴミしか出来ないだろ
文法的な意味で
VB6に出来る事の方が多そうな口ぶりだな
起動時のオーバーヘッドを入れるか入れないかで違ってくるな
古い遅いPCだとVB6が速い
ベンチマークは証拠示さないとMSに訴えられるよ
MSに訴えられるぞって言うと脅迫になるよ
467 :
デフォルトの名無しさん:2013/09/11(水) 23:19:55.62
VB6のVariant型の実装はC#では逆立ちしても無理?
多態性とかあってもブラックホール型には勝てない?
a = b = c
この結果がTrueとかFalseになる言語をどう理解しろと?
マルチスレッドも使えないVB6と比較なんて意味ないよなぁ
速度のこと聞かれてるのにお前らは・・・
VB6はマルチスレッドは使えるけど使い物にならない
ただ足し算や引き算が速くても意味ないんだよなぁ
速度で勝てないから話題を逸らす
>>467 objectがあるじゃないか
dynamic型として扱えばVariantと同じように使えるしVariantより速いぞ
足し算や引き算はVB6が速いってことでいいけど
それって意味あるのかな?
そんなに計算速くしたいならCでやったほうがいいし
速度がどうこう抜かすなら証拠を示せ
話はそれから
変数を宣言しただけでメモリにオブジェクトを展開するような言語仕様では勝ち目がない
勝てるとすればクラスを実装継承できることくらいか?
VB6にはListすらないしなぁ
C#はWPFを使えばグラッフィクもすごいし。
479 :
デフォルトの名無しさん:2013/09/11(水) 23:31:18.50
JavaやC#には事実上スカラー型が存在しないからな
VB6の場合は整数型 iを宣言すれば
コンパイル時の最適化でアセンブラのコードは
CPUのアキュムレータか汎用レジスタに割り当てられる
VB6はイテレーターが基本的に自作できないからダメ
でも速度が速いからって今更VB6使う?使わないよね?
Cで書くよね?
今頃VB6を持ち出す意味がわからないんだけどねぇ。
>>482 遅そうだねw
C#のListはかなり高速だからなぁ。
実装するぐらいならMS製のライブラリ使うだろ普通
速度の評価はコンパイルして実効コードにみてから
ソース見て遅そうとか速そうとかではまるで幼児レベル
まあでもVB6は使わないし比較する意味がないわw
487 :
デフォルトの名無しさん:2013/09/11(水) 23:37:47.20
VB6のソースコードを見て実行に要するCPUのクロック数を言い当てられたらある意味天才だろうに
>>479 そんなもんJavaにもC#にもあるわ
C#ではintは構造体ということになってるが、実際にはILレベルのプリミティブ型で
インスタンスメソッド呼び出しは第一引数に参照を渡すなどして偽装してるだけだ
C#ではintは構造体???
>>482 VB6を長年やった経験からこのコードは遅いのはわかる
491 :
デフォルトの名無しさん:2013/09/11(水) 23:40:08.16
構造体にしてもプリミティブ型にしてもスカラー型ではないだろうに?
俺はVB2.0からやってるからなぁ。
>>491 どうやら君の言うスカラー型という言葉は一般的な意味とは違うようだから
君の思うスカラー型とやらをまず定義してくれ
何の話だよ
495 :
デフォルトの名無しさん:2013/09/12(木) 00:05:36.56
C#出始めの頃は、formの速度が明らかに違っていた
パソコンも進化して当時のようにformの操作にストレスも感じなくなったから
速度を気にすることもないよな
>>489 正確には".NET FrameworkのInt32は構造体"ですね
JavaはintにtoString()が無く、Integerにしか無いのを知って最初驚いた
C#ではvalue typeを示すキーワードにstructを使ってしまったので混乱するが
Cの構造体とは別物と考えたほうがいい
C#でQt使ってる方いらっしゃいます?何使ってますか
>>491 VMとかCLRの上で動いてるんだから
perlのスカラーと同じようなもんだろ
C#でウィンドウを移動できないようにする方法はありますか?
ggrks
C# ウインドウが動かないようにする
503 :
デフォルトの名無しさん:2013/09/12(木) 18:52:05.82
C#のネィティブコンパイラを誰か作ってくれないかな。.netもうイヤ!
馬鹿は黙ってコーディングしとけ
なんで嫌なの?馬鹿なの?死ぬの?
monoのAOTでも使っとけ
馬鹿は死ね
速度求めるならunsafeコンテキスト使えや
しねしねしねしね
510 :
デフォルトの名無しさん:2013/09/12(木) 22:25:52.41
アンマネージリソースをラップして適切にIDisposableを実装したクラスはマネージドクラスに分類してよいのでしょうか?
当たり前です
自作アプリケーション内にWebBrowserのコントロールを入れています。
そのフォームから出力される音量をコントロールしたいです。
ググってみたところwinmm.dllもしくはCoreAudioAPIを叩く感じかなと思ったのですが…
そもそもそのアプリケーションのみの音量の変更およびミュートなどは可能なのでしょうか?
無論
XPまでの方法で音量を変更しようとすると、自身のプロセスしか音量変更できないようにされるしね
>>514 そうなのですか…
winmm.dllであったwaveOutSetVolumeを使って変更すると自身のプロセスのwave音量のみ変更されるといった感じでしょうか?
516 :
デフォルトの名無しさん:2013/09/12(木) 23:19:09.33
>>511 いいわけがないでしょうに?
Windowsを強制終了する可能性のあるアンマネージドを
適切にIDisposableを実装したからと言ってアンマネージドの性質を持つわけがないのです
願わくばさらなる精進を
ということはwinformsはアンマネージということだね。
アンマネージドOSの上で動いてるから当然だな
不思議なことにIDisposable実装クラスはMSはマネージドと言ってるんだよね。
ガベコレがそのうち回収するならマネージド
そうでないならアンマネージド
簡単だろ?
無知が誇らしげに何を言うかと思ったらゴミ拾いの話か
結局どっちやねん。
狭義
unmanaged.dll ←アンマネージド
class UnmanagedWrap ←マネージド
広義
class UnmanagedWrap ←アンマネージド
マネージクラスでアンマネージリソースを扱ってるだけ
中で何してようがC#で定義したクラスはマネージクラスだし
どう上手にラップしようがアンマネージリソースはアンマネージリソース
慣用的に使われるのとは違うかも知れないがCLRではこういう分け方になる
managed ILのコード
safe managedのうち検証可能のもの
unsafe managedのうち検証不可のもの
unmanaged IL以外(ネイティブコード)
mixed C++/CLIで生成可能なmanaged/unmanagedが混ざったコード
※P/Invokeを使ってwin32apiを呼び出していてもmanagedとなる。
ほうほう
529 :
デフォルトの名無しさん:2013/09/13(金) 16:05:53.28
かっこいいGUIとか海外製のプログラムとかよく見かけるのですが、
どう作っているのでしょうか?
専門的に作るものでもあるのでしょうか
教えてください。
プログラミングスキルよりもデザインセンス(ボタンの作成能力や素材の収集能力、それを活かすセンス)が必要
例えばhtmlでカッコイイの作れなきゃC#でも作れない
かっこいいGUIのソフトって使いにくい
かっこよく作れなかったら泥臭さで勝負
俺の作るソフトはみな10年選手
もう使わないで!と言ってるのに使い続けられる
なぜなんだろう?
俺もIE6用のプラグイン公開してたことあるがいまだに使ってる奴いるなw
オサレセンスから磨かないとな
オシャレ=使いくいなんてとっくにみんな知ってる。
ユーザーからWPFが嫌われてるのが証左。
WPFで流行りのシンプルなの作ればいい
シンプルすぎてボタンがボタンかどうかホバーかクリックしてみないと分らない使いにくさだよ。
美人は三日見ると飽きるがブスは三日見ると慣れるという事だな
リンクだと思ってクリックしたらただの強調表示でしたみたいな。イラってくるよな。
HTML風のリンクなのにマウスカーソル変わらないのも腹立つな
メニュー項目がグレーになってるのが
液晶の角度で見分けがつかない時のイライラと来たら
IE10のタブが腹が立つ。
タブ切り替えようとタブにマウスカーソルを移した瞬間、閉じるボタンが出現して、そのまま押してしまう。
こんな嫌がらせUI考えた奴はほんと馬鹿。
IEなんてWebの開発者と情弱しか使わんだろ
日本の家電はサムスンとか関係なしに高い無駄だらけ必要な機能がないダサいから売れないんだよね
会社にIEを使う苦痛を強いられてる
WindowクラスのプロパティをBindingしたいんだけど。。。
別クラスでINotifyPropertyChangedを継承ってサンプルはみつかったんだけど、
もっとシンプルに別クラスをつくらないでやる方法ないかな?
C#はLinqあたりから、記述の略がいろいろあって、Web毎に表記が違ってわかりにくい!
こんな感じでできたらうれしい
XAML
<TextBox Name="textBox1" Text="{Binding Path=Sample}" />
CS
public partial class MainWindow : Window
{
public string Sample {get; set;}
public MainWindow()
{
InitializeComponent();
これでSampleを変更したら、<TextBox> が変化するようになるといいんだけど、できなかった。。。
>>546 DataContextにthisを代入しろ
あと、普通のプロパティだとプロパティの値を変えても反映されないので
Windowの派生クラスなら依存関係プロパティとして定義する
>Windowsフォームアプリを作成する
なのに?!
550 :
546:2013/09/14(土) 10:51:59.03
547>>さんのアドバイスを参考に、こんな風に書いた。
とりあえず、うごいた!ありがとう!
XAML
<TextBox Name="textBox1" Text="{Binding Path=SampleText}">
CS
public partial class MainWindow : Window
{
public static readonly DependencyProperty SampleTextProperty = DependencyProperty.Register("SampleText", typeof(string), typeof(MainWindow));
public string SampleText
{
get { return (string)GetValue(SampleTextProperty); }
set { SetValue(SampleTextProperty, value); }
}
public MainWindow()
{
InitializeComponent();
textBox1.DataContext = this;
あとは、SampleTextを変更すれば自動で表示しました。
Bindingなんとなく理解だけど、いくつか不明点も!
2つのコントロールに同じ値いれるには、DataContextをもっと上流のタグ(2つのコントロールの共通の上流のタグ)
にすれば表示はできたんだけど、最初から、Windowタグの1個下のGridとかにDataContextしておくもの?
それとも、最小の範囲でやっておくのが流儀?
C#信者の布教活動がうざい。
他のObjectContextインスタンスで更新されたSQL server CEの変更通知を
ObjectContextか他の手段で受け取る方法はないでしょうか?
>>550 DataContextは必要な範囲で指定する
例えばウィンドウ内にグループボックスがあって、その中に社員情報を編集するためのテキストボックスがまとまって入っている場合、
グループボックスのDataContextに社員オブジェクトを代入する
MVVMならビュー全体とバインド対象を一対一で対応させるのでウィンドウのルートのDataContextにVMを入れる
ちなみにDataContext=thisは普通やらない
自分自身にバインドしたいならマークアップ拡張のRelativeSource.Selfを使う
>>553 いやすまんテキストボックスならSelfは無理だな
ともかくバインディングソースを明示的にXAML内で指定すればいい
555 :
デフォルトの名無しさん:2013/09/15(日) 13:11:50.73
なぜMicrosoftは.NETのHTMLパーサを作らないのですか?
特にメリットがないから
それに今時は動的なページが多いのでパーサはブラウザとセットじゃないと使いものにならない
>>557 僕はエロサイトから本当に必要な情報だけを抜き出して軽量化しローカルエリアのDBに保存したいのです
このような処理にブラウザは必要ないはずです
勝手にSGMLパーサーでも使いたまえ
その手のは真面目に構文解析しなくても正規表現でだいたい十分
xml準拠にしなかった規格屋がバカなだけ
これが人類の発展を五年は遅らせた
webbrowserコンポーネントを使えばいいだけ
C#のソース上からLOAD DATA INFILE構文は使用可能でしょうか?
また、使用できる場合、戻り値等は取得できるのでしょうか?
C#でWebアプリケーション開発ってメジャーですか?
勉強するならC#やりたいんですけど一番やりたいことがWebアプリケーションの開発なので
CGIでメジャーで導入も簡単で無難なPythonにしようかなと迷っています
まだよく調べてないのですがWindowsサーバは本番環境じゃ用意できないので
Linux+Apache+Mono(mod_mono?)あたりで開発しようと思ってます
ASP.NET+C#は商用だと強いけど趣味レベルではほとんど使われてない
566 :
564:2013/09/15(日) 15:29:54.88
やっぱそうですよねーうーん困ったなぁ・・・
C#は先端っぽくて色々おもしろそうで
次新しい言語覚えるときに確実に役立つと思うのですけど
目的が目的なので無難にPython行ってきます
趣味レベルのだとフリーの拾ってきてカスタマイズするだけだろ
趣味でもVB.NETC#ASP.NETでいいよ
Office連携とか楽だし実用的
メジャーで無難というならPHPだろ
PythonなんてWebには日本じゃほとんど使われてないぞ
ASP.NETなんて先端どころか土方中の土方だよ
せめてASP.NET MVCの方
571 :
564:2013/09/15(日) 16:02:54.05
皆さんレスありがとうございます
>>569 PHPはちょっと学習には向かない気がするので・・・
Pythonはドキュメントが心配でしたが割りと日本語のも揃ってるみたいなのでなんとかなるかなと
英語読めないとだめだとかこの世界だと言われちゃいますけどね
ASP.NET MVC Framework調べてみました
こっちのほうが自分にはしっくりきそうです
やっぱいじってみたくなったのでちょっと下調べ進めてみます
572 :
デフォルトの名無しさん:2013/09/15(日) 16:46:36.38
573 :
デフォルトの名無しさん:2013/09/15(日) 16:47:58.24
>>564 MonoとServiceStackが面白い
大至急やれ
574 :
564:2013/09/15(日) 17:07:36.75
>>573 これまたよさそうなのを紹介していただきありがとうございます
ドメイン駆動設計という言葉は知らなかったのでこれまた興味をそそられます
>>563をご存じな方はいらっしゃいませんかね・・・。
>>575 よく知らんが、できるだろ
質問が説明不足なところ見るとおまえも分かってないみたいだからおまえにはできないと思うが
とりあえずConnector .NETでも使ってみたら
WPFでマウスWheelのイベント拾いたいのだけど。
RoutedCommandでCommandBindings.Addのやり方だと、
ExecutedRoutedEventArgsでe.Deltaの値がこない。。。
MouseWheelイベントでの方法は、textBoxをReadOnlyにしてる
ので、イベントが拾えから使えないのです。
ReadOnlyのTextBoxからMouseWheelEventArgsが取得できる方法、
もしくは、Deltaの値が取得するにはどうすればいいのでしょうか?
C#でクラスライブラリを作成し、VBAから呼び出して使用したくて調べているのですが、
COM相互運用機能なるものでレジストリに登録せずに
単純にaccessまたはexcelファイルと同じディレクトリにコピーするだけで使用する方法はありますでしょうか?
いまあるパズルゲームの対戦用AIを作っているのですが、
手の先読みをしようと再帰関数を使ったところ、
スタックオーバーフローが出ました。
ループで置き換えようにも、再帰関数の中で複数回その関数を呼び出しているため
(具体的には関数の戻り値の和をfor文で出してその結果を使って演算しています。)
解決策が見つかりそうになりません。
どうしたらいいでしょうか?
>>580 再帰はそういうことになるから使わないでほかの方法で実装し直す。もしくは再帰回数を強制的に制限かける
>>579 ややこしいこと考えるよりexeにしてテキストファイルを経由すればいい
>>580 var stack = new Stack<T>();
stack.Push(最初の引数);
while (0 < stack.Count) {
var arg = stack.Pop(); // 引数を取り出す
… // 引数を使ってなんか処理する
stack.Push(再帰呼び出しの引数); //再帰呼び出しの代わり
}
で機械的に置き換えられる
場当たり的にはeditbin /STACKでスタックサイズを拡張すればいい
スタックはスレッドごとに作られるからスレッドを分けることでも全体量は増やせる
それでも駄目で、あなたが自分は無能を自称するなら諦めるしかあるまい
>>582を補足
最後のstack.Pushは再帰呼び出しが必要な場合だけな
当たり前だが無条件に呼んだら無限ループするぞ
>>581,
>>582,
>>584さんありがとうございます。
繰り返しになるかもですが、一回の再帰ループの中で複数回関数を使っているので
繰り返し回数が対数的になり、単純なループでは求まらないと思います。
誰かアイデアください。
ちなみに複数回というのは平均して30回程度です。
知らんがな
アルゴリズムを工夫しろ、以上のことが聞きたいなら処理内容を晒せ
よく事務所にこういう個人の発明オタクが来るわ
内容は教えられないけど特許の事務手続きして欲しいって奴
無茶言うな
アイデアって582より基本的なものあんの?
>>579 普通にC#でDLLを作成してExcelからDLLと関数を指定して呼び出せばよい。
>>579 無いね
RegAsmでレジストリ登録する必要がある
>>591 Excelは普通にDLL呼べる。COMじゃなくてもいいよ。
VBA実行時にCOM登録、終了時に登録解除
>>579 manifestを駆使すれば出来るがおすすめしない。
.NETのCOMコンポーネントにアセンブリマニフェストを
リソースとして埋め込む必要がある。
呼び出し元のWin32アプリにアプリケーションマニフェストを
埋め込むか外付けで記述する必要がある。
Excelを管理者権限で起動させなきゃだね
柔軟性がねえなあw
>>594 気になるのでヒントだけでも欲しいのですが
すいません、スレッドについて質問です。
ボタンを押す度にHttpWebRequestでウェブにアクセスして情報を取得する、ということがやりたいのですが
GetResponse();で情報が返ってくるまでの間にメインスレッドが停止してしまいます。
BeginGetResponseを使うと非同期で取得できるようなのですが、
DNS名前解決他でブロッキングされるらしく面倒なのでスレッドを使おうと思ってます。
で、以下のような流れを考えたんですが、どこかおかしなところありますでしょうか。
ちなみにスレッドAで得た情報を続けざまにスレッドBで処理させる予定です。
ボタンを押す→スレッドA作成→スレッドA内でウェブ情報取得→スレッドA終了直前にスレッド内からスレッドBを立てる→
スレッドBからスレッドAを削除→スレッドAが取得した情報をグローバル変数でスレッドBが取得→
スレッドB、処理した情報をメインの関数を呼んだりして渡す→
スレッドB終了前に自分自身でスレッドBを削除
負荷をかけないようにスレッドは使う時だけ生成して終わったら削除するという流れにしたいんですが
なんかおかしなことをしようとしてる気がしてなりません…
ちなみにunityというソフトのスクリプト部分で使うのでtaskとかは使えませんでした(対応してない?)
>>582,590,591,594
AccessMDBを操作するのにC++でやるよりC#でADO.netを使った方が簡単だと思ったのですが
やっぱり簡単にはいかないですね…
manifestを駆使する方法のページを見てきましたが
594さんの言うとおり、なにやらややこしそうなので素直にexeにしたいと思います。
皆さん回答ありがとうございました。
>>599 そうだね
VB.NETスレも見てるんだけど今64bit版Office使ってるって人が来てて、
Office=32bitって認識も古いんだと感じてたところだよ
>>598 スレッドは削除しなくてもいい
処理が終わって参照がなくなればGC対象になる
スレッドプール使ってスレッド終了時コールバックとか使えばいいんじゃない
>>599 ってかクラスライブラリをDLLにしたくない理由でもあるの?
AccessMDBってVBAからそのままアクセスでき・・・
exeでできるんならその方がいいでしょ
簡単、安全確実、管理もしやすい
COMの登録が必要とか言ってる馬鹿がいるから話がおかしくなって勘違いした模様。
>>601 なるほど、自動的に破棄されるんですね、
ではスレッド生成する際に、前のスレッドがnullになってるかどうか確認してから生成した方がいいですね
スレッドプールとコールバックのあたりをもうちょっと調べてみます!
プロセスを中間ファイルで繋ぐCOBOL時代からの伝統的なやり方はなんだかんだ言って優れてるよね
個々がいくらウンコだろうとテストもデバッグも差し替えも一定以上に困難にはならないという、まさにドカタ向きの素晴らしい手法
そうやって年金DBはゴミデータだらけになりましたとさ。
>>600 64bit版Officeですか!
私の周りではまだ聞いたこともないですw
>>602 まだまだ初心者で知識不足な部分が多いのですが
クラスライブラリ=DLLだと認識してたのですが違うんですか!?
>>603 確かにそうですね
Officeのバージョンが人によって様々な場合に古いバージョンでも
新しいOfficeの形式を扱って処理をさせたいので、ADO.netで対応できないかなと思っていました
全部VBAでやろうかと思ったのですが、処理速度の関係もあって
一部DLL化しようと思ったのですが、調べてみるとレジストリうんぬんという事だったのでこちらで質問させていただきました。
>>605 すみません私も登録が必要なのだと思っていました…
コンソールアプリでWebClient.DownloadString()を使って
ファイルをダウンロードしているのですが、例外をtry catchで捕まえているのに
標準エラー出力にエラーメッセージが勝手に出力されてしまいます
これを抑止する方法を教えてください
2> で標準エラー出力をリダイレクトして潰すのではなく、出力そのものを抑止したいです
追記です
自前で標準エラー出力に出すものもあるので、標準エラー出力を完全に潰すのは困ります
Releaseビルドにしたら出なくなるとか?
>>610 それ使ったこと無いから知らないけど、どっかからコピペしてきたソースで実はそこに出力するのがあるとか?
そうじゃなけくそれが勝手に標準出力するなら、それ使うのやめてほかの方法でDLすればいいと思う
すみません、全部自分のミスでした… この質問はなかったことに…
質問です。
C#プロジェクトからC++/CLIクラスを呼びたいのですが、
空のCLRプロジェクトで作ったクラスはどうやって呼び出したら良いのでしょうか?
名前空間が見つかりませんというエラーが発生します。
参照の追加でビルドしたC++のDLL追加
もしくはソリューションにC++のプロジェクト追加してから、参照の追加でそのプロジェクト追加
>>582 exeにしてテキスト経由って具体的にどういう事ですか?
>>618 VBAからEXE呼ぶ→EXE内でDB参照して結果をtxtファイルに書き出す→VBAからtxtファイルを読み込んで結果を受け取る
xmlファイルがいいよ
webサービス化もいいよ
exeもdllも要らなくなる
もうScript#とScript Controlを組み合わせればいいんじゃね?
VBAからパワーシェル呼び出して気持ちよくなろう
あるwebページの中に別ドメインのiframeが存在するページがあります。
そのiframeで表示されているwebページの要素にアクセスしたいのですが
HRESULT からの例外: 0x80070005 (E_ACCESSDENIED)
という感じでアクセスが拒否されてしまいました。
セキュリティの問題なんだろうと思いますが、セキュリティレベルが低下してでもアクセスを行いたい場合はどうすればいいのでしょうか?
Windows7+C#でソフトを作っているのですが
ウィンドウを透過するために
DwmEnableBlurBehindWindowAPIを使ってしました。
特に問題なく動いていたのですがWindows8を購入して
そちらで動かそうと思ったところ表示が乱れてしまいました。
どうもWindows8ではエアログラスというのが廃止になったので
その影響のようなのですが、何か変わりになる方法はないものでしょうか。
>>625 解決策は載ってませんね…
ぐぐったら
IInternetSecurityManagerのGetSecurityIdをオーバーライド
とありましたが、どのようなものなのでしょうか…
Foreach がある時点でオワタ
629 :
デフォルトの名無しさん:2013/09/18(水) 10:41:16.62
VB並みに便利だけどね
For Each
Next
ひょえーーーっ!
Foreach いかんのか
もしかして全部LINQでかく時代なのか
Foreachは便利すぎる
これに慣れてC++に戻れなくなる自分が怖いw
C++にだってイテレータあるだろ
auto使えるならコードの手間もそこまで大きくないし
強引な主張だな
Foreachは4.0→4.5で動作が変わったな
kwsk
多分Asyncとyield returnの絡みではないかと
>>635 4.5使ったこと無いけど、計算結果変わるの?
普通は変化なし
非同期のプログラムで変化あり
>>635 クロージャの動作だね
var data = new int [] { 0,1,2,3,4,5,6,7,8,9 };
Action f2 = null;
foreach (int i in data) {
f2 += () => Console.WriteLine(i); // C#5 0から9, C#4以前 すべて9
}
f2();
おれには読めない文法だからどうでもいいや。
>>640 あ、これですこれです
結構大きな変更だと思うので気をつけないと
うむ。読めない
いや難しくはなくね?
マルチキャストの話だよな
移植性を気にするならこれで
foreach (int i in data) {
int j = i;
f2 += () => Console.WriteLine(j); // 0から9
for文でええんや
ワロタw
M$が「これはエラッタです」と発言しそう
だから4.5は4.0を上書きしちゃうんだろうな
7は3.5だし8は4.5だし、もしかして4.0っていらない子?
あえて4.0を選択する理由無くなったかな?
4.5が入ってれば4.0だろうと4.5で動くんだからどっちでもいいでしょ
プログラミングC# 第6版って本で勉強してるんですけど、挫けそうです
この本って初心者にはきついですかね
COM相互運用したい時はEnterpriseServicesを使うのがセオリーなんですか?
COM相互運用といってもどういうシチュエーションなのか
自分で書いたクラスをCOMに公開したいならComVisibleAttributeをtrueにしてregasmだし
>>653 WEB鯖のレガシASPからアプリ鯖に登録したCOMサーバをリモート呼び出ししてる
このアプリ鯖を.NETに更新したい
>>651 プログラミングしたいなら本なんて捨てちまえ。読書したいってなら何度も読め
なぜ分かる機能だけで組み始めようと思わないのかね?
本を読むのはある程度C#で組めるようになって俺って一人前ジャン
と思った頃読んで、その言語仕様の深さを垣間見て
一層精進するためのものなんだけどね。
本ってすぐ内容が陳腐化するし
古い本はKindleで無料配布してよね
語り継ぐに値する本だけ読んでりゃいいよ
>>655 まじか
なんか何でも本から始める癖があってなあ
ネットで勉強した方がましなんかね
まあ一つ言えるのは、プログラミングに年齢の序列は無いと言う事かな
もうかれこれC#を10年近く使って来ているが
最近、17歳のガキのコーディングを見て目から鱗が落ちる思いだった
まだこんなテクが残されていたのか!うわーーーっ秀逸!エクセレントォ〜!!!
と叫んでしまうような技が満載だった。
やはり、自分の世界に閉じこもらずに年齢に関係なく色々なプログラマーのコードを見る
これが言語習得の一番の早道かもしれないと思ったわ
まだこんなテクが残されていたのか!うわーーーっ秀逸!エクセレントォ〜!!!
と叫んでしまうような技が満載だった。
わらた
/ ̄ ̄ ̄ ̄\
/;;:: ヽ
|;;:: ィ●ァ ;;ヽ
l;;::ィ●ァ ::;;ヽ
ヽ;;:: c{ う :::;;l
ヽ;;::;; __/ ::;;;|
ヽ;;::;;: ー ::;;丿
\;;:: ::;;/
l;;:: ::;;|
r ヽヽ::::::|ヽ`ー'´,1ー:::::ヽ、
{ V:::::::::∨yヽ/::::::::::/,1
|ノ''::"::::::::::ヽ/::::::::::: r" /
/:::::::::::::::::::::::::::::::::::::::::::`:y ゝ
{:::::::::::::::::::::::::::::::::::::::::::::::::} |
ゝ:::::::::::::::::::::::::::::::::::::::::::丿/
`|1::ー'::::::::::::、:::::__,.ィ' 」"
/::::::::::::::::::::::::::::::::/ /
,.ゝ:::::::::::::::::::::::::::::::/ ノ
/::::::::::::::::::::::::::::::::::ヽ/
/"''ー―-----―'''"ヽ、
/ / i! | | ヽ ヽ,
/ / | | ヽ ヽ、 ヽ.
/ i | ヽ ヽ ヽ、 ,ゝ
| | ヽ ヽ ヽ _,ゝ"
|__|__,.-|_,.-+─┴‐'",.入
| ____ | ヽ_,.-‐''" ヽ
グレート!ワオ!なコードを書いてると、業績不振になるから注意な。
エクセレントォ〜!!! なコードうp
foreach (int i in data) {
int j = i;
f2 += () => Console.WriteLine(j); // 0から9
669 :
デフォルトの名無しさん:2013/09/19(木) 11:00:10.77
以下のようにメソッドの前に[]が付いているコードがあるのですが
この処理はなんと呼びますか?すみません買った入門書に載ってなくて…
[something()]
public static bool methodName()
{
...
}
属性
ありがとうございます!
C#はJavaと違って自分とこのWindowsとの親和性を上げるために
いろいろ工夫してあるからな
名前とIDのペアのようなクラスのリストを定数として持ち、
プログラム内とListview bindingでの利用を考えています
しかし、C#だとクラスを定数として作成できないとのことなので、
何か別の手段が提供されているのでしょうか
AppConfigに分離して起動時に読み込み、というのを考えたのですが、
データの変更がまず無いことと量が多いことからファイルのからの
読み込みではなくコンパイル時に生成されるのが希望です
なんじゃそりゃ
リソースにでも持ったら
constあるじゃん。
classにする意味がわからん
その使い方ならconstで十分だな。
クラスのリストを「定数」と言ってる時点でアホっぽい。
初心者スレなんだぞw
ほんまよ
まあ1週間前にプログラミング始めてC#やってる俺としては、そもそも何言ってるか分からんがな!
そもそもconstにしたいのかグローバルにしたいだけなのか。
public const int[] id = { 1, 2, 3, 4, 5 };
public const string[] name = {"test1","test2","test3","test4","test5"}:
一週間もやればたいていの業務システムは組めるのが標準的プログラマ
685 :
デフォルトの名無しさん:2013/09/19(木) 20:17:10.59
bindingってことならwpfかな?それならxamlの中で
xmlを使ってデータを記述するのが一般出来です
「キーバリュー形式の外部データを使ってコンパイル時にコード生成を行いたい」ってことかな?
xmlを使うと読み込みに時間がかかるから生データ持たせたいんだろ
>>684 仕様書の文言を機械的に翻訳するだけだからね
誰にでもできる簡単な仕事
>誰にでもできる簡単な仕事
自分で出来ない事を簡単だと言い放つ人間の特徴は無責任、傲慢、嫌われ者
むしろ色々な物事を単純作業と捉えられるのはプログラマの重要な資質では
プログラミングの本質でしょ
仕様書の記述はティアー考慮してないことが多いんでそのまま組んでもゴミしかできないよ
現実を無視するのは大いにマイナスな資質だな
>>688 機械的に作れば良い位、完璧な仕様書が出てくれば、
死人でなくて済むんだがな...
機会的に作れるなら土方なんか雇わずにビルダを作るし
専用スレが無かったのでこちらで質問させてください
現在geckofxを用いたブラウザをC#で開発しているのですが、スクリーンショットがうまくいきません。
DrawToBitmapを使うと保存されたファイルが真っ白になっています。
Firefoxの場合だとShift+F2でコンソール表示、screenshotと入力すればそのままスクリーンショットが撮れていたのでその感覚でやってみたのですがだめでした。
何か方法はありませんでしょうか
696 :
695:2013/09/20(金) 01:49:32.24
申し訳ないです、自己解決しました。
GetBitmapメソッドが別に存在していることに気づき、それを使用したらキャプチャが出来ました。
>>693 機械的に扱えるような形式的仕様書を作ることはできて、一時期銀の弾丸のように持て囃されたが
作るのに大学数学の専門的な知識が必要かつ手間も膨大ってことで一瞬で廃れた
今では航空機のシステムみたいに手間を無尽蔵にかけてでも品質を優先する場所で主に使われてる
大学数学必須www
699 :
673:2013/09/20(金) 16:51:54.16
分かりにくい説明ですいません
Cで言うところの
struct Product {
char *name;
int id;
};
const struct Product AllProducts[] = {
{"AaA", 115},
{"BbB", 998},
...
};
というのがやりたいことです
Cなので構造体なのと、実際にはメンバが十数あります
以下のように起動後のインスタンス生成であれば可能なのは確認しました
class Product {
public string Name;
public int Id;
}
...
static Product[] AllProducts = new Product[]{
new Product(){ Name = "A", Id = 998},
new Product(){ Name = "B", Id = 192}
};
コンパイル時のインスタンス生成と変更不可を期待してconstを付与すると、組み込み型ではないのでエラーとなります
この場合はどのように実装するのが綺麗なのでしょうか
700 :
673:2013/09/20(金) 16:56:17.50
>>674 希望の定数インスタンスをシリアライズ化したものをリソースとして作成するものを別途作る形でしょうか
>>675 const付与するとコンパイルが通りません
>>677 DBのテーブルをプログラム内部で定数定義したいと思って下さい
>>682 要素がクラス・構造体の定数配列の作成が目的です
変更不可だけならreadonlyでいいのですが、コンパイル時のインスタンス生成(という時点で矛盾?)のやり方が知りたいところです
>>683 最初に考えました
binding用にnameを、indexはSelectedIndexを使えば実装可能ですが、あまりにもCっぽいのでC#作法を模索しているところです
>>685 XAML側でクラス定義をどうやるのか調べてみます
>>686 まさにそれです
valueにクラスか構造体を指定したいのですが、そのやりかたを模索しているとことです
>>687 その通りです
どうにもならなければマシンに頑張ってもらいます:-<
コンパイル時にマネージオブジェクトとして用意しておくのは無理
まあよほどのものじゃない限りは起動時に用意してもコスト増加にはならん
702 :
デフォルトの名無しさん:2013/09/20(金) 17:56:21.67
VS用のアドイン作れば良いんじゃないか
T4だな
ハッカー認定されたのでしょう。
Cookie要求するようになったとかRefererが変なのは弾くようにしたとかそんなんだろ
ごめんなさい、できました
焦ってしまっていろいろミスしてました
アクセス拒否だろうなw
なあんだつまんない
A denial, a denial, a denial
値型も参照型も透過的に扱うには、
どういうふうに設計するべきなの?
class XXX<T> {
T val;
void func() { val.Tfunc(); }
}
みたいにしたいのだけど。
interface使うともちろん値型で怒られるし、
int,doubleとかも使いたいからwhere T : classはダメっぽいし
clone,parseとかその辺のあったり無かったりするものを一律に使いたいのですが。
拡張メソッドでどうにかやるとかなのかね?
何言ってるのかよく分からんけど普通にinterfaceで制約すればいいような
バカ発見
>>713 欲しい機能の全てのインターフェイスを満たすような
ラッピングクラスを作るしかないのかな
それだったらコード糞長くなるけど継承でいいか
C++みたいに特殊化して楽できないってことかね?
神はdynamicを与えたもうた
Dynamic ダイクマ
>値型も参照型も透過的に扱う
これがどうかと思うが
変態的なC++の使い方をC#で使いたいならそのままC++使っとけって話だ。
テンプレートは失敗作
失敗作じゃねーよ
あれはSTLを作るために導入されたようなものだ
C#はDynamicとかExpression Treeやらで動的にいろいろできるから別方向の変態
テンプレートって所詮言葉遊びだからな
適用範囲が標準ライブラリならいいが、
おれテンプレート作られたら他人が読めない。
テンプレートとオーバーロードがからんだビルドエラーは
実行時エラーでもないのに原因箇所の特定に苦労する。
C++屋がなぜ今頃C#に乗り換えて右往左往しているのか。
cppの時代が終わったことにようやく気が付いたんだろう
729 :
デフォルトの名無しさん:2013/09/21(土) 22:12:49.58
質問ですが,指数表現で計算できるライブラリはありませんか?
var n = new Number( 6.0 , 23 );
のように,実数部と指数部を分けるようなかんじです
質問お願いします
・環境
C#、ADO.NET、SQL Server 2008 R2
・質問内容
ユーザが入力した文字列をSqlParameterを使ってインサートしてるのですが、
.NETが自動的にエスケープしてくれた場合、データベース上の文字列数は
その分(エスケープのために追加した文字?)増えるのでしょうか。
例えば列の定義として
nvarchar(100)
とした場合、ユーザの入力可能文字数を100に設定するとエスケープして増えた分の
文字列数が入らなくなり、エラーになるのかどうかが気になっています。
実験する環境がないので2ちゃんの先生達どうか教えてください。
732 :
デフォルトの名無しさん:2013/09/21(土) 22:40:51.56
>>730 ありがとうございます
イメージとしてはint型のような構造体で,
演算子をオーバーロードしてある感じでしたが…
これはこれで使えるのでありがたく頂戴いたします
>>731 エスケープしたものは格納したときには元に戻ってるから
増えた分は気にするな
そもそもクライアントが設定した通りに格納されているわけではないんだが
736 :
デフォルトの名無しさん:2013/09/22(日) 19:08:42.39
C++で他人が読めないコードを書く奴は、C#でも他人が読めないコードを書く。
ポインタの意味は分かるんだけど、「ポインタをどういう風に使えなければポインタを理解したことにならないのか」がわからなくて挫折しそう
他人が読めないってのは読む側の技量が低い場合もあるしなぁ
むしろ転職と共にCとアセンブラに退化してますわ
x86ではないけど
741 :
デフォルトの名無しさん:2013/09/22(日) 20:08:29.14
>>739 他人が読めないというより、他人が読むのを拒否りたくなるコードってあるよね
ダメなヤツってのは、プログラム言語に限らず、日本語もまともに書けなかったり。
数学の公式でもなんでも同じだよな
覚えるだけじゃ意味なし
代入して解けるだけでも意味なし
744 :
デフォルトの名無しさん:2013/09/22(日) 21:40:13.98
つていうか、ポインタが分からないってどういうこと?
なぜ分らないのか分からない人が一定数いて
こいつらがプログラマは性格が悪いとされる理由の一つを担っている
>>745 それプログラマに限らずにどこに行ってもいる
自分の欠点に盲目なヤツ
一番迷惑
>>739 保守性の高いコードってのは読む技量が低い人のことを考慮して書いたコードだよ。
ポインタはリンクリストを実装できれば理解してると思っていいと思う
ポインタがリンクや参照等のアドレス先を持ってるだけのものと違うのは
型サイズを自分で持っていてアドレス計算ができるということだぞ。
p++ しても型によってアドレスの増え方が違う。
その型を持っているのが誰かも知らないといけない
753 :
デフォルトの名無しさん:2013/09/23(月) 03:44:47.36
programmers know what they are doing
知っているのはコンパイラだよ。ポインタ自身が持ってるわけじゃないので。
そこ重要なんで。
業務系のプログラマならみなそうやがな。川俣みたいなのは嫌われる。
こうやって名前挙げるのもよくいるよな。そんな奴知らねって
カトラーみたいな奴なんてどこにでもいねーよ。
プロジェクト人員の標準レベルをどこに置くかで良いコードの定義も変わってくる
素人と大差ない新米が沢山居るならベタに冗長で非効率なコードを書いた方がいいし
全員がそれなりの技術者ならパターンなどを使い簡潔に書いた方が読みやすい
>>746 誤解されてると思うけど、教える側が「教わる側がなぜ理解できないのか」理解できないという話だぞ
プログラマの成長曲線って極端なんて感覚が共有出来てないんだよね
「理解できないことが不思議」とのたまう奴が一定数個のスレにもいるだろ
傍から見ると超不遜だよ
理解出来ないのが不思議だわ
本買って二時間くらいかけて読めば分かる内容なのにわかりませんとかふざけてる
本買って2時間とか長すぎだろ
30分で十分だわ
なんて言われようとCOBOLとJAVAは全然分りませんと言ってる。
自分が理解した経緯って結構忘れてるし、
それが相手に通じるかも分からんからね。
教えるってのは理解したとは次元の違う話だと思う。
>>763 速読スキルは誰もが持ってるわけではない
500ページ前後を30分は訓練しなきゃ無理
2時間なら標準的な大卒なら可能に
馬鹿を装わないと馬鹿の尻拭いばかりさせられる。
火消し担当にさせられるようならさっさと転職するべき。
まず本って前提がアレ
769 :
デフォルトの名無しさん:2013/09/23(月) 09:49:21.36
俺の場合、Cの前にアセンブラやっていたから
ポインタは書き方を覚えたって感覚だったな
習うより慣れろ
理系にとって文系がなぜ数学が理解できないのかほんと分らないから
馬鹿だからで片付けるなんてふつう。それを性格が悪いと言われもな。
やっぱ分らない奴が馬鹿なんだろう。
馬鹿であることが欠点なのになんで教える側の欠点になんだよ?ふざけんな。
本当に性格悪いな
出来の悪い新人が教える方が下手とか言い出したら即放置だよ
モヒカンは直裁に伝えるのが美徳なんでね。
そもそも何故わからないかなんて答えはひとつしかないんだよな
勉強してないから
それだけなのに当人でなくあまつさえ教える方に責任を押し付けようとするあたり精神が小学生で止まってるゆとり世代らしいわ
才能無い奴を篩ってやってんだよ
言わせんな恥ずかしい
わらわらと沸いて来たな
とりあえず性格悪いといわれてカチンとくるくらいの心は持ち合わせてるようだし
今後に期待してこの辺にしておくよ
こんなのきちんと教わらなくてもやってるうちになんとなく理解できるもんだからね
プログラミングを教えるのは優秀な奴でも相当難しいけど習得するのは簡単
教えるのが上手いと言われるためには文系をわかった気にさせる例え話のテクニックが大切
馬鹿ほどすぐ人格攻撃をする。
>>772 が証左。
自分が馬鹿だと認めたくないから人のせいにして安心する。
だから努力もしない。文系のよくあるパターンじゃないか。
むしろ文系の方が教えるのは上手なんだがな
古典の先生はいつも何言ってるか分らなかった。教え方が下手なんだと思う。
771によると分からない奴が馬鹿だそうだ
>>780 ITは理系の方が入りやすいから、同じ会社なら文系のほうが地頭の良い奴が多くなりやすい
772によると古典の先生の性格が悪いんだそうだ
この業界は文系のほうが有資格者率高いわな。
わからない人にわかるように教えるのも一つの才能。そういう才能がある人は教師や講師として対価を得ることができる
それができない人は別にそれでいいと思う。後輩に頼られない先輩として職人気質を通せばいいと思うよ
ITに行く理系は落ちこぼれだがITに行く文系は比較的頭良い奴だからな
同じ理屈で理系の中でも情報系じゃない方が頭良かったりするし
わからない奴って基本、分ろうとする気がない奴だからな。
教える側がなんでこいつのモチベーション管理までしなきゃいけないんだって話。
外資は理系の修士ばっかだったぞ。
>>788 何らかの理由で相手に物事を教える義務が生じた場合はモチベーション管理も義務に含まれるぞ
「後輩が理解する気がないんで後輩の知識が不十分なのは俺のせいじゃありません」なんて言ったら出世はできない
こっちのモチを下げるようなことを平気で押し付けつける会社ならさっさと転職するだけ。
理系、文系で不毛なカテゴライズして争うのはやめろ
文系ってのが現状勉強しない奴の冤罪付になっていて困るわ
ゲームやマンガばかり読んで何もスキルの無い奴を文系とは呼ばない
こんにちはマイコンというマンガを読んでプログラミングを覚えました!
>>766 そもそも速読で頭の回転まで速くなるわけじゃないからw
速読が役立つのは基本的に娯楽系の頭を使う必要がない文章だけ。
理解できないできないって言ってるのは、頭が悪いか理解する気がないだけ。努力が足りない。
理解できないのが理解できないって言ってるのは、単なるアスペ。自分基準でしか考えられないから。
って感じだと思うわ
>>787 その傾向は確かにある
ITの部分だけプログラマに置きかえればねw
まあ本当はプログラマって言ってももちろんピンキリだけども。
元の話に戻ると、ポインタ本の前橋って人が書いてる通り、少なくともCに関する限り
Cのポインタ関連の構文がうんこなだけで、ポインタの概念そのものは本来猿でも分かる話だよね。
まあその猿でも分かるはずのポインタの概念(あと再帰呼び出しとかね)の段階でつまづく人も
いるけど、そういう人はそもそもプログラマに向いてないわけで論外。
最初にCやらせるからポインタで詰まるんだよ
上にもいたけどアセンブラ先にやればいい
ポインタを理解しないといけないっていう風潮が痛い。ポインタに執着してるのは学生ぐらいだろw
>>798 そうじゃないよ。
ポインタごとき理解できないようじゃ話にならない、そういう話だから
>>795 理解できないのが理解できない人を勘違いしてるおまえがアスペ。
>>795 アスペを多用する奴はアスペだと思っていい。
馬鹿にしてるとかでなく、本当に知能が足りないのもいるから。
努力厨はこれだから困る。
死ね
このスレ定期的に荒れるNE!
まぁ、俺から見ればおまえらは平等に等しく無能だから
あんまりいがみ合うなよ(w
俺くらいになると、無能な奴らを見下したりはしないんだな
馬鹿な奴を排除したら回りに誰もいなくなるだろ(w
またマルチスレッドは簡単厨が復活してたのか。
今度はポインタは簡単って主張なの?
馬鹿が排除されるはずが俺も一緒に排除されちゃったでござる、の巻
ポインタの説明にCPUやアセンブラの説明はいらないと説教されるぞw
>>807 他人のことを心配するより、その被害妄想傾向持ちのご自分のアスペ脳の心配をしたら?
まあそれが出来ないからアスペ脳なんでしょうけど
どうでもいいけど、非同期が難しいなんていってたらストアアプリ作れないんだけどw
>>809 ポインタそのものは一応抽象的な概念だから、CPUやアセンブラの知識なんていらないよ。
ただ具体論は抽象論より理解が早いって意味で、知ってた方が話が早いだけ。
>Cにポインタが存在する理由は効率上の問題である。
>元々UNIXを記述するシステム用言語として開発されたCは、
>アセンブラに可能な操作のほぼ全てを行える必要があった。
知らない人からアスペ認定されました。
>>813 アスペ認定は知らない人からされるもの
傍目八目と言って、本人や身近な人より無関係な第三者の方が良く分かる
どうでもいいけど、非同期が難しいなんていってたらストアアプリ作れないんだけどw
4.5からAsyncが揃って非同期が作りやすくなっただろ?
>>812 だがCではそれ(インダイレクトアドレッシング)をポインタという一段抽象度が高い
概念に置き換えているわけ。
Q:なんでポインタが必要なのですか?
A:アセンブラで可能な操作のほぼ全て使えるようにするためです。
Q:なんでi++みたいな書き方するんですか? i = i + 1じゃダメなんですか?
A:アセンブラに+1だけする専用のインクリメント命令があるからです。
Q:なんで& | みたいなビット演算子があるんですか?
A:アセンブラにビット演算子命令があるからです。
Q:もうアセンブラだけでいいんじゃないですか?
A:そのとおりです。C言語はただのラッパー言語です。
じゃあアセンブラで再帰呼び出し書いてみなw
なんで再帰なんだ?
ふつうにcallしたら戻り先はpushされとるがな。
再帰の説明にCPUやアセンブラの知識なんていらないと説教されるぞ。
どうでもいいけど、再帰呼び出しが難しいなんていってたらストアアプリ作れないんだけどw
ストアアプリの承認を受けたがアウト食らった
理由はある局面で負荷が大きすぎるとか
耳を疑ったがマジ顔で言われてもうアホかと
同じロジックでのiOS版ではAppleに一発合格だったのに
これじゃStore潰れるね
再帰を使う場面がない
無限階層を掘り下げて処理するケースなんて頻繁にあるけどな
ディレクトリ処理とか
紹介者関係処理とか
ネズトイビジョンとか
どんだけ受注のレパートリーが狭い、つーか業務体系が定型化してるのか知らんが
>>825 無限に掘り下げたら停まるからそんなプログラムかかない
何階層まで降りたらスタック不足になるっていう判断は事前にもしくは動的に簡単にできるのかな?
できるなら再帰も使えるんだけど。
アセンブラだと再帰呼び出しが難しいと勘違いしてる奴がいる聞いて
今は0.1秒ルールってないのか?
>>819 汎用機とか昔のミニコンの話?
今時の CPU なら、普通に自分を呼び出すだけだろ。
フックの300msルールじゃなくて?
>>827 動的にざっくりなら、ローカル変数のアドレスの変化見ればわかるでしょ。
>>833 もうちょっと具体的に。マイコンのアセンブラだったらそれでいけるけど、C#でそんなところまでいける?
今時再帰=スタックメモリー仕様という固定概念を持ち続けてる奴がいるのな
タブレットではPushやPOPでさえ内部多重レジスタを優先使う偉大なのに
タブレットをCPUと勘違いしてる馬鹿がいると聞いて
>>835 それじゃメモリの限り無限に再帰できるの?
>>837 無限のはずないだろw
優先してアクセス速度の速い内部レジスタを使用し足りなくなったらメモリー使用だろ?
RISCでは常識だけどな
839 :
デフォルトの名無しさん:2013/09/23(月) 17:05:24.66
ARMライセンスドの9A-e5だと4096階層まで4バイトスタックレジスタを使用できるが無限には程遠い
>>838 それじゃ結局どれだけいけるか判断はどうするのさ
>>840 Riscの場合、コンパイラが確定するんじゃなかったっけ?
>>842 アドレスからスタック不足をどう予測するのはどうするのか?という問題がw
コンパイラの技術が20年前からまったく進歩してないという考えをもつ人って老害プログラマ?
今一番熱いのはJITコンパイラだろ
使い道がなかなか見つからないマルチコアCPUの有り余る性能を活かす一つの方法
846 :
デフォルトの名無しさん:2013/09/23(月) 17:19:22.39
特に.netのJITコンパイラは驚異的なコードを作るよなw
アセンブラレベルで見てる奴がどんだけいるか知らんが
>>846 最適化もすごいけどスタックに関しても浅い階層だとキャッシュを考慮したコードを吐くよな。
ランタイムのCPUの内部構造まで考慮するとか信じられない。
>>846 .net4.0でそれが裏目に出て4.5で最適化の多くが無効化され、
リプレースされたいうのはこのスレでは既出。
最近のCPUのキャッシュメモリのザイズガ異常
ここまでのまとめ
・ポインタを理解するならCPUやアセンブラしろ
・無限に再帰することは当たり前に無理
・今の時代は再帰にスタックなんか使わない
・どれだけ再帰できるかはシラネ
・タブレットはCPU
ARM厨は相変わらず酷いな。頓珍漢甚だしい。
Q:アドレスからスタック不足をどう予測するのはどうするのか?
A:デバッガでメモリウインドウを見ろ。足りないならスレッド生成時にスタックサイズを指定しろ。
No results found for "内部多重レジスタ".
ループは無限に回せる
再帰は回数制限がある
再帰はアルゴリズムを見なおしてループ化したほうがいい
856 :
デフォルトの名無しさん:2013/09/23(月) 17:43:06.99
で遅くなると。なんか再帰に関して勘違いしてる馬鹿が多いな。すべてタブレット厨?
>>856 > まんま検索するドアホ(ワロスw
内部多重レジスタ君が笑われてるんだが、ひょっとして気づいてないのか? (w
レジスタ版のmemcpyか
IPC稼ぐためでcallでstack積まないとか全然関係ないしほんと謎だ。
>内部多重レジスタ
>>831 アセンブラだと、たとえ柔軟なアドレッシングが可能なCPUであっても
高級言語でいう自動変数を可読的に書くのが難しいんだよ。
何にも知らない人みたいだから言っても伝わらないと思うけど。
C#とJavaではC#のほうが年収高いんですが
これってC#が難しいから勉強する人がいないため競争率が低いんでしょうか?
なんでここってIDでないの?
自演が捗るように
>>863 Q:なんでC言語にはpush、pop命令がないんですか?
A:あります。{ がpushで、} がpopです。
>>863 push、popは簡単だし、それに可読性がないと言われもなぁ。
単にアセンブラで書いたことないだけでしょ?
タブレット君。内部多重レジスタさんについてちゃんと説明しなさい。
>>863 スタックフレームとか知らない人?
86 なら bp, 68K なら a6 相対で十分でしょ。
masm とかはローカル変数用の構文もあったし。
そのあとの CPU はアセンブラで書いたことないからよく知らないけど、似たような機能はあるでしょ。
まあ、GCC 並みの最適化までやろうとすると、スタックフレーム作らないとか、複数の関数呼び出しの引数領域の巻き戻しをまとめてやったりするから、確かに面倒だけど、そう言うことを言いたいのか?
>>868 ごめんごめん、まんま検索〜とかでどや顔する奴久々に見たから、ついつい突っ込んじゃったよ (w
マルチスレッド簡単君ガンバレ
またCPU、アセンブラロートルの圧勝。
俺がアセンブラ使ってたときは普通の変数も自分で定義させられてたな。どこのアドレスはどの変数っ。
当然マクロなんて未対応
だって組み込み用Cだとスタック領域がちょこっとしかなくてローカル変数が定義出来なくて
全部グローバル変数でやるしかない場合もある
だからってC#で再帰使うなループで書けとか頓珍漢なこと言われてもな。
俺は再起使いまくりだなー
呼び出し回数が対数オーダーになる場合は再起でもいいけどね
O(N)はむりだわ
実際のとこどうなの?何も考えずに使いまくっていいものなの?
教科書に書かれてるのって現実には使えない内容が多いから混乱する
>>877 いや、ループで普通に書けるなら再帰なんか使うなよ...
あのな、トラブルが起きてから相談してくれ
>>881 ケースバイケース。
パフォーマンスが重要でなくリソースが十分あって(C#が動くような環境なら
これは問題ないと思うけど)より可読的になるなら積極的に再帰を使う理由になる。
あとな、このお兄さん達はフレーム問題を起こすAI
(今回も特殊な事例を持ち出して心配するべきか否か揉めてる)
だから、状況はなるべく指定した上で質問しなさい
>>883 > より可読的になるなら積極的に再帰を使う理由になる。
だから、「普通に書けるなら」って書いてあるんだが
>>885 非論理的だね。
BがAより「より○○」だとしても、Aが○○でないとは限らない。
ポインタわからんやつ馬鹿にしたら今時Cなんか使わないしとか返されたが
そいつはC#やJavaでも参照で散々やらかしてるクズだった
>高級言語でいう自動変数を可読的に書くのが難しいんだよ。
アセンデラのスタックで挫折したんだな、これ。
こんな基本で挫折したら、再帰はおろかサブルーチンの呼び出しすらままならんだろう。
やたらにCPU、アセンブラでの説明を拒否する理由はこれか。
自分の見知ったものが全てだと思ってる時点でそんな奴評価に値しない
>>881 再帰とループじゃ再帰のほうが速度速いんだけど?
ヒープとスタックじゃ速度が全然違う。
これをアセンブラで説明するとだな・・・・怒られるから止めとく
>>891 > ヒープとスタックじゃ速度が全然違う。
ヒープ?
ループにヒープは必須じゃないぞ?
>>892 人にをバカだと言うなら、どう難しいか書かないと、単なる可哀想な人になってるぞ (w
>>893 どこにローカル変数を退避させんだ?
再帰の場合はスタックに積まれる。
ループの場合は積まれないから自分でどこかに退避させないと上書きされる。
もしかして再帰アルゴリズムが何か知らない人?
>>896 アルゴリズムはなにも書いてないからローカル変数使うと限ってるわけじゃないでしょ?
たとえば、階乗の計算とかね。
ローカル変数使う場合でも、配列でスタックシミュレートすることもできるんだしね。
>配列でスタックシミュレート
再帰アルゴリズムで簡単に実装できるのになぜそこまで複雑に実装するのだ。
どんだけ再帰に恨みがあるんだ。
アセンブラ、ポインタ、スタック、再帰、おまえ挫折しまくりだな。
理解できない人を理解できないのはアスペというわけだ。
スタックなんて普通リストで作るだろ
後ろに入れて、後ろから取り出すだけ
再帰の出番なんかねーよ
お、今回の叩き会場はここか?
ここって初心者用のすれですよね?
末尾再帰の最適化はx64(64bit)向けだけ
実行時に最適化しますとかやめて、
コンパイル時にtailcallしてほしい
>>904 StackTの中で再帰してるんだ!なんてイミフなこと言い出しそうな雰囲気だったからなw
まさかとは思いますが、この「雰囲気」とは、あなたの想像上の存在にすぎないのではないでしょうか
とりあえずC#のコード書いて説明してくれ
>>898 > 再帰アルゴリズムで簡単に実装できる
>>905 じゃないけど、ひょっとしてスタックの実装に再帰が必要とか思ってる? (w
配列でスタックと書いてあるのはは、ヒープとかバカなこと書いてるから、ヒープが必要ない例としてあげてるだけだよ。
>>894-895 難しいなんて書いてないから。
「可読的に書くのが」難しいと書いてる。
教科書的な簡単なサンプルを書くだけなら誰でも書ける。
インデックス(オフセット)付きのインダイレクトアドレッシングが使えるCPUであっても
オフセットをラベルに割り当てるディレクティブとか、スタックから確保するトータルサイズを
割り当てるディレクティブとか、ルーチンの頭と最後でSPを操作するコードとか、
処理の本質と無関係の部分に手間が掛かる上に間違いを犯しやすい。
C#で上司のアルハラをやめさせるアプリを作れますか?
バックドア仕掛けといて客のシステムぶっ壊せばいい
それどころじゃなくなる
>>908 再帰アルゴリズムにはスタックが必要だと何度言ったら。
そもそもスタックする必要があるから再帰使うんだよ。
それを無理してループで書けとかもうね。
スタックのデータ構造は必要でもCLRのスタックが必要とは限らない
このスレの時間を止めるアプリは作れますかねC#で
2ch落とすのは可能なんじゃないの
918 :
デフォルトの名無しさん:2013/09/23(月) 22:41:17.21
マルチスレッド簡単君また論破されてロングパスwwwww
919 :
デフォルトの名無しさん:2013/09/23(月) 22:48:35.64
>>70 に論破された人って誰?w
自動変数はアセンブラで難しいの人?w
再帰はループで書けの人?w
タブレットのスタックは内部多重レジスタの人?w
毎回ロートルに論破されて馬鹿すぎでしょwww
920 :
デフォルトの名無しさん:2013/09/23(月) 22:50:08.54
ロングパス続けるのはよほど悔しかったんだろうな。
一人で草生やして哀れだな
>>912 > 再帰アルゴリズムにはスタックが必要だと何度言ったら。
誰もそれには反論してないと思うぞ。
俺が言ってるのは...
> ループにヒープは必須じゃないぞ?
だけなんだが。
>>922 だけと言われても再帰が必要な処理で
ヒープを使わないなら大量に面倒なコードを追加する必要がある。
しかもスタック内で収めるなら再帰が必要な処理をループ化しても無限に回せない。
>ループは無限に回せる
>再帰は回数制限がある
>再帰はアルゴリズムを見なおしてループ化したほうがいい
もう再帰をループで書く理由がなくなったね。はい論破。
void saiki()
{
nCount++;
Console.WriteLine(nCount.ToString());
saiki();
}
14212でアボン
>>923 大量に面倒?
スタックの実装が?
まあ、人によってはそうなのかもな...
とりあえず、君が「ループにヒープは必須じゃないぞ?」には、まともにレスできないことだけはわかった (w
再帰は静的に消費スタックが確定できる時以外使うなって言われた
再帰は可読性が落ちるから禁止だとさ
>>909 >オフセットをラベルに割り当てるディレクティブとか、スタックから確保するトータルサイズを
>割り当てるディレクティブとか、ルーチンの頭と最後でSPを操作するコードとか、
>処理の本質と無関係の部分に手間が掛かる上に間違いを犯しやすい。
masm なら...
main PROC NEAR
LOCAL data1:PTR SDWORD
LOCAL data2[16]:SDWORD
LOCAL daat3:DATA_TYPE
mov eax, data1
mov eax, data2[ecx*4]
...
ret
とか書けるんだが...。
もちろんローカル変数のトータルサイズの計算とか、SP の操作なんかは自動で生成 (当然、独自にも定義できるが) する。
なにか、可読性に問題あるんか?
まあアセンブラだから、間違いやすいし面倒 (=手間がかかる) とは思うが「難しい」とは思わない。
実際アセンブル出来ないコードだしな
ここまですべて自演
ここからもすべて自演
やっぱりアセンブラ必須だな。
上級者はアセンブラの会話ばっかだもんな。
ディクトリ階層が1万もあるわけないし確定しなくてもざっくりで余裕でフローしない。
デフォでスタック1MBだぞ。ファミコンの2KBのRAMですら困らなかったんだぞ。余裕、余裕。
>>928 正直MASMはやったことないw
負け惜しみだけど、そんなの構造化アセンブラの機能の範疇を超えて
MASMっていう名前の高級言語にしか見えない。
スタックで挫折したらとてもとても
俺のオツムはFIFOバッファ。1個入れたら何か忘れる。
ディレクトリツリーをループで書く?
ないでしょ!!!!
再帰は柔軟性ないんだよな
例えばボードゲームの計算する時にあるノードでの計算結果、別のノード以下の計算が不要になったという場合
ヒープにリスト確保してスタックとして使う場合は不要になったノードをリストから検索して削除するだけで済む
これを再帰でやろうとしたら面倒だしコードも少し汚くなる
既に結果は既にリストになってるので再帰で書く馬鹿はいない。
そもそも結果はリストに追加するだけスタックである必要もない。速度優先でDictionay<>使う。
手の探索はツリーなので再帰で行っても何の問題もない。深さも大したことがい。将棋でもたかが数十。
問題は莫大な数の計算結果の保存方法と保存場所。
>>941 > ノードをリストから検索して削除する
この時点で、単純なスタックはダメでしょ。
なにしたいのかちゃんと読んでないけど、再帰とリストは排他じゃないから両方使えばいいんじゃね?
944 :
デフォルトの名無しさん:2013/09/24(火) 09:25:25.27
なにこの流れwww
俺ってつくづく燃料投下の天才だと思うわwww
再帰はループ厨馬鹿すぎwwww
.netで再帰は避けるべき
Cとは違うんだから
>>934 masm はやり過ぎだけど、実際使うと便利だよ。
やっぱり、proc の入口/出口の処理は (難しくはないけど) 面倒だから。
MS-DOSからMASMが削除された時点でMASMは終わってんだよ。
IL直接書く奴が現れて一言
950 :
デフォルトの名無しさん:2013/09/24(火) 11:13:43.39
マクロアセンブラ
Z80で使ったっけな
マクロでアセンブラを構造化できることを知って目から鱗だった
しかしすぐにC言語に目を奪われたな
Turbo Cとか懐かしい
printfのライブラリがVRAM直接書きなのでMSCより重宝した
あのころにくらべたら今のVisual Studioって一体何よ?
信じらんない
元々アセンブラは構造化プログラミングに向いた言語。
どこかで見たんだが、アルゴリズム的に
ループで書ける処理はすべて再帰でも書ける。だが再帰で書ける処理すべてはループでは書けない
というのを見たことあるんだ
誰かこれ論破してくれ
再帰はスタックの自動実装
スタックが使えればループでも書ける
俺ツリー構造は再帰でしか検索ようせんわw
958 :
デフォルトの名無しさん:2013/09/24(火) 15:36:15.59
再帰で書くのが一般的だが、ループでも書けるのはクイックソートとか
クイックソート書くのは学生だけ
バブルソートしか書けない…
再帰好きなら関数型言語のスレいくといいよ
.NETつながりでF#とかどう?
関数型でも回数の上限が予想できない場合は
末尾再帰になるように気をつけるけどね
再帰をスタックつかって書き直すのか
再帰って佐伯
同じアルゴリズムを使って再帰→ループで書き直すのはただの馬鹿
VS2008です。
Windowsフォームでsplitを使おうとしたら'System.Array'に'Split'の定義が含まれておらず、型'System.Array'の最初の引数を受け付ける拡張メソッドが見つかりませんでした。usingディレクティブまたはアセンブリ参照が不足しています。と出ます。
どうすればいいのでしょうか?
配列にSplitなんて存在してないから使えない
VB6かよ?w
javascriptの可能性も
>>964 再帰はコーディングルールで禁止なんじゃね
971 :
デフォルトの名無しさん:2013/09/25(水) 10:18:41.76
再帰を使うとStoreアプリの承認でアウトになる
マジかよ。再帰厨涙目
再帰なしでどうやってディレクトリ検索やるのさ
>>973 そんなことも思いつかないのか。絶望的だな
本気で言ってんならセンスねーよ。死ね。
釣りで言ってんならいいご趣味をお持ちだな。死ね。
たとえばディレクトリツリーのファイル一覧のリストをループで書いてみて。
お前さ
ツリー
探索
スタック
キュー
深さ優先
幅優先
とかでググってくたばれ
再帰が非承認ってのは、再帰のデメリット的にありそうだし、
再帰なしでフォルダ検索なんてDirectory.EnumerateFiles使えばいいし、
どれが釣りなのか分からねーーー
質問です。
ディレクトリツリーのコンテンツ一覧のリストをループで書く方法がわかりません。
先輩に再帰は禁止だと言われたので困ってます。
>Directory.EnumerateFiles
これ中、再帰だろ、ボケ。
新手の能力者がこの場を混乱させようとしてるんだろ。
>>980 だったらTopDirectoryOnly指定にして、取得したフォルダに対して取得したい階層分だけループすりゃいいじゃん
ってか内部で再帰してるならきっとTopDirectoryOnly以外は使用禁止になってるんだろうなw
内部の再帰はおkに決まってるだろJK
986 :
デフォルトの名無しさん:2013/09/25(水) 12:34:24.95
MSすら再帰をふつうに使ってるのにおまえらときたら
しかもループで書いてみてといったら再帰使ってるライブラリ使うのはOKとかアホすぎ。
987 :
デフォルトの名無しさん:2013/09/25(水) 12:35:50.55
>>984 はい、ループでバグ仕様がでしましたよ〜
988 :
デフォルトの名無しさん:2013/09/25(水) 12:37:09.65
>>987 階層指定がバグ扱いなら取り切るまで無限ループすりゃいい。再帰よりは深く潜れるはずだぞ
990 :
デフォルトの名無しさん:2013/09/25(水) 12:41:33.73
スタッククラス使ったら出来るけど可成りメンドイな
どうもバグに気づいてないらしい。
この程度がめんどくてよく生きてられるね
別に煽りでなく純粋にそう思う
>>992 ならサクっとループで書いてみて。面倒じゃないんでしょ?
猿が人間様を試すなよw
995 :
デフォルトの名無しさん:2013/09/25(水) 12:49:14.90
>>992 EnumerateFiles で見つかるのは名前だけだろ
そんな単純なもの以外に対応させるためには使えない
EnumerateFiles 使わずに書いてみてよ
ループで書けばokとか豪語してたのに自分で書けないって・・・
マルチスレッド簡単君?
998 :
990:2013/09/25(水) 13:13:29.18
1.スタックにルートオブジェクトをプッシュする
2.ループ開始、スタックからポップする。なければ終了
3.ビンゴならリターン
4.親と判断できたら子供を全部スタックにプッシュする
5.ループで2に戻る
コーディングはいいけどデバッグまでメンドイからアルゴリズムだけ
>>997 答えが出てるのにメクラ君の間違いだろうw
>>995 割と本気で頭大丈夫ですか?
生憎医者に掛かってないから紹介はできないが
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。