■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part94
http://mevius.2ch.net/test/read.cgi/tech/1492843013/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C#, C♯, C#相談室 Part95
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7b7f-3FY0)
2017/10/17(火) 00:41:22.60ID:JxIRdCj70273デフォルトの名無しさん (ワッチョイ 152f-V35x)
2019/12/08(日) 10:25:27.96ID:pSs03yKS0 自分で途中からクソ仕様と思い始めてしまったんですが、これが標準なんですかね。
だとしたら安心して引き継げるのですが。
正直面倒くさくて直したくないorz
だとしたら安心して引き継げるのですが。
正直面倒くさくて直したくないorz
274デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 10:29:01.88ID:1rCojsjZ0275デフォルトの名無しさん (ワッチョイ 7501-V35x)
2019/12/08(日) 10:34:32.17ID:JIo60cn60276デフォルトの名無しさん (アウアウエー Sa13-zX1Z)
2019/12/08(日) 10:48:39.51ID:sqNFXMf8a277デフォルトの名無しさん (アウアウウー Saa9-GapK)
2019/12/08(日) 10:56:36.45ID:z9x/0bTQa >>272
ちょっとした吐き捨ての設定ならそれで問題ないかもしれないけど、入力の項目が多くなってアプリを開いてあの設定を保存して呼び出したいってなった時とかどうすんの?とか結局仕様と設計の問題じゃないか?
ちょっとした吐き捨ての設定ならそれで問題ないかもしれないけど、入力の項目が多くなってアプリを開いてあの設定を保存して呼び出したいってなった時とかどうすんの?とか結局仕様と設計の問題じゃないか?
278デフォルトの名無しさん (ドコグロ MM93-cb5P)
2019/12/08(日) 10:57:28.44ID:8fOog+TqM279デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 11:04:44.31ID:C3XpVZQF0 画面遷移されたら消えるの?
たまたま今回画面遷移せんの?
問題が起こりまくるから止めろと言っておく
コントロールの不正な入力を完璧にガードするのはよく知ってる奴でも結構難しいときあるし
たまたま今回画面遷移せんの?
問題が起こりまくるから止めろと言っておく
コントロールの不正な入力を完璧にガードするのはよく知ってる奴でも結構難しいときあるし
280デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 12:32:23.17ID:7KQ7NXxs0 >>271
ユーザーが設定値を変更したとき
そうやって突っ込むってことは
>設定値保持classは常に正常な値のみを保持する
って要件はないんだよね?
開始終了とか関係なくユーザーが設定した値保持するだけじゃん
mvvmとか見たこと無いの?
ユーザーが設定値を変更したとき
そうやって突っ込むってことは
>設定値保持classは常に正常な値のみを保持する
って要件はないんだよね?
開始終了とか関係なくユーザーが設定した値保持するだけじゃん
mvvmとか見たこと無いの?
281デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 12:50:54.37ID:MsET5CX00 >>280
開始に1980/01/01
終了に1980/02/01
が設定されてたとき
期間に3ヶ月って制限がかかってたときに
開始と終了に2019/09/01-2019/10/01を設定したいとするわな?
よし、じゃ、開始に2019の・・・エラー!(終了に1980/02/01が入ってるので)
じゃ、終了に2019の・・・エラー!(開始に1980/01/01が入ってるので)
詰んだじゃん
開始に1980/01/01
終了に1980/02/01
が設定されてたとき
期間に3ヶ月って制限がかかってたときに
開始と終了に2019/09/01-2019/10/01を設定したいとするわな?
よし、じゃ、開始に2019の・・・エラー!(終了に1980/02/01が入ってるので)
じゃ、終了に2019の・・・エラー!(開始に1980/01/01が入ってるので)
詰んだじゃん
282デフォルトの名無しさん (ワッチョイ 152f-V35x)
2019/12/08(日) 12:55:17.97ID:pSs03yKS0283デフォルトの名無しさん (ワッチョイ 152f-V35x)
2019/12/08(日) 12:56:57.51ID:pSs03yKS0 >>279
開始ボタンをおしても、設定入力画面は開いたままで画面遷移させてないんですよね。
開始ボタンをおしても、設定入力画面は開いたままで画面遷移させてないんですよね。
284デフォルトの名無しさん (ワッチョイ 152f-V35x)
2019/12/08(日) 12:59:14.97ID:pSs03yKS0 みなさんのお話を聞いていると、
登録ボタンを押して、変数記録クラスに画面の値を記録させるというのはクソ仕様ではなかったんですね。
ホッとしました。
登録ボタンを押して、変数記録クラスに画面の値を記録させるというのはクソ仕様ではなかったんですね。
ホッとしました。
285デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:00:29.22ID:7KQ7NXxs0 >>281
エラーになる設定に値を設定への操作を許可してりゃ詰んでないじゃんw
そもそもそういう操作を禁止するなんて話どこにあった?
ユーザーの操作は何も制限なんてする必要は無い
設定保持classが現在入力されている設定値が正常か否かだけを分かってればいい
エラーになる設定に値を設定への操作を許可してりゃ詰んでないじゃんw
そもそもそういう操作を禁止するなんて話どこにあった?
ユーザーの操作は何も制限なんてする必要は無い
設定保持classが現在入力されている設定値が正常か否かだけを分かってればいい
286デフォルトの名無しさん (ワッチョイ 152f-V35x)
2019/12/08(日) 13:00:57.18ID:pSs03yKS0 画面に入力された文字は変数記録クラスに記録させて、
変数記録クラスを参照していると、
「あれ、この変数って画面ではどこのことだっけ?」
とかなるのは自分の頭がクソ仕様ということか・・・。
変数記録クラスを参照していると、
「あれ、この変数って画面ではどこのことだっけ?」
とかなるのは自分の頭がクソ仕様ということか・・・。
287デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:04:18.68ID:7KQ7NXxs0 この理論、パスワードは8文字以上でって制限だと
1文字目を打ったタイミングでエラー出して入力ボックス消すってことか?
そんでコピペ以外で8文字以上打つことができずに詰んだってか?
そんなびっくり仕様どこにあるの?
1文字目を打ったタイミングでエラー出して入力ボックス消すってことか?
そんでコピペ以外で8文字以上打つことができずに詰んだってか?
そんなびっくり仕様どこにあるの?
288デフォルトの名無しさん (ワッチョイ 95ad-dl55)
2019/12/08(日) 13:04:22.11ID:oZbmRsqQ0 >>286
そこは間違いないな
そこは間違いないな
289デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 13:06:20.25ID:BE6HVZz80 だからワンクッション置かないと駄目だよねって話
290デフォルトの名無しさん (ワッチョイ ed5f-QX1D)
2019/12/08(日) 13:08:13.78ID:KIb7eBZ10 >>286
変数記録クラスで変数を入れておくのをプロパティにしておけば、VSの機能で参照先をすぐに探せる
変数記録クラスで変数を入れておくのをプロパティにしておけば、VSの機能で参照先をすぐに探せる
291デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 13:17:20.81ID:WI1y2v9y0292デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:26:39.13ID:7KQ7NXxs0 >>291
だからダメだったら何なの?
不正な値が入力されたらそうであることが参照するclassがわかればいいだけ
登録ボタン形式であっても登録時にチェックして正常異常を判定するのだから異常入力をユーザーに通知できるタイミングの違いでしか無い
何も詰まないのに詰むでしょ?考えて?組んだこと無いの?
って勝手に操作入力制限の要件足して突っかかってくるのやめてね
だからダメだったら何なの?
不正な値が入力されたらそうであることが参照するclassがわかればいいだけ
登録ボタン形式であっても登録時にチェックして正常異常を判定するのだから異常入力をユーザーに通知できるタイミングの違いでしか無い
何も詰まないのに詰むでしょ?考えて?組んだこと無いの?
って勝手に操作入力制限の要件足して突っかかってくるのやめてね
293デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 13:42:37.78ID:z1c2Df2S0294デフォルトの名無しさん (ワッチョイ a301-8opd)
2019/12/08(日) 13:49:38.20ID:B7mwO2xN0295デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:50:09.94ID:7KQ7NXxs0296デフォルトの名無しさん (ワッチョイ a54f-Fgt1)
2019/12/08(日) 13:53:27.09ID:rNTMaYhL0 >設定値が変更されたら即座に
>設定値管理用classに反映させればいいのでは?
これ、バリデーションとか無い場合の方がやっかいだよね。
ユーザーは10を入力したかったのに1で処理されちゃうとか。
>設定値管理用classに反映させればいいのでは?
これ、バリデーションとか無い場合の方がやっかいだよね。
ユーザーは10を入力したかったのに1で処理されちゃうとか。
297デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 13:58:30.12ID:7KQ7NXxs0 個人的に割とよくある設計だと思ってる
入力したタイミングからエラーチェックして早めにユーザーに通知できるメリットがでかい
webなんかではよく見る形式
で、そんなよくある設計を詰むよ、なんて言って初学者(かどうかわからんが)に対して無意味に敬遠させるべきでは無いと思う
入力したタイミングからエラーチェックして早めにユーザーに通知できるメリットがでかい
webなんかではよく見る形式
で、そんなよくある設計を詰むよ、なんて言って初学者(かどうかわからんが)に対して無意味に敬遠させるべきでは無いと思う
298デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:06:24.08ID:90QfBCQ40299デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:08:43.35ID:90QfBCQ40300デフォルトの名無しさん (ワッチョイ 25e7-xqEQ)
2019/12/08(日) 14:18:51.74ID:WpCL9e8A0 MVVMを持ち出してる割にVMとMがごっちゃになってるように見える
301デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:19:22.37ID:7KQ7NXxs0 >>299
何を無理だと感じているのかさっぱりわからん
from/toが範囲外になったってユーザーがそう入力してるならその値を保持するだけ
で処理に進む段階で異常値があるなら進ませない
登録ボタン形式なら異常値があるなら受け付けない
処理に進むのを実行ボタンとすれば
前者なら異常値があれば実行ボタンを無効化しておき、設定値が全て正常になったタイミングで有効化する
みたいな要件が実現しやすい
何を無理だと感じているのかさっぱりわからん
from/toが範囲外になったってユーザーがそう入力してるならその値を保持するだけ
で処理に進む段階で異常値があるなら進ませない
登録ボタン形式なら異常値があるなら受け付けない
処理に進むのを実行ボタンとすれば
前者なら異常値があれば実行ボタンを無効化しておき、設定値が全て正常になったタイミングで有効化する
みたいな要件が実現しやすい
302デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:25:09.69ID:90QfBCQ40 >>301
即時反映の話はどこいったん?
即時反映の話はどこいったん?
303デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:26:41.39ID:90QfBCQ40 さらに設定値を参照してる奴全員に異常値の対応をさせるってありえなくね?
304デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:27:36.72ID:7KQ7NXxs0305デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:28:42.21ID:7KQ7NXxs0 >>303
そんな仕様どこに書いてあった?
そんな仕様どこに書いてあった?
306デフォルトの名無しさん (ワッチョイ 9bde-aps1)
2019/12/08(日) 14:32:02.79ID:90QfBCQ40 なんかすでに議論に勝つためだけに頑張っちゃってる感じ?
307デフォルトの名無しさん (ワッチョイ a54f-Fgt1)
2019/12/08(日) 14:34:19.70ID:rNTMaYhL0 登録ボタンと実行ボタンがある前提で登録ボタンの方は無くせる、と言っているのかな?
308デフォルトの名無しさん (ブーイモ MM6b-zX1Z)
2019/12/08(日) 14:41:07.50ID:eGeBS+CxM >>299
入力中はアンダーラインを引いたりメッセージを出して通知はするが間違ってても即保存する
入力された不正な設定値を読み取る時に無視するあるいは警告を出して無視するはたまたエラーを出して失敗させる
後々設定をアプリ外から弄ることも視野に入れると読み取り時にデータの正確性を保証したほうがいい
入力中はアンダーラインを引いたりメッセージを出して通知はするが間違ってても即保存する
入力された不正な設定値を読み取る時に無視するあるいは警告を出して無視するはたまたエラーを出して失敗させる
後々設定をアプリ外から弄ることも視野に入れると読み取り時にデータの正確性を保証したほうがいい
309デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/08(日) 14:50:30.86ID:7KQ7NXxs0 UI→登録ボタンによるチェック処理→設定値保持class
UI→チェック機能を有した設定値保持class
こんだけ
前者はチェック処理で弾けば設定値保持classには異常値が入っていないことが担保できる
後者は設定値保持class自身が正常と判断してるかどうかで異常値があるかどうかを判断する
別に前者の設計が一概にダメとは思わないしこういうこともよくするが後者が詰むという理論は理解できん
UI→チェック機能を有した設定値保持class
こんだけ
前者はチェック処理で弾けば設定値保持classには異常値が入っていないことが担保できる
後者は設定値保持class自身が正常と判断してるかどうかで異常値があるかどうかを判断する
別に前者の設計が一概にダメとは思わないしこういうこともよくするが後者が詰むという理論は理解できん
310デフォルトの名無しさん (ワッチョイ a301-8opd)
2019/12/08(日) 14:51:48.07ID:B7mwO2xN0 >>272
一般的には読みやすくメンテしやすくするため
画面からの入力を処理する役割と設定値を管理する役割は別のクラスに持たせる
ただ簡単なプログラムなら画面クラスに設定値管理の役割を持たせるのでも別に構わない
他クラスから不用意に値を書き換えられないようにするのはそいうふうに設定管理クラスを作ればいいだけ
レス見る限り他のクラスの変数を
プロパティやメソッド経由せずに直接設定したり直接参照してる風に読めるんだが
もしそうなら役割ごとにクラスを分離したのに密結合してるのが一番の問題
でもブチ切れるレベルの人ならササッと書き換えるから心配する必要ないと思う
一般的には読みやすくメンテしやすくするため
画面からの入力を処理する役割と設定値を管理する役割は別のクラスに持たせる
ただ簡単なプログラムなら画面クラスに設定値管理の役割を持たせるのでも別に構わない
他クラスから不用意に値を書き換えられないようにするのはそいうふうに設定管理クラスを作ればいいだけ
レス見る限り他のクラスの変数を
プロパティやメソッド経由せずに直接設定したり直接参照してる風に読めるんだが
もしそうなら役割ごとにクラスを分離したのに密結合してるのが一番の問題
でもブチ切れるレベルの人ならササッと書き換えるから心配する必要ないと思う
311デフォルトの名無しさん (ワッチョイ 032d-Do/g)
2019/12/08(日) 15:03:31.77ID:Oblj5J3Y0 >>272
いやいや、2みたいなものは要るし、3は一番ダメだよ
問題なのはフィールドを他クラスのオブジェクトから読み書きする点で、ここをプロパティーやフレームワークの内部コマンドに置き換えたりしないと徐々にコードが酷くなっていくよ
いやいや、2みたいなものは要るし、3は一番ダメだよ
問題なのはフィールドを他クラスのオブジェクトから読み書きする点で、ここをプロパティーやフレームワークの内部コマンドに置き換えたりしないと徐々にコードが酷くなっていくよ
312デフォルトの名無しさん (ワッチョイ 45a9-hz4T)
2019/12/08(日) 17:55:31.29ID:zhe6A2K90 この一連の流れは相談か?
313デフォルトの名無しさん (ワッチョイ 95ad-dl55)
2019/12/08(日) 18:19:08.18ID:54HI4DkC0 そうだんですよ川崎さん
314デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/08(日) 18:25:13.90ID:q5OZjWUaa 正直最初の質問が結局何を質問してるんだか俺にはいまいちよく分からないんだけど、
こんな雲をつかむような話でよくレスが50も進むよねw
まず質問者が何を聞きたいと思ってるのかを明確にするのが先だと思うんだけど
こんな雲をつかむような話でよくレスが50も進むよねw
まず質問者が何を聞きたいと思ってるのかを明確にするのが先だと思うんだけど
315デフォルトの名無しさん (ワッチョイ 2301-cb5P)
2019/12/08(日) 19:25:44.35ID:h14g0YSH0316デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/08(日) 19:40:58.07ID:q5OZjWUaa317デフォルトの名無しさん (ワッチョイ 2301-cb5P)
2019/12/08(日) 20:06:20.23ID:h14g0YSH0 いや、わからないならスルーしとけよ
別にお前がわかる必要はないんだしw
別にお前がわかる必要はないんだしw
318デフォルトの名無しさん (ワッチョイ 6d17-Fgt1)
2019/12/08(日) 20:19:46.26ID:vQtEDwKW0 また昨日の続きかよ
319デフォルトの名無しさん (ワッチョイ 2301-cb5P)
2019/12/08(日) 20:37:00.33ID:h14g0YSH0 自分がわからないのは質問者のせいだ
って思い込んでる人は一定数いるからw
って思い込んでる人は一定数いるからw
320デフォルトの名無しさん (ブーイモ MM39-bVmn)
2019/12/11(水) 18:58:15.46ID:neU6iLAlM 該当クラスがどこのネイムスペースから
なのかすぐわかる方法ってない?
なのかすぐわかる方法ってない?
321デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/11(水) 19:12:17.36ID:A2ve7TTYa322デフォルトの名無しさん (ブーイモ MM39-bVmn)
2019/12/11(水) 19:16:20.62ID:neU6iLAlM323デフォルトの名無しさん (ワッチョイ 6d17-Fgt1)
2019/12/11(水) 19:22:09.23ID:3diBwqZu0 名前空間を省略せずに書けばいいだろ
324デフォルトの名無しさん (ワッチョイ 95ad-dl55)
2019/12/11(水) 19:27:51.94ID:2za+15ZK0 javaだってするだろ
325デフォルトの名無しさん (ワッチョイ 2363-Uyjt)
2019/12/11(水) 19:31:24.40ID:tBBOlHQ00 >>322
C#に限らず最近の言語はほぼIDEや高機能エディタ前提だと思うが
C#に限らず最近の言語はほぼIDEや高機能エディタ前提だと思うが
326デフォルトの名無しさん (アウアウウー Saa9-FVm2)
2019/12/11(水) 20:19:46.44ID:A2ve7TTYa >>322
ライブラリの型ならC#と一緒にググればすぐ出てくるでしょ
ライブラリの型ならC#と一緒にググればすぐ出てくるでしょ
327デフォルトの名無しさん (ワッチョイ 1563-FbR7)
2019/12/11(水) 20:25:15.92ID:EPJ4Sm/w0 vscodeすら入れられないの?
メモ帳縛りとかコンパイルもめんどいやん
てかコンパイラ単体で持ってきたの?
メモ帳縛りとかコンパイルもめんどいやん
てかコンパイラ単体で持ってきたの?
328デフォルトの名無しさん (ワッチョイ 23ad-XnaB)
2019/12/11(水) 23:25:24.84ID:fjLZq11N0 昔はviとかで普通にコーディングしてたが
今更メモ帳でコーディングする気にはなれんな
今のIDEとかもう便利すぎる
今更メモ帳でコーディングする気にはなれんな
今のIDEとかもう便利すぎる
329デフォルトの名無しさん (ワッチョイ a201-VrMI)
2019/12/12(木) 00:08:12.86ID:n05Ewb3K0 dotnet buildでいいからコンパイルは楽でしょ
330デフォルトの名無しさん (ワッチョイ e26a-xO71)
2019/12/12(木) 00:22:15.51ID:AJjh9lU00 今時viだってコーディング支援あるしね
331デフォルトの名無しさん (オッペケ Srcb-elTq)
2019/12/21(土) 08:44:14.52ID:mOkYxWI2r インデントもわざわざ打たなきゃならんでしょメモ帳・・・
332デフォルトの名無しさん (スップ Sd3f-JseX)
2019/12/21(土) 09:28:59.77ID:RVospelqd333デフォルトの名無しさん (ブーイモ MMbf-70ba)
2019/12/21(土) 09:53:05.63ID:elCUYmNmM クラウドIDE良いよ
インストール不自由でも使える
インストール不自由でも使える
334デフォルトの名無しさん (ワッチョイ 9f01-pdcM)
2019/12/21(土) 11:11:56.97ID:tKqa0Mcd0335デフォルトの名無しさん (ワッチョイ 7717-prDO)
2019/12/21(土) 12:14:55.25ID:wj7YAMPY0 メモ帳しか使えない環境だからいくら紹介しても無駄だぞ
336デフォルトの名無しさん (ササクッテロ Spcb-JQOI)
2019/12/22(日) 01:12:40.65ID:BLYFt7Uup 最初にメモ帳でC#に特化したエディタ作る
以降はそれで開発
以降はそれで開発
337デフォルトの名無しさん (ワッチョイ 5701-EwPn)
2019/12/22(日) 02:09:51.62ID:thbQEK090 C言語はC言語で書かれてると聞いたことがあるような…
最初にどう始めたかは知らない
アセンブラか他言語で始めてCに移行だとは思うが
最初にどう始めたかは知らない
アセンブラか他言語で始めてCに移行だとは思うが
338デフォルトの名無しさん (ワッチョイ b754-+Tiu)
2019/12/22(日) 05:49:50.97ID:By9IH60L0 セルフホスティングやな
339デフォルトの名無しさん (ブーイモ MMdb-gy34)
2019/12/22(日) 12:27:43.38ID:BM7u1zydM そんなことも知らないのかよ
cの場合は最初にクロスコンパイラを作るから、新しいプラットフォームでもアセンブラは不要。
て、さっきwikiで読んだ
cの場合は最初にクロスコンパイラを作るから、新しいプラットフォームでもアセンブラは不要。
て、さっきwikiで読んだ
340デフォルトの名無しさん (ワッチョイ 9f6a-prDO)
2019/12/22(日) 13:11:54.70ID:0l5I7UXk0 原初の環境では機械語直入力だ
341デフォルトの名無しさん (ワッチョイ 9f01-fd2f)
2019/12/22(日) 14:27:23.59ID:4GpMlcpo0 >>339
そのクロスコンパイラとやらはなんの言語で書かれてるんだ?
そのクロスコンパイラとやらはなんの言語で書かれてるんだ?
342デフォルトの名無しさん (ワッチョイ ff12-gy34)
2019/12/22(日) 15:28:16.06ID:la1jzM750 もちろんCだよ。
gccに関して言えば、まず、Cで書かれた自分自身のサブセットを別のCコンパイラでコンパイルしてから、自分自身のサブセットで自分自身をコンパイルする。
だから今後Cコンパイラがアセンブラで書かれる必要はまったくない。書きたければ書くのは自由だが。
なお、最初のCコンパイラはBで書かれたものとDECマシン向けのアセンブラで書かれたものがあり、Bコンパイラはすべてアセンブラで書かれていた。
僕くらい博識になるとこんなの常識だね。明日には忘れるけど
gccに関して言えば、まず、Cで書かれた自分自身のサブセットを別のCコンパイラでコンパイルしてから、自分自身のサブセットで自分自身をコンパイルする。
だから今後Cコンパイラがアセンブラで書かれる必要はまったくない。書きたければ書くのは自由だが。
なお、最初のCコンパイラはBで書かれたものとDECマシン向けのアセンブラで書かれたものがあり、Bコンパイラはすべてアセンブラで書かれていた。
僕くらい博識になるとこんなの常識だね。明日には忘れるけど
343デフォルトの名無しさん (ブーイモ MMbf-70ba)
2019/12/22(日) 15:36:37.89ID:ngCRczT7M まるでC博士だな
大したやつだ
大したやつだ
344デフォルトの名無しさん (アウアウウー Sa5b-1WEo)
2019/12/22(日) 15:38:35.28ID:sqLa+RyJa いきなりネイティブのコンパイラは無理っぽいわ。
>>342
gcc は確か C++ で記述されていたはず、C++ のサブセットなんてどんなものなんですかね?
gcc は確か C++ で記述されていたはず、C++ のサブセットなんてどんなものなんですかね?
346デフォルトの名無しさん (ワッチョイ d7ad-6AKx)
2019/12/22(日) 16:11:14.32ID:5lkZulIS0 元々はただのCだぞ
>>346
ずいぶん昔に gcc は c++ になってしまいましたよ…
ずいぶん昔に gcc は c++ になってしまいましたよ…
348デフォルトの名無しさん (アウアウカー Sa2b-6AKx)
2019/12/22(日) 16:45:16.31ID:lRvby7lea 元々はって日本語わからんのかな
349デフォルトの名無しさん (ワッチョイ 17da-UiIE)
2019/12/22(日) 16:46:38.86ID:uiOI59Hv0 昔のc++はcのコードを一旦出力してcコンパイラでバイナリを作っていたな
350デフォルトの名無しさん (ワッチョイ 9f01-fd2f)
2019/12/22(日) 17:21:58.53ID:4GpMlcpo0352デフォルトの名無しさん (ワッチョイ d7ad-6AKx)
2019/12/22(日) 18:56:50.05ID:5lkZulIS0 かわいそうに、馬鹿なのだな
353デフォルトの名無しさん (ワッチョイ 7717-prDO)
2019/12/22(日) 19:39:34.09ID:tqOBQt+/0 >>352
コテでググったら各所で問題児扱いされている奴だったわ
コテでググったら各所で問題児扱いされている奴だったわ
354デフォルトの名無しさん (ワッチョイ 9f6a-prDO)
2019/12/22(日) 21:03:00.98ID:0l5I7UXk0 >>350
よーく読んでみ
よーく読んでみ
355デフォルトの名無しさん (ワッチョイ ff12-gy34)
2019/12/22(日) 21:43:42.23ID:la1jzM750356デフォルトの名無しさん (ワッチョイ 9f01-fd2f)
2019/12/22(日) 21:55:06.63ID:4GpMlcpo0357デフォルトの名無しさん (ワッチョイ 9f6a-prDO)
2019/12/23(月) 00:11:53.87ID:GXjcw1770 だめだこいつ…w
358デフォルトの名無しさん (ドコグロ MMdf-fd2f)
2019/12/23(月) 06:44:48.06ID:AlxEeRKZM >>357
自己紹介乙ww
自己紹介乙ww
359デフォルトの名無しさん (ワッチョイ 978e-Imov)
2019/12/25(水) 16:59:22.64ID:Zg8ebJFL0 今日もつまらないことで5chは盛り上がっております
360デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 11:49:58.62ID:2UlJm9YS0 using/disposeについて確認したいんだが、
あれって厳密には「リークする」ではなくて、
「解放のタイミングが不明で、場合によっては問題が発生することもあり得る」なだけだよな?
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/using-objects
具体的にはGDI+オブジェクトのGraphicsやBrush等について、
MSDNのドキュメントもほぼusingなしで記述されているので気になっている。
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/advanced/how-to-draw-a-line-filled-with-a-texture
一応、using使えということになっていたはずだが?
そこで色々ググって見ると、どうやら以下のようだが、あってるか?
・try-catch で finally にdisposeが入ってなかったとき、(≒つまりusing使わなかったとき)にも、
例外が発生したその時のリソースも、参照が切れ次第、いつかはGCによって回収される。
・GDI+リソースはシステムリソースで、場合によっては枯渇するから、作法としては不要になり次第解放すべき。
・とはいえ32bit化でこの辺の問題は大幅に緩和され、GDI+はプロセス毎の上限は10,000になってる。
だから余程酷いことをしない限りこれに引っかかることはない。
結果、作法としては正しいがほぼ命中しない問題に関して一々using使うのもウザイ、
ということでMSDNのドキュメントがusing無しになってる、ということで合ってるかな?
(なお関係ないとは思うが俺が使っているのはVC++/CLIとForms)
あれって厳密には「リークする」ではなくて、
「解放のタイミングが不明で、場合によっては問題が発生することもあり得る」なだけだよな?
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/using-objects
具体的にはGDI+オブジェクトのGraphicsやBrush等について、
MSDNのドキュメントもほぼusingなしで記述されているので気になっている。
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/advanced/how-to-draw-a-line-filled-with-a-texture
一応、using使えということになっていたはずだが?
そこで色々ググって見ると、どうやら以下のようだが、あってるか?
・try-catch で finally にdisposeが入ってなかったとき、(≒つまりusing使わなかったとき)にも、
例外が発生したその時のリソースも、参照が切れ次第、いつかはGCによって回収される。
・GDI+リソースはシステムリソースで、場合によっては枯渇するから、作法としては不要になり次第解放すべき。
・とはいえ32bit化でこの辺の問題は大幅に緩和され、GDI+はプロセス毎の上限は10,000になってる。
だから余程酷いことをしない限りこれに引っかかることはない。
結果、作法としては正しいがほぼ命中しない問題に関して一々using使うのもウザイ、
ということでMSDNのドキュメントがusing無しになってる、ということで合ってるかな?
(なお関係ないとは思うが俺が使っているのはVC++/CLIとForms)
361デフォルトの名無しさん (ワッチョイ dc2c-++NQ)
2019/12/26(木) 12:35:29.16ID:WMR2NHe80 サンプルプログラムに厳密性を求めるな ってだけ
362デフォルトの名無しさん (ドコグロ MM46-Nxir)
2019/12/26(木) 12:37:11.96ID:Fsuom43iM サンプルだから本質には関係ないところをバッサリ省略してるだけでしょ
ガチな例外処理とか入れられても見辛いだけだし
それと同じ話
ガチな例外処理とか入れられても見辛いだけだし
それと同じ話
363デフォルトの名無しさん (ドコグロ MM40-NvuD)
2019/12/26(木) 13:02:58.04ID:Wx+k6OqqM まあサンプルをコピペしちゃうレベルなら他にもっとまずいところはいくらでもあるだろうから、
少々Disposeが先延ばしになるくらいは無視しても問題ないかと
少々Disposeが先延ばしになるくらいは無視しても問題ないかと
364デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 13:36:36.96ID:2UlJm9YS0 >>253
周回遅れだが一応参戦。当該院生が冬休みでもう一度読んでいることを期待する。
他の人も言っているとおり、設計としては253で正しい。直す必要はない。
なおその点はForms->WPFで思想が修正された点であり、(つまりFormsが駄目だった点)
これも他の人が既に言っているとおり、「最新のフレームワークの流儀」で設計するのが妥当。
判断する能力がないなら、とにかく「最新の流儀」に乗っかるのが
無駄に嵌るのを未然に防ぐ適切な方策となるのでそうすべき。
構成としては、おそらく、
「設定値変更画面(V)」「設定値保管用クラス(M)」「他クラス(多分演算ルーチン)(EXE)」で、
これはMVCの通りであり、V-M, M-EXE 間は結合しているがV-EXEは結合していない。
これに対して、誰か(≒老害)に指摘されたのだと思うが、君が253の時点でいいと思っている構成は、
「設定値変更画面(V+M)」「他クラス(多分演算ルーチン)(EXE)」となっており、Mが分離していない。
(=EXE側がVを知っている必要がある)
この構成の利点は、
・コードが多少少なく済む
点であるが、結局使い勝手が悪いので、ずっと改善していくと最終的に253みたくMVCに分離することになる。
周回遅れだが一応参戦。当該院生が冬休みでもう一度読んでいることを期待する。
他の人も言っているとおり、設計としては253で正しい。直す必要はない。
なおその点はForms->WPFで思想が修正された点であり、(つまりFormsが駄目だった点)
これも他の人が既に言っているとおり、「最新のフレームワークの流儀」で設計するのが妥当。
判断する能力がないなら、とにかく「最新の流儀」に乗っかるのが
無駄に嵌るのを未然に防ぐ適切な方策となるのでそうすべき。
構成としては、おそらく、
「設定値変更画面(V)」「設定値保管用クラス(M)」「他クラス(多分演算ルーチン)(EXE)」で、
これはMVCの通りであり、V-M, M-EXE 間は結合しているがV-EXEは結合していない。
これに対して、誰か(≒老害)に指摘されたのだと思うが、君が253の時点でいいと思っている構成は、
「設定値変更画面(V+M)」「他クラス(多分演算ルーチン)(EXE)」となっており、Mが分離していない。
(=EXE側がVを知っている必要がある)
この構成の利点は、
・コードが多少少なく済む
点であるが、結局使い勝手が悪いので、ずっと改善していくと最終的に253みたくMVCに分離することになる。
365デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 13:37:07.04ID:2UlJm9YS0 >>259
といっても分かりにくいだろうから具体的に指摘すると、
君の問題は、間違った方策で解決しようとして、余計におかしくなっていることだ。
> 他クラスで使用しているときに値を変更されないように2、3を実装したんですけど、単に画面を入力できないようにロックすればよかった。
これは「画面をロック」ではなく、演算開始時に「設定値保管クラスのコピーを演算ルーチンに渡す」とすべき。
これにより、一つの実行画面から多数の演算ルーチンを並列に起動したり、
或いはGUI無しでコマンドラインから起動することも普通に可能となる。
(つまりプログラムとしての汎用性/柔軟性が上がっている)
「クラスのコピー」ってのはディープコピーだが、単純に値が入っているクラスなら、
Cなら構造体の代入、つまり
SomeClass myCopy = reference;
の1行で事足りる。或いは通常、関数呼び出しには構造体への「ポインタ」を用いているはずだが、そこを構造体の「値」に変えればいいだけ。
C#だとstructは値型だったと思うので、設定値保管用『struct』なら自動的に上記が常に行われる構造になるが、
余程小さくない限りそれでは使いにくい筈なので、設定値保管用『クラス』で正しく、何らかの方策でディープコピーをした方がいい。
インミュータブルに組んでいればシャローコピーでも行けるようには出来るはずだが。
といっても分かりにくいだろうから具体的に指摘すると、
君の問題は、間違った方策で解決しようとして、余計におかしくなっていることだ。
> 他クラスで使用しているときに値を変更されないように2、3を実装したんですけど、単に画面を入力できないようにロックすればよかった。
これは「画面をロック」ではなく、演算開始時に「設定値保管クラスのコピーを演算ルーチンに渡す」とすべき。
これにより、一つの実行画面から多数の演算ルーチンを並列に起動したり、
或いはGUI無しでコマンドラインから起動することも普通に可能となる。
(つまりプログラムとしての汎用性/柔軟性が上がっている)
「クラスのコピー」ってのはディープコピーだが、単純に値が入っているクラスなら、
Cなら構造体の代入、つまり
SomeClass myCopy = reference;
の1行で事足りる。或いは通常、関数呼び出しには構造体への「ポインタ」を用いているはずだが、そこを構造体の「値」に変えればいいだけ。
C#だとstructは値型だったと思うので、設定値保管用『struct』なら自動的に上記が常に行われる構造になるが、
余程小さくない限りそれでは使いにくい筈なので、設定値保管用『クラス』で正しく、何らかの方策でディープコピーをした方がいい。
インミュータブルに組んでいればシャローコピーでも行けるようには出来るはずだが。
366デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 14:38:18.82ID:2UlJm9YS0 >>361-363
つかこれ、どれくらいgraphicsヘビーにすればヒットするんだ?
以下はヒットしているようだが、俺はヒットしない。
https://sorayukinoyume.hatenadiary.org/entry/20121029/1351525436
俺のは40k個Brushを作ってそのまま放置、それを1秒ごとに再描画、
みたいな感じだが、OutOfMemoryなんて起きない。
(ただし、カクつく事があったから今はDisposeを入れてしまったが)
プログラムは演算結果をGUIで表示するもので、演算ヘビーだが、
演算自体はC++ネイティブなのでGCは行われない。
(演算ルーチンではマネージドメモリを消費しない)
なお以下とかは正しいように思う。
https://uchukamen.com/Programming/GC/
https://ladybug.hatenadiary.org/entries/2004/01/10
https://ufcpp.net/study/csharp/rm_gc.html
https://divakk.co.jp/aoyagi/csharp_tips_using.html
https://www.codeproject.com/Articles/48701/Using-GDI-Objects-the-Right-Way
(なお最後はシステムで10,000が上限だと言っているが、これはプロセスの間違いだと思う。《他でそう書いてあったところもあった》
また、タスクマネージャーで見る限り、俺のPCでは全体で10,000は越えているし。
なお一番使っているのはJane2chの8,653だった。Jane糞だなオイ。
chromeは各プロセス毎に600-800位、俺のプログラムはどうやっても50-70を推移してる)
MSも馬鹿じゃないからサンプルコードはそれなりに正しいはず。
絶対にこう書け、なら必ずそう書く。そうでないのはその必要が「普通は」ないからだ。
逆に、普通にサンプルコードで問題が発生するようなら、クレーム来まくりで大変だから、当然のように修正される。
それが為されてないのは、それなりに使用に耐えるコードだからだ。
という感じなのだが、お前らこれヒットするのか?
VC++/CLIとC#だとGC周りがだいぶ違うって事か?
つかこれ、どれくらいgraphicsヘビーにすればヒットするんだ?
以下はヒットしているようだが、俺はヒットしない。
https://sorayukinoyume.hatenadiary.org/entry/20121029/1351525436
俺のは40k個Brushを作ってそのまま放置、それを1秒ごとに再描画、
みたいな感じだが、OutOfMemoryなんて起きない。
(ただし、カクつく事があったから今はDisposeを入れてしまったが)
プログラムは演算結果をGUIで表示するもので、演算ヘビーだが、
演算自体はC++ネイティブなのでGCは行われない。
(演算ルーチンではマネージドメモリを消費しない)
なお以下とかは正しいように思う。
https://uchukamen.com/Programming/GC/
https://ladybug.hatenadiary.org/entries/2004/01/10
https://ufcpp.net/study/csharp/rm_gc.html
https://divakk.co.jp/aoyagi/csharp_tips_using.html
https://www.codeproject.com/Articles/48701/Using-GDI-Objects-the-Right-Way
(なお最後はシステムで10,000が上限だと言っているが、これはプロセスの間違いだと思う。《他でそう書いてあったところもあった》
また、タスクマネージャーで見る限り、俺のPCでは全体で10,000は越えているし。
なお一番使っているのはJane2chの8,653だった。Jane糞だなオイ。
chromeは各プロセス毎に600-800位、俺のプログラムはどうやっても50-70を推移してる)
MSも馬鹿じゃないからサンプルコードはそれなりに正しいはず。
絶対にこう書け、なら必ずそう書く。そうでないのはその必要が「普通は」ないからだ。
逆に、普通にサンプルコードで問題が発生するようなら、クレーム来まくりで大変だから、当然のように修正される。
それが為されてないのは、それなりに使用に耐えるコードだからだ。
という感じなのだが、お前らこれヒットするのか?
VC++/CLIとC#だとGC周りがだいぶ違うって事か?
367デフォルトの名無しさん (アウアウウー Sab5-655U)
2019/12/26(木) 14:50:50.75ID:+pzqFzNua >>366
DC(Graphics)は不要になった時点でDisposeした方がいいと思うけど、
PebとかBrushとかFontとか、このあたりがIDisposable実装してるのは
たぶんWin9xを想定してるんだろうねw
.NET 1.1とかの時代に、Win2kやXPではそこまで神経質にならなくていいよ、
って記事を結構読んだ記憶がある
DC(Graphics)は不要になった時点でDisposeした方がいいと思うけど、
PebとかBrushとかFontとか、このあたりがIDisposable実装してるのは
たぶんWin9xを想定してるんだろうねw
.NET 1.1とかの時代に、Win2kやXPではそこまで神経質にならなくていいよ、
って記事を結構読んだ記憶がある
368デフォルトの名無しさん (ワッチョイ ef4f-K0SF)
2019/12/26(木) 14:53:40.92ID:g3TV29VW0 多いから糞って単純な話でもないだろ。表示しているオブジェクトが多いなら仕方がない。
explorerもウィンドウを大量に開くとモリモリ消費する。
explorerもウィンドウを大量に開くとモリモリ消費する。
369デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 15:25:02.44ID:2UlJm9YS0 >>368
いやJaneはガチでリークしてると思うぜ。
俺のPC内での今の順位
1. Jane2ch 8,677 ←増えてやがるし
2. explorer 1,340
3. chrome 826
以下chromeが20個ほど続く。
字しか表示しねえJaneでどうやって8,677個になるんだよ?
フォントや色でも精々100だろ。
そもそも複数ページ表示してるchrome越えてる時点でだいぶおかしい。
いやJaneはガチでリークしてると思うぜ。
俺のPC内での今の順位
1. Jane2ch 8,677 ←増えてやがるし
2. explorer 1,340
3. chrome 826
以下chromeが20個ほど続く。
字しか表示しねえJaneでどうやって8,677個になるんだよ?
フォントや色でも精々100だろ。
そもそも複数ページ表示してるchrome越えてる時点でだいぶおかしい。
370デフォルトの名無しさん (ワッチョイ 7f7b-JrBF)
2019/12/26(木) 15:25:33.99ID:2UlJm9YS0 >>367
そのわりにusingガーというのが多いのはなんでだ?
若干Java的オブジェクト指向(オブジェクト指向が唯一絶対神であり、それ以外は認めない)に近い偏見を感じる。
GCなんて手抜きの為の機構であり、逆に言えば、GC使っている以上、書かなくて済む事は書かない、というのが正しいだろ。
全部書け、ならC++を使って全部書き、GCなんて使っている軟派野郎は死ね、とあるべき。
C#でusingって、なんか違うくね?
まあ現実的にヒットするなら致し方ないとして、俺が試した限りでは、どうにもヒットしないように見える。
それとも
> DC(Graphics)は
これはdevice context だけは即時解放した方がいい、ということか?
具体的にはGetHdcメソッドを有する連中だが、見た目Graphicsだけかな。
だとすると俺がやってるBrushでは再現しないのも納得だが、
かといってGraphicsを10,000取得とかいう使い方もないとも思うが。
そのわりにusingガーというのが多いのはなんでだ?
若干Java的オブジェクト指向(オブジェクト指向が唯一絶対神であり、それ以外は認めない)に近い偏見を感じる。
GCなんて手抜きの為の機構であり、逆に言えば、GC使っている以上、書かなくて済む事は書かない、というのが正しいだろ。
全部書け、ならC++を使って全部書き、GCなんて使っている軟派野郎は死ね、とあるべき。
C#でusingって、なんか違うくね?
まあ現実的にヒットするなら致し方ないとして、俺が試した限りでは、どうにもヒットしないように見える。
それとも
> DC(Graphics)は
これはdevice context だけは即時解放した方がいい、ということか?
具体的にはGetHdcメソッドを有する連中だが、見た目Graphicsだけかな。
だとすると俺がやってるBrushでは再現しないのも納得だが、
かといってGraphicsを10,000取得とかいう使い方もないとも思うが。
371デフォルトの名無しさん (ササクッテロル Sp88-9la5)
2019/12/26(木) 15:49:32.19ID:8rtfbEtYp 何をグダグタと気にしてるのかよーわからんな
どうせそのうち回収されるんだから無駄に残ってるのが気にならねえならどうでもいいだろ
精々Janeみたいに過剰に確保されてるのを観測されてクソクソ言われるのが自分のアプリになるだけだ
どうせそのうち回収されるんだから無駄に残ってるのが気にならねえならどうでもいいだろ
精々Janeみたいに過剰に確保されてるのを観測されてクソクソ言われるのが自分のアプリになるだけだ
372デフォルトの名無しさん (ドコグロ MM40-NvuD)
2019/12/26(木) 16:01:00.94ID:Wx+k6OqqM つか本来は実際に画面に表示されてる間だけアンマネージリソースを確保すればいいわけで、設計が手抜きなんだよ
まあ、そういう思想でスマートなリソース管理をしてるWPFはゴミのように遅いわけだがw
まあ、そういう思想でスマートなリソース管理をしてるWPFはゴミのように遅いわけだがw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- 日本、高市のお陰で破滅に近づくwwwwwwww
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- まみちゃん
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
