📖
一日一処: Rubyは人間が対話可能な言語になりえるか
Ruby言語
Rubyは、日本人が開発したプログラミング言語だ。非常に英文に近い記述ができる言語であり、書き方を工夫すれば、英文として表現することも可能かもしれない。
後置if
Rubyは、条件分岐を行の後部に記述することもできる。
known = true
if known then
puts 'hello'
end
このように、他言語と同様に、if
文を用いて、文字列を表示することができる。ただし、Rubyは、then
やend
が必要なため少々文字数が多いかもしれない。
ただ、後置ifを用いればこのような記述が可能だ。
known = true
puts 'hello' if known
関数を定義して英文に寄せる
これをたとえば、関数を用いると更に英文ぽさを実現することができる。
def you(name) = name === 'Bob'
puts 'I am Bob.' if you('Bob')
英文のような表現に見えてきた。もっと面白いことに、Rubyは、関数を実行する際の括弧()
を省略することも可能だ。よって、このような表現ができる。
def you(name) = name === 'Bob'
puts 'I am Bob.' if you 'Bob'
関数の定義さえ見えなければ、一つ前に比べ、英文に近づいてきた。ただし、通常会話の際にputs
なんて発言することも書くことも稀かもしれないよって、puts
とは異なる関数を設定しよう。
def you(name) = name === 'Bob'
def say(msg) = puts msg
say 'I am Bob.' if you 'Bob'
概ね英文としても遜色ない表現になったのではないだろうか。
最後にもう少し英文に寄せてみよう。
def you(func, work) = method(func).call ['write', 'read'], work
def can(works, work) = works.include? work
def say(msg) = puts msg
say 'You can write' if you :can, 'write'
クラスを定義して更に英文にしていく
カンマやコロンが登場してしまうのが、若干不格好ではあるものの、このように英文に寄せて書いていくプログラミングも面白いのではないだろうか。
プログラム自体が命令形(動詞が先頭)になることが多いが、今回は、主語(You)を表現して終わる。
class Person
attr_accessor :name, :works
def initialize(name, works)
@name = name
@works = works
end
def can(work) = @works.include? work
def say_can(work) = puts "I can #{work}"
end
you = Person.new('Bob', ['write', 'read'])
you.say_can 'write' if you.can 'write'
Discussion