はじめまして、今年の4月に入社しました、tです。
大学を卒業して新卒として入社しました。
趣味はプログラミングです。
工業高校出身で、高校の時からプログラミングに触れてきました。
プログラミングの面白い点は、思い通りにプログラムが動くことです。
そして、同じように動くプログラムでも、いかに分かりやすく、動作の速いプログラムを書くことができるか、という部分も面白い点です。
今まで、いくつかのプログラミング言語を使ってきましたが、技術ネタも兼ねて、最近触れたRubyというプログラミング言語について紹介します。
他の言語にない特徴として挙げられる点を2点紹介したいと思います。
1つ目はforのようなブロック記述による無名関数渡しを通常の関数やメソッドで定義することができる点です。
1 2 3 4 5 6 7 8 9 10 11 12 |
def func( num ) yield num * 2 #与えられた数値を2倍して匿名関数に渡す end #10と表示される print func( 4 ) { | num | num + 2 #2足して返す } #もしくは func( 4 ) do | num | num + 2 #2足して返す end |
この表記により、他の言語と比べて、匿名関数の記述量が減り、forなどで見慣れているブロック記述で書くことができます。Ruby標準のメソッドでは、配列の要素を回って処理するmapのような関数だけでなく、ファイルを開いた際のリソースの有効範囲をブロック内に限定するというような使われ方もしています。
2つ目はメソッドへの代入のような演算子式のオーバーライドが行える点です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Test attr_accessor :length #setter,getterを自動定義 def initialize() @length = 0 end #よくあるオーバーライドできる演算子 def +( other ) # a + b end def -@ # -a end #メソッドへの代入もオーバライド def hoge=( val ) puts val end def hoge() 'Hi!!' end end test = Test.new puts test.length # => 0 test.length = 4 puts test.length # => 4 test.hoge= 'hello' # => hello puts test.hoge # => Hi!! |
使用したことのある言語では、C++以来の演算子のオーバーライド可能な言語でした。Rubyはメソッドへの代入の演算子が定義可能なのが特徴で、setterメソッドが分かりやすく定義できます。引数がなければカッコを省略できるため、getterメソッドも含めメンバ変数を扱うようにメソッドとして定義できます。初めてこのようなgetter,setterメソッドを見た時は戸惑いましたが、理に適っていると思いました。
まだまだ、Rubyを初めて日は浅いため、知らないことも多いですが、Rubyらしいプログラムを記述できるよう勉強していきたいです。
入社してまだ2ヶ月半程度ですが、携わらせて頂いている開発では、今まで知らなかった分野についても学ぶことがあり、充実した日々を過ごしています。
次回の投稿する機会があれば、もう少し理解の深い分野の技術について書くことができればと思います。