2012年01月27日

新言語妄想

railsとかcoffeescriptとか新しい言語みてると、この思想を先鋭化させてもっと自分オリジナルの言語を作りたいって思うときない?
今回はそんな感じの妄想を語る。実装はできる腕はない。が、あくまで現時点な!ゲームプログラミングみたいに15年後にできるようになってるかもしれないじゃん!
 
すべてのオブジェクトは連想配列 を先鋭化

javascriptの特徴ね。すべてのオブジェクトは連想配列なので、
data["key"] は data.keyと書くことができる。リフレクションがやたらに容易ってことだ。
あと、yamlみたいに連想配列に連想配列をネストしてデータ構造を表すような構造に対して

root["party"]["John"]["strength"]

これを

root.party.John.strength

こんな風にシンプルに書ける。XPathににてるな。そうであればもっとXPath風に

root.party[@hp > 12].id

っていうクエリを書くとクエリに従った配列が返るようになるといいな。これがJavaScriptとの相違点。

シンボルは文字列と同等に扱う を先鋭化

最近のrubyはrailsの要望に沿うように、どんどんシンボルが文字列のような扱いになっているそうな。シンボル同士で加算すると文字列連結のような演算ができるとか。これ、やっぱりリフレクションの要望があるからだよね。
であれば

simbol = value

宣言していないシンボルはまずは文字列として扱うことでいいんじゃね?
そうするとプログラムと設定ファイルの差がどんどん縮まってくる

John = [
  id=John
  name=John
  strength=18
  interigence=3
 ...

文字列は""で囲むという縛りだと、設定ファイルに頻発する文字列がいちいちエスケープされなきゃいけない感じでいまいちピンとこなかったんだよなあ。

ダックタイプ を先鋭化

ダックタイプといえば、継承関係になくても特定のメソッドがそろっていれば同じクラスとみなすという意味だ。とおもっておけばいいかな?
であれば、そもそもクラスというのはある一群のメソッドを持っているということを意味するだけだし、
オブジェクトはすべて連想配列という定義に従えば、ある一群のキーを持っているオブジェクトのことを〜クラスと呼ぶ
とすればいいのかも。
Member クラス : 以下のキーを持つもの
name,hp,strength,interigence,...
では、このオブジェクトは何クラス?っていう演算子は

member instanceof Member

Memberクラスのキーがこのオブジェクトに揃っているか、を演算するものだってことだね。
うん、直感的に静的型付けやオーバーロードと相性悪そう!!
まあそれはなんとかするか・・・
posted by LoyalTouch at 07:13| Comment(0) | TrackBack(0) | クライアントサイド | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック