[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/22 21:27 / Filesize : 150 KB / Number-of Response : 675
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Orcas】 Visual Studio 2008 【.NET3.5】 Part2



1 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:57:52 ]
前スレ
【Orcas】 Visual Studio 2007 【.NET3.0】
pc11.2ch.net/test/read.cgi/tech/1174574352/

321 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:09:13 ]
いい加減.NETは諦めて、C#でx86とx64のネイティブバイナリ
吐くようにしてください。

322 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:10:14 ]
お前がコンパイラ作れ

323 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:26:09 ]
いい加減誰かがネイティブはくようなコンパイラ作ってもよさげなんだが・・・


324 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:28:08 ]
匿名メソッドとかyield returnとか実装できる気がしない

325 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:34:01 ]
>>324
LispやOcamlのような関数型言語にふつーにnativeコンパイラがある意味を
良く考えろ
Ocamlなんか超高級オブジェクト指向関数型言語でC++より速いらしいぞ

326 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:40:02 ]
>>325 C++よりはやいっていうのはちとなんだが。1.9倍ぐらいじゃなかったっけ?
でも遅延評価とかでアルゴリズムによっては格段に早くなるかも

327 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 00:51:39 ]
>>326
それはCに比べて、じゃね
C++はC++らしく書くとどんどん遅くなる印象

328 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 01:03:10 ]
関数型言語が早いらしいってのは単なる幻想だからな
インタープリタ型に比べて機能が限られる上に
限られた用途以外ではCより圧倒的に遅い

329 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 01:09:07 ]
流石にC++より速いっつーことはなかったみたい
ttp://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all



330 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 01:18:54 ]
>>327
本当にC++らしく書いたら
テンプレートで静的結合でインライン展開で
むしろ高速化が期待できるが

331 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 01:21:29 ]
>>327
テンプレートの場合、実行速度はいいんだが、
コンパイル速度がどんどん遅くなっていく(ノд`)

332 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 01:30:37 ]
コンパイルはC++がワーストだよな。

VCTeam blog とか見ると、いろいろやってるようで好感が持てる

333 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 02:21:15 ]
値を束縛するのでない言語でクロージャを実装したのはC#が最初なんじゃないのか
C#のあれがクロージャと呼べるのならだが

334 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 09:19:50 ]
関数型じゃないがPerlやらJavaScriptやらにもクロージャは普通にあるだろ

335 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 10:19:40 ]
List<Action> actionList = new List<Action>();

for(int i = 0; i < 10; ++i)
 actionList.Add(() => Console.WriteLine(i));

actionList.ForEach(action => action());

PerlやJavaScriptでこれに相当するものを実行したらどうなる?
ちなみにC#は全部10になる

336 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 10:28:44 ]
>>335
forループ使うとミスリーディングだからもっと簡単に書いたら?

var actionList = new List<Action>();

int i=0;
actionList.Add(() => Console.WriteLine(i));

i=1;
actionList.Add(() => Console.WriteLine(i));

actionList.ForEach(action);

これの結果が 0 1 か 1 1 かどっちってことだよね?

337 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 10:30:39 ]
すまん、最後は
actionList.ForEach(action => action());

338 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 10:35:46 ]
>>336

そうそう
最後がちょっとあれだけど

339 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 12:32:52 ]
perlもjavascriptも1 1になる
javascriptはとりあえずIEと火狐で確認



340 名前:339 mailto:sage [2007/08/27(月) 12:36:18 ]
perlだとこんな感じ
my $i = 0;
push my @a, sub(){ print $i, "\n" };
$i = 1;
push @a, sub(){ print $i, "\n" };
$a[0]->();
$a[1]->();

javascriptだとこんな感じ(アドレス欄にうちこんで実行汁)
javascript: void(function(){var i=0;var al=new Array();al.push(function(){document.write(i+"<br/>");});i=1;al.push(function(){document.write(i+"<br/>");});al[0]();al[1]();}())


341 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 12:44:48 ]
最後にはドズ Mobile 大勝利!!!

>グーグルフォン近日登場か?
>ttp://jp.techcrunch.com/archives/could-the-gphone-be-nigh/
グーグルフォンはアップルのiPhoneと直接比較されそうだ。
iPhoneのパッケージは魅力的だが、米携帯市場におけるシェアはまだ小さい。

342 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 12:49:42 ]
>>335
これで期待した動作になる。
for(int i = 0; i < 10; ++i) {
  int j = i;
 actionList.Add(() => Console.WriteLine(j)); 
}
>>336
この話はそこがforループだから違いが出るという話じゃなかったっけ?

343 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 12:54:41 ]
とりあえずインスコしてみたんだけど
「要求されたレジストリアクセスは許可されていません」とか出てプロジェクト作れねえ\(^o^)/

344 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 13:37:52 ]
>>342 えーとごめん、3.0いじれる環境ないんだけど、それ全部10じゃないの?
3.0からクロージャの実装になるようなへんこうあったっけ?

345 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 13:51:31 ]
>>344
.2.0でも0〜9になりますよ

346 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 14:01:38 ]
// C#2.0版
using System;
using System.Collections.Generic;

delegate void F();
class Test {
  static void Main() {
    List<F> actionList = new List<F>(); 
    for(int i = 0; i < 10; ++i) {
      int j = i;
     actionList.Add(delegate(){Console.WriteLine("i={0}, j={1}",i, j);}); 
    }
    foreach (F f in actionList) f();
  }
}


347 名前:339 mailto:sage [2007/08/27(月) 14:06:03 ]
perlも同じように書けば、期待した動作になる
#!/usr/bin/perl
{
    my @a;
    my $i = 0;
    {
        my $j = $i;
        push @a, sub(){ print $j, "\n" };
    }
    $i = 1;
    {
        my $j = $i;
        push @a, sub(){ print $j, "\n" };
    }
    $a[0]->();
    $a[1]->();
}

348 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 14:49:46 ]
結局クロージャはfor文とすこぶる相性が悪いということか

349 名前:339 mailto:sage [2007/08/27(月) 14:57:59 ]
>>348
クロージャに結びつけた変数に対して破壊的操作を行うかどうかの問題
関数型ではそうした副作用(破壊的操作)は基本的には無いことに
なっているので、こうしたケースを考える必要がないってことじゃないかな

for文かどうかは全然本質とは関係ないが、for文のカウンタのインクリメントは
まさに破壊的操作なので、問題を起こしやすいということかと思う



350 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 16:10:26 ]
>インドのタミルナードゥ州,学校のデスクトップ3万台をLinuxに移行
>ttp://itpro.nikkeibp.co.jp/article/NEWS/20070808/279336/
また,インド内外の企業でLinuxが普及しつつあるため,
オープンソース・ソフトウエアの使用経験を積んだ生徒は,
将来の就職に有利になるだろう」と述べる。


351 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 19:18:34 ]
両方使えて当然

352 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:11:23 ]
ルビーだと0-9がになるようだ。
関数型は使わないから何が正しいクロージャなのかは知らないけど、
この辺は言語ごとの解釈でいいような気がしてきた。
第一同じ変数を共有した複数のクロージャを返すような処理って普通書かないんじゃないかな?
def makef
  $ar = Array.new
  j = 0
  (0..9).each do |i|
    $ar[i] = Proc.new {
      print '(', i, ', ', j, ') '
    }
    j = j + 1
  end
  $ar
end
makef.each do |f|
  f.call
end


353 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:51:28 ]
多分for文の仕様が危険なんだと思うな
デフォルトで変数を作ってコピーする、foreachのような実装になってれば
問題ないわけだろ

public static void For(this int start, int end, Action<int> action)
{
 for(int i = start; i < end; ++i)
  action(i);
}

0.For(10,i =>{
 list.Add(() => Console.WriteLine(i));
});

354 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:04:22 ]
>>353
>デフォルトで変数を作ってコピーする、foreachのような実装になってれば

いやそう書くとまた誤解の元だから。
別のこと言ってるんだろうけど読者は下の結果に絶望する。

var actionList = new List<Action>();
foreach (var i in Enumerable.Range(0,10))
{
int j = i;
actionList.Add(delegate() { Console.WriteLine("i={0}, j={1}", i, j); });
}
foreach (var f in actionList) f();

結果
i=9, j=0
i=9, j=1
i=9, j=2
i=9, j=3
i=9, j=4
i=9, j=5
i=9, j=6
i=9, j=7
i=9, j=8
i=9, j=9

355 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:11:16 ]
ネタ振り師撃沈か

356 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:12:09 ]
Javascriptはずいぶんあっさりしてる。こういう解釈も単純でいいかもしれない。
<html>
<head><title>closure</title></head>
<body>
<script language="JavaScript"><!--
function b() {
  var ar = new Array();
  for (var i=0; i<10; i++) {
    var j = i;
    ar.push(function(){ document.write(i + ", " + j + "<br/>"); });
  }
  return ar;
}
var fs = b();
for (var f in fs) fs[f]();
// --></script>
</body>
</html>

10, 9
10, 9
10, 9
10, 9
 :


357 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:13:14 ]
>>354
すまん勘違いしてた
じゃあforeachもダメなんだ

var array = new[] { 0,1,2,3,4,5,6,7,8,9 };

var actionList = new List<Action>();

foreach (var i in array)
 actionList.Add(() => Console.WriteLine(i));

foreach (var action in actionList)
 action(); //全部9

結構やばくね?

358 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:19:26 ]
全然ヤバイとは思わないけどな
クロージャが使ってる変数を書き換えなきゃいいだけ

バグというよりはそういう仕様なのだろう

359 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:23:02 ]
>>354
jが期待通りに動く仕様がわからんな・・・
delegateと同じスコープにあるものはdelegateが展開されるクラスのフィールドに変換されるということ?




360 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:26:43 ]
>>359
jに対しては一切破壊的操作を行ってないでしょ。
ループの中のブロックは、ループを回るたびに新しいスコープを導入しているのと
同じで、jは毎回新しい変数として作られている。
だから、j = i; はC++的に言えば(破壊的な)代入ではなく初期化、
関数型風に言えば束縛になっているわけだ。

内容は>>347と同じだよ。>>347なら、なぜそれでいいのかが分かりやすいと思う。

361 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:27:08 ]
C++ 0xだと、ラムダ式がローカル変数のコピーをもつか、
ローカル変数への参照を持つかで意見が分かれてるらしい

コピーを持つタイプならforやforeachの問題は起こらないけど、
ラムダ式内でローカル変数に代入を行っても反映されない

参照を持てば代入も可能になるけどforが妙なことになる

クロージャが使ってる変数を書き換えた時に警告が出せればいいんだろうけど

362 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:33:03 ]
>>359
C#では、クロージャがあるメソッドのローカル変数は
実は無名のクラスのフィールドになっている
メソッドに入るたびにそのクラスがnewされてて
ローカル変数をいじってるつもりでも実はインスタンス変数をいじってる

クラスはスコープで分かれていて
forのループに入るたびにjの値を保持するためだけのクラスがnewされてる・・・
のだと思う

363 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:43:03 ]
>>352
(0..9).each じゃなくて for i in 0..9 使うと
全部 9 になった。

364 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:52:22 ]
技術的に濃い話題だと、PerlだのJavaScriptだのRubyだのが出てきても
厨房が割り込んでこないようだなw

365 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:56:21 ]
と必死に割り込もうとしてる厨房が申しております。

366 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:57:15 ]
隙を見せたな

367 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 23:04:32 ]
>>364
今回は運がよかったのかもね。
ネタを振った人が盛大に勘違いしてたり、危うい要素は結構あったような。

「真のクロージャ」とか言ってる人が来たら基本はスルーが安全よ。

pc11.2ch.net/test/read.cgi/tech/1156986942/245
こういうのからスタートするといかにも荒れそう。

368 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 23:13:58 ]
C++ 0xとRubyの件は参考になった。

あとJavaScriptも味があるな。
値型があって=でコピーされるってのも重要な要素か。

369 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 23:58:02 ]
var fact = x => x == 1 ? 1 : x * fact(x - 1);

これがコンパイル通らないのなんとかしてほしい

Func<int, int> fact = null;
fact = x => x == 1 ? 1 : x * fact(x - 1);

現状だとこんな風に書かなきゃいけない。

こういうケースの場合はクロージャに与えたローカル変数を書き換える必要があるんだよな



370 名前:デフォルトの名無しさん [2007/08/28(火) 01:10:00 ]
全然詳しくないので質問させてください。

自称「マネージメントもできる」派遣クンが
「Visual Studioプログラムが僕の書いたとおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。

彼のプログラムが動かないのを調べるのは誰の仕事なのでしょうか?

371 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 05:29:45 ]
>>369
とはいえdelegateの型はいるので
Func x = ...
みたいに一瞬パラメータだけ推論してほしいなあとも思ったけど
部分式の型が決定出来ないから難しいか

うーんdelegateはつらいぽ

372 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 06:44:33 ]
何でFunc型の型推論は認められないんだろうね。

var f = x => x + 1; // Func<int, int>のつもり

Expressionの時だけ型を明示させればいいのに。

Expression<Func<int, int>> f = x => x + 1;

373 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 09:53:24 ]
>>372
>var f = x => x + 1; // Func<int, int>のつもり

var f = (int x) => x + 1 ならとにかく、
関数bodyから引数xの型まで推論させるのは
C#ではやりすぎなような。

まあ関数型言語ではよくあるけど。

ちなみにVB9の場合はこう書くとコンパイラがデリゲート型を勝手に合成してくれる
Dim func = Function(x As Integer) x + 1
ややこしいことにこの場合System.Func<TArg0,TResult>は使われない

Dim func = Function(x) x + 1
こうも書けるけどこの場合Object型からObject型への関数と解釈される
まあそこがいかにもVB。


374 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 10:11:42 ]
TechEdが終わってからEF Beta2が出やがった

375 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 11:36:29 ]
ttp://blog.miraclelinux.com/yume/2007/08/post_8ff3.html

それは栄光と挫折の物語である。20世紀最後の商用OS開発物語と言ってもいい。
このような大規模な商用OS開発はあとにも先にもマイクロソフトでの開発が最後になるであろう。
専用OSや小規模なそれの開発は今後も続くであろうが、
商用でクローズな世界での大規模新規OS開発は今後は見られないであろう。

376 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 13:04:17 ]
ttp://support.microsoft.com/kb/916664/ja
ttp://gigazine.net/index.php?/news/comments/20070309_liveonecare/

377 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:09:48 ]
Funcの型推論も問題なんだけど、それより

Func<int,int> fact = x => x == 1 ? 1 : x * fact(x - 1);

これすらコンパイル通らないのが嫌なんだ
未割り当てのローカル変数が使われたと判断されてしまう

public staticメソッドなら型推論が効くから、

public static class New{
 public static Func<T1,TR> Func<T1, TR>(Func<T1,TR> func){ return func; }
}
 こんなのを作って

var f = New.Func( (int x) => x * x);

 こんなふうにやれば型パラメータは省略できる

378 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:10:51 ]
【航空】シンガポール航空のA380は各席にLinux搭載、客席でオフィスソフトも利用可能[08/28]
ttp://news21.2ch.net/test/read.cgi/bizplus/1188273578/l50


379 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:24:35 ]
>>377
なるほど、factory経由で型推論させる手があったか・・・。

> Func<int,int> fact = x => x == 1 ? 1 : x * fact(x - 1);

ところで、末尾再帰の最適化って保証されてるの?



380 名前:379 mailto:sage [2007/08/28(火) 14:26:45 ]
> Func<int,int> fact = x => x == 1 ? 1 : x * fact(x - 1);

あ、このコード末尾再帰じゃないか・・・。

381 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:32:50 ]
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/392-

392 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/28(火) 08:36:48
.NET3.1で大幅変更
.NET3.5でプログラミングモデル変更
.NET4.0で氏滅

393 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/28(火) 13:56:29
.NET 4.0は自動並列化をサポートするけど
そのために中間言語自体に大幅な変更が加わって
.NET 2.0ベースのアプリは完全に動かなくなる
まあ両方のCLRがOSに標準搭載されるから無問題だが



382 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 15:41:47 ]
>>377
>これすらコンパイル通らないのが嫌なんだ

Fix使おう。
ttp://d.hatena.ne.jp/NyaRuRu/20070722

>public staticメソッドなら型推論が効くから、

Generic Methodならstaticじゃなくても型推論が効く。
staticは関係ないんでは?

>>379
>ところで、末尾再帰の最適化って保証されてるの?

されないのでZipとかUnfoldとか(ないけど作って)使おう。

383 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 16:12:10 ]
>Microsoftの海賊版対策プログラムでトラブル、正規版Windowsを海賊版と誤判定
ttp://www.nikkeibp.co.jp/news/flash/543395.html

384 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 16:15:33 ]
Visual Studio撲殺委員会
pc11.2ch.net/test/read.cgi/tech/1188125303/l50

385 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 16:29:24 ]
【迂回】M$アホアンチヲチスレ【ノイローゼ】
pc11.2ch.net/test/read.cgi/tech/1187935250/l50


386 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 16:44:41 ]
逮捕まだー?w

387 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:21:24 ]
ASP.NET FuturesのDynamic Data Controlsって、Ruby on Railsと比較してどうなの?
俺はデモを見てすごく感動したのだが。
ttp://download.microsoft.com/download/5/9/8/5985f834-b3ea-459b-98ba-0aede5bc653a/DynamicDataControls.wmv

388 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:27:20 ]
Visual Studio 2005 Part 22
pc11.2ch.net/test/read.cgi/tech/1187540029/86-

86 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/28(火) 15:58:58
Vista対応はダルいんで、引退します。

87 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/28(火) 17:47:07
バカが減って嬉しい


389 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:28:33 ]
m9。゚(゚^Д^゚)゚。プギャーーーッハッハーヒャヒャヒャヒャヒャヒャヒーーーーー
( ;∀;) イイハナシダナー
アホアンチ脂肪wアホアンチ脂肪wあばばばばwアホアンチ脂肪wあばばばばwアホアンチ脂肪w
( ´∀`)ほすほす
キタ━━━(´∀`) ━━━!!!!
アホアンチ哀れwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww


♪  ∧_∧
   ( ´∀` )))
 (( ( つ ヽ、   ♪ アホアンチ脂肪♪
   〉 と/  )))       アホアンチ脂肪♪
  (__/^(_)


    ∧,_∧ ♪
  (( (    )
♪   /    ) )) ♪ あばばば♪
 (( (  (  〈        アホアンチ脂肪♪
    (_)^ヽ__)

    ∧,_∧ ♪
  (( (    )
♪   /    ) )) ♪ ほすほすほすほす♪
 (( (  (  〈        アホアンチ脂肪♪
    (_)^ヽ__)



390 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:06:17 ]
>>387
MVCのModelの概念が分かりにくい(欠けてる?)と思う。
コードからテーブルのデータにアクセスできないか試してみたけど、結局やり方が分からなかった。
あとは、Validateをカスタマイズしようとすると、結局GridViewやDetailsViewに委譲するしかなくて不便に感じた。

慣れの問題はあると思うけど、Rails知ってる人を引き込むにはもっと分かりやすくすべきだと思う。

391 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:20:45 ]
MVCってそんなに重要かな
J2EEが主張してたなんちゃってMVCはウンコだと思ったし
MFCのDocument & Viewは押し付けがましくて融通が利かないと思ってたけど

392 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:46:05 ]
>MFCのDocument & Viewは押し付けがましくて融通が利かないと思ってたけど

"と思ってたけど"は不要。

393 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 00:13:49 ]
多分MVCはクロージャがなかったから
今まではうまく実装できなかったのだと思う
今まででもインターフェース実装してガリガリ書けば作れたけど使い物にならなかった

C# 3.0ならクロージャほいほい使えるから
モデルにもビューにも依存しないコントローラが簡単に書ける
これは便利

394 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 00:15:38 ]
>>382
>Fix使おう
何かいてあるかわかんねえ・・・
無理だ

staticは関係ないんでは?

395 名前:394 mailto:sage [2007/08/29(水) 00:17:03 ]
すまん間違えて投稿した

>staticは関係ないんでは?
関係ないっちゃ関係ないけど、いいたいのは
コンストラクタだと型推論が効かないということやね

396 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 01:31:52 ]
ttp://blogs.msdn.com/wesdyer/archive/2007/02/02/anonymous-recursion-in-c.aspx

これ読んだらちょっと分かってきた

public static class Fun<T>
{
 public delegate U SelfApplicable<U>(SelfApplicable<U> self);
 public static SelfApplicable<Func<Func<Func<T, T>, Func<T, T>>, Func<T, T>>>
  Y = y => f => x => f(y(y)(f))(x);
 public static Func<Func<Func<T, T>, Func<T, T>>, Func<T, T>> Fix = Y(Y);
}

public static Func<T,T> Fix<T>(Func<Func<T, T>, Func<T, T>> func)
{
 return Fun<T>.Fix(func);
}
これを使えば、

var fact1 = Fix<int>(fac => x => x == 0 ? 1 : x * fac(x - 1));

こうやってすっきり書けるわけか
しかしここまでやる意味あるのかな

397 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 01:55:16 ]
これはきもい

398 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 02:30:05 ]
もっと短く書けるんじゃないかと思っていろいろがんばってるが
何一つうまくいかないぞ

399 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 04:05:06 ]
>>391
MVCであること自体は必須だとは思わないけど、

> コードからテーブルのデータにアクセスできないか試してみたけど、結局やり方が分からなかった。

これはやっぱり問題では?



400 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 08:53:46 ]
アプリはMVCであるべきだけど、フレームワークがMVCを持つと邪魔。

で、どちらかというとV$製品は一見便利で実装時にはジャマジャマ。

401 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 09:01:49 ]
最近無理やりMVCにしようという流れが多くね?
方法論なのに目的化しちゃってる。

402 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 09:13:52 ]
>方法論なのに目的化しちゃってる。

あなたの読み間違いです。

403 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 19:53:11 ]
いや >>401 が言うようなヤツもいるよ確かに。

>>400のように「アプリはMVCであるべき」って暴論すぎる

404 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 20:14:39 ]
FormのUserControlってViewとコントローラが一体になってるじゃない
それをViewとコントローラに分離したら、だいぶ見通しも汎用性もよくなったよ

俺の意見としては、何が何でもMVCに分離すべきにかなり近い
分離しない理由が思いつかない

405 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 20:42:38 ]
>>404 めんどくさい

まぁでもできるだけ分離したほうがいいには同意

406 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 08:45:43 ]
めんどくさいのは、MFCのGUIビルダーのようにユーザーに設定強いてスケルトン吐き出すやつ。

自分でクラス宣言してMVC構造にするのはふつーのコーディング。

例えて言えば、構造化するときに関数を作成するのに関数名考えたり引数考えるのがめんどーって言うか?

407 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:47:28 ]
>>404
MVCは所詮一種のデザパタだろう
それが適切なケースだと思えば利用すればいい
常に使うべきだとまでいうなら、それは一種の宗教だと思うね

大体俺はモデルやらビューやらの汎用性とやらに大いに疑問を感じている
そんなに再利用なんてしてるか?
(コントローラはもともと再利用しにくいものとされているが)

408 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:51:49 ]
strutsは糞ってことで

409 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:06:35 ]
私はなぜフレームワークが嫌いか
local.joelonsoftware.com/mediawiki/index.php/%28Forum%29_%E7%A7%81%E3%81%AF%E3%81%AA%E3%81%9C%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%8C%E5%AB%8C%E3%81%84%E3%81%8B



410 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:33:00 ]
>>407

おまいが頭悪いだけ。

ビューは再利用しる!

それから再利用のためだけじゃない。

構造化プログラミングって必ずやるだろ。それは手続き抽象。
MVCをクラスにするってのはデータ抽象+手続き抽象。

411 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:33:56 ]
>>409

おまいヴぁかだな。

悪いフレームワークは存在するだろう。
だから、フレームワークがMVCを強制するんじゃなく、
MVC部分は自由に書かせろ、って逝ってるんだろうが。

412 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:39:01 ]
Viewとコントローラが分かれてないと、
同じ処理をするけど見た目や使用するコントロールが違うものを作るときに
難儀することになる

Modelが分離されてないと、違うクラスのデータを同じコントロールで変更したい時に
困ったことになる

まあこの場一回限り、再利用することなどありえない、というのなら
UserControlに決まったクラスの参照を持たせて
イベントハンドラでガリガリ処理を書いても問題ないっちゃないけど

413 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:41:09 ]
>イベントハンドラでガリガリ処理を書いても問題ないっちゃないけど

それ、何てブビ厨?

414 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:48:28 ]
>>410-411
そんなに一家言持ってるのなら、きちんと就職してそこで能力発揮すればいいのにw

415 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:50:38 ]
>>414
おまいって終始論理的な思考を持てない椰子だね。

会話して損した。

416 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:56:42 ]
そんなことより、そろそろ警察が来るんじゃない?

417 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:26:49 ]
宗教というよりはただの厨房だったようだな

418 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:35:18 ]
何ていうか、















醜いね。

419 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:37:54 ]

       /| ミ
       |/_ζ
       ヽ| l l│<ハーイ
       ┷┷┷




420 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:31:04 ]
m9。゚(゚^Д^゚)゚。プギャーーーッハッハーヒャヒャヒャヒャヒャヒャヒーーーーー
( ;∀;) イイハナシダナー
アホアンチ脂肪wアホアンチ脂肪wあばばばばwアホアンチ脂肪wあばばばばwアホアンチ脂肪w
( ´∀`)ほすほす
キタ━━━(´∀`) ━━━!!!!
アホアンチ哀れwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww


♪  ∧_∧
   ( ´∀` )))
 (( ( つ ヽ、   ♪ アホアンチ脂肪♪
   〉 と/  )))       アホアンチ脂肪♪
  (__/^(_)


    ∧,_∧ ♪
  (( (    )
♪   /    ) )) ♪ あばばば♪
 (( (  (  〈        アホアンチ脂肪♪
    (_)^ヽ__)

    ∧,_∧ ♪
  (( (    )
♪   /    ) )) ♪ ほすほすほすほす♪
 (( (  (  〈        アホアンチ脂肪♪
    (_)^ヽ__)


421 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 16:33:31 ]
>>420
トフラニールでも飲んでゆっくり休め






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<150KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef