アカウント名:
パスワード:
JavaScriptかな。置き換わってくれるならLispでもRubyでもPythonでもPerlでもいいよ(Perlは少し微妙な気分になるけど)。
確かに、JavaScript は、どのように見ても、まともにメンテできるとは思えない。はやいとこRubyかPythonに移ってくれ
Prologは?
大学の授業でやりました(。x。)ドキュメントが少なすぎて大変苦労した記憶があります・・・
21世紀に入ってからだとそうかもしれないなあ。第五世代の反動で。1990年ころまででであれば物好きが苦労しながらドキュメント・論文・教科書程度は入手できただろうけど。
どうなんだろうね。 良い処理系がサポートされ続けるのなら、複雑なパターンマッチングの処理などに使えそうな気はするが。(いわゆるビッグデータとか遺伝子情報とか分子解析?とか) 実際にはそういところではどのようなプログラミング言語(あるいは専用システム)を使ってるんだろう?人工知能(古い!)はお呼びじゃないことは確かだが。
今の流行りはDatalog [wikipedia.org]かな
Javascriptのようなプロトタイプベースの言語は、Firefoxのアドオンのように既存関数を乗っ取って機能を拡張するのには向いてると断言できますが、Web向きかというと、どうなんでしょうかねぇ。無駄に脆弱性を増やしてるだけな気もする。
個人的に、Javascriptの一番の問題は標準関数が少なくて歪なことにあると感じるので、そこだけ何とかして欲しいところ。
WebにはDOMという立派な標準APIがあるので、標準巻数の少ないスクリプト言語のほうが向いてると考えるのが普通では?もし、Webが発展して各APIが必要とされて出来る前にJSに取り入れようとしていたら、多くが現在負の遺産になっていると思いますよ。特にJSは後方互換性を重視しないといけない立場ですからね、巷のサーバサイド言語のように、良さそうなものをどんどん入れて、収集がつかなくなったらメジャーバージョンアップ時に切り捨てるということはできません。
そうではなく、数学や暗号などのもっと基本的なAPIのことです。公開鍵暗号やhmac sha1ぐらい標準で用意していてほしい。
暗号が基本のAPIだとは到底思えませんが、用意されてますよ。https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html [w3.org]
javascriptの存在が気に入らないとかでなくて、javascriptを書きたくないと言うだけなら、最近はコンパイルしてjavascriptを出す系の言語は結構ありますよ。TypeScriptとかCoffieScriptとか。LLVMのおかげで既存の言語⇒javascriptも乱立して面白い感じですよ。C++でWebフロントエンドを書くなんて言う変態的なものもあったり。
>最近はコンパイルしてjavascriptを出す系の言語は結構ありますよ。TypeScriptとかCoffieScriptとか。
その手の独自拡張言語の問題は、その言語がいつまで持つか分からんこと。1~2年で死屍累々となっても、驚くほどのものじゃない。サポートの切れたオレオレスクリプトほど厄介な物はないからな。
あとはドキュメントが少ないとか、参考書が皆無とか、問題が発生しても質問できる相手がいないとか、調査し難いとか、etc....
TypeScriptは大丈夫じゃないかなぁ一応Microsoftだし、言語自体のサポートはそれなりに続くはず何よりヘジたんのセンスが光る良い言語だからね…
ドキュメントも解説サイトもサンプルプログラムも幾らでもありますしね。きれいな言語だからまともなプログラマーならマニュアルだけで十分ですが。TypeScriptの機能の一部はNext-javascriptの草案の先取り実装ですし。
enumと引数のdefault値がGoogle Closure Compilerの最適化と親和性が悪い点だけが不満です。
# YUI3+TypeScriptでかなり美しいプログラムが書けるようになって# Webアプリのフロントエンドを書く不満が無くなりました
>一応Microsoftだし、言語自体のサポートはそれなりに続くはず
VB6なんてなかったんや。
1998年に出た言語だぞ つVB6充分『それなりに』サポートされた部類だと思うけど
Webコンテンツは10年で十分とは限らないと思う。まあTSのいいところは最悪衰退してもコンパイル後のJSが読みやすいのとES.nextを意識した仕様で、JSに切り替えやすいってとこだな。
TypeScriptの吐き出すJavaScriptはメンテナンスしやすいね。
ヘジたんのJ++(遠い目
いやー、TypeScript はかなり筋がよいと思うよ。JavaScript はまったく好きになれないけど TypeScript なら許せる。
変数とプロシジャーの区別が無く、無名関数と関数閉包が使えるJavaScriptは極論すれば機能的にはRubyと大して変わらない。
問題は、機能とか表面的な仕様にあるのではなく、内部的な毛深さと罠仕様だ。
毛深さはたとえば汎用的なdeepcopyを実装するのは意外と難しい http://nmm.blog.jp/archives/35975582.html [nmm.blog.jp] このあたりはプリプロセッサでは払拭できない。
罠仕様は
デフォルトで全ての宣言が前方参照となること。
var x = 1;print((function (v) { x = v; var x = 0;
JavaScriptがこれだけ発展したなら、むしろ今の仕様が正義で受け入れたほうが正解だと思います結局JS独自の仕様が罠なのは、JSがマイナーな立ち位置の言語だからですからねとは言え、JSでも巻き上げのないブロックスコープ宣言は使えますよ
JSに汎用的なdeepcopyメソッドが用意されてないのは、そもそもdeepcopyの汎用的な定義が難しいからだよ。
まず、JavaScriptのオブジェクトはディスクリプタの集合だから、単にvalueをコピーするのとディスクリプタをコピーする場合がある。これはまだいいが、valueが関数だった場合どうなるか。その関数がネイティブのものだったり、スコープを保持したクロージャである場合どうしたらいいのか。これは非常に非常に難しい。
一応DOMにstructured clone仕様があるがこれは関数を完全無視する。結局自分で欲しいものは用意した方がいい。それと変数の巻き上げが嫌ならletを使えばいい。
GoogleのDartはJavaScriptの置き換えを目的に作られた言語だから、ChromeブラウザーやAndroid、ChromeOSに標準装備されれば、一気に普及しそうだけどね。
ブラウザでもバイナリコードが動いてほしかったな。そうすればバイナリ互換したまま言語のバージョンを簡単に上げられる。JavaScriptへのトランスレータもあるけど、下手に編集できるのがよくない。
Flash/Silverlight/Java、WebのリッチUIはこっちの方が伸びて欲しかった。
あなたみたいな人は永久にActiveXでも使ってて下さい。
ばかじゃないの?
俺は彼はばかじゃないと思う
JavaScriptでバイナリコード実行エンジン実装すればええやん
まあ、ブラウザ上で動かす言語ならJavascript以外選択肢がないのも確かだけど、サーバ上でJavascriptをうごかすNode.jsはなにがやりたいんだろう。非同期IOが必要ならコールバック地獄になるJavascriptじゃなくて、ErlangかHaskellつかえよ。
Node.js=コールバック地獄 は間違いです確かに標準APIがコールバック要求型なのが問題なのは確かで、愚直にかけばそうなりますがそれはJSのポテンシャルの限界ではなく、ジェネレータやプロミス、またイベントエミッタを使うなど、様々な方法でより良いコーディングが出来ます
Haskellも考えたけどエンジンをハック出来なかったから諦めたらしいよGoogleのJSエンジンのV8はこれ以上ないくらいC++とのバインディングが凄まじく良く出来てるからね
あとこれほど普及して大規模になってきて問題視されるようになったコールバックだけど、それほど複雑じゃないものなら直感的で簡単ってメリットも有ることを忘れちゃいけない。というか殆どの場合ネストが3重を超えることはない。
そもそもJSは関数が一級市民だから関数を変数に入れて分離すればいいだけ。なら何でコーディング地獄が発生するかというと副作用を利用しようとするから、関数の中に関数を入れることになる。だからそもそも関数型チックにかけばこの問題は起こらない。
つまりはフリーダムなJSでこそ起こる贅沢な悩みで、Haskellと比較するのはそもそもおかしい。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
なくなって欲しいものなら (スコア:0)
JavaScriptかな。
置き換わってくれるならLispでもRubyでもPythonでもPerlでもいいよ(Perlは少し微妙な気分になるけど)。
Re:なくなって欲しいものなら (スコア:3)
Re:なくなって欲しいものなら (スコア:1)
確かに、JavaScript は、どのように見ても、まともにメンテできるとは思えない。
はやいとこRubyかPythonに移ってくれ
Re:なくなって欲しいものなら (スコア:1)
Prologは?
Re: (スコア:0)
大学の授業でやりました(。x。)
ドキュメントが少なすぎて大変苦労した記憶があります・・・
Re:なくなって欲しいものなら (スコア:1)
21世紀に入ってからだとそうかもしれないなあ。第五世代の反動で。
1990年ころまででであれば物好きが苦労しながらドキュメント・論文・教科書程度は入手できただろうけど。
Re: (スコア:0)
Prologは?
どうなんだろうね。 良い処理系がサポートされ続けるのなら、複雑なパターンマッチングの処理などに使えそうな気はするが。(いわゆるビッグデータとか遺伝子情報とか分子解析?とか) 実際にはそういところではどのようなプログラミング言語(あるいは専用システム)を使ってるんだろう?
人工知能(古い!)はお呼びじゃないことは確かだが。
Re: (スコア:0)
今の流行りはDatalog [wikipedia.org]かな
Re: (スコア:0)
Javascriptのようなプロトタイプベースの言語は、Firefoxのアドオンのように既存関数を乗っ取って機能を拡張するのには向いてると断言できますが、
Web向きかというと、どうなんでしょうかねぇ。無駄に脆弱性を増やしてるだけな気もする。
個人的に、Javascriptの一番の問題は標準関数が少なくて歪なことにあると感じるので、そこだけ何とかして欲しいところ。
Re: (スコア:0)
WebにはDOMという立派な標準APIがあるので、標準巻数の少ないスクリプト言語のほうが向いてると考えるのが普通では?
もし、Webが発展して各APIが必要とされて出来る前にJSに取り入れようとしていたら、多くが現在負の遺産になっていると思いますよ。
特にJSは後方互換性を重視しないといけない立場ですからね、巷のサーバサイド言語のように、良さそうなものをどんどん入れて、収集がつかなくなったらメジャーバージョンアップ時に切り捨てるということはできません。
Re: (スコア:0)
そうではなく、数学や暗号などのもっと基本的なAPIのことです。
公開鍵暗号やhmac sha1ぐらい標準で用意していてほしい。
Re: (スコア:0)
暗号が基本のAPIだとは到底思えませんが、用意されてますよ。
https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html [w3.org]
Re: (スコア:0)
javascriptの存在が気に入らないとかでなくて、javascriptを書きたくないと言うだけなら、
最近はコンパイルしてjavascriptを出す系の言語は結構ありますよ。TypeScriptとかCoffieScriptとか。
LLVMのおかげで既存の言語⇒javascriptも乱立して面白い感じですよ。
C++でWebフロントエンドを書くなんて言う
変態的なものもあったり。Re:なくなって欲しいものなら (スコア:1)
>最近はコンパイルしてjavascriptを出す系の言語は結構ありますよ。TypeScriptとかCoffieScriptとか。
その手の独自拡張言語の問題は、その言語がいつまで持つか分からんこと。
1~2年で死屍累々となっても、驚くほどのものじゃない。
サポートの切れたオレオレスクリプトほど厄介な物はないからな。
あとはドキュメントが少ないとか、参考書が皆無とか、問題が発生しても質問できる
相手がいないとか、調査し難いとか、etc....
Re:なくなって欲しいものなら (スコア:1)
TypeScriptは大丈夫じゃないかなぁ
一応Microsoftだし、言語自体のサポートはそれなりに続くはず
何よりヘジたんのセンスが光る良い言語だからね…
Re:なくなって欲しいものなら (スコア:1)
ドキュメントも解説サイトもサンプルプログラムも幾らでもありますしね。
きれいな言語だからまともなプログラマーならマニュアルだけで十分ですが。
TypeScriptの機能の一部はNext-javascriptの草案の先取り実装ですし。
enumと引数のdefault値がGoogle Closure Compilerの
最適化と親和性が悪い点だけが不満です。
# YUI3+TypeScriptでかなり美しいプログラムが書けるようになって
# Webアプリのフロントエンドを書く不満が無くなりました
Re:なくなって欲しいものなら (スコア:1)
>一応Microsoftだし、言語自体のサポートはそれなりに続くはず
VB6なんてなかったんや。
Re: (スコア:0)
1998年に出た言語だぞ つVB6
充分『それなりに』サポートされた部類だと思うけど
Re: (スコア:0)
Webコンテンツは10年で十分とは限らないと思う。
まあTSのいいところは最悪衰退してもコンパイル後のJSが読みやすいのとES.nextを意識した仕様で、JSに切り替えやすいってとこだな。
Re: (スコア:0)
TypeScriptの吐き出すJavaScriptはメンテナンスしやすいね。
Re: (スコア:0)
ヘジたんのJ++(遠い目
Re: (スコア:0)
いやー、TypeScript はかなり筋がよいと思うよ。
JavaScript はまったく好きになれないけど TypeScript なら許せる。
JavaScript環境の本当の問題点 (スコア:0)
変数とプロシジャーの区別が無く、
無名関数と関数閉包が使えるJavaScriptは
極論すれば
機能的にはRubyと大して変わらない。
問題は、機能とか表面的な仕様にあるのではなく、
内部的な毛深さと罠仕様だ。
毛深さは
たとえば汎用的なdeepcopyを実装するのは意外と難しい
http://nmm.blog.jp/archives/35975582.html [nmm.blog.jp]
このあたりはプリプロセッサでは払拭できない。
罠仕様は
デフォルトで全ての宣言が前方参照となること。
var x = 1;
print((function (v) {
x = v;
var x = 0;
Re: (スコア:0)
JavaScriptがこれだけ発展したなら、むしろ今の仕様が正義で受け入れたほうが正解だと思います
結局JS独自の仕様が罠なのは、JSがマイナーな立ち位置の言語だからですからね
とは言え、JSでも巻き上げのないブロックスコープ宣言は使えますよ
Re: (スコア:0)
JSに汎用的なdeepcopyメソッドが用意されてないのは、そもそもdeepcopyの汎用的な定義が難しいからだよ。
まず、JavaScriptのオブジェクトはディスクリプタの集合だから、単にvalueをコピーするのとディスクリプタをコピーする場合がある。
これはまだいいが、valueが関数だった場合どうなるか。
その関数がネイティブのものだったり、スコープを保持したクロージャである場合どうしたらいいのか。
これは非常に非常に難しい。
一応DOMにstructured clone仕様があるがこれは関数を完全無視する。
結局自分で欲しいものは用意した方がいい。
それと変数の巻き上げが嫌ならletを使えばいい。
Re: (スコア:0)
GoogleのDartはJavaScriptの置き換えを目的に作られた言語だから、ChromeブラウザーやAndroid、ChromeOSに標準装備されれば、一気に普及しそうだけどね。
Re: (スコア:0)
ブラウザでもバイナリコードが動いてほしかったな。そうすればバイナリ互換したまま言語のバージョンを簡単に上げられる。
JavaScriptへのトランスレータもあるけど、下手に編集できるのがよくない。
Flash/Silverlight/Java、WebのリッチUIはこっちの方が伸びて欲しかった。
Re: (スコア:0)
あなたみたいな人は永久にActiveXでも使ってて下さい。
Re: (スコア:0)
ばかじゃないの?
Re: (スコア:0)
俺は彼はばかじゃないと思う
Re: (スコア:0)
JavaScriptでバイナリコード実行エンジン実装すればええやん
Re: (スコア:0)
まあ、ブラウザ上で動かす言語ならJavascript以外選択肢がないのも確かだけど、
サーバ上でJavascriptをうごかすNode.jsはなにがやりたいんだろう。
非同期IOが必要ならコールバック地獄になるJavascriptじゃなくて、ErlangかHaskellつかえよ。
Re: (スコア:0)
Node.js=コールバック地獄 は間違いです
確かに標準APIがコールバック要求型なのが問題なのは確かで、愚直にかけばそうなりますが
それはJSのポテンシャルの限界ではなく、ジェネレータやプロミス、またイベントエミッタを使うなど、様々な方法でより良いコーディングが出来ます
Re: (スコア:0)
Haskellも考えたけどエンジンをハック出来なかったから諦めたらしいよ
GoogleのJSエンジンのV8はこれ以上ないくらいC++とのバインディングが凄まじく良く出来てるからね
あとこれほど普及して大規模になってきて問題視されるようになったコールバックだけど、
それほど複雑じゃないものなら直感的で簡単ってメリットも有ることを忘れちゃいけない。
というか殆どの場合ネストが3重を超えることはない。
そもそもJSは関数が一級市民だから関数を変数に入れて分離すればいいだけ。
なら何でコーディング地獄が発生するかというと副作用を利用しようとするから、関数の中に関数を入れることになる。
だからそもそも関数型チックにかけばこの問題は起こらない。
つまりはフリーダムなJSでこそ起こる贅沢な悩みで、Haskellと比較するのはそもそもおかしい。