プログラミング言語に必要なモノ

どんなモノが必要なんでしょうね。 構文・機能以外にもいろいろ必要です。 制御構造とか抜けてるけど、まあいいよね。
3
altnight @altnight

JavaScriptは自分にとって現代のBASICで、ブラウザさえあれば動く、言ってみればPHPより簡単なプログラミング言語だと思ってるし実際JSから自分はプログラミングからはいったけど、JSが言語として残念な部分があるのはまあ認める。

2012-09-26 08:43:49
altnight @altnight

というか他の言語(この場合Pythonだけど、Rubyでもそうだとおもう)ある程度慣れてからJSに戻ると「えっ、そんなこともできないの?」っていうのがね……

2012-09-26 08:44:31
Nori(情報ブロイラー) @bgnori

@altnight 残念な部分の無い言語ってあるのかしら?必要なパーツが入っていることがより大事なのでは?

2012-09-26 08:45:33
altnight @altnight

まあそれはECMAScript 3時代なのがあれであって、IE8以下を切り捨てることでECMASCript 5時代の恩恵を得られるのでそれはだいぶ喜ばしいけど、それでもまだまだ足りないなぁって思ってて、実際ES6ではかなりそこらへん改善されてるから期待してる。

2012-09-26 08:45:55
altnight @altnight

@bgnori 完璧な言語なんてない、残念な部分のない言語なんてない。それは言語作成者が人間である以上当たり前でしかたのないことです。そしてその発言してからES5,6の話をしたので、それに期待しています。必要なパーツ云々はそりゃそうです。逆に質問すると、なにが必要なパーツですか?

2012-09-26 08:49:02
altnight @altnight

「かつてのPrototype.jsとか_.jsでライブラリでいろいろカバーできるから別に言語仕様が貧弱でもいいじゃん」ってのは現実解として対処するときにはそうなるけど、でも理想的には言語側でいれてほしいし、それはES5,6で策定されてるから期待ageだね、という話。

2012-09-26 09:15:30
altnight @altnight

関係ないけどよくJSは「function が長い」って言われるけど、補完使ってれば fu の時点でsnippetまででるし、そこはあまり問題じゃないと思うし、それを言ったらJavaとかObj-Cって長いっすよ……まあ def のほうが好きだってのは、好みじゃないかなぁ

2012-09-26 09:17:41
Nori(情報ブロイラー) @bgnori

@altnight 話が長くなりそうですが、まったり行きましょう。 「簡単なプログラミング言語」は「簡単に入手できるプログラミング環境」ね。 落とし穴はいっぱいあるから、そういう点では「簡単」ではないと思う。

2012-09-26 17:26:39
Nori(情報ブロイラー) @bgnori

@altnight なんか違うtweetにレスをつけてしまった. orz 「なにが必要なパーツですか? 」 言語で実現するのか、ライブラリで実現するのか?という観点がありますが、前者の方が狭くなるのでそちらですかねぇ。名前空間 」

2012-09-26 17:28:26
altnight @altnight

@bgnori はい、「簡単」というのは「実行環境をサーバーを整えなくてもいつも使ってるブラウザで javascript:alert(1);できる、あるいはHTMLに直接書いてupするだけ」という意味なので、プログラミング言語として簡単だとはまったく思ってないですね

2012-09-26 17:29:02
Nori(情報ブロイラー) @bgnori

@altnight 初歩的な数値とその演算、文字列型とその処理、名前空間、クロージャ、辞書/配列、スレッド、ファイルの読み書き、機能ではないが、商用プログラムに組み込み可能なライセンス(GPLはNG)、 優れたコミュニティ(何が優れているか議論があるが)、ドキュメント。

2012-09-26 17:32:22
Nori(情報ブロイラー) @bgnori

@altnight 標準入出力、オブジェクト指向プログラミングを行う上でのトリック(Luaの./:とかClojureの.hogeとか)、ほかの言語で実装されたライブラリを叩くAPIを持つ(.soとかdllとか)。TCP/UDP socket(これはライブラリでもOKかな)。

2012-09-26 17:35:48
Nori(情報ブロイラー) @bgnori

@altnight 正規表現(ライブラリで十分)、シンタックスツリーへのアクセス(ライブラリで十分)。http server/client(ライブラリ)、言語標準のパッケージ管理(rake/gem, .cabal, setup.py etc)

2012-09-26 17:37:30
Nori(情報ブロイラー) @bgnori

@altnight 例外処理機構(これは意見が割れるかもしれない)。call/cc(これも大論争)、文字コード(これは必須、ライブラリも可だがいまからpython2と同じなのはダメだろう)、gc(まあLLなら当然、コンパイルする言語は用途次第か)

2012-09-26 17:40:18
Nori(情報ブロイラー) @bgnori

@altnight 抽象的な言い方になるけど、誤解を招かない構文。 ダメな例:python2の例外まわり(python3で asを使うようになった)とか。C++の多くの機能(C++erに殺されそう・・・。おや、だれかきたようだ

2012-09-26 17:44:05
Nori(情報ブロイラー) @bgnori

@altnight あとなんだろう演算子の拡張とか新規定義とか。度合いにもよりそう。+とかその程度ならいいけど <:+:>とかみたいなのを定義できるとかはどうなのかなぁ?と思う。やはりこれも大論争だとおもう。ライブラリ書くヒトが不用意に使ってユーザを当惑させるんだよねぇ・・・

2012-09-26 17:48:56
Nori(情報ブロイラー) @bgnori

@altnight 演算子の拡張でいかがなモノかの例としてはScalaの某ライブラリでのURL結合とか。なんで文字列の結合じゃだめなの?と思う。

2012-09-26 17:49:49
Nori(情報ブロイラー) @bgnori

@altnight 適当にざくざくっと書いてみました。漏れがあるかもしれませんが、ご容赦。

2012-09-26 17:50:12
Nori(情報ブロイラー) @bgnori

@altnight あー、Qtとかgtkとかのbinding。これないのはまずい。ライブラリ機能。デバッガかぁ。当たり前だけど必要。処理系にインタラクティブにコード片をつっこんでいける開発環境がほしいですね。

2012-09-26 17:51:38
altnight @altnight

@bgnori いえ、丁寧にありがとうございます。そのとおりだと思います。自分が言いたかったのは「ES3準拠のJSはあまりにも貧相、それをライブラリでおさなうのはもう勘弁してよ。だからES5はうれしいけど、でもES6相当は欲しいよ」ということです。それ以上のことはライブラリですね

2012-09-26 17:53:43
altnight @altnight

@bgnori あまりいろんな言語には精通してないですが、それでもES3相当はArrayとget/setまわりが貧弱すぎるし、ES5でだいぶうれしくなったけど、やっぱりES6の配列内包やyieldやletは欲しいよ、ということです。

2012-09-26 17:55:53
Nori(情報ブロイラー) @bgnori

@altnight JSは「ネットワーク回線を通じてロードされる」「処理をするマシンがハイスペックとは限らない」という制限があるので、ライブラリに分割すればよいともいえず。coffee scriptやpyjamasのような方向性もあるし。

2012-09-26 17:56:30
altnight @altnight

いや、ES6にyieldってあったっけ……なかったかも……でもletはあったほうがいいとおもう

2012-09-26 18:01:14
Nori(情報ブロイラー) @bgnori

@altnight やばい、マクロを抜かしてた・・・lisperに殺される。まあもちろん論争がありますが・・・。

2012-09-26 18:02:35