K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please set comment :).

_28(Mon)

 ++a は (a+=1) の syntax sugar としたら、a++ は何になるか。(a+=1; a-1) はダサい。 (tmp=a; a+=1; tmp) なのか。

まぁ、C にマッピングする必要も無いと思うけど、じゃぁ ++ 自体いらなさげ。

そもそも、++ という記号の起源は何処なんだろうな。


http://pc8.2ch.net/test/read.cgi/tech/1094825807/602

話すこと無いらしい。何を書けば話すことがあるんだろうね。


現実逃避に block の inline 化を考えていたんだけれど、どうにも厳密なものが出来ないようだ。

n.times{|i|
  ...
}

は、

_i=0
while _i<n
  i = _i
  ...
  _i=_i.succ
end

と考えていたんだけど、

prs = []
n.times{|i|
  prs << lambda{p i}
}

というプログラムがあった場合、i は別環境ではなく同じ環境で作るので(ブロックローカル変数じゃないので)セマンティックスギャップが生じる。

これはちょうど

1.times{|i|
  n.times{|i|
    ...
  }
}

と書いたのと同じような状況である。

まずい。どうしたものか。

って、現在のYARVのInteger#times も同様の問題があるのか...。これはばっくれちゃってもいいかなぁ。駄目なような気がするな。

困ったなあ。

prs = []
3.times{|i|
  a = i+1
  b = i*2
  prs << lambda{p [a, b]}
}
prs.each{|pr|
  pr.call
}

こんなプログラムでも同様の問題。なんかうまい手はないものか。proc 化されるかどうかわかれば、こんな苦労は無いんだが、解析不可能だからな。

ローカル変数はすべてメソッドローカル変数(ブロック間で共有)です、とかいう仮定にしてくれたらとても楽なのに...。

Array#each でも同様の問題があるが、Array#each は深刻かもしれない。


なんか1命令はさめば出来なくも無いような気がしてきた。

ループの先頭で毎回チェックする、とか。で、Proc 作ってたらそこでなんかする。なんかってなんだよ、って気もするが。


データ構造とアルゴリズムの話だけど、昔はデータ構造がインターフェースだから、それでよかったのかなぁ、などと思ってみた。

よしきさんの日記(http://d.hatena.ne.jp/squeaker/20051121#p2)を読んで、強い違和感を感じたのが考察の原因。プログラミング初学者にはデータ構造・アルゴリズムの話は必要ないか、という。

よく、データ構造の議論になると、スタックのデータ構造とかソートのアルゴリズムとかをやるけど、まぁその深い話(極限まで最適化する話)はもちろん必要ないとして、概念として「こんな感じで考えていける」というのを示すのは必要なのではないか。要するに、それがプログラミング。

たとえば C では構造体があるけれど、構造体を使うと何がうれしいのか、初学者にはそれがわからないわけだけれど(俺がわからないだけだったのか)。そもそもどんなデータがあるのか、というのはきっとデータ構造な話だよな。

で、考えてみたら、構造体のメンバとかなんとかはインターフェースだなぁ、とか。型も同じ。


まぁ、インターフェースって言っちゃうと広義すぎるところもあると思うんですけどね。でも、他に適当な単語が思い浮かばないな。


http://next.rikunabi.com/tech/docs/ct_s03500.jsp?p=lwj034&__m=1

ソースのべた書きって何?

しかし、テストの手抜きとかはわからんでもないが、小さい字で納品って...。コンサルの仕事ってそういうものなんですか。


visibility のチェックをしようとしてはまっていたのを忘れていた。


SEA & FSIJ 合同フォーラム 〜開発最前線シリーズ: GCC 行く年来る年〜

見に行きたいような、2000円払うものが得られるか不安というか。自分が吸収できるか、ね。


GC デバッグで死ねる。


begin/rescue で一緒に使う else はどこで使うんだ、という話がありましたが、標準添付ライブラリでは7箇所ありました。

"/usr/local/lib/ruby/1.9/test/unit/autorunner.rb" 87
"/usr/local/lib/ruby/1.9/fileutils.rb" 1248
"/usr/local/lib/ruby/1.9/irb/cmd/help.rb" 17
"/usr/local/lib/ruby/1.9/optparse.rb" 763
"/usr/local/lib/ruby/1.9/test/unit/autorunner.rb" 87
"/usr/local/lib/ruby/1.9/time.rb" 502, 569, 631

さすがnokadaさん、はずしません。

_shiro(Mon Nov 28 13:05:29 JST 2005)

"++"はPDPのアセンブラ起源じゃなかったかな、と一瞬思ったんですが念のため調べたら違ったみたい。 http://cm.bell-labs.com/cm/cs/who/dmr/chist.html ("More History" の 2パラグラフ目)

ところで「プログラミング言語の優劣」を書けばきっとたくさんの反応があると思います (ポールグレアムメソッド)

_babie(Mon Nov 28 20:23:01 JST 2005)

 ざーっと見た感じ、if 文の分岐っぽい使い方ですね。>else


好きにコメントを編集してください。ただし、あまり他の人のコメントを書き換えることは感心しません。



back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $