著作一覧 |
たとえば、Excelのセルに文字を入れまくるのが嫌いだとする。ならば、適当なマークアップとWin32OLE(たまにVBA)だ。
というように、ある言語が不快だけど使わなければならなければ代替の言語を使う/作って、その言語に流し込むというのはあると思う。というかある。
で、筆頭はJavaで、あまりよろしくない部分があるので、EclipseというDSLを使ったり、Clojureでコード書いたり、Scalaでコードを書いたりすることになる。おれはEmacsで普通に書く程度には嫌いじゃないけど。
ある意味ではCもそうで、機械語を直接書く(というかアドレスリロケーションしたり、ジャンプ先のバイト数を数えたりするのがいやな人が)マクロアセンブラを使い、マクロアセンブラを直接書くのがいやな人がCを作ったり使ったりして、今ではCを使うのがいやな人がC++を作ったり使ったり(CFrontのころはCに落ちていたはずだが、今はネイティブにコードを吐く)するのがいやな人がJavaやC#を使うのだが、C#を使うのがいやな人はそれほどみないが、Javaを使うのがいやな人がEclipse(Javaのコードを吐く)やClojureを使う(これは直接JVM用中間言語を吐く)というところまで来て、最初に戻った。
というように、最終的にそこに落ちるものか、そのちょっと先に落ちる選択肢があるものは、人に好かれていないか、使いにくいか、いまいちなやつだということなのだが、g+で向井さんがリンクしていたこのリストは相当な意外感がある。
List of languages that compile to JS
こんなたくさん作られるくらいに、JavaScriptを直接コードするのって嫌がられているんだろうか?
わざわざ、15年以上前に、みんなが大好きなJavaに似せて構文とか決めたのに、……ああ、みんながJavaを大嫌いになったから、Javaに似せた構文が裏目に出たのか、と長々書いたら理由が自ずからわかったからおしまい。
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス(Douglas Crockford)
JavaScriptにはいいところがあるんだよ!
オブジェクト指向JavaScript(Stoyan Stefanov)
JavaScriptは、Java7よりも先を行っている(ところもあるんだ)よ。
テスト駆動JavaScript(Christian Johansen)
というか、ダイナミック言語はやっぱりいいですなぁ。
ところで、CoffeeScriptってそんなにヘビーデューティーじゃないから、アレックス君が書いたこの本で十分だと思う(ただ、読んでちょっといじったが、おれはJavaScriptが嫌いじゃないので、そんなに魅力を感じないんだよな)。
おーなるほどと1/3は完全完璧に同意、1/3は保留、1/3はそれはそうかぁ? というツッコミをもらう。
標準クラスライブラリの貧弱っぷりは確かに本当にそう思うので、そこをちょっと考えてみる。プロトタイプベースについては保留(自分の作り方を考えると、その中途半端っぷりというか、どうにでもなるところを楽しんでいる気がするが、それが良いのか悪いのかわからない)、thisについてはそうは思わない(というか、確かに最初は何が何やらだったのだが、修飾が無い場合のthisとか教えてもらったら、ほぼわかるようになったからだ(でも、たまに取り違えてバグを入れることもある)。というわけで、thisについては初心者の通る道程度と思う)。
で、数年前にはprototypeイチオシだったのが、いつの間にかprototypeがレガシー扱いでいかにjQueryと共存させるかになって、ついには誰もprototypeを使わなくなった。で、おれもjQueryは使っても、今はprototypeは使わないのだが、そうするとprototypeによるクラスライブラリのエンハンスが何もかもが懐かしくなる。
というのはどういうことなんだろう?
つまり、その言語の文法は特に文句がなく、標準クラスライブラリが貧弱で不満なら、クラスライブラリを追加するってのがこれまでの道だった。C++のSTLやBoostがそうだし、CのGTKがそうだし(ちょっと違うか)、C#のASP.NET MVCがそうだし(ますます違いそうな気も)、JavaだとHybernate、Spring、Seasarとかもそうだ。でも、こいつらは言語を変えるわけじゃない。
が、今は、標準ライブラリが気に食わないと、言語を変えることになる? もしそうだとしたら、それはprototypeの屍を越えていくということなんだろう。クラスライブラリの変更による影響が大き過ぎたのかなぁ。
(とか思いつきで書き始めたら何もまとまらないのでおしまい)
ジェズイットを見習え |
>最終的にそこに落ちるものか、そのちょっと先に落ちる選択肢があるものは、人に好かれていないか、使いにくいか、いまいちなやつだ<br><br>なるほど、目からうろこ的な。<br>成熟した、いろんな応用例が出回ってるやつ、を、ある応用にさらに特化して使いやすくしてる(ので、使いやすいが汎用性は下がる)というイメージがあります。<br><br>でも確かに…。
いつの世も、自分の文法や意味論、ライブラリをもったプログラミング言語を作りたい人というのは一定数いると思うのですが、しかしそこで実際に作ろうとすると、動作するプラットフォームとか、処理系の実行速度とか、GCどうしようとか、いろいろと(当初の目的からすると)しょうもない問題があるわけです。<br>で、そういう問題を解決するための方法として、一昔前ならGCCのフロントエンドにするとか、Javaのバイトコードにしちゃうとか、その流れで最近はJSにしちゃうとか、そういうのがはやってるんじゃないかなーと思います。<br><br>言語が気に入らないので作り直すというモチベーションよりは、実装の方法として楽な方を選んでいるだけという面があるかなーと思います。(私が言語を作るならJVMにしそうな気がするし、その理由は実装を楽にするためです。)
お、なるほど。その発想はなかった。JavaScript最高じゃん。