1 名前:デフォルトの名無しさん [2007/02/14(水) 21:46:25 ] どうなんだ?
488 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:02:58 ] うどん茹でたあと ダシを切らしていたのに気付いたので とりあえず醤油をぶっかけて食べたら 体壊して入院になりました itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/
489 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:10:47 ] 俺は3Dプログラミングやってるけど log使う事は滅多にないし,sin, cosも使う事はそんなに多くはない。 sin, cos使うのは回転処理関係ぐらいかな。sin, cos使わなくても回転させることはできるが。 その代わり,sqrtとかvectorの内積,外積(何故か"がいせき"で変換候補に出てこない),正規化とか 4次元vectorと4x4(3x4)の行列との掛け算はよく使う。 sin, cos無しでレンダラや物理シミュレータを書く事もできるが, sin, cosぐらい理解できないと(3Dプログラミングするのは)難しい。
490 名前:デフォルトの名無しさん [2008/02/21(木) 05:45:10 ] むかしのPCは実数の計算ができなかったから 実数計算ライブラリをつくるところからはじめなきゃならんかった。 ようやく実数の四則演算ができるようになったら テイラー展開で平方根・対数・三角関数を計算したな。 古きよき時代の話。
491 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 06:04:05 ] ちきゅうおんだんかはうそだってねっとにかいてあったからうそなんです><; 死ね馬鹿。
492 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:10:27 ] IPCCの報告書なんかで細かく数字を追いかけると、おかしな事は沢山あるね 過去100年でCO2は100ppm増えて、0.6℃とか0.7℃平均気温が上昇してるけど、 1、 増加した放射強制力は 1.6W/u で気温15℃としたら たかが0.3℃にしかならない 2、 なのに予測値では0.9℃/100ppm という数値になってる 3、 炭素循環の絵を見ると、人工CO2排出量は地上の植物のCO2固定量の7%程度でしかない そして植物の成長は太陽・栄養が十分ならCO2に比例するという実験結果が出ている Co2濃度は30%も増えてるのだから 栄養が十分ならこの固定速度も3割上昇してる筈 結局、人為CO2排出が直接の原因ではなく、 この炭素循環のフィードバックのどこかの問題ではないのか? ・気温上昇が原因で増えているのではないのか? ・植物の成長に十分な栄養が偏在してしまっているのではないか? 本来は植物⇒動物⇒排泄物や死骸⇒植物 という連鎖があるのを 人間が食物連鎖の頂点にいるために、この連鎖を壊してしまって 山や野原や海の栄養を保てないでいるのではないのか?
493 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:08:05 ] >>490 浮動小数点演算か多倍長演算かどちらでライブラリ作りましたか?
494 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 21:27:58 ] むしろ必要じゃないなんて少しでも思えるのが不思議
495 名前:デフォルトの名無しさん [2008/03/21(金) 02:47:08 ] 404 Blog Not Found:Stiffと偉大なプログラマー達-プログラマーと数学・物理 blog.livedoor.jp/dankogai/archives/50629021.html 今回の質問はこちら。 数学と物理は、プログラマーにとって重要?だとしたらなぜ?
496 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 05:38:05 ] 「数学」の定義が曖昧なまま質問してるから 答える方も 1)自分の都合に合わせて解釈してる香具師 2)行間を読んで仮説を立ててそれに基いて回答する香具師 3)予防線をはった答え方してる香具師 4)適当な香具師 にみごとに分かれてる
497 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 18:10:31 ] if とか else とか使うのも数学だと思うけど間違ってるかな…
498 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 20:41:34 ] >>497 たまーに「お前はド・モルガンの法則も知らんのか/使えんのかゴラァ」 と言いたくなるようなプログラムに出くわす。
499 名前:デフォルトの名無しさん [2008/03/21(金) 22:58:18 ] 今某言語の三角関数のライブラリが見つからんので オイラー展開で自作してるぜ うぇあああああぁあっ!!
500 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 23:26:18 ] >>499 * Algorithm * 1. Since sin(-x) = -sin(x), we need only to consider positive x. * 2. Callers must return sin(-0) = -0 without calling here since our * odd polynomial is not evaluated in a way that preserves -0. * Callers may do the optimization sin(x) ~ x for tiny x. * 3. sin(x) is approximated by a polynomial of degree 13 on * [0,pi/4] * 3 13 * sin(x) ~ x + S1*x + ... + S6*x * where * * |sin(x) 2 4 6 8 10 12 | -58 * |----- - (1+S1*x +S2*x +S3*x +S4*x +S5*x +S6*x )| <= 2 * | x | * * 4. sin(x+y) = sin(x) + sin'(x')*y * ~ sin(x) + (1-x*x/2)*y * For better accuracy, let * 3 2 2 2 2 * r = x *(S2+x *(S3+x *(S4+x *(S5+x *S6)))) * then 3 2 * sin(x) = x + (S1*x + (x *(r-y/2)+y)) てな物を見かけたが...
501 名前:デフォルトの名無しさん [2008/03/21(金) 23:55:41 ] C++の標準ライブラリの三角関数は遅いから自作しないといけないらしいな
502 名前:デフォルトの名無しさん [2008/03/22(土) 00:06:46 ] >>499 テイラー展開? オイラー法? おいら(的)展開?
503 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 00:25:38 ] プログラムに限らず、数学の素養は、 なにかにつけあった方がいい。 ただ、数学は勉強がかなりしんどいので、 何か具体的な目的があって勉強するのでないと、 とても心がもたない。 だから、必要になって切羽詰まってから ゴーっとやるのが良いと思う。
504 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:15:26 ] ただ切羽詰まってからだと良くない手法にゴーっと向かったりするわな たとえば三角関数(オイラー角)使うこと自体が大抵の場合よくない
505 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 08:45:51 ] そのとおりだな。>>504 そこまで切羽詰まるまえにスタートできるとベストだが、 実務はなかなかそうはいかないからな
506 名前:オガちゃん萌え ◆tyvkWCNtzY mailto:sage [2008/03/23(日) 21:15:39 ] ふと思うのだが、プログラマって数学は弱いケースが多くなかろうか? for文だって要するに、Σだったりするわけだが、そんなことを意識していなかったりする が、数学的知識に長けていて損をすることはきっとない、CRCのテーブル化された値なんぞ、 俺にはなんでこういうテーブル値になってるのかすらわからんw
507 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:26:10 ] >>506 どこを縦読み?
508 名前:オガちゃん萌え ◆tyvkWCNtzY mailto:sage [2008/03/23(日) 22:10:33 ] >>507 スマソ、思いつきw
509 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 23:34:34 ] 「数学キライだ」とか言ってる人も、 受験とかのシガラミのせいでそうなっただけで、 実は、やれば速攻でできるようになる、という場合によく遭う。 普段から数理的な考えを実践し、 扱えるスタックが深くなっているからではないか。
510 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 02:05:44 ] 昔は論理的な思考方法を獲得するための最良の手段が数学だったと思うが 現在その意味ではプログラミングの方が効率がいいような気がする。 ややこしい証明しなくても間違ってると動かないし、それ以前に大体コンパイラ様が教えてくれる。 数学が必要なのはプログラム自体が数学を必要とする場合ではないか?
511 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 07:12:13 ] >>510 論理的な思考方法に関する話を論理的に駄目な形で説明するとは なかなか面白いですね。
512 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:36:54 ] for使うのに慣れすぎると 1〜2000まで足すのにforで足してしまう癖が付く Σなら2001000って一発ででるのにね さて1〜2001まで足すといくつ?
513 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:43:23 ] ここで (2001+1)x2001/2 を計算しようとしたあなたは素直すぎます 2001000+2001=2003001 とエレガントに答えるべきです
514 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:47:37 ] いや、それを得意げに語られても。 極真っ当なプログラマなら、直前に算出した結果を次のステップで利用できるかどうか位常に意識しているもんだよ。
515 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:18:29 ] 再帰使え
516 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:13:31 ] 再帰は複雑な問題を簡潔に記述できるのが利点だが それ以外は悪いことばかりだぞ
517 名前:オガちゃん萌え ◆tyvkWCNtzY mailto:sage [2008/03/24(月) 18:49:45 ] >>513 オイラーが幼少期に1〜100まで足す計算だったかを学校で教師に言われて、一瞬で 答えを出した逸話があるね >>516 再帰はある種、ループ処理に似ている希ガス
518 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:06:27 ] ガウスじゃなくて?
519 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:00:44 ] ガウスだよな だけど偉人の所業って本当に当人のものでなくても 色んな逸話がいつの間にか結び付けられるって言うしな
520 名前:オガちゃん萌え ◆tyvkWCNtzY mailto:sage [2008/03/24(月) 23:12:51 ] >>518-519 ガウスだった、記憶違いスマソ
521 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:35:26 ] 漏れもeulerだと思ってたorz
522 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 07:49:02 ] おいらもオイラー(ry
523 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 11:38:20 ] オイラーは、死ぬ直前まで計算してたくらいの計算の天才だったそうですしね。
524 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:30:00 ] >>517 というか、計算の理論としては「再帰関数で定義できる=コンピュータで可能な演算」というのが筋書きのひとつです。 (Church, 1936)
525 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:29:19 ] >517 ループは再帰の一種というか制限されたバージョンでしょ
526 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 00:55:45 ] オイラーの法則は女性が見ると濡れるってじっちゃがいってた
527 名前:デフォルトの名無しさん [2008/05/08(木) 08:33:45 ] オイラーはドラマー
528 名前:デフォルトの名無しさん [2008/05/08(木) 16:43:50 ] プログラマーには数学が必要だと思って死ぬほど勉強してたら 気づいたときには計算機科学者になってた 見習いだけど
529 名前:デフォルトの名無しさん [2008/05/08(木) 17:14:05 ] せめて2進数、16進数すらいは勉強してくれ〜
530 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:35:56 ] >>528 ぜひご教授ください。んー、並列コンピュータの最近の動向はどうなってますか?
531 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:36:41 ] or が + で and が * とか (true * false) が false になるとか も勉強してくれ〜
532 名前:デフォルトの名無しさん [2008/05/09(金) 16:17:04 ] ↑ おいおい、なんで or と + が一緒になるんだw おまいこそ1から勉強しなおしてくれ
533 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:43:34 ] (A or B) が い)A:true,B:true なら true ろ)A:false,B:false なら false は)A:true,B:false なら true に)A:false,B:true なら true なのは、 true を >0 な数(例として1)とし false を 0 としたとき い)1+1 なら 2で >0 なので true ろ)0+0 なら 0で 0 なのでfalse は)1+0 なら 1で >0 なので true に)0+1 なら 1で >0 なので true なのと同じで、 (A and B) が い)A:true,B:true なら true ろ)A:false,B:false なら false は)A:true,B:false なら false に)A:false,B:true なら false なのは、 true を >0 な数(例として1)とし false を 0 としたとき い)1*1 なら 1で >0 なので true ろ)0*0 なら 0で 0 なのでfalse は)1*0 なら 0で >0 なので false に)0*1 なら 0で >0 なので false なのと同じなんじゃなかったっけか。間違ってたらメンゴ
534 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:43:42 ] >>532 んー、or と + が一緒というのは、ある意味妥当なんですけど。
535 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 19:21:39 ] >>533 そんな長々と書くことでもなかろうに
536 名前:デフォルトの名無しさん [2008/05/10(土) 21:14:49 ] ほほう。1+0と1+1が同じ答えだと。おまいの通った小学校では そんなふうに教えたのか。ふうん。それ、なんて学校ニダ?
537 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:35:10 ] >>536 判ってて言ってはいるんだろうけどw or を + / and を * で表記するという前提が無いとそこだけ見たらごかいするね。 それにしても >>533 は随分とまどろっこしい人だなぁ。 この人の頭だとプログラム一行書き上げるのに半日掛かりそう・・
538 名前:デフォルトの名無しさん [2008/05/10(土) 21:54:32 ] >>536 論理代数じゃ普通だろ 何言ってんの?
539 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:25:20 ] {{false, true}, OR, AND} は体をなす。 代数構造が、F_2 = {{0, 1}, + (mod 2), ×(mod 2)} と同じ。 F_2 は加減乗除の四則演算がきっちりできる。
540 名前:デフォルトの名無しさん [2008/05/10(土) 22:37:31 ] なんで mod 2 するんだよw なぜ mod 3、mod 4 じゃいけないんだ?説明してみろ。 mod 1 すれば + も * も / も - もぜんぶ同じだぞ! おまいな、自分の都合のいいように条件を設定するなよ。
541 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:39:12 ] + (mod 2) はXORと同じじゃない?
542 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:58:43 ] >>540 {{0, 1, 2}, + (mod 3), × (mod 3)} も体(四則演算可能)になるよ。 4 の場合はダメ。素数である必要がある。 たとえば 4 の場合、 2×2 が 0 になっちゃったり、2×a=1 になるような元 (2の逆元、これがないと割り算が成り立たない)がなかったりする。 >>541 ああ、そう。OR は間違い。 体をなすのは {false, true}, XOR, AND}。
543 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:00:06 ] >>540 mod 1 もあり。 ただ1つの元 0 からなる体とみなす(自明な体っていう)。 ただ、当然、数学的に面白い特性は持ってない。 自分に都合のいい条件を設定したんじゃなくて、 そういう条件のものを考えると面白い結果が得られるものが見つかっただけ。
544 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 01:17:45 ] あの〜、コンピュータの世界だと 0 か 0 で無いか・・だよね。true は 1 というより not false だからもすこし柔軟にみたほうがいいとおもう。
545 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 01:25:16 ] >>544 それはコンピュータの世界の常識じゃなくて、Cの時代の悪習。 しかし、そうまでして人の話にけちをつけたいかww
546 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 01:29:13 ] あと、{{true, false}, XOR, AND} と {{0, 1}, +(mod 2), ×(mod 2)} は、 代数構造が同じというだけの話。 この延長で、集合 {0, 非0} に対して、 +演算子を、2つの元が等しい時0、さもなくば非0、 ×演算子を、2つの元の両方が非0のとき非0、さもなくば0 で定義して、{{0, 非0}, +, ×} としても代数的に同値。 見てくれが同じかどうかが重要じゃなくて、 抽象的に見て代数構造が同じかどうかが重要。
547 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 06:23:39 ] andとorを理解するのにわざわざ遠回りをするだけのような。
548 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 09:40:48 ] AND OR の理解のためじゃないな。 符号理論とかで使う。
549 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:04:05 ] >>545 それいぜんの処理系もそうでしたが? たとえば、N-BASIC とか。
550 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:21:57 ] 言い換えるわ、C のあたり以前の。 要するに20年前、プログラミング言語がよりマシン語に近かったころの名残。
551 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:35:44 ] >>550 悪習ではないと思いますが。 現在の処理系ではどうなっているのでしょうか?
552 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:06:17 ] true, falseをラムダ抽象で表現するのとか門外漢には意味不すぎるわ
553 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:07:31 ] >>551 当時の価値観では悪習ではないけども、 過去の名残を未だに使うという行為は悪習。 最近できた言語なら普通は bool 型持ってる。
554 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:11:47 ] >>552 ラムダは、関数の定義・実行を抽象化したもの。 ここしばらく話題になってるのは単に数の四則演算の抽象化。 代数系、群論とかが関連する分野。
555 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:15:06 ] >>551 特定の値を false それ以外を true として扱う言語なら結構あるだろ? c とか c++ とか perl とか python とか ruby とか common lisp とか scheme とか...
556 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:35:06 ] なるほど、もっと意味不なものってことだけはわかりました
557 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:19:56 ] >>545 いや、ケチつけたつもりはないがそう捉えたのなら・・・ >>550 プログラミングについてとあるからさ。 現実、 not false は下位ビットだけみれば 1, 0 の違いだけどレジスター的には -1 になるでしょ。 判定するきわざわざ AND 0001 して(0, 1)にするよりそのまま (0,-1) とみるほうが手間も省けて処理しやすい。 >>553 ただbool型で規制はしても中身がかわったわけではないから(コンパイラで解釈・制限するのを拡張しただけという・・)
558 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:35:37 ] >>557 コンパイラが解釈して制限するということが重要。 プログラマの人為的ミスをなくすのが一番の目的。
559 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:43:39 ] 抽象代数の話題で、スレの趣旨からちょっとそれ気味だったんで話の方向を修正すると、 プログラミングと数学に共通して、抽象化ってのは大事。 「CPU の命令にboolがないんだからboolを考えない」ってのは、 具体的なんだけども、プログラマ自らが気をつけながらプログラミングしないといけない。 非0をtrueとするなら、1と2のANDはどうなるんだ、とかね。 true AND true だからtrueになってほしいけど、 Cで書くところの 1 & 2 とかくと当然0でfalseに。 x != 0 && y != 0 みたいなコードが論理ANDに相当するんだけど、それもいちいち書きたくない。 そこに、CPUの具体的な構造から離れて(抽象化して)、 boolを導入、面倒な決まり事はプログラマじゃなくてコンパイラが面倒みる。
560 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:47:32 ] {{true, false}, XOR, AND} と {{0, 1}, +(mod 2), ×(mod 2)} が代数構造としては同じ ってのも、具体的な形にとらわれず、抽象的に見ることで、 同じ理屈で扱えて便利になるわけ。 ちと無理やりだけど、スレタイに絡めて締めると、 プログラミングには数学で出てくる抽象的な考え方が必要。
561 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:51:58 ] その代数構造ってやつでで言語の構文を見ると ある言語の構文を別の言語の構文で表現する とかが簡単にできたりして、一つの言語を知識で様々な言語を使用できる とかそういういいことがあったりするの?
562 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:58:55 ] >>561 ライブラリ使ってるだけの末端のプログラマにはあんまり関係ない。 言語設計者とか、数値計算ライブラリやら通信符号化ライブラリやら書いてる人にとって必要。 末端プログラマは間接的にしかそういう理論の恩恵受けないけども、 とりあえず抽象化って考え方自体は持ってて損はない。
563 名前:デフォルトの名無しさん [2008/05/11(日) 13:10:36 ] >>559 そいうのはふつう、1 && 2 だろ。 1 & 2 とは全然意味が違う。 算術演算の AND と論理演算の AND の違いくらい理解しとけよ。
564 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 13:19:55 ] >>563 だからそうやって自分の噛みつけるところにだけ反応するから話がそれてくんだよ。
565 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 13:58:39 ] >>561 表示的意味論って奴がおおむね君が言ってる部分に相当するのかな >>563 記号の意味も提示せずに何を吠えてるんだ
566 名前:マイク ◆yrBrqfF1Ew [2008/05/11(日) 14:47:29 ] 前から思ってたけどお前ら頭良いな お前らの一部の人間だけどな
567 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 16:13:15 ] >>558 それはもちろん同意です。 >>559 boolを考えないという極論ではないっす。単なる論理演算にそこまで深く考える時間があったら他にもっとあるんじゃ・・と。 非0 を true とするとき、つまり 1(!0), 2(!0) なので 1 && 2 は true という事になるよ。 それは数値的な 0001 & 0010 で 0000 (false)? って発想に持っていくに矛盾を感じるんだけどな(判っててこじつけてる感じ) って >>563 さんが答えてる(うむむ)
568 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:16:06 ] >単なる論理演算にそこまで深く考える時間があったら他にもっとあるんじゃ・・と。 この部分に関しては、その人の立場によるとしか言いようがなくて。 必要な人には必要なわけよ。 あと、C言語の && は実質的に、 if(x != 0) return y != 0; else 0; の意味なのは確かだけど、それも、マシン語レベルではそんな命令はないわけで ある種の抽象化だと思う。
569 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:19:16 ] && の解釈だけども、 VC++ なんかでは(C++/CLI では)、 ・&& は bool 同士の二項演算 ・int → bool の暗黙の型変換がある という処理になるね。 整数同士の二項演算としての && 演算子(ショートサーキットAND)はない。
570 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:21:24 ] 過去のプログラムのコンパイルが通らなくなるとまずいから 昔の習慣を引きずってるけども、ほんとのこと言うと、 int → bool の自動変換なんて人為的ミスの温床だからない方がいいのよね。
571 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:06:31 ] >>570 人為ミスという意味では、過去のプログラムが通らなくなって、一から作り直しの方が多くなりそうだ
572 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:11:10 ] >>571 だから新しい言語が生まれるんだよ。
573 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 21:59:35 ] >>568 確かに個々の立場なの尊重すればそうですね。 安全な言語が必要な人は C/C++は使わなければどうかと思う。 また、マクロコード(今もマシン語というんですか?)レベルで && 相当が無いというより Operand + Data の構造上複数ステップの記述になるのということだと思う。 論理演算は基本(True,False)から構成されるけれどコンピュータ上はレジスター(8bits,16bits,32bits,64bits)なサイズで代用していくわけで理屈としては大切だけど現実は...。 >>570 それは、理屈屋さんが余計なお世話をするからだと思うよ。たとえばCOBOLならプログラムは書けなくても知識人なら理解できるリストかもしれないけど実際にプログラマする人にとっては面倒なコーディングと感じるギャップに近い。 >>572 間違いが起こりにくいよう制限(ルール)を付けるとその知識の習得に大変な労力が必要になる割に素晴らしいプログラムは書き憎くなる(想像力を妨げる)という懸念も。
574 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 22:25:44 ] >>573 C++ → C# に移行したプログラマだけど、 抽象度高い言語の方が覚えやすさも生産性も創造性も絶対高いよ。 つけられた制限による損失 <<< 書きやすくなった分の恩恵。 どうしても変態的なことやりたい人には、 DLR でも使って自分で言語作るという選択肢もあるよ。 まあ、またスレ趣旨とかけ離れてきたけども・・・
575 名前:デフォルトの名無しさん [2008/05/11(日) 23:04:17 ] インタプリタ言語とコンパイラ言語を比較されてもねぇ・・・ 人為的ミスをお菓子やすい言語でも、CPUの性能を100%引き出すために あえて使わざる終えない局面だってあるんだよ。 危険を冒して苦難に立ち向かう。まさに、男の仕事だね。 女の腐ったような言語とは一緒くたにすんなって。
576 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:10:53 ] C# はコンパイル言語ww C++ と比べると8〜9割程度だけど、C# のパフォーマンスはかなりいいよ。 あと、今後は徐々にJavaとかC#みたいな中間言語方式の方が最適化が有利になってくる。 CPU のコア数とか、環境に合わせて最適化JITコンパイルしてくれるから。 だいたい、アセンブラ→C移行期にも似たような議論があったと思うけども、 人手による最適化はいずれコンパイラによる最適化に抜かれる。 よっぽど優秀な人間がよっぽど重要な部分に注力しない限り、人手の最適化はきつい。
577 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:12:19 ] ストイックな世界に生きたければ、自分で言語作る側に回るのが正解。 わざわざ抽象度低い言語使って、人手の最適化でパフォーマンスを上げようってのは 単なるオナニー。
578 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:23:38 ] >>576 > 人手による最適化はいずれコンパイラによる最適化に抜かれる。 と、言ういいわけで、与えられた数式をプログラムに丸投げする 馬鹿が出てくるわけだ # 人間が前処理した方が早い # 数値計算あたりの話だけどな
579 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:35:25 ] 前処理って・・・ 1+2+3+ … +N を 1/2 N(N+1) に展開したりの部分? 最適化以前の話だけども、まあ、そういう話のほうがスレタイどおりでいいね。
580 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:14:03 ] >>579 その類いの話とか、特異点周辺のアルゴリズムを 何も考えずに数式通り計算するから話にならん 誤差出まくりとか
581 名前:デフォルトの名無しさん [2008/05/12(月) 00:20:59 ] >C# はコンパイル言語ww ギャハハハハハ〜〜〜 恥ずかしい事書いちゃったねww
582 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:41:35 ] C#がコンパイル言語かどうかはスレ違いだからほどほどにしておけ。 >>574 俺はC++のほうが抽象度高いとは思う。 ただ、それは先端のほうの話で現実にはなかなか使えないけど。 C#もLINQでだいぶ追いついて俺の中でC#の評価上昇中。
583 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:48:07 ] >>580 アルゴリズム改善とコード最適化は別物よ。 >>581 C# はJITコンパイル式。 C#ソース→ILの部分もコンパイルだし、 IL実行時も起動時にネイティブにコンパイルされる。 >>582 C++の方が抽象的なのってtemplate周りだけじゃね? LINQで追いついてって話してるってことは、 Boost のラムダとかのこと言ってるのかな。 Boost ラムダはかなり無理やりな作り方してて、C++ らしさのかけらもないけども。 むしろ、最近はC#が言語の最先端で、 JavaもC++もC#の後追いしてる状況。
584 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:50:47 ] スレタイに沿った話に戻すと、 >>579-580 みたいな話は「アルゴリズム改善」ね。 コード最適化ってのは、ポインタ使った方が早いとか 演算の順序変えた方がキャッシュが効いて・・・ とかそういう細かい調整の部分。 アルゴリズム改善には数学・算数が必要だと思うし、 人間の創造性が一番発揮される部分だと思う。 コード最適化は手間かかる割に面白くないし、 正直このあたりは数学も算数もくそもない。 そういう所ほどコンパイラ任せにすべき。
585 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:52:44 ] Java, C++ が C# の後追いしてるってのは、 プロパティとかクロージャの当たりね。 Java SE 7 とか C++ 0x の仕様はかなり C# 3.0 の影響受けてる。
586 名前:デフォルトの名無しさん [2008/05/12(月) 00:54:46 ] a=1 b=2 c=a<b basic/vb なら c は -1 (true では無い事に注意) c/c++ なら c は 1 (同上) java/c# なら c は true (0 も 1 でも無い)
587 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:56:05 ] >>574 どういう類いをしているかによるけど C/C++ と C# や Java 系を比較はできないとおもう。 それと変態的な(面白いね。確かに私もなんでそんな判りにくい書き方する?というの目にすることある)のはその人の性格であって C/C++ とかそういうレベルのものではないと思うよ。 C# でも十分変態的なリストは書けるでしょ? で、数学的な発想というより証明力がある人(仮定、推論、実験的証明とか)が優れている人は解を得るためのプログラムを想像する力も高いと思う。 そして、そういう人はその為に必要なツール(複数のプログラム言語)の特性をそれなりに理解し使いこなす人ではないかな。 言語のすべてを知る必要は無く、自分が実現するに必要な機能をその言語から引き出す力があるか・・だと思うよ。
588 名前:デフォルトの名無しさん [2008/05/12(月) 00:56:38 ] >>583 ふ〜〜ん。 じゃぁ、Perl もコンパイラだ。PHP もコンパイラだwww