わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Ruby入門?

ざっと読んで,気になったことを.

  • サンプルコードにインデントがない.
  • テキストエディタや実行環境の説明がない.入門者がどう動かせばよいかの配慮がない.
  • 「inte」という変数名は初めて見た.インテ! インテ! なんて響きだ!
  • 「name = gets」に解説がなくていいの?*1 動作確認しやすいか,これ?*2
  • getsはカッコなし,chompとto_iにはカッコあり.なにこの不統一感.どれも引数を与えないメソッド呼び出しなのに.
  • 「プログラム上の問題をメインルーチン内で解決するのではなく」はいいけど,直後の「オブジェクトとして記述するとよい」って,クラスの定義のことか?

といったわけで,とうてい,入門者におすすめできない内容です.
著者名で検索したところ,原文が見つかりました.

原文もまた,インデントなしです.いや,ところどころしているのか.…
最大の引っかかりどころは,"Control Structures: If, While, For"*3の直後のコードです.画像にしました.

2つのputsは,if,else,endよりも右から始まるのが自然です.しかし画像では左,すなわち逆方向にインデントされているように見えます.FirefoxChromeInternet Explorerのいずれでも同じ見え方です.
該当箇所のソースはというと:

     array3 = Array[1,2,3,4,5]
</p><p>
&nbsp;&nbsp;&nbsp;&nbsp; if (array3[5].nil?)
</p><p>
&nbsp;&nbsp; &nbsp;puts "array3 has no fifth element!"
</p><p>
&nbsp;&nbsp;&nbsp;&nbsp; else
</p><p>
&nbsp;&nbsp; &nbsp;puts array3[5].to_s()
</p><p>
&nbsp;&nbsp;&nbsp;&nbsp; end
</p>

「&nbsp;」が徹底されていなかったことによる不具合ですか.いやいや,&nbsp;の連続でインデントさせ,地の文と区別するのが,そもそもまずいのでは….
日本語版では,コードにあたる箇所は読みやすくなっています.ソースを見ると,<pre>と<code>を使用しています.インデントをはじめ書き方は,依然として誰にも勧められませんが,訳出にあたり原文を尊重し見やすくしている点は,記事の良いところとして挙げておきましょう.


私は授業(講義・演習)でRubyのコードを取り上げたり,学生に使っていいよとコードを渡したり,Rubyのプログラミングについて学生からの個別相談に対応したりしてきましたが,そういった経験のみでは,入門者向けの記事を書けないことは自覚しています.
それでももし,入門したいという人が来たら…
まずはLinuxをインストールし,端末(シェル)とEmacsFirefoxを使えるようにしてから,こちらで作ってきたスクリプトを動かしてもらったり,何か手がけてみたいものを聞いてその足がかりとなるコードをペアプログラミングで作ってみたり,といったやり方で,学習してもらいますかね.
そのやりとりや,中間段階そして完成のコードを,記事にして公開するほうが,費用対効果は高そうです.

*1:getsはメソッドであり,より具体的にはObjectクラスのモジュール関数です.http://doc.okkez.net/static/2.1.0/class/Kernel.html#M_GETS

*2:入力の値をハードコードするほうが,間違いなく動作確認しやすいです.

*3:これに対応する日本語は,冒頭のリンク先にはありません.