プログラミング言語による差違 [IC]
Mashup Awards 4 / MA4 に作品を提出しようと努力したが断念した。
作りたいもの(使いたいもの)としてのアイデアはたくさんあって、そのうちの一つを作っていたのだが、「やっぱり間に合わなねーな」と思い、2008/09/15 16:00 の時点であきらめた。
しかし、過去の Mashup Awards の受賞作品を見ると、作れそうなアイデアが閃いたので、締め切りまでの残りの数時間、取り組んでみた。
が、無理。間に合わなかった。2008/09/16 11:40 の時点で断念。というか、睡眠時間とっている時点で無謀だったか。
Ruby を使っていたんだが、慣れていない。Java/C#/C/C++ の方が慣れている分だけ好き。Ruby は慣れていないので効率悪すぎ。Ruby は悪くないです。素直に Java/C# を使うか、Ruby の習得に時間をかければ良かっただけ。
というか、スクリプト言語系全般的に慣れていない。書けなくもないが、今回みたいに急いでいるときは、簡単な構文でさえ調べないと分からんのが時間かかりすぎ。
例えば 「神奈川県横須賀市内川」 という文字列から都道府県名を判定して、あらかじめ指定された都道府県コードを振り、都道府県名を取り除いた「横須賀市内川」という文字列を取得することを考える。開発環境は Windows XP のコマンドプロンプト。
Ruby の String では部分文字列を取得するときバイト単位で処理する。だから、例えば、
require "kconv"
address = "神奈川県横須賀市内川"
subaddress = address[8,address.size] # 神奈川県 は 8 byte だから
puts subaddress.tosjis
と書けばよいと思う。これは Shift-JIS の場合は問題ない。しかし、UTF-8 の場合、
require "kconv"めんどくさい...。こういう処理は FAQ で、「jcode 使えば?」になるのだろうけど。
# 文字コードは UTF8 を明示
$KCODE = 'UTF8'
address = "神奈川県横須賀市内川"
subaddress = address[12,address.size] # 神奈川県 は 12 byte だから
puts subaddress.tosjis
結局、Ruby の定石とか設計が分かっていないと効率が悪すぎる。というか嵌る。
Java/C# の場合は文字単位の処理だから、あまり気にしなくても出来てしまう。
これがいいとか悪いとかではなく、Ruby の string はバイト単位で処理するという設計の考え方を使う側は知っていないといけないなぁと熟々思った。
しなくても良い苦労をした感じ。
もっとも、UTF-8 では漢字を 3 byte で処理するということをすっかり忘れていたのがオチな訳だが。
それと、コマンドプロンプトとエディタで開発するのはどうかという点もある。ねこび~ん のご神託に従い netbeans にしようか :-
コメント 0