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


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

数学、算数はプログラムに必要か?



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






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

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

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