著作一覧 |
みねこあさんのとこ読んでたら引用があって、そこで「スクリプト言語というのはフットワークの軽さが売りで、ちょっとしたアイデアをすぐに形にするには都合がよい。反面、刹那的な代物で、保守性に乏しく、巨大で複雑なシステムを構築する言語としては適さない代物です。」という言葉が並んでいる。
メインフレームのREXXとか、まあいろいろ考えるわけだし、
humhum:~ arton$ file /usr/bin/*|grep script|wc -l 276 humhum:~ arton$ ls /usr/bin|wc -l 897
と、何気に1/3がスクリプトだったりして、どこが刹那的な代物なのかなぁとか考え込む。
見識の幅って言語の幅に近いのかもなぁ。一言語主義って一面的な見方をしやすいのかも。
30行のスクリプトが300個あって、それが決まった順序でがちがち夜の作業をこなしていったりする現実もあるわけだが、そういうシステムの規模を想像したりすることもないのだろう。
プログラムをプログラミングするのがプログラミング言語。
ってことは、スクリプトをスクリプティングするのがスクリプティング言語。
では、プログラムとスクリプトって何が違うのか?
と落とし込んでくと、グルー言語がスクリプティング言語じゃないか? と思いつき、だからRuby永遠のライバルkshはスクリプティング言語で、(shでもいいわけだけど)/usr/binの1/3を占めることになる。
あたりから、どうもPerlが立派なプログラミング言語でありながら自分をスクリプティング言語とセグメンテーション(追記:ブランディングかも。広まりはセグメントのせいだが、最初はブランディングだろうな)したのがすべての間違いの始まりではないか? と(勝手にPerlのせいにしたけど、識者の意見が欲しいところ)。
でも、こう書いてきてひとつ気づいたが、トロイの木馬戦略だったんだろうな。つまり、プログラミング言語でありながら、スクリプティング言語を名乗るというのは。
(と、考えていくと、LLと称するのがやはりよさげな感じ)
今、上のに追記していて、つくづくと、ブランディングの重要性に気づく。
音でる、絵が動く、簡単、初心者、わかりやすい。習うより先に慣れる。経験主義、具象主義。
つまり、アンチ教養主義、アンチ科学主義。アンチ合理主義。
でも、即物主義ではあるのはあくまでも相手がコンピュータだからだ。
で、そのジャンルはもちろんあると思っていて、例に出しやすいやつだとHSPはそれで良いのだと思う。他にもいっぱいある。アセンブリ言語なんてのも実態はそっちじゃないかな(おれだ)。
問題は、それがサービス(端的にはWebサーバーサイドアプリケーション)になった場合で、今は、ちゃんと考える必要があるわけで、そこをどう越えるか越えられないかとか。
というのはおいておくと、LLというのはそういうブランディング方向を一見すると向いているのに、実際にカンファレンスやるとアカデミックな言語がたくさん出てくるところがおもしろい。そこに何かしらの将来性というか可能性があるんじゃないかと思う。
おれ、けっこう、これやるのだが、ワナがある。APIが多すぎるのだ。
だから、ちょろいアルゴリズムのチェック程度だと良いけど、何かそれなりのことをしようとすると、MSDNを見なきゃならなくなるんだよね。
すると、単なるHTMLでJavadocが提供されているJavaより参照速度が落ちるから(MSDNはWeb版もDocviewer版もやたら遅い。少なくともローカルにインストールしたJSEのJavadocやRuby API Refmとは比較にならない)、結局は、Javadoc見ながらRjbという感じになってしまう(Jrubyは最初の起動が遅いから、ちょろいプログラムでは使う気にならない)。
しかも、今はHTML版だって、全文検索エンジンがOSに乗ってるから(GoogleサーチはOSじゃないけど、おれはOS Xは右上の虫眼鏡、Windowsだと犬を使うから、OSで良いだろう)、検索も速い。というか、MSは、全文検索エンジンを信じて、単なるHTMLでMSDNを提供して欲しいよ、本当に。
ジェズイットを見習え |
平行宇宙のどれかでは,ト言語とかング言語とか呼ばれてるのかもしれませんね.
Perl は,初期はあんまり立派なプログラミング言語じゃなかったんじゃないですかね ? (笑)
たぶん万人が納得する「定義」は(少なくとも現時点では)ないでしょうけど、<br>Larry Wallその人はこんなこといってます。<br>I think, to most people, scripting is a lot like obscenity. I can't define it, but I'll know it when I see it. Here are some common memes floating around:<br><br> Simple language<br> "Everything is a string"<br> Rapid prototyping<br> Glue language<br> Process control<br> Compact/concise<br> Worse-is-better<br> Domain specific<br> "Batteries included"<br><br>...I don't see any real center here, at least in terms of technology. If I had to pick one metaphor, it'd be easy onramps. And a slow lane. Maybe even with some optional fast lanes.<br><br>http://www.perl.com/pub/a/2007/12/06/soto-11.html<br><br> John K. Ousterhout (Tclの作者)は<br>http://www.tcl.tk/doc/scripting.html<br>でこんな風に述べています。<br>Scripting languages assume that there already exists a collection of useful components written in other languages. Scripting languages aren't intended for writing applications from scratch; they are intended primarily for plugging together components.
それにしてもラリーはスマートだなぁ。
ング言語世界にはスクリプトとプログラムの区別がないので、仲良きことは美しき哉とかなるわけですね。
>初期はあんまり立派なプログラミング言語じゃなかったんじゃないですかね ?<br>初期は知らないからなんとも言えないですが、するとPHPもバージョン5になるとハッカー大好き言語になるし、6の実装は進まず関数ハッカーが集まってくるとかなったりして。
当初は Domain Specific なスクリプト言語 → (利用者増える)→ 汎用言語化 (しかしいろいろ無理があるので,別のもっとスマートな言語が出てきて,以下略)っていう流れは,わりとありふれていると思います.
ありふれてますかね?(成功した言語は少ないの原理に従って)<br>むしろ、生き残った言語については汎用化はライブラリの充実という方向へ進むほうが多いのでは? (念頭にあるのはLisp、Ruby(1.4以降)、VBあたり。Haskelとかもそうではないですかね? 別のもっとスマートな……というのだとPASCALみたいにあまり使われなくなったのも確かにあるけど、一度広がるとしぶとく生き残っていると思いますよ。COBOLとかVBとかshとか。Java 1.3と1.4も間違いなく)
たしかに「ありふれて」はいませんでした…<br><br># すいません「一つ,二つ,たくさん!」という原始人的感覚な人なので(笑)<br><br>きむら(K) さんの質問にも同時に答えてしまいますが,perl (sed や awk の後継的正規表現 DSL → 汎用言語化) などの他には,sh (システムインタフェース DSL → 汎用言語化(zsh や scsh など)) や php (テンプレートエンジン DSL → OOP 機能を備えるなど汎用言語化) などを想定していました.汎用言語とは言えないかもしれませんが (shinh さんなどは言うかもしれませんが w) sed や awk や make だって,もともとはツール記述 DSL 言語 (= スクリプティング言語,システムの動作のための台本記述 DSL 言語) でしたが,だんだんと高機能化しているのではないでしょうか.そして,(良く知りませんが) ant とかみたいに xml 使ったりしてより汎化された代替が出てきたり,Rake みたいにそもそも汎用言語内部 DSL として実装されたりとか.
なるほど。そう言われてみれば、生きている言語はだいたいがそうやって生まれた2代目かも知れませんね。例外がLispかな(Fortranは2代目っぽいけどわからないのでおいておいて)。<br>c(アセンブラの後継的機械語DSL→汎用言語化)とか言っても良さそうだし。Java(C++のリモート実行DSL→汎用言語化)なんてね。