- 1 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:46:53.58 ID:op86qfG/.net]
- ■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467211515/ ■次スレは>>970が建てる事。 建てられない場合は他を指定する事。
- 136 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 20:13:27.60 ID:u2e4Httf.net]
- そんなごちゃ混ぜで
- 137 名前:ソゃんと保守できるの? []
- [ここ壊れてます]
- 138 名前:デフォルトの名無しさん [2017/02/24(金) 01:33:54.44 ID:eab+BK9O.net]
- >>130
ASP.NET Web API
- 139 名前:130 mailto:sage [2017/02/24(金) 11:37:39.67 ID:dB0UjfyS.net]
- みなさん、回答ありがとう。
毎回プロセス作るのはオーバーヘッドでかいから、常駐型になるのかな? その時のやり取りの仕方をSendMessageだったり、ファイル常時監視してキューファイル投げるとかしか知らないんだ。 WebサービスとかASP.NETで調べてたら、やっぱりC#としての回答はこれなのかなって気がしてきたわ。 個人的な宗教上の理由で避けたかったけど、検討してみる。。ありがとう。
- 140 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 12:36:59.04 ID:YZGHPd2K.net]
- >>136
> 毎回プロセス作るのはオーバーヘッドでかいから それが問題になるようなサイトなのか?
- 141 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 15:11:03.84 ID:nwaeFCKh.net]
- ASP.NET MVCって案外重たいよ
- 142 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 15:50:26.31 ID:pDljuoBB.net]
- そらそうやろ
- 143 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 16:13:46.51 ID:0wjaf/O/.net]
- C#でWindowsフォームアプリケーションを作るための良い解説書はあるでしょうか?
独習C#はもう読み終えたので基本的なことはわかっていると思います。
- 144 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 16:41:06.62 ID:nwaeFCKh.net]
- ゲームしたいです。ゲーム機とゲームソフト買いました。どっちのマニュアルも読みました
早く遊びたいです。次はどんな攻略本読んだらいいでしょう? ゲームじゃこういうのないのに、プログラミングじゃ多いよな 基本わかったなら何故始めないw
- 145 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 16:48:06.10 ID:0wjaf/O/.net]
- >>141
独習C#ではWindowsフォームの説明がいっさいなかったので、コンソールアプリしか作れないのです。 フォームに特化した解説書かサイトがあればと思い質問しました。
- 146 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 17:08:33.80 ID:pp6ofCfh.net]
- 本なんか一冊も読んでないけどWinFormアプリいくつも作っている
就活で役立てたいのならマ板に行って聞いたら? 趣味でやっているのなら向いていない
- 147 名前:デフォルトの名無しさん [2017/02/24(金) 17:45:41.09 ID:LZq2xNz5.net]
- Formアプリもコンソールアプリもコードベースで作るなら同じって慣れれば分かるけど、最初は分からないよねー
javaのswingで同じこと経験した
- 148 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 17:57:21.18 ID:m8N/tmCl.net]
- 本読むやつはプログラミング向いてない
- 149 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:16:02.45 ID:2lTW2QAE.net]
- amazonでC#マガジンの海を渡ればWinFormの本が見つかる
- 150 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:26:49.22 ID:2HxY6Dp6.net]
- まだWinFormの時代なんだなw
- 151 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:27:42.45 ID:0tWWIcvC.net]
- >>145
悪かったな、読んでるよ。
- 152 名前:デフォルトの名無しさん [2017/02/24(金) 18:44:16.34 ID:ZTtaAqVi.net]
- きちんと勉強したいなら本代はケチんなってばっちゃが言ってた
- 153 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:44:46.20 ID:WmxnDnjh.net]
- WPFの本出しても売れないのは明らかだしな
- 154 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:47:19.91 ID:JpyYS2dN.net]
- コンソールアプリは明確にmainというエントリポイントがあるが、
GUIはイベントベースから最初の最初は戸惑うだろ。 (どこにコードを書くのかわからない) ただ、1回やれば分かるが。 で、そのレベルならMDSNのチュートリアルで十分だと思うよ。 https://msdn.microsoft.com/ja-jp/library/dd492171.aspx これで駄目なようなら向いてないってのは事実だよ。 本買って本格的に学ぶ内容ではない。 (これはWPFだけどどうせ違いも分かってないでしょ。 古いバージョンのを探せばフォームのチュートリアルもあるはずだし)
- 155 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:49:16.49 ID:CB55ejbI.net]
- ダブルクリックしてれば何とかなる
- 156 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 20:32:10.23 ID:DIkdt+H/.net]
- 肥大化するForm
- 157 名前:1.cs []
- [ここ壊れてます]
- 158 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 20:55:52.19 ID:2lTW2QAE.net]
- ソリューションエクスプローラでファイルを入れ子にする
ttp://wiz.came.ac/blog/2009/09/post-2.html
- 159 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 21:52:47.57 ID:KBFO5tFR.net]
- form動かすのは簡単だけどformのコードを破綻させずに書くのは難しい
少なくとも日本の大半の職業プログラマには無理 悲しいね
- 160 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 22:19:08.66 ID:ezpXAtZb.net]
- 動きゃいい
- 161 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 23:22:45.93 ID:WdGON0E4.net]
- 最近はウェブでなんとかなるんだが、きちんと本で勉強するべきだと思う。
C++長かったからC#楽勝と思ったけどラムダ式が読めない。 今更独習C#はと思ったが読んでよかった。
- 162 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 23:40:01.37 ID:nwaeFCKh.net]
- ラムダ式使えなくって作りたいものは作れるからな
言語を学びたいのか、プログラミングしたいのか、だな
- 163 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:07:49.88 ID:Hh3bBfOP.net]
- ラムダ?
登場してから60年以上たってもLISPが普及してないのが答え。いらん。
- 164 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:27:59.19 ID:N0RLU+6x.net]
- 俺が使っているのはJavaScriptなんだが、ラムダは超絶便利だぞ。
ただし使わなくても書けるし、いちいちクラスにしてしまう手もあるし、どうにでもなるのも事実だが。 本で学ぶことが必要なのではなくて、いろいろな道具があることを知るのが重要。 今時の言語は全てラムダ使えるんだから、他言語少しでも学んでいればラムダは使えたはず。 その点、C++は古い言語だったのも事実。 ただどう見ても142はそれ以前だろ。 そもそもWPF(というよりHTML)やったほうがいいんじゃないかと思うし。
- 165 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:54:21.20 ID:N9ovtMND.net]
- ストラテジー用のインターフェース定義とかいちいちめんどくさい
Func、Action、ラムダでスパッと実装したい
- 166 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:58:33.11 ID:Jm21gNIW.net]
- スパッと書く書式、
スパっと書くアルゴリズム、 スパッと書くクラス設計・・・ いつまで経ってもプログラミング始めれず勉強の毎日だぞ
- 167 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:18:47.75 ID:N0RLU+6x.net]
- めんどくさい人にはマジでJavaScriptオススメ。
あのデタラメッぷりには最初戸惑ったが、慣れてしまうと相当いい。 ラムダに慣れたいだけなら、スクリプト言語系(JavaScript/Python/Ruby)がマジでいいと思う。 C#のデリゲートって使う前にいろいろ準備が要って面倒だし、 あるのを知ってても使う気にならないでしょ。 俺もVC++しか使ってないころは全く興味なかった。 でもJavaScriptでお気楽にラムダ使いまくった後は、VC++でも使いたくなる。 だってそのほうが楽だと知ってしまったから。 ただ、いちいち型を合わせないといけないのが面倒だったりする。
- 168 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:26:56.21 ID:N9ovtMND.net]
- インテリセンス弱いスクリプト系言語は怠け者には向かない
- 169 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:40:08.63 ID:N0RLU+6x.net]
- まあIDEに関してはC#が一番上なのだろうね。それは思うよ。
- 170 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:45:57.08 ID:Hh3bBfOP.net]
- winform使うにしもてwin32の知識は必要。結局win32ラップだし。
- 171 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:46:38.10 ID:FbflVc2K.net]
- ラムダはインテリセンスあってこそやね。
- 172 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 02:39:26.60 ID:ByE41wZl.net]
- これからC#でGUIするんならWPFにしたらいいんじゃない。フォームは古いし。
但し、WPFの本はない、あるけど使えないと云うか価格に見合ってない。いい本あったら教えてもらいたい。
- 173 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 07:34:49.62 ID:JxD18xMy.net]
- WPFやってみたけどやっぱりformのほうがお気楽だから戻ってきてしまった
- 174 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 07:54:43.41 ID:fA+zhTaO.net]
- javascriptのラムダって例えばどんなヤツよ?
- 175 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 08:03:07.91 ID:vx9FCuam.net]
- >>1
- 176 名前:70
今のJavaScriptは (x, y) => x + y のようなC#と全く同じ構文の(というかC#をそのまま真似したんだろうけど)ラムダが使えるよ もちろん従来の function(x, y) { return x + y; } でもいいし []- [ここ壊れてます]
- 177 名前:デフォルトの名無しさん [2017/02/25(土) 10:39:52.17 ID:TcOntMIt.net]
- JSだとインテリセンスが弱い?TypeScript使おうぜ
- 178 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:04:24.91 ID:N0RLU+6x.net]
- JavaScriptのラムダがC#を真似したと言うのは自意識過剰すぎ。(短縮記法の()=>は真似してる)
インテリセンスはMS発なんだしはっきり言えば全員C#を真似しているからVS環境のTSではよくて同等まで。 JavaScriptは文法的な意味で関数とラムダを区別してない。 だからさらっと書いてそれだけ。 var count = 0; var count_up = function(){count++;}; var show_count = function(){console.log(count);}; count_up(); count_up(); show_count(); // 2 見りゃ分かるが具しか書いてない。だから論理的にこれ以上お手軽なのはない。 (短縮記法は出来るがあれはタイプ数がケチれるだけ) ついでに階層もクラスも関数で記述するというデタラメッぷり。 だからそもそも「ラムダなんて使いません(キリッ」みたいなことが出来ない。 (階層がラムダ) 知らなければ意味不明だと思うが、とにかくそういう世界だ。 その状況で慣れると、心理的な障壁が取り除かれる。 ラムダ嫌いって要するにこれだろうし。
- 179 名前:デフォルトの名無しさん [2017/02/25(土) 12:12:40.17 ID:TcOntMIt.net]
- ES6ならclass構文(内部では関数に変換されるけど)あるからかなり楽になったぞ
- 180 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:24:18.16 ID:S4wbN3RD.net]
- ラムダは真似というか普通に輸入だろ
ES6の策定にはMSも主導的な立場のメンバーとして当然参加してるし
- 181 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:26:33.18 ID:IfKbzrsT.net]
- >>173はjavascriptやったことない奴でも初見で何してるか分かる
でもこんなの書かれたら初見で見破るの無理でしょ var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3); ラムダ嫌いはラムダが嫌いなんじゃなくて、読みにくいラムダが嫌いなんでしょ 「ラムダなんて使いません(キリッ」じゃなくて「読みにくいラムダなんて使いません(キリッ」なんだよ
- 182 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:31:25.09 ID:N0RLU+6x.net]
- >>174
あんなもん所詮慣れ。俺は従来のJavaScriptの構文でも苦労してない。 そしてラムダも所詮慣れ。慣れればどうって事は無い。(難しくは無い) ただし使わなくても実装できるのは事実で、わざわざ慣れる必要があるかは微妙。
- 183 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:45:06.30 ID:S4wbN3RD.net]
- >>176
関数の即時評価はJSでは非常によく使われるテクニックだよ C#のラムダなんて、本来の副作用がない使い方をするのがほとんどだから可愛いもんだ JSではガンガン副作用書いていくから超複雑だよ
- 184 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 13:25:03.75 ID:Hh3bBfOP.net]
- >>176
パラダイムが違うものごっちゃにして何がしたいんだ? やたらカタカナ使う田中康夫やルー大柴の日本語みたいなものだ。
- 185 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 13:29:41.99 ID:N0RLU+6x.net]
- >>176
それは型情報を付加しようとしているから見た目複雑になる。 型情報が無いJavaScriptなら以下になる。 var func = function(i,j){return i==j;}; var res = func(5,3); もちろん1行でも書けるが、これはJSer以外にはすこぶる評判が悪い。 var res = (function(i,j){return i==j;})(5,3); そしてこれをアロー関数(短縮記法)で書いたらC#の型情報を落としたものと同じになる。 var res = ((i,j)=>i==j)(5,3); そもそも「お手軽にやろうぜ」というノリなら型情報が無いほうがよく、 その点がC#だとどうに
- 186 名前:焜tィットしない。
ただしラムダ使い全般が馬鹿なのか、 あるいはJavaScript含めた関数系一般に言える傾向なのかは定かではないが、 おかしな記述で余計複雑にする馬鹿、まさに「木を見て森を見ず」はよく見かける。 奴らは「木」つまり一箇所の記述を最小限にすることに異常にこだわり、 「森」つまり全体を最小限にすることを考えていない傾向がある。 だからラムダ(キリッな奴が出してくるコードが糞なことも多く、 これがラムダを知らない連中にとってラムダを学ぶ価値があるように見えない理由だと思う。 対してオブジェクト指向は「森」を「林」に小分けする手法だから、 オブジェクト指向をきちんと出来ている連中から見れば余計に馬鹿に見えてしまうし。 [] - [ここ壊れてます]
- 187 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 13:31:51.44 ID:Hh3bBfOP.net]
- これだからemacs使いは嫌われるんだよ。
- 188 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 14:43:31.03 ID:Qzh8dVTL.net]
- 関数呼び出しでデリゲート渡すところをラムダ式で書いたりするのが便利だし、プログラムが小さくなり、関連ある記述がまとまり、慣れると読み易い。
まあ、伝統的と云うか、平均以下のレベルに合わせたコーディング規約が幅をきかせているプロジェクトでは忌み嫌われる。
- 189 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 15:18:03.16 ID:IvVV1H8V.net]
- var res = (5 == 3)
それ関数使わなくてもいい例だから もうちょい違うのなかったかな
- 190 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 15:39:38.73 ID:9TfgDVOx.net]
- 保守性や可読性でラムダを嫌う人がいるのはまあ良いんだけど
経験的にそういう人のコードが優れてるかっていうとそうでもない 同じような構造のループ処理を大量生産したり try catch log出力を延々と全てのメソッドに書いたりする
- 191 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 15:44:53.00 ID:3ZNX7OqZ.net]
- >>183
今日のとんちきレス大賞
- 192 名前:デフォルトの名無しさん [2017/02/25(土) 15:46:20.53 ID:TcOntMIt.net]
- ラムダは静的なダックタイピングにするべきだったと思う
長くなる時はエイリアス設定するとかにして
- 193 名前:デフォルトの名無しさん [2017/02/25(土) 15:46:55.92 ID:TcOntMIt.net]
- >>183
ガイジかな?
- 194 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:24:58.90 ID:N0RLU+6x.net]
- >>182
つかそういう問題じゃない。C++なら例があるが。 > auto 型推論とラムダ関数を使用すると、コードをすばやく記述して、それを引き締め、より的確に把握することができます。 > https://msdn.microsoft.com/ja-jp/library/hh279654.aspx この2つのコードで下のほうがいいと思えるかどうかだよ。 正直、俺にはどうでもいい範囲だよ、これは。 こんな局所的部分で活用(キリッしたところで大して意味が無い。 確かにコードは減るけど、バグる確率が減るわけじゃないでしょ。 そして関数型()の連中が出してくる「ラムダの優位性(キリッ」なコードはほぼ全てこの類であり、 巨大プログラムを分割して直接的に単純化する「オブジェクト指向」と比べて、訴求力に乏しい。 理由は簡単で、そもそもラムダは「糖衣構文」でしかないから。 実体は「関数ポインタ+変数」であり、 Cなら構造体ポインタを引数に取る関数、 C++なら関数オブジェクトまたはクラスで表現できる。 (見にくいが元々記述できる。これがストロウストラップがラムダ導入に反対していた理由だと聞いた) だからJavaScriptの文法が関数=ラムダ=階層=クラスなのも自然ではあるし、 Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。 結局、ラムダを導入したところで出来ることは増えず、本当の意味での「エレガント」なコードにはならない。 ところが関数型()の連中は「エレガント」=「短い」or「ラムダ使ってる」と勘違いしている馬鹿が多くて、 上記URLのコードなら「下側がイイ!」「下側じゃ無いと許さない!」とか言い出すからおかしくなる。 「自転車置き場の議論」と同じで、馬鹿なりに見える範囲で考えたんだろうが、所詮馬鹿でしかない。 プログラミングにおける「エレガント」は数学と同じで、 「こう考えればこんなに簡単に解けるんだ!」であり、 糖衣構文でしかないラムダは本質的には全く効果が無い。 ただし、俺自身も慣れる前はラムダを選択肢に入れていなかった=思考を狭めていた。 これはまずいので、通常の選択肢として考えられるほどには慣れておく必要はある。 ただ、それ以上の意味は無い。
- 195 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:25:31.63 ID:N0RLU+6x.net]
- 余談だが、JavaScriptのプロトタイプとダックタイピングはこの意味で面白い。
出来ることが増えているので、直接的にもっと「エレガント」を探求できる。 以前話題になっていた拡張メソッドの継承もJavaScriptなら最初から出来る。 ただし、何でもかんでも出来ればいいものでもなく、馬鹿に使わせたら余計におかしくなるのも事実。 その点、C#はいいバランスを目指していていい。 ただしこの意味で「封印済み」の場所もあるから、 C++やJavaScript等「何でもあり系」言語に親しむのも悪くないと思う。
- 196 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:30:23.41 ID:IvVV1H8V.net]
- >>185,187
ほう? じゃ>>176のこのコードがどういう場合に有用なのか教えてくれ >var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);
- 197 名前:デフォルトの名無しさん [2017/02/25(土) 16:39:02.64 ID:TcOntMIt.net]
- >>190
C#とJSのラムダの比較の為に出しただけであって、有用なのかは今関係ない
- 198 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:39:23.68 ID:3ZNX7OqZ.net]
- >>190
誰も処理内容の話なんかしてないぞ みんなはアメをくるむ包装紙の話をしてるのに君だけアメの味を話題にしてる
- 199 名前:デフォルトの名無しさん [2017/02/25(土) 16:41:51.21 ID:TcOntMIt.net]
- 例え上手い
- 200 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:09:31.56 ID:fb/41uG4.net]
- >>190
まじasp
- 201 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:21:54.68 ID:WB0pRnLv.net]
- 変更されることがない前提のList<int>を複数のスレッド
でforeachするのは問題があるでしょうか。 やっぱりlockすべき?
- 202 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:22:56.07 ID:N0RLU+6x.net]
- >>186
コードを最小限にするためには ・型=なし ・多重継承=あり ・ダックタイピング=あり がいい。この点JavaScriptは、型無し、多重継承は手動で可能、ダックタイピングあり、なので向いている。 一方C#は、型あり、多重継承禁止、ダックタイピングなし、なので 「コード量」よりは「きっちり書くこと」を目指しており、 「手抜き」が主な目的のラムダとどうにも相性が悪い。 ここでダックタイピングだけ導入しても余計に混乱すると思う。 つかね、C#って「一文字でもケチりたい」奴用の言語ではなくて、 「型なし言語では堅牢なアプリは作れない」と考える連中用の言語だし。
- 203 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:30:35.48 ID:IvVV1H8V.net]
- はあ?
包装紙の不要な物を包装紙でくるんでこんな包装の仕方はダメじゃって言ってる人に 包装紙の良し悪しについて平然と議論しつづける神経のほうがわからんよ
- 204 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:43:27.22 ID:Hh3bBfOP.net]
- C#は業務系で使われたいのか、やっつけアプリ用に使われたいのかって話だ。
業務系で使われたいならシンタックスを増やすなって話だが、どうやら後者らしいので、c#はキティ用言語といえる。
- 205 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 18:38:47.74 ID:ByE41wZl.net]
- >>195
lock不要に一票。 追加削除ないなら配列じゃダメなの。
- 206 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 18:53:44.75 ID:ByE41wZl.net]
- C#はちゃちゃとプログラムにも業務にも使える優れもの。
シンタックス変えてない。拡張だろ。 LInqなんか追加されてホント便利になってる。
- 207 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 19:22:21.24 ID:FbflVc2K.net]
- >>180
めっちゃ読みづらい。 いやスペースがないせいだけどw
- 208 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 20:01
]
- [ここ壊れてます]
- 209 名前::05.66 ID:lRvoFyV9.net mailto: >>195
不要 もし後で変更する可能性があるならReaderWriterLockSlim使っとけばいい [] - [ここ壊れてます]
- 210 名前:デフォルトの名無しさん [2017/02/25(土) 20:48:05.07 ID:kVUREvkV.net]
- >>199,202
ありがとう。 foreachによって実は内部的な変化が行われていたらまずいのではと 考えていました。
- 211 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 20:49:00.75 ID:IvVV1H8V.net]
- >>195
AsReadOnly()とか使って使う側が変更しないことを保証しといたら? ImmutableList<T>を使うともっと堅い
- 212 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 03:14:38.88 ID:0YrJqBhk.net]
- ID:N0RLU+6xはもっと要点をまとめて端的に書き込めよ・・・
お前の言う「ラムダの優位性(キリッ」をC#で言ってる人なんてそうそう見ないぞ 変にプログラミング言語一般のラムダについて述べるせいで論点がブレブレだ
- 213 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 04:03:21.89 ID:0YrJqBhk.net]
- 日本語が苦手なのかもしれないが、「文法的な意味で関数とラムダを区別してない」とか「関数=ラムダ=階層=クラス」とかはよくないでしょ
初心者にjavascriptの関数が全てラムダみたいな誤解を与えかねない >Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。 Rubyの匿名関数(無名関数の方が一般的な呼び名だけど)は匿名クラス(無名クラスの方が一般的だけど)じゃなくて「Procオブジェクト」
- 214 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 10:41:00.28 ID:/Q8k6Dmd.net]
- C#のラムダ式は、どっちかというと式木が目的で導入されたんじゃないの?
てか、いい加減スレ違いでしょ、この話題。
- 215 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:19:59.83 ID:TMS4+8Av.net]
- >>207
式木はdynamicと関係あるだろ ラムダ式はLINQのメソッド形式では必須
- 216 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:26:13.98 ID:a7NPBA4e.net]
- いやメソッド形式では(事実上はラムダ式必須であっても)匿名メソッドでも代用はできる
式木は意味的に匿名メソッドが式にならないからラムダ式が必須だよ 匿名メソッドで式にできるように言語拡張しても良いけどそれってラムダ式そのものだし
- 217 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:33:24.17 ID:asTjjGDY.net]
- どうでも良いがJavaScriptのfunctionとアロー関数は
等価じゃないぞ。 乱用してバグこしらえるパターンだな。
- 218 名前:デフォルトの名無しさん [2017/02/26(日) 11:36:25.80 ID:H7bo/69j.net]
- >>210
functionだとself定義しないといけなくて面倒だけどアローは楽だよな
- 219 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:36:30.05 ID:Q2GAsSXo.net]
- 式木の説明読んでみたが、言ってることが関数型()の連中と全く同じでワロタ
- 220 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:44:07.89 ID:LLZCcrhN.net]
- >>208
式木はもともとdynamicとは全く関係ないよ DLRプロジェクトで動的コンパイル用のASTが作られたが、System.Linq.Expressionsと被ってるということでそれを拡張する形で統合された 結局DLRは頓挫してコアの部分だけがCLRに導入され、そこに乗っかって実装されたのがdynamic
- 221 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:49:23.90 ID:0YrJqBhk.net]
- >>212
(多少関連のある使い方ができるかもしれんが、)全然違うだろ どこを読んだらそんな変な読み取りができるんだ?
- 222 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:59:43.17 ID:LLZCcrhN.net]
- >>212
式木やdynamicのあたりは今時のミーハーな関数型()とはだいぶ色が違うと思う LispのマクロとかMOPとかの影響を受けた、かなりガチなマニアックな設計思想の
- 223 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 12:33:17.61 ID:Q2GAsSXo.net]
- >>215
てか式木っていったい何がやりたかったの? 超高速Evalか?
- 224 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 12:57:05.99 ID:LLZCcrhN.net]
- >>216
式木の目的は、C#で書かれた式を独自に解釈して処理すること 例えばラムダ式を変換してExcelの数式を生成したりできる 文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能、インテリセンスが効くといった利点がある
- 225 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 13:49:21.90 ID:Q2GAsSXo.net]
- >>217
おそらくLISP信者も同様にそのポテンシャルに魅了されているのだと思うのだが、 具体的に何に活用できるのだ? 何にでも使えそうだが、いざ何に使えば「他では達成できないほど」の結果を引き出せるのか分からない。 > 例えばラムダ式を変換してExcelの数式を生成したりできる なるほど素晴らしい。しかしExcelシートを別に用意した方が楽だし、 通常の数式ならC#側で「テキスト」として出力するのも難しくは無い。 (もちろん出力パーサの再開発になるから、MS謹製自動変換のほうが楽だが、その程度) > インテリセンスが効くといった利点がある これは利点ではあるが、主な目的のうち大半は「手打ち」ではないだろうから、この際あまり関係ない。 > 文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能 これを「ユーザ側」の利点とするなら、ユーザー側でのパーサ生成、 つまりメタメタプログラミングを想定していることになるが、そうなのか? 結果的にLISPで成功したプロジェクトといえるのはemacsのみだ。 対してCはほぼ全てのPC世界を再構築しているに近い。 理由付けはいろいろ出来るだろうが、結果的に誰もLISPを選ばなかったということではある。 他でもっと簡単に目的を達成できる方法があるのなら、誰もより複雑な方式での解決なんてしない。 結果的に、何でも出来るLISPは誰にも使われなかった。式木の雰囲気も見た目これに近い。 ExcelはExcelで、C#はC#で、で誰も文句は無い。 (その分簡単になっていて、Excelは非プログラマでも十分使える) そこを統合するのは学術的には意味があるが、現実的には意味が無い。 HaskellやPrologみたいにアカデミック向けなら分かるが、C#はそうではないし。
- 226 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:12:54.65 ID:AZYnfb42.net]
- メタプログラミングで便利
以上
- 227 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:23:30.18 ID:Q2GAsSXo.net]
- しかし現実的には、通常のプログラミング:メタプログラミング=100:1、位の分量しかないだろ。
どうでもいい箇所の高速化をやってる馬鹿と同じ。そこにこだわっても効果ないよ。
- 228 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:36:14.18 ID:0YrJqBhk.net]
- >>220
リフレクションの代わりにして高速化するとかの目的で結構使われてる アプリケーションで使うよりもライブラリの内部とかで使うことが多い
- 229 名前:デフォルトの名無しさん [2017/02/26(日) 14:37:28.54 ID:bMNV8RU5.net]
- 一度時代から消えたような無用な機能を言語オタクが復活させてみんな迷惑してるいう状況。
- 230 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:38:28.84 ID:BapL/ZVi.net]
- 他言語からの移植が楽
可読性悪くなるから使うことはないな
- 231 名前:デフォルトの名無しさん [2017/02/26(日) 15:03:16.38 ID:bMNV8RU5.net]
- はるか昔、C++ vs Objective-Cの戦いで瞬殺されたObjective-Cを
コード書けないジョブスが引っ張り出してきて、みんなが迷惑してるレベル。 それがC#とヘジ。
- 232 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 16:19:53.46 ID:cWe1Zi+O.net]
- C++が勝ったのはCとの互換性で、ジョブズがObjective-Cを選んだのはC++が美しくなかったからだと思う。
しかし、O-CはAppleだけだから、やらされる身からすると迷惑なんだろう。
- 233 名前:デフォルトの名無しさん [2017/02/26(日) 16:33:51.40 ID:bMNV8RU5.net]
- はるか昔、BASIC vs Pascalの戦いで、激戦の末、BASICが市場を制した。
にも関わらず、BSDにOSX、iOSなどと名前詐欺するように、PascalにDelphiなどとかっこいい名前をつけて売り出した男がいる。 ヘジである。 とある事業でMSの独占だと将来に保守するリスクが高まるのでDelphiを採用した開発があった。 Delphiは一瞬市場で人気は出たもののすぐに消えた。あのとき大量に作られたコードは今も保守されてるんだろうか。 市場から一度消えた古い技術を引っ張り出す輩はほんと迷惑である。
- 234 名前: ◆QZaw55cn4c mailto:sage [2017/02/26(日) 17:17:53.27 ID:1LlUyF33.net]
- pascal はいい言語だよ,LL(1) なんて美しいじゃないか
- 235 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 17:26:34.35 ID:cWe1Zi+O.net]
- アルゴリズム+データ構造=Pascal
これが私の原点だ。 でも、生活の為に、いまだCやってる。 ヘッダファイルが面倒、C#はヘッダファイルなくていいね。
- 236 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 08:50:13.59 ID:DR1RgDtx.net]
- 式木は実行時コンパイルできるという利点もあるよ
実行時コンパイルはシリアライザの高速化に使用されている
|

|