はじめての chu カッコカリの LT を発表しました

8月末の .NETラボ勉強会で「はじめての chu」をライトニングトークスで発表してきました。

ええ、発端はネタ言語ですが、内実はネタ言語の域を超えている…ってのが目標ですね。普通のエディタでは絵文字が打ちづらいので、専用の IDE で作成できる予定です。手元の環境では、絵文字を打つところまでできたので適当なタイミングでストアなどにアップしましょう。

image

Chu Pad からはツイートができたほうがいいので、左下ののアイコンがツイートアイコンです。Twitter の鳥ではないのは「絵文字」だからですね。それぞれのアイコンも画像ではなくて絵文字だけになっています。

最初は自分のところにばしばしと絵文字を流していたのですが、テストなので専用のアカウントを用意しました。公開するのも、この専用のアカウントに投稿してしまうのがいいかなと思っています。アカウントの乗っ取りのリスクがあるのですが、まあ秘密トークンは多少暗号化しておく形にしましょう。厳密にやれば Web API 作って、それから拾ってくるというのもありだけど。

image

奇特な方で自分のアカウントにも送りたい、って話もあるかなーと思って現在、秘密キー等を保存するところを製作中です(ってことにしておきます)。Twitter への認証自体は LINQ to Twitter にお世話になっています。が…この LINQ to Twitter はそのままでは「絵文字」を通さなかったんですよね。多少、苦労しましたが少しコードを変えることで通るようになったので、その件は別の記事にして残しておきます。

■文字解析等は FsLex/FsYacc を使っているよ

試しに、FsLex/Yacc を使っています。本当は BNFC のツールを使いたかったのですが、なんか吐き出すコードが -fsharp でやっても ocaml のコードがでるので、よくわかりません。ってのと、字句解析部分にひと工夫必要なので lex のところからきちんと書いています。

というのも、懇親会でも話したのですが、この chu-lang には「分かち書き」という概念がありません。絵文字をずらずらと並べて書くということを目標としたかったので、単語の区切りは文脈に沿うスタイルになります。当然、既存言語であってもターミネータ(括弧や四則演算などの特殊記号)と通常のアルファベットの組み合わせで単語の区切りはわかるのですが、そこは日本語のようにずらずらと書きたかったのです。例の富士通の「プログラマ不要」プログラム言語とか、既存の日本語プログラム言語との違いは、分かち書き(空白)を必要としない言語設計にあります(ってことにしておいてください)。まあ、Sketch とか UML プログラミングに近い感じです。手元の meArm とか Raspberry Pi とかにも使う予定です。

で、言語としては手続き言語に近い方にしたかったので関数言語スタイルをとります。そのまま F# にコンバートして .NET ライブラリを扱いやすいというのも、その手段のひとつではありますが、大抵のビジュアルプログラム言語が Alice をはじめとしてオブジェクト指向言語を学ぶスタイルを取っているので、どうせならば関数型言語ではどうでしょう?ってな感じですね。

文法的には F# と LISP を混ぜた感じになるはずです。括弧のような記号が絵文字では作りづらいので、タプルや配列は諦めてリストのみで表現します。まあ、それでもなんとかなるかなと。

  • Implementation Programming Languages
  • 計算機プログラムの構造と解釈

あたりを参考にすればよいでしょう。

■ChuLang は OSS です

コード自体は https://github.com/moonmile/ChuLang にちょっとずつ上げていきます。

懇親会で出た「特許」なり「商標」なりは、一般的に広めるための OSS ってことで、ここに公開しておきます。特許関連の抜け道?としては、最初に公開しておいて「周知の事実」にしていまえばいいんですよね。Java やら VB やらの前例があるので、Chu-Lang は数式ものが特許にならない程度に OSS ってことなのです。まあ、その他諸々は「商品」なのでしょうが、それは捕らぬ狸なので、ここでは触れませむー。

■Pi㊥Pad も作ってみた

その後、がりっちさんと池田さんと池袋に変える途中で、麻雀牌言語で盛り上がっていた(のは俺だけか?)のでパイ㊥パッドも作ってみました。

image

麻雀牌 http://ja.wikipedia.org/wiki/%E9%BA%BB%E9%9B%80%E7%89%8C#cite_ref-16 も Unicode で規定されていて、U+1F000 から U+1F02F まで割り当てられているんですよ(実際には、U+1F02B まで使われています)。ここからコピペコピペすると牌譜が作れるのですが、面倒なので Surface を使います…つーか、作ってみました。

どうせならば、これをプログラム言語に仕立て上げたいので思案中です。

  • 対子、順子/暗刻 の組みあわせで、アセンブラのニーモニック風に仕立て上げる。
  • スタックを扱って Forth 風にすればいいかな。

までは決めてあるのですが、その先は七誌さんあたりに相談しようかなと。

カテゴリー: 勉強会 パーマリンク