「K&R」本精読

晴。
K&R」本を読む。C言語のお勉強をしていると、Ruby ではどうなるかなと思って、Ruby で遊ぶことになる(こちらとかクイックソートとか)。
ずっと「K&R」本ばかりを読んでいたな。ポインタのところはさすがにむずかしい。一気に読みきれなかったな。この本では if, for, while などの比較演算子を使うところで、if (a = func()){..} みたいに代入文をよく使っているのだが、これ Ruby では有効でないね。もちろん Ruby でも代入文自体値をもつけれど、Ruby は 0 が「偽」ではない。だから、nil などが入るようにすれば一応使えるけれど、C言語みたいな使い方はそもそも考えられていないように見える。また、Ruby では、文字列の終りが「\0」とかではないし。
C言語は文法が比較的単純であるがゆえに、言語仕様を限界まで使わなくてはいけないような印象を受ける。隅々まで知っていないとダメというか。Ruby は僕などのレヴェルだと、全体の一〇分の一も知らないと思う。それでもまあ書けないことはない。C言語だと、「x は char を返す関数へのポインタの配列へのポインタを返す関数」とか、わけがわからないし。ちなみにこれ、char (*(*x())[])() を日本語で書いたもの。

Ruby でこんなことが可能。

a = "Punch"
a[5] = "!!" 
puts a

で、出力は「Punch!!」。しかし、「5」を「6」にするとエラー。そもそも「5」でもそこに文字列はないのに、付け加えることができるのだな。

【Rubyが好き】微積分や統計解析を快適に扱う言語(DSL) rubyで作ったヨ! - Qiita
おお、これは凄そう。自分も Ruby でこういうことがやりたいが、まだまだ実力不足。