読者です 読者をやめる 読者になる 読者になる

Ruby合宿に参加してきました③ プログラミング言語Ruby編

Ruby合宿系の記事3件目
前回記事【
Ruby合宿に参加してきました② 会話から得たもの編 - pokotyamuのブログ

今回は言語Ruby

まつもとさんをはじめ,現在Rubyで飯を食っている方から
Rubyとはどんな言語なのか?Rubyはどこを目指しているのか?等
幅広いお話を聞くことが出来ました.
今回は,一部ではありますが,心に残ったものをまとめたいと思います.

1.Rubyは開発者に近い言語

お話を聞いたときに必ず
Rubyは計算機のためじゃなく,開発者のために作られている」
と聞かされました.
例えばJavaの場合

class Hoge{
    public static void main(String[] args){
         System.out.print("hoge")
    }
}

このように書かないと実行することが出来なのに対してRubyの場合

puts 'hoge'

と書けば同じような実行結果を得られる.
public static void mainという呪文は,計算機には必要だけど,プログラマーからしたら,必要ではない.
System.out.printもprintではダメなのか?
などなど,これだけでも,開発者が書き易い用に作られているという印象を受けました.*1

2.Rubyの文法

面白いと感じたのは同じ結果を返すメソッドが複数の名前で定義されていることです.

ary = ["dog","cat","mouse"]
p ary
puts ary.length #=>3                                                                                                                             
puts ary.size #=>3 

配列の要素を返すメソッドとしてlengthとsizeが用意されている.
実に面白い.
配列の要素を表す単語として,lengthと答える人とsizeと答える人どちらも半分ぐらいいるなら,どっちも採用しちゃおうという考え方.
Javaだったら,size一択でしょう.
ある課題を出して,
・模範解答通りに作ることが出来るのがJava
・人によって複数の回答が出来るのがRuby

これが,1で述べた開発者に近い言語の要因となっていると思います.

3.個人的に気に入ったコード

自分がJava畑の人間なので,特に気に入ったのかも知れませんが(´ω`)
こんなコードはオシャレでした笑

 return a + b if a > 0#後置記法
 return b + c unless b > 0#unless文

unless文が最高にオシャレ
if(b != 0)ではなくunless(b == 0)みたいな使い方.
注意して読まないといけないけど,コードのスッキリ感がgood!!

	def getJson
		html = open("http://10.0.1.10:3000/score_puzzles").read
		parsed_json = JSON.parser.new(html)
		result = parsed_json.parse.map { |h|
		  h['score']
		}.sort.reverse
	end

urlが雑なのは気にせせずにお願いします笑
do-endと{}の違いとして,{}はメソッドチェーン出来るのが今回の合宿中一番オシャレだった!
これで,jsonからgetしてきたスコアを降順にソート出来る.
いちいち,配列を作って〜とかせずに,出来る.
いやぁ〜オシャレ!w

まとめると

Rubyは楽しかったし,開発者よりに設計されているというのが分かる合宿でした.
上手く書ける人は,最小の量で書くことができ,それでいて読み易い.
これから,もっとRubyについて勉強していこうと思います.
まずは,

メタプログラミングRuby

メタプログラミングRuby

ここから始めましょうかね.
あと,某所でWebrickのコード読んでみよう企画とかあるのかな?(チラッチラッ
頑張りたいと思います(o_ _)o

最後に

今回の合宿でお世話になった方全てに感謝したいと思います.
未熟な文章ではありますが,ブログという形で今回の経験をまとめさせていただきました.
この経験を生かして,今後の楽しみながらプログラミングと関わっていければと考えています.
4泊5日ありがとうございました.

*1:一概にJavaが使えないという意味ではありません.呪文を書いた方が,明瞭的になる等のメリットはあると思います.