アカウント名:
パスワード:
まあ、NEXTSTEPの時代から、複数のCPUで動くバイナリの仕組みはあるわけだから、開発者側がお行儀良くコードを書いていれば、コンパイルオプションだけでなんとかなるので、ユーザはそれほど気にしないで良いかもしれない。
でも、例えばARMっでx86とバイトオーダが違うみたいなので、一筋縄ではいかないかぁ。
#一筋縄でイかない場合でも、亀甲縛りならイく…
いや、エンディアンを意識せずにコード書いちゃうとあとから、エライ目に合います。
昔、知り合いが、「この本のとおり書いてみたんだけど、動かない」と相談を受けたので見てみると、ビッグエンディアンでしか動かないネットワーク系のサンプル。即座に、後輩達に「その本を持っているのであれば、直ちに焚書せよ」との命令を発したことがある。(わたしはRichard Stevensの本しか参考にしたことがなかったので、そんなひどい本があるとも思っていなかったが)
「ビッグエンディアンでしか動かない~」ってのはビッグエンディアンであることを前提として(≒利用して)書かれたコードであると思うので、「エンディアンを意識せずにコード書いちゃう」ってのとは逆ではないの。
ネットワーク系のサンプルなのにバイトオーダーへの配慮・補足がない、って話でしょうね。htonとか。明らかな前提を設けて意識的に書かれたコードか、無意識に処理系依存してしまったコードか、結果だけではどちらとも。
> 明らかな前提を設けて意識的に書かれたコード
そんなものを書籍のサンプルに載せる時点でやっぱり焚書しておk
「ネットワーク系のサンプル」が記載された本ならば、CPUがなんであろうとネットワークバイトオーダに変換するように書いておくっていうのが当然だと思うけど? そうすれば利用するほうからみれば、"エンディアンを意識せずにすむ"ようになるわけで。
自分の使う環境に限定したコードで,かつ絶対に継続性が無いということがいえないなら、「ビッグエンディアンであることを前提としてネットワーク系コードを書く」ましてや本として出版するなんてことはやっちゃいけないことだと思う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
fat binaryの復活 (スコア:2)
まあ、NEXTSTEPの時代から、複数のCPUで動くバイナリの仕組みはあるわけだから、開発者側がお行儀良くコードを書いていれば、コンパイルオプションだけでなんとかなるので、ユーザはそれほど気にしないで良いかもしれない。
でも、例えばARMっでx86とバイトオーダが違うみたいなので、一筋縄ではいかないかぁ。
#一筋縄でイかない場合でも、亀甲縛りならイく…
Re: (スコア:1)
Re: (スコア:2)
いや、エンディアンを意識せずにコード書いちゃうとあとから、エライ目に合います。
昔、知り合いが、「この本のとおり書いてみたんだけど、動かない」と相談を受けたので見てみると、ビッグエンディアンでしか動かないネットワーク系のサンプル。
即座に、後輩達に「その本を持っているのであれば、直ちに焚書せよ」との命令を発したことがある。(わたしはRichard Stevensの本しか参考にしたことがなかったので、そんなひどい本があるとも思っていなかったが)
Re:fat binaryの復活 (スコア:1)
「ビッグエンディアンでしか動かない~」ってのはビッグエンディアンであることを前提として(≒利用して)書かれたコードであると思うので、「エンディアンを意識せずにコード書いちゃう」ってのとは逆ではないの。
Re: (スコア:0)
ネットワーク系のサンプルなのにバイトオーダーへの配慮・補足がない、って話でしょうね。htonとか。
明らかな前提を設けて意識的に書かれたコードか、無意識に処理系依存してしまったコードか、結果だけではどちらとも。
Re: (スコア:0)
> 明らかな前提を設けて意識的に書かれたコード
そんなものを書籍のサンプルに載せる時点でやっぱり焚書しておk
Re: (スコア:0)
「ネットワーク系のサンプル」が記載された本ならば、CPUがなんであろうとネットワークバイトオーダに変換するように書いておくっていうのが当然だと思うけど?
そうすれば利用するほうからみれば、"エンディアンを意識せずにすむ"ようになるわけで。
自分の使う環境に限定したコードで,かつ絶対に継続性が無いということがいえないなら、「ビッグエンディアンであることを前提としてネットワーク系コードを書く」ましてや本として出版するなんてことはやっちゃいけないことだと思う。