mz
mzです。 Lispをちょっと齧っています。
(define (僕の議論が飛びすぎる?) #t) (define (直接話せば「そうですね」で終わる話がnetだと後まで残るので面倒な記述になる?) #t) (define (賛同を得られない議論がある?) #t)
todo:define-macroで記述
>・・・それらがデジタル回路の抽象化の壁を越えてくる確率と「高級言語」で書かれたプログラムのSEGVに出会う確率にはあまりに大きな差がある。
この部分は厳密には正しくないと思います。 デジタル回路の抽象化の壁を越えてくる確率は特殊な環境(宇宙空間とか) で何も対策を取らないと、高級言語で書かれたプログラム以上にバグの元となるはずです。 または、どうしても特別な対策を取りたくない場合も高級言語で書かれたプログラム以前になったりして。 (資源枯渇で精度を出さないが性能は欲しい。計算は間違ってもよいの場合があれば。) 括弧の中身はある意味人間の脳もそうかもしれません。計算は間違うし、自然的な意味では資源は大丈夫だし、性能も並列・曖昧では高い。 元の文のマシン語を学ぶ意味ってこれと似たことを言いたい訳だと思う。
- Shiro(2007/09/14 12:03:29 PDT): わざわざ宇宙空間に持ち出さなくても、周辺温度60度とか 電源電圧がふらついてるところとかに持ち出せば誤動作するでしょう。 でも、「そういうところで使うようには作られていない」ってことは最初から明らかにされているわけですよね? 「抽象化の壁が強固である」には単なる壁の厚さだけでなく、壁の境界が はっきりしているということも含めてイメージすればいいんじゃないでしょうか。 どこまでなら安全に使えるかということがわかっているというわけです (あくまで確率の問題ですが---それとて、確率が十分に低く、かつ上限が見積もれるケースと、 そうでないケースをどちらも「100%ではない」として一緒にすることは、 抽象化の壁の厚さを無視するのと同じことになります)。 ソフトウェアに関しては、その境界がかなりグレーで、知らないうちに壁に足を 突っ込んで反対側に突き抜けていたってことが多いと思いませんか?
- mz(2007/09/14 11:16:00 JST): 宇宙空間を持ち出したのは、温度だけでなくて、宇宙線の影響とかもあるからです。 そのため、宇宙工学に詳しければ定義できるかもしれませんが難しいのではないかという意味です。 ソフトウェアという区切りであれば、現代でも仕様を極限まで絞ったり、 将来的に自動生成等がされればグレーゾーンを越えられるかもしれません。 また、アセンブラを使う人は対策を練る必要がある人を指す訳で、 Shiroさんにとって100%でもその人に取っては100%でないことがあるということが 示されているのではないでしょうか。
- mz(2007/09/14 11:41:00 JST): 電子回路やらの元の文章が嫌味込みでごちゃごちゃして面倒臭そうなので、議論続けても不毛な気がします。暇な時にお書き下さい。
- Shiro(2007/09/14 20:09:23 PDT): ええ、ですから、メモリのソフトエラー率などは、 地上での宇宙線のレベルでの誤動作の確率は十分に低いですよ、 ということがハードウェアでは明らかにされているわけですよね。 だから地上で使うぶんにはほぼ気にする必要はないし、 宇宙に持ち出すなら持ち出す人は定格外使用だってわかってやるんでしょう。 100%〜の話は、「世の中に100%なんてないんだから程度問題」という 議論に対して「程度こそが重要だよ」、という話が私の9/12のエントリの骨子だからです。 こちらに冗談 めかして書きましたが、ETによる仕様からの処理系の(もしかするとハードまで含めた) 自動生成、なんてことが実用化された暁には、「論理回路 vs 量子力学」と同じくらいの 抽象化の壁が「高レベル仕様記述 vs 機械語」の間にも出来ることでしょう。 あるいは、世の中のソフトウェアの大部分が、ハードウェア並に適用条件を厳密に するようになったら。まさしくmzさんのおっしゃっているように。 そうなった時代に「機械語勉強しろ」「そんなこと言うなら量子力学だって」という 議論をするならわかるんです。でも今はそうじゃないよね、大部分のソフトウェアの 抽象化なんてぼろぼろじゃん、それとハード以下の抽象化と一緒にしちゃいかんでしょう、 という話をしています。
- mz(2007/09/14 13:32:00 JST) これが起こった原因自体はネット上だと誰がみるかわからないことや ソフトウェアの抽象の壁が厚いことによる参加のし易さがあると思います。 自分のエントリは程度の問題は人によってかわるのでないかということが一応の趣旨 ですが、それ以上に適当に書いてます。この場では不適切でしたが、結構関係ない人も見ているのだと思います。
>そうなった時代に「機械語勉強しろ」「そんなこと言うなら量子力学だって」という 議論をするならわかるんです。
この部分の参照先は嫌味なので気にしない方がいいかと思います。僕もgcの具体的実装(アルゴリズムも)については知らずに使っている事の方が多いですし。 多くの人にとって世の中100%はないことがわかっているから触れていないだけで、 一瞬でわかるであろう前提の取り方が違うだけだと思います。Shiroさんより知識の少ない人にとっては100%にならないことの方が多く強調するに値しないのではないでしょうか。 きっとShiroさんはソフトウェア・ハードウェア開発において100%でないということを丁度いいくらいに理解しているからそうでない人よりは結果を出しているということなのだと思いました。
- Shiro(2007/09/14 21:42:57 PDT): あ、もしかして、 「人は、よく知らないことがらについては違いがわからない」ってことなのかな?
- mz(2007/09/14 13:44:00 JST): 僕も面倒臭い人間に含まれるかと思いますが、 そういう人がいるということの方が強いかもしれません。 「人は、よく知らないことがらについては違いがわからない」というのは議論を終わらせるには有効ですが、曖昧な表現であるため誤解を生みます。その世界に住む人に有効に機能する話題よりは、広い空間では誤解を含まない話題の方が有意義だと思っています。 自分はscheme以外の話題はここで書かないようにしようと思いますのでこれで失礼いたします。
bugかどうか判別し難いもの
cygwinの不具合
- unable to remap *.dll
ash.exeを起動して $ rebaseall
windowsを捨てよう。
- windowsは捨てました。ubuntu&fluxboxで快適です。(700M CDを買って余りましたが。)
気付いた事
-Scheme:初心者の質問箱にて
R5RSについての疑問 くだらないことなんですが、zero?という述語、なぜ用意されているんでしょう? (= x 0)で十分だと思うんですけど。(eq? x '())と同じ意味のnull?が用意されているのに対応して、zero?が存在しているのかしら?
zero元があるかないかではないでしょうか? 0は単なる数値型ですが、意味さえあればそれ以外も含めることができるとか。<仕様書の意味がないか。
確証はないが議論にツッコミ
> (2007/07/29 03:14:51 PDT どう書く.org, Haskell)
haskellerがトップダウンに見えるのは、数学とかでも抽象的に考えるのと似た感じで書くからで、 ボトムアップとしても意味を持つのは言語の基礎が理論上でしっかりとしてシンプルだから。(具体例は省略します)
[(Int, Int, Int, Int)]の例は最小単位の[(Int, Int)] , [(Int, Int)]で持って zip とかを組み合わせて書いていき、本質的でないリファクタリングはしない。 困るのは手続き言語的な仕様を押し付けられた時で、固定長になかされることになるとか。
自分のポリシー
- 可能性を否定しない。全可能性を考える。
- 良く考える
- 良く試してみる。