パスワードを忘れた? アカウント作成
745900 journal

kubotaの日記: 国際化されたスクリプト言語

日記 by kubota
日本語文法解析プログラムを移植したくて適当な言語を探しているのですが、なかなかありません。

条件は、

  • UN*X/Windows/Macintosh で簡単に動くこと
  • ロケールやプラットフォームに従って使用する文字コードを適切に選んでくれること
  • 内部コードは何でもいい。ただし、日本語を含む文字列リテラルをロケール/プラットフォームに独立に書く方法があること(実体参照とかJISコード16進表記でもよい。というか、このほうが、ソースのエンコーディングを考えなくて言い分だけ楽かも)
  • 日本語ローカルなパッチは避けたい (Jperl とか)
  • 文字列操作が簡単なこと
  • フリー (DFSG free または open source) であること。
  • あまりまにあっくではないこと :-p (日本語で書かれた解説書が出版されている、くらいが基準かな)

いくつか候補を挙げてみると、

  • Perl: 内部は UTF-8 化されているが、外部との通信にロケールを使ってくれない。
  • Ruby: 日本語はばっちりだが、まだ国際化されていない。
  • Tcl: Windows/Macintosh でも簡単に動くし、ロケール依存の動作をしてくれるが、文字列操作が貧弱。
  • Emacs lisp: Windows/Macintosh で動作環境を整えるのがちょっとやっかい。というか、lisp のお勉強をしないと。
  • Java: 国際化はばっちりとかいう噂は聞く。しかし、何年前だったかなあ、Windows や Linux で Hello World プログラムを Java で作ったとき、コンパイルに何分もかかり、できたプログラムを起動するのにこれまた何分もかかった体験がトラウマに... (というか、コンソールで動いてほしい)
  • PHP4: ウェブサーバが必要か...
  • Python: どうなんだろう。

というか、まだこれだけしか検討してない。

このなかでいちばん解に近いのは、なんと Tcl となる。デフォルトでロケール依存だし。たとえば、

set a "abcdeあいうえお"
puts [string length $a]

で、きちんと10って返してくれるし。しかし唯一の欠点、つまり文字列操作の弱さが致命的。かといって数値計算に強いわけでもなし。

いまのところ、ruby で書くのが無難かなと思ってるけど、なにせオブジェクト指向プログラミングは初めてなもんで、設計からして悩んでるところ。C では構造体を使ってグローバルなインスタンス1個だけで書いていた品詞一覧とか「かかる・かかられる」表とかは、どうやって実装しようか。ついでに、「かかる・かかられる」は「単語」オブジェクトの属性か、「文」オブジェクトの属性か。Ruby って C のポインタや Perl のリファレンスに相当するものはあるのかな。あったとして、「かかる・かかられる」はそれを使って表現するか、それともインデックスを使うか。インデックスを使うのならそれは「単語」オブジェクトの属性か「文」オブジェクトか。

まあ、なれるしかないのかな。BASIC から C に移行したときも、窮屈に感じて、変数をぜんぶグローバルにしたりとかしたものだけど、いつのまにか、きちんと構造化したプログラムを書くようになったし。

typodupeerror

普通のやつらの下を行け -- バッドノウハウ専門家

読み込み中...