JavaScriptは自分にとって現代のBASICで、ブラウザさえあれば動く、言ってみればPHPより簡単なプログラミング言語だと思ってるし実際JSから自分はプログラミングからはいったけど、JSが言語として残念な部分があるのはまあ認める。
2012-09-26 08:43:49というか他の言語(この場合Pythonだけど、Rubyでもそうだとおもう)ある程度慣れてからJSに戻ると「えっ、そんなこともできないの?」っていうのがね……
2012-09-26 08:44:31まあそれはECMAScript 3時代なのがあれであって、IE8以下を切り捨てることでECMASCript 5時代の恩恵を得られるのでそれはだいぶ喜ばしいけど、それでもまだまだ足りないなぁって思ってて、実際ES6ではかなりそこらへん改善されてるから期待してる。
2012-09-26 08:45:55@bgnori 完璧な言語なんてない、残念な部分のない言語なんてない。それは言語作成者が人間である以上当たり前でしかたのないことです。そしてその発言してからES5,6の話をしたので、それに期待しています。必要なパーツ云々はそりゃそうです。逆に質問すると、なにが必要なパーツですか?
2012-09-26 08:49:02「かつてのPrototype.jsとか_.jsでライブラリでいろいろカバーできるから別に言語仕様が貧弱でもいいじゃん」ってのは現実解として対処するときにはそうなるけど、でも理想的には言語側でいれてほしいし、それはES5,6で策定されてるから期待ageだね、という話。
2012-09-26 09:15:30関係ないけどよくJSは「function が長い」って言われるけど、補完使ってれば fu の時点でsnippetまででるし、そこはあまり問題じゃないと思うし、それを言ったらJavaとかObj-Cって長いっすよ……まあ def のほうが好きだってのは、好みじゃないかなぁ
2012-09-26 09:17:41@altnight 話が長くなりそうですが、まったり行きましょう。 「簡単なプログラミング言語」は「簡単に入手できるプログラミング環境」ね。 落とし穴はいっぱいあるから、そういう点では「簡単」ではないと思う。
2012-09-26 17:26:39@altnight なんか違うtweetにレスをつけてしまった. orz 「なにが必要なパーツですか? 」 言語で実現するのか、ライブラリで実現するのか?という観点がありますが、前者の方が狭くなるのでそちらですかねぇ。名前空間 」
2012-09-26 17:28:26@bgnori はい、「簡単」というのは「実行環境をサーバーを整えなくてもいつも使ってるブラウザで javascript:alert(1);できる、あるいはHTMLに直接書いてupするだけ」という意味なので、プログラミング言語として簡単だとはまったく思ってないですね
2012-09-26 17:29:02@altnight 初歩的な数値とその演算、文字列型とその処理、名前空間、クロージャ、辞書/配列、スレッド、ファイルの読み書き、機能ではないが、商用プログラムに組み込み可能なライセンス(GPLはNG)、 優れたコミュニティ(何が優れているか議論があるが)、ドキュメント。
2012-09-26 17:32:22@altnight 標準入出力、オブジェクト指向プログラミングを行う上でのトリック(Luaの./:とかClojureの.hogeとか)、ほかの言語で実装されたライブラリを叩くAPIを持つ(.soとかdllとか)。TCP/UDP socket(これはライブラリでもOKかな)。
2012-09-26 17:35:48@altnight 正規表現(ライブラリで十分)、シンタックスツリーへのアクセス(ライブラリで十分)。http server/client(ライブラリ)、言語標準のパッケージ管理(rake/gem, .cabal, setup.py etc)
2012-09-26 17:37:30@altnight 例外処理機構(これは意見が割れるかもしれない)。call/cc(これも大論争)、文字コード(これは必須、ライブラリも可だがいまからpython2と同じなのはダメだろう)、gc(まあLLなら当然、コンパイルする言語は用途次第か)
2012-09-26 17:40:18@altnight 抽象的な言い方になるけど、誤解を招かない構文。 ダメな例:python2の例外まわり(python3で asを使うようになった)とか。C++の多くの機能(C++erに殺されそう・・・。おや、だれかきたようだ
2012-09-26 17:44:05@altnight あとなんだろう演算子の拡張とか新規定義とか。度合いにもよりそう。+とかその程度ならいいけど <:+:>とかみたいなのを定義できるとかはどうなのかなぁ?と思う。やはりこれも大論争だとおもう。ライブラリ書くヒトが不用意に使ってユーザを当惑させるんだよねぇ・・・
2012-09-26 17:48:56@altnight 演算子の拡張でいかがなモノかの例としてはScalaの某ライブラリでのURL結合とか。なんで文字列の結合じゃだめなの?と思う。
2012-09-26 17:49:49@altnight あー、Qtとかgtkとかのbinding。これないのはまずい。ライブラリ機能。デバッガかぁ。当たり前だけど必要。処理系にインタラクティブにコード片をつっこんでいける開発環境がほしいですね。
2012-09-26 17:51:38@bgnori いえ、丁寧にありがとうございます。そのとおりだと思います。自分が言いたかったのは「ES3準拠のJSはあまりにも貧相、それをライブラリでおさなうのはもう勘弁してよ。だからES5はうれしいけど、でもES6相当は欲しいよ」ということです。それ以上のことはライブラリですね
2012-09-26 17:53:43@bgnori あまりいろんな言語には精通してないですが、それでもES3相当はArrayとget/setまわりが貧弱すぎるし、ES5でだいぶうれしくなったけど、やっぱりES6の配列内包やyieldやletは欲しいよ、ということです。
2012-09-26 17:55:53@altnight JSは「ネットワーク回線を通じてロードされる」「処理をするマシンがハイスペックとは限らない」という制限があるので、ライブラリに分割すればよいともいえず。coffee scriptやpyjamasのような方向性もあるし。
2012-09-26 17:56:30