アカウント名:
パスワード:
冒頭だけ読みましたが、これは初心者殺しのマニュアルですね。RMSは多数の罠を仕込んでいます。
1) 最初の罠: gitで公開されているファイルは GNU Texinfo 形式
あなたは git が使えますか? texi から html やpdfを生成できますか? この質問で何を聞かれているか理解できない人は、このマニュアルを読むことさえ出来ません。RMSこわい。
2) 次の罠: 最初のコードはフィボナッチ数を再帰処理で計算する例
いきなり再帰関数です。フィボナッチ数。スタック使って再帰を実行するぜ。メモリブロックの一部がスタックって呼ばれる領域なんだけど、C言語はそこを使って再帰を
いきなり再帰関数です。フィボナッチ数。スタック使って再帰を実行するぜ。メモリブロックの一部がスタックって呼ばれる領域なんだけど、C言語はそこを使って再帰を実現するんだぜ。スタック食い潰したらクラッシュする。どうだC言語は怖いだろっていう怒涛の文章になってます。これがイントロです。RMS頭オカシイ。
intで計算できる程度のフィボナッチ数を再帰で求めたとしてスタックオーバーフローになるわけないアホか
まともなコードとコンパイラならスタック消費しないからオーバーフローになるわけないアホか
まともなコンパイラなら再帰呼出しで組まれたフィボナッチ数の計算もループに展開してくれる、とか思ってるアホかな?
末尾再帰も書けないカスかな試しにアセンブリ出力してみたが、ちゃんとループに展開してくれたぞ
試しにアセンブリ出力してみたが、ちゃんとループに展開してくれたぞ
件のコードをgcc 12.2を使って最適化指示`-Os`を指定してコンパイルしてみたがhttps://godbolt.org/z/qvjeaedon [godbolt.org]fib: pushq %rbp xorl %ebp, %ebp pushq %rbx movl %edi, %ebx pushq %rcx.L3: cmpl $2, %ebx jle .L5 leal -1(%rbx), %edi subl $2, %ebx call fib addl %eax, %ebp jmp .L3.L5: leal 1(%rbp), %eax popq %rdx popq %rbx popq %rbp retfibの中からfibを呼んでるのを「ちゃんとループに展開してくれた」と思ってるアホかな?
'-O3'も試してみたぞ('call fib'は142行目)https://godbolt.org/z/jPGYW6866 [godbolt.org]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
これは無理ゲー (スコア:5, おもしろおかしい)
冒頭だけ読みましたが、これは初心者殺しのマニュアルですね。RMSは多数の罠を仕込んでいます。
1) 最初の罠: gitで公開されているファイルは GNU Texinfo 形式
あなたは git が使えますか? texi から html やpdfを生成できますか? この質問で何を聞かれているか理解できない人は、このマニュアルを読むことさえ出来ません。RMSこわい。
2) 次の罠: 最初のコードはフィボナッチ数を再帰処理で計算する例
いきなり再帰関数です。フィボナッチ数。スタック使って再帰を実行するぜ。メモリブロックの一部がスタックって呼ばれる領域なんだけど、C言語はそこを使って再帰を
Re: (スコア:0)
いきなり再帰関数です。フィボナッチ数。スタック使って再帰を実行するぜ。メモリブロックの一部がスタックって呼ばれる領域なんだけど、C言語はそこを使って再帰を実現するんだぜ。スタック食い潰したらクラッシュする。どうだC言語は怖いだろっていう怒涛の文章になってます。これがイントロです。RMS頭オカシイ。
intで計算できる程度のフィボナッチ数を再帰で求めたとしてスタックオーバーフローになるわけないアホか
Re: (スコア:0)
まともなコードとコンパイラならスタック消費しないからオーバーフローになるわけないアホか
Re: (スコア:0)
まともなコードとコンパイラならスタック消費しないからオーバーフローになるわけないアホか
まともなコンパイラなら再帰呼出しで組まれたフィボナッチ数の計算もループに展開してくれる、とか思ってるアホかな?
Re: (スコア:0)
末尾再帰も書けないカスかな
試しにアセンブリ出力してみたが、ちゃんとループに展開してくれたぞ
Re:これは無理ゲー (スコア:0)
試しにアセンブリ出力してみたが、ちゃんとループに展開してくれたぞ
件のコードをgcc 12.2を使って最適化指示`-Os`を指定してコンパイルしてみたが
https://godbolt.org/z/qvjeaedon [godbolt.org]
fib:
pushq %rbp
xorl %ebp, %ebp
pushq %rbx
movl %edi, %ebx
pushq %rcx
.L3:
cmpl $2, %ebx
jle .L5
leal -1(%rbx), %edi
subl $2, %ebx
call fib
addl %eax, %ebp
jmp .L3
.L5:
leal 1(%rbp), %eax
popq %rdx
popq %rbx
popq %rbp
ret
fibの中からfibを呼んでるのを「ちゃんとループに展開してくれた」と思ってるアホかな?
'-O3'も試してみたぞ('call fib'は142行目)
https://godbolt.org/z/jPGYW6866 [godbolt.org]