HyperCard その3

まだ続けてます。仕事が忙しくなればなるほど、コーディング速度が上がるのは、上司には秘密の何か。今週から、ヤバくなり始めてるので、開発モチベーションもまだまだ高いですよ。もちろん、終電からが勝負です。トラブルシューターには、夜はありませんから。。。orz

今日は、HyperTalk BNFというページを発見したので、そこを読み込んで、文法を整理した。
そしてHyperTalkとの後方互換性をどこまで維持するか検討している。

単純にHyperCardのクローンを作るのも面白いけど、やっぱり独自拡張を入れたい。
HyperCardは、オーサリングツール、カード型データベース、開発環境として、正当に発展させてみたい。
HyperTalkは、個人的な趣味により、見た目は可能な限りそのままだけど、裏では言語オタも顔負けの機能盛り沢山にしたい。進化じゃなくて、突然変異ぐらい。だけど、見た目はあまり変わらない。
HyperTalkの魅力はと問われたら、私は真っ先に『分かりやすい文法』と『全てが文字列で表現されるデータ』と答えると思う。昔、HyperTalkからCに移ったとき、まず最初に変数の型でつまづいた。ポインタではなくだ。それも理解できないではなくて、メンドクセ〜、HyperTalkなら何も考えずに済むよ、でつまづいた。だから、全てが文字列型は、基本思想から外したくない。
問題は、分かりやすい文法の方だ。取っ付きは良い。義務教育の英語で十分過ぎるほど、読めてしまう。ただ、不満もある。はっきり言うと、変数代入でputはダルイ。しかも、putとsetは紛らわしい。意味としては同じなのに、語順が逆なのも許せない。プロパティ参照で、ofも日本語の感覚からは離れすぎてる。(日本語の語順は、大→小で、英語は逆だ。住所の記述が典型だ。)だから、この辺りは何か検討の余地があると思う。あと、組み込み関数やハンドラと、ユーザー定義のそれとで、呼び出しの見た目が違うのも気になる。俺だって、add〜to〜なコマンドの定義をしたい。
これらを考えると、小さな核言語と本物のマクロという、まるでlisperが喜びそうな雑念が頭をよぎってしまう。もう、HyperTalkの文法で満足するには、世の中のことを知りすぎてしまった。まさに、齢28にしての中二病だ。優雅に振る舞うhaskellや、明快な論理を振りかざすscheme、誰からも溺愛されて育てられたなでしこに、謙虚に進化を続けるruby、愚直なまでに基盤を支えるCに、したたかに領土を広げるjava、戸惑いながらも舞台に上がって踊り続けるjavascriptに、夢に破れて打ちひしがれるSFL、光の速さを追い求めて止まないfortranに、栄光に囲まれて齢を重ねるcobol。彼らと知り合ったら、HyperTalkという夢の世界だけで生きることはできない。だからHyperTalkの意味論の再構築を始めました。今日は、意味論補強のために、可能な限り互換性を維持しながらの拡張された文法を定義中。まずは、頑張ってHyperTalkに本物のマクロを導入するぞ。

ちなみに、アイデア募集中。実現するかは、俺の仕事の忙しさとモチベーション次第だけど。

なお、過去に戯れた言語を表現してみたけど、あくまで私個人のイメージなので、あしからず。ちなみに、論理型言語は触ったことがないから入れなかった。