も何もない。
自然言語を学ぶ最良の方法はプログラム言語と同じで、使いながら慣 れかつ憶えていくことだが、プログラム言語を学ぶのも自然言語を学ぶ のと同じように、使ってみつつ肌触りを確かめ、感触を確かめつつ使い 方を憶えていくのが最も望ましい。
のだが、なかなかいいネタがなくて困る。今や大概のことはできあい のツールやユーティリティで間に合っちゃうもんな。なければ自分で PerlやAwkで書けばいいんだし(笑)。
Ruby/TkでGUIをいぢりながら学ぶ、ということを目論んだのだけれど、 それにはまずTcl/Tkも同時に勉強しなければならないこと、そしてそれ 以前に「ぢゃ、GUIつくって何するの?」と訊かれたら何も答えら れない、ということに気づいて、ちょっと考え込んだ。側だけあっ たってしょうがないわけで、やはりまずは「何を」がないと始まらない。
そこで、そこでということはないのだけれど、Ruby/Tkは放っておい て、かつてAwkで書いた「(疑似)ハナモゲラ和歌生成プログラム」を Rubyで書いてみる。
Awkで書いたプログラムの単純 移植版である。先頭のRubyインタープリターのパスは、自分の環境に合 わせて適宜直してください。(ご覧のように、よんどころない事情で現 在シアトルもののOSを使っている)
コメントとかメソッド名、変数名などにある見慣れない文字列は エスペラントという言語でっす。
1: #! c://loka/ruby/bin/ruby 2: # 3: # tanka.rb -- refarajxo de programo origine skribita per gawk 4: # 5: 6: require 'jcode' 7: $KCODE = "sjis" 8: 9: cand = "あいうえおかきくけこさしすせそたちつてとなにぬねの" 10: cand <<= "はひふへほまみむんもやゆよらりるれろわをん" 11: cand <<= "がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゐゑ" 12: 13: # 次の一文字を選び出す 14: def sekva(s) 15: nth = rand(s.jlength) * 2 16: s[nth..nth+1] 17: end 18: 19: # 和歌をひとつ生成する 20: def wakagen(cand) 21: waka = "" 22: for n in 0..30 23: waka << sekva(cand) 24: if(n == 4 || n == 11 || n == 16 || n == 23) then 25: waka <<= " " 26: end 27: end 28: waka 29: end 30: 31: # とりあえず5個生成 32: for n in 0..4 33: waka = wakagen(cand) 34: print waka, "\n" 35: end
らわどらじ むねしぜやづで ぷのつやぶ くむきはあけじ べじしるゐかれ
たんへもん ずさゑそびゑぺ まかぬなご ゐぞふとかるべ ぢにきゆあする
ぶぷよじこ あどてかしくぢ れこあみつ んぶごるくたん きぬこまぬぐつ
ぽげそかほ よわやぎすにこ ばせぴふん ろわまとゆんづ すちねげたざよ
ぶばえざる こじれぽしかと うろるぱか ゐあむゐにげぜ べかにぜきると
お勉強の最初の一歩なもので、もとのAwkプログラムをそのまま書き 移している。
(2002.03.08)
(C) ©Copyright Noboru HIWAMATA (nulpleno). All rights reserved.