【JS】スクリプト,バトルロワイヤル39【Perl,Ruby,PHP,Python】
プログラム初心者ですが windows8にPerl入れようとしたら 詰んだ サポート外?
Perlのこと全く知らないけど XAMPP使えば
ハッキングされてしまった やっぱサーバー立てるなら確実にログ保存してないとダメだよな 何らかの方法でローカルサーバーがグローバルサーバーにされてた ??? ってなってサーバー再起動したら、元のローカルサーバーに戻った WEBrickしっかりしよう 特に何も入ってないpcで アクセスされたファイルはただの萌え画像1個だから別に良いけど 2時間接続されて数百KBしか転送できないような限定的な接続の仕方ってありえるのか セキュリティってしんどいな〜
5 :
デフォルトの名無しさん :2013/09/15(日) 03:39:44.88
足跡に気づいただけマシだ
ログは別のサーバに保存しておかないとな。
8 :
デフォルトの名無しさん :2013/09/15(日) 08:26:54.62
>>2 そう
JAVAやPythonもWin8では使えない
rubyなら入る
サバ缶御苦労様
10 :
デフォルトの名無しさん :2013/09/16(月) 22:05:10.59
上げ
さて、次のお題よろしく。
PythonをWin8に移植する
13 :
デフォルトの名無しさん :2013/09/16(月) 22:20:56.31
もう皆疲れたよ
火葬マシンインスコすればいい
windowsを窓から投げ捨てれば良い
互換性なんて嘘なんだから、皆、c++に戻りなよ
objective-cやlogtalkのようなアプローチで作られた 移植しやすいcのスーパーセットみたいな言語ってありませんか?
Cは良いけどC++はウンコ 我慢して使ってるけど
じゃあ次のお題は SEND + MORE = MONEY を できるだけ簡潔に、しかし、耐えられる時間で解くコード
>>15 じゃあJSはこれでお願いします
10秒
+αで汎用的
9567+1085=10652 だから総当り方式だと最初の位を9から仮定していけば SENDMONEYに特化した最適化が出来るから 速度の比較はもっと沢山問題用意しないとダメかもな
スタックが足りなくてシンプルに書けないかも
全くもって汎用性のないコード
>>15 みたいに覆面算全般ができないとダメよ
毎度思うんだけどさ、 問題を解くのが面倒なんだ。 言語の違いを知るだけだろ? ならある言語で実装して、 それと同じコードを他の言語に 書き換えるだけでいいのではないのか?
全般とは言わないが 任意桁+任意桁=任意桁 くらいは出来て欲しいね。
>>26 バトルロワイヤルってのは使い手たちの戦いでもあるから
うちの言語俺が使うとこんなコードで出来まっせってのが大事
学者じゃないんだから言語の違いなんかには興味ないね。 むしろ他人がどんなコード出してくるかが気になる。
移植するほうが10倍めんどいと感じるのは俺だけ? 自分で考えて書くのが楽しんじゃないの?
既存のPHPをssjsに置き換えるのは非常に困難だって、誰かがボヤいてた
でもさ、大概他の言語で真似出来ちゃうよね?
>>29 学者は言語の違いなんて興味持ちません
大方、アルゴル系統の言語で一括りどすえ
喧しいのはワナビ族かオタク
つまらないことで煽っていくスタイルやめようぜ
しかし、VBAって処理系はいつになったらpythonやruby風に進化するんだろう いい加減に葬り去ってjsに統一すれば良いのに
>>35 お前VBA使ってるの?
あれはあのままでいいと思うんだけど。
俺とは関係ない世界の話しだし。
いるよね さもわかってるかのような口ぶりのワナビ族
ここは言語のバトルロワイヤルであって アルゴリズムのバトルロワイヤルじゃないと思うんだが? アルゴリズムってのは基本的に どの言語でも同じように実装できるし。
>>39 >アルゴリズムってのは基本的に
>どの言語でも同じように実装できるし。
何それ背理方?
41 :
デフォルトの名無しさん :2013/09/17(火) 01:44:02.90
いいから黙ってコード書けばよろし
つまりカリカリチューンが真骨頂と
書ける書けると言いながら未だコードは2件のみ
>>42 カリカリチューンして意味ある言語って、c/c++,fortranぐらいじゃないの?
所謂、LLのノウハウって、かつてのBASICやperlのように葬られる運命
最後にはどれだけライブラリが揃っているかの 勝負になりそう・・・。
>>15 これevalが活躍できるスクリプト言語ならではのいいお題だと思う
こういうのが上手く書けないと真にスクリプト言語を書けることにならないんじゃない?
>>45 やめてよね。LLがjavaに勝てるわけないじゃない
実際はc/javaのライブラリを呼ぶけれど、如何に呼びやすいかってのが最重要な要素
個人的にはrubyがグルー言語としてもコマンドラインツールとしても使えて便利そうに見える
なかのひとたちが絶望して真っ黒になるまでは使えそう
eval is evil eval is evil eval is evil eval is evil
LLからC/C++で書かれたライブラリ呼べばいいじゃん つかPythonはそうしているし
VBAっていまだに宣言と代入が同時にできないんだぜ。 C99以下の言語。
逆に、C/C++からLLのライブラリも呼べる
evalが嫌なら構文解析やASTなんかを使わにゃならんだろうが そりゃeval使ったほうがええな
evalで作った関数はJITも効くしこういうケースでは有効。
なんか工夫しないとやっぱり遅いな from itertools import permutations def solve(problem): variables = compile(problem, '<string>', 'eval').co_names letters = ''.join(set(''.join(variables))) first_letters = [letters.index(y) for y in set(x[0] for x in variables)] perms = (''.join(c) for c in permutations('0123456789', len(letters))) candidates = (c for c in perms if c.find('0') not in first_letters) for candidate in candidates: expr = problem.translate(str.maketrans(letters, candidate)) if eval(expr): yield expr if __name__ == '__main__': print(next(solve('send + more == money')))
; Common Lisp (defmacro fukumenzan (symbol expression &optional number original-symbol) (let ((num (gensym))) `(loop with ,num = (or ,number '(0 1 2 3 4 5 6 7 8 9)) for ,(car symbol) in ,num nconc ,(if (= (length symbol) 2) `(loop for ,(cadr symbol) in (remove ,(car symbol),num) if ,expression collect (pairlis ',original-symbol (list ,@original-symbol))) `(fukumenzan ,(cdr symbol) ,expression (remove ,(car symbol) ,num) ,(or original-symbol symbol)))))) ;; m = 0, s = 0 を取り除いてる。 (remove-if-not (lambda (x) (loop for y in '(s m) never (zerop (cdr (assoc y x))))) (fukumenzan (s e n d m o r e y) (= (+ (+ (* s 1000) (* e 100) (* n 10) d) (+ (* m 1000) (* o 100) (* r 10) e)) (+ (* m 10000) (* o 1000) (* n 100) (* e 10) y))))
Googlemapsについて、どこで質問していいのかわからなかったので、ココで・・・。
会社で制作しているWebページに、Googlemapsを使って地図を貼り付けているんですけど、
今朝ゼンリンから電話があって、「Googlemapsを使うなごるぁ!」ってクレームが入りました。
Googlemaps自体は、特に変な事はしてなく単に座標を指定して地図を表示しているだけです。
話を聞いてみると、「Googleとの協議で、座標を指定して地図を表示するのは、著作権物の二次使用になるので利用料が発生する」
との事でした。
どうも、Googlemapsのトップページにリンクするのはいいんだけど、地図を貼り付けて表示するのは有料になるようです(なった?)。
スレ違いかもしれませんが、他の方のところも同じ様な連絡はなかったでしょうか?
https://developers.google.com/maps/faq?hl=ja#tos_commercial ↑を見る限り問題なさそうなんですが・・・。
>>59 Web制作板へ逝って、そこで質問汁
ここはスレ違いの板違いだ
>60 了解しました。
Squeak Smalltalk | solve answers | solve := [:words | | letters table int triplets | letters := words concatenation asSet. table := letters inject: Dictionary new into: [:dic :chr | dic at: chr put: 0; yourself]. triplets := OrderedCollection new. int := [:str | str inject: 0 into: [:acc :chr | acc * 10 + (table at: chr)]]. (0 to: 9) combinations: table size atATimeDo: [:comb | comb permutationsDo: [:digits | digits doWithIndex: [:dig :idx | table at: (table keys at: idx) put: dig]. ((words allSatisfy: [:word | (table at: word first) > 0]) and: [ (int value: words first) + (int value: words second) = (int value: words third)]) ifTrue: [triplets add: (words collect: [:key | key -> (int value: key)])]]]. triplets asArray]. solve value: #(SEND MORE MONEY) "=> {{#SEND->9567 . #MORE->1085 . #MONEY->10652}} " solve value: #(APPLE GRAPE CHERRY) "=> {{#APPLE->63374 . #GRAPE->90634 . #CHERRY->154008}} " 最初の文字の非ゼロチェックだけの総当たり。 最初の解が見つかったところで終了しないで最後まで(見つからないが)探した場合で SEND MORE MONEY は 36秒 APPLE GRAPE CHEERRY は 83秒
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは
>>1 乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
>>59 企業からの圧力なんてあるんだ
こういうのって、google以外のフリーのマップ使えるんだっけ?
>>59 企業からの圧力なんてあるんだ
こういうのって、google以外のフリーのマップ使えるんだっけ?
>>59 利用規約の第何条第何項に違反しているのか問いただせ。
まさかとは思うが「ゼンリンの方から来ました」じゃないよな?
GoogleMapsはアクセス数が規定値未満なら無料 それ以上はGoogleにお金を払う ゼンリン云々は120%詐欺だから無視
「座標を指定してGoogle Mapを表示」って、すごくありきたりな使い方 裁判沙汰になったらGoogleへの著作権侵害を第三者が訴えるのかな? perlですらも商標ゴロに付きまとわれた過去があるんだし、 日本の大手企業を騙るインテリヤクザとかの奇妙な存在ってのも懸念したら?
googlemapsの件ですが、あっちのスレに書き込む前に解決しました。 結局ゼンリンの担当者の勘違いって事で。 どうもマップのスクショをイメージとして貼り付けてると思ってたらしくて。 スレ違いなのでこの辺で。 お騒がせしました。
バカ、そんな間違いするわけ無いだろ 騙されてるんだよお前の会社
>>71 おいPythonじゃねーじゃ・・Pythonだ
Rubyでeval
def solver(q)
; vars = q.scan(/[a-z]/i).uniq
; ind = Hash[vars.zip(vars.size.times)]
; qq = q.gsub(/([a-z]+)/i){ $1.chars.reverse.map.with_index{|e,i| "a[#{ind[e]}]*#{10**i}"}.join('+')}.sub(/=/,'==')
; chk1 = eval "->(a){#{qq}}"
; chk2 = eval "->(a){#{q.scan(/[a-z]+/i).map{|e| "!a[#{ind[e[0,1]]}].zero?" }.join(' and ')}}"
; (0..9).to_a.permutation(vars.size) do |a|
; ; yield q.gsub(/([a-z])/i){a[ind[$1]]} if chk1.call(a) and chk2.call(a)
; end
end
solver("send + more = money"){|a| puts a}
#solver("APPLE + GRAPE = CHERRY"){|a| puts a}
全パターン検索して 2.3秒
ループごとにevalさせてたら 57秒かかったので
判定関数をevalで作る方式に
"APPLE + GRAPE = CHERRY" だと4.7秒
一つ見つけたら打ち切りだと 両方あわせて 5.1秒
同環境で
>>71 をPython3.3.0 で 2.8秒
ぐぬぬっPython速いな
JSがゴミすぎる やはり周回遅れの劣等言語か
誰かジョンタイターの予言を信じる奴いる? 確か、東北半分ぐらいが住めなくなって、首都が島根。 プログラム言語はMaybeが含まれるものが主流ってヤツ。
Squeak Smalltalk を
>>73 とほぼ同じ方針で
| solve |
solve := [:words |
| letters shouldntZeros signs check results |
letters := words concatenation asSet asArray.
shouldntZeros := (words collect: #first) asSet collect: [:chr | letters indexOf: chr].
signs := '+=' readStream.
check := Compiler new evaluate: (String streamContents: [:ss |
ss nextPutAll: '[', ((letters gather: [:chr | ':', chr, ' ']) as: String), ' | '.
words do: [:wd |
ss nextPutAll: (String new: wd size withAll: $().
wd do: [:chr | ss nextPut: chr] separatedBy: [ss nextPutAll: ')*10+'].
ss nextPut: $)
] separatedBy: [ss nextPut: signs next]. ss nextPut: $]]) in: nil to: nil.
results := OrderedCollection new.
(0 to: 9) combinations: letters size atATimeDo: [:comb |
comb permutationsDo: [:digits |
((shouldntZeros allSatisfy: [:idx | (digits at: idx) > 0])
and: [check valueWithArguments: digits])
ifTrue: [results add: (words collect: [:wd |
wd -> (wd inject: 0 into: [:acc :chr | acc * 10 + (digits at: (letters indexOf: chr))])])]]].
results asArray
].
solve value: #(SEND MORE MONEY)
全パターン検索で SEND + MORE = MONEY は 2.0秒
APPLE + GRAPE = CHERRY が 4.0秒
見つかり次第打ち切りの場合は両方合わせて 4.1秒 と劇的に改善しました。ありがとう。w
参考まで、同マシンで
>>73 は SEND + MORE = MONEY が 5.7秒
APPLE + GRAPE = CHERRY が 9.4秒
やっぱりJSはひでえな。 速度もそうだが何この原始時代のコード……
JSはそんな悪い言語じゃないんだぜ Chromeという前提条件つきであればそこらのLLを越えて爆速だし
81 :
デフォルトの名無しさん :2013/09/17(火) 21:53:25.22
お、おう
煽るぐらいならスルーしろよ
一番にコードを書いたのに
同じJSerからも批難される
>>78 哀れ
>>77 まあこういうのは少なくとも2chに貼るもんじゃないだろうね
JSerはJS最強を唱える奴ほどコード書けないという法則があるよね コード書けるJSerは欠点も知ってるから最強を唱えない
>>78 これ実行すると1GBもメモリ食うんだけど……
バカじゃないの?
メモリはVM入れて16MBまでね。
最近オブジェクトにオブジェクトを合成してプロパティーを追加する こんな演算子があったらいいなと思ってるんだけどある言語ある? obj1 .= obj2
プロパティがコンフリクトしたときはどっちを優先するの?
obj <<< obj2 ならあるが
94 :
デフォルトの名無しさん :2013/09/17(火) 22:51:45.09
覆面算を10進に限定せず、何進でもよくして そのうち最小の進数で解く問題にすれば アルファベット=文字が増えても出来る。
覆面算の価値は人に取って面白いってことだから そうするとわかりにくくなって価値が無くなる
>>97 これって AB + C = BA とかどうなるの?
皆
>>20 を忘れてない?
「できるだけ簡潔に」ね
とことん最適化するならアルゴリズム大会になるから
12+9=21
Line 34 yield from advance(n + 1, mapping, remaining) ^ SyntaxError: invalid syntax
>>99 >>15 のJSのコード:行数120、実行時間は10秒(?)
>>97 のPythonのコード: 行数46、実行時間は0.3秒
104 :
デフォルトの名無しさん :2013/09/17(火) 23:17:56.49
KYOTO + OSAKA = TOKYO AOMORI + SAPPORO = FUKUOKA KOCHI + OSAKA = NAGOYA OKAYAMA + WAKAYAMA = KANAZAWA FUKUOKA + NAGANO = YOKOHAMA KAMAKURA + MORIOKA = NAGASAKI KUMAMOTO + TOTTORI = WAKAYAMA OKAYAMA + WAKAYAMA = YAMAGATA TOTTORI + YAMAGATA = YOKOHAMA
23+9=32 34+9=43 45+9=54 56+9=65 ... 78+9=87
JSはせっかく性能高い処理系あるんだから生CPythonぐらいは抜いて貰わないとな
109 :
デフォルトの名無しさん :2013/09/17(火) 23:34:35.53
言語と速度は別だ。 実行時に新型(新クラス)が無限に生成されるのでなければ 原理的には実行前にアセンブラやC++に変換にするのは可能。
じゃあ遅くてもいいからJSのコードがもっと見たいわ。
111 :
78 :2013/09/18(水) 00:05:17.59
頑張ってるけど
>>78 でもう生成したコードを実行する部分だけで全体の半分以上の時間がかかってるから
仮に生成する部分を多少改善しても爆速にはならなさそう
だから実行コード自体をどうにかしたいんだけど
今のif文return以外の方法だとV8でどうしてもスタックが溢れてしまって
>>15 みたいに分割しなくちゃいけなくなりそうだから結構難しい
GCにもかなり時間食われてるし、根本的に無理があるのかも
あとはアルゴリズムに手を加えて生成するコード自体を少なくするくらいしか思いつかない
よくあるのが、文字列を足していくんじゃなくて、 配列に入れておいて、最後にjoinするって手があるが。
文字を足していくと、新しい領域に足してコピー→前の領域を消す という流れになるだろうから、GCに時間かかるだろうし。
>>99 > 「できるだけ簡潔に」ね
それはそれで、ライブラリ勝負になっちゃうんだよ。
ある言語ではライブラリがあるから簡単にかけるが、
そうでない言語ではライブラリがないから書かないといけない。
>>114 誰もそんなこと言ってない
仕様を満たす最低限のコード書けたのに
それを最適化のためにわざわざコードを長くするのはマイナスじゃないかといってる
>>115 最低限のコードっていうのもなぁ。
それもライブラリ次第なんだよね。
当然ライブラリは汎用でなければならないが、
ライブラリが存在すると仮定するならば、
それを使うことで更に短く出来るかもしれない。
ライブラリまで含めると長くなるが、
もしそのライブラリが存在するならば
短くなる。
>>112 ,113
そこは分かるんだけど、そこのコストは1/3で
eval自体に2/3近くかかってしまってるんだ
こいつ言ってることが分かんないのか??? 最適化のためにコードが長くなっていく方向は最初の趣旨と違ってきてるんじゃねえのかと言ってるんだよ。
お前らWindowsXP並のOSをソースコード1MBぐらいで書いてくれよ
js素直に再帰書いたら激遅すぎて終わらない やっぱり後でevalのがいいのか
123 :
デフォルトの名無しさん :2013/09/18(水) 01:27:00.07
>>104 の時間はどうだ?
あと速度はマシン性能にも依存するから同一マシンで計るなりしないと
処理系比較としては正確でない。
逆じゃないか JSは言語としてはいまいちだが、処理系は極めて優秀
>>123 全部で合わせて2秒ほどだね
$ time python3.3 sendmoremoney.py
(('send', 9567), ('money', 10652), ('more', 1085))
(('cherry', 154008), ('grape', 90634), ('apple', 63374))
(('TOKYO', 73413), ('OSAKA', 32040), ('KYOTO', 41373))
(('AOMORI', 790968), ('SAPPORO', 1744969), ('FUKUOKA', 2535937))
(('OSAKA', 89343), ('KOCHI', 48520), ('NAGOYA', 137863))
(('OKAYAMA', 9701030), ('WAKAYAMA', 60701030), ('KANAZAWA', 70402060))
(('YOKOHAMA', 10204757), ('NAGANO', 376730), ('FUKUOKA', 9828027))
(('KAMAKURA', 51915701), ('MORIOKA', 9402451), ('NAGASAKI', 61318152))
(('KUMAMOTO', 58171393), ('TOTTORI', 9399324), ('WAKAYAMA', 67570717))
(('YAMAGATA', 30406080), ('OKAYAMA', 9703040), ('WAKAYAMA', 20703040))
(('YAMAGATA', 63238353), ('YOKOHAMA', 69194323), ('TOTTORI', 5955970))
real 0m2.092s
user 0m0.000s
sys 0m0.015s
126 :
78 :2013/09/18(水) 04:05:57.67
なんという力技…
読む気失せた
129 :
デフォルトの名無しさん :2013/09/18(水) 09:45:28.05
mod2とmod3での条件を求めておけば速いのでは。 文字の重複がないとあまり意味なさそうだが。
130 :
デフォルトの名無しさん :2013/09/18(水) 11:22:16.71
GIGAZINE 編集者ってアホやろ
Pythonやymlのインデントブロックってさ、一見良さげだけど、ブロックを締める要素がないから、なんか締まりが悪いよな
意味のないendを延々と繰り返す締りの悪い言語よりマシ
インデントは、自信ない。深くなるほど、ますます自信がなくなる
endに意味がないとか言ってるやつってブロックって概念を知らないアセンブラーですか?
「意味」という言葉を正確に使えないだけw
>>123 いちれんのPythonのコードは全パターンを検索しているわけではないから
速度出たところで「ふーん。早く最初の答えが見つけられるね」以上の意味はないよ。
速度を比べるなら少なくともアルゴリズムは統一しないと比較にならない。
>>126 前より大分速くなったみたいだけど、まだV8で
AOMORI+SAPPORO=FUKUOKA
に50秒ぐらいかかるな、うちの環境だと
>>120 のPythonだと0.05秒
>>137 ためしに
AOMORI+SAPPORO=FUKUOKAを全部回したら
>>120 は0.8秒
最後を↓のようにしただけ
for x in solve('AOMORI + SAPPORO = FUKUOKA'):
print(x)
これなんでPython3.3限定なの?
>>140 Generatorのチェインが簡単に記述できるやつではないかな
for x in g:
yield x
が
yield from g
でOKになったやつ
Python使いじゃないので
間違ってたら詳しい人訂正よろしく
>>120 の枝刈りなくしてブルートフォース版に書き換えて測ったら
send + more = money に30秒かかってクソわらったわ
同じ条件で
>>73 は 2.7秒!!
やっぱりRuby最強だな!!!!
evalで威張る
もう各言語十分な速度出たみたいだから、そろそろ良いんじゃね
>>143 そりゃ見返りのために余分な投資してるコードから見返り分だけ意図的に
捨てたら遅くなるだけわな
>>126 のリンク先のまんまのコードはくようにしたらどうなる?
明らかに無駄な部分もあるけどこのままで。
148 :
デフォルトの名無しさん :2013/09/18(水) 18:28:05.40
同じアルゴリズムで比較しても意味なし。実用性がないと。 実験以外では使わないコードは実験でしかない。
意味が無いとか無粋なこと言うねえ。 面白くなりそうならそれでいいじゃん。 このままアルゴリズム大大会をしたいんならいいけどさ。 自分はコードの雰囲気が見たいんだよね。 遊びでコード書いてる時が一番いい時ってどっかの偉い人も言ってたし。
>>148 リアルだと、お里が知れるから発言控えた方が良いよ
正直に言ってこのスレは初級者の自分のすごくいい経験になってる。 コードも、雑談も、喧嘩も全て。
ここの煽り合戦には長いこと参加してるけれど、 結論を言うと、JavaとC以外は使わない方が良い。 趣味ならRか関数型ぐらいしかメリット無し
趣味にメリット求められましても…
そもそも実利のないことを趣味にするぐらいなら、 プログラミングぐらい馬鹿馬鹿しいものは選ばない 2次元のオッパイでも描いた方がマシ
()付け忘れてて 足し算しかできてなかった 四則演算できるようにしたが、割り算が入ると0除算対応と有理数化する必要があって(元から遅いのにさらに)遅くなる ついでにループ全体をevalの中に入れて関数コールを削除したら、ほんのちょっぴり速くなった def solver(q) ; vars = q.scan(/[a-z]/i).uniq ; ind = Hash[vars.zip(vars.size.times)] ; chk1 = q.gsub(/([a-z]+)/i){ '(' + $1.chars.reverse.map.with_index{|e,i| "a[#{ind[e]}]*#{10**i}"}.join('+') + ')'}.sub(/=/,'==') ; chk1 = "begin;#{chk1.gsub(/\(/,'Rational(')};rescue ZeroDivisionError;false;end" if q.match(/\//) ; chk2 = q.scan(/[a-z]+/i).map{|e| "!a[#{ind[e[0,1]]}].zero?" }.join(' and ') ; eval <<-EOS ; ; (0..9).to_a.permutation(vars.size) do |a| ; ; ; yield q.gsub(/([a-z])/i){a[ind[$1]]} if (#{chk1}) and (#{chk2}) ; ; end EOS end solver("WOODS + WOODS + WOODS = FOREST"){|a| puts a} solver("ONE + TWO + FIVE + FIVE + SEVEN = TWENTY"){|a| puts a} solver("SUCHEN - MACHT = SPASS"){|a| puts a} solver("KORE * ARE = IROIRO"){|a| puts a} solver("HE * HE = SHE"){|a| puts a} solver("NORTH / SOUTH = EAST / WEST"){|b| puts b} solver("AHHAAH / JOKE = HA"){|b| puts b}
>>152 Cはいいけど、Javaなんて書くやつはアホだ
>>156 後々で自分が馬鹿だって気付くんだろうけど、
そのレス見る限りじゃヒッピー連中にはついていかない方が良いと思う
>>157 後々からバカだと気づくのはお前だと思うよ
10年前ならともかく今の時代にJavaなんてゴミで書き続けたことに
個人的には進化感が好きだからLL気に入ってる Javaもコミュニティ大きいし結構進化もしてるし、 VMの仕組みとか面白いし、眺めるのは楽しい言語だと思う 書くのは億劫だけど Cは目的を達成するために仕方無く使う言語で 楽しむ言語じゃないね
クライアントサイドJSは別だが、一般にはLLだと意外とC使うぞ それが本来のグルー言語としてのあり方 Java屋とかのほうがC使わない印象あるな 言語自体速いのと、ピュアJavaに重きを置く文化のせいだと思う
自分の知ってる範囲で定義に合わないのは除外して一般と騙っちゃう人って……
>>162 クライアントサイドJSはCを「使う」「使わない」の問題じゃなくて
「仮に使いたくても使えない」特殊なケースなんだから、
Cを「使う」「使わない」の議論からは最初から外れるんだよ
速いのか遅いのか中途半端な言語は属人性が高い もし遅かったら言語ではなく人が疑われる 誰が書いても遅い or 誰が書いても速い両極端な言語は人に優しい
>>15 @Mathematica
やってみたら何とか解けた。
コード行数72行もあるので貼るのはやめとくお。(´・ω・`)
作成時間:2時間弱
計算時間:6分弱
ideonにtextとして貼り付けたらいい
ふん、やっぱりevalはあまりメリットがないな。 運がいい場合にたまたま使える例がある。 がそれは最善のコードではない。 そういったたぐいか。
168 :
165 :2013/09/18(水) 21:32:38.82
Squeak Smalltalk ナイーブな総当たりかつハードコードだけど、簡潔かつ速かったので。 1.6秒。 | results check n1 n2 n3 | results := OrderedCollection new. check := [:S :E :N :D :M :O :R :Y | S > 0 and: [M > 0] and: [ (n1 := ((S*10+E)*10+N)*10+D) +(n2 := ((M*10+O)*10+R)*10+E) =(n3 := (((M*10+O)*10+N)*10+E)*10+Y)]]. (0 to: 9) combinations: check numArgs atATimeDo: [:comb | comb permutationsDo: [:digits | (check valueWithArguments: digits) ifTrue: [results add: {#SEND->n1. #MORE->n2. #MONEY->n3}]]] ^results asArray ついでに Ruby のほぼ直訳版。こちらは 2.0 で 4.9秒。 results = [] n1 = n2 = n3 = 0 check = proc{ |s,e,n,d,m,o,r,y| s > 0 and m > 0 and (n1 = ((s*10+e)*10+n)*10+d)+ (n2 = ((m*10+o)*10+r)*10+e)== (n3 = (((m*10+o)*10+n)*10+e)*10+y) } (0..9).to_a.permutation(check.arity){ |digits| results << [[:send, n1], [:more, n2], [:money, n3]] if check[digits] } p results
いかん。インデントが… ま、いっか。
ハードコートなら速度は前スレの順番の通りになるしか無いな
evalでできることは全てevalを使わないできるからね。 (でないとC言語で作れないものが存在するということになってしまう) evalを使わないほうが優れている。
174 :
デフォルトの名無しさん :2013/09/18(水) 21:50:20.47
速度は言語には依存せず処理系による。 例えばRubyで実装したPythonは、Rubyを超えることはない。
175 :
デフォルトの名無しさん :2013/09/18(水) 21:55:00.86
例 Pythonには複数の実装が存在する。 CPython - 作者によってC言語で書かれたバージョン。通常「Python」といえばこのCPythonを指す。 Stackless Python - Cスタックを使わずに独自のスタック(Pythonスタック)で実装したもの。 Unladen Swallow - GoogleのチームによるPythonの実装 Jython - Java仮想マシン上に移植したもの。PythonからJavaのライブラリを使うことができる。 IronPython - .NET Framework/Monoで動作するPython。C#で実装されている。.NET Frameworkのライブラリを使うことができる。動的言語ランタイム上に構築されているため、既存の.NETアプリケーションへマクロ言語として搭載することも可能となっている。 PyPy - Python (RPython) によるPythonの実装 Psyco - CPython向けのJITコンパイラ PyMite - 組み込み向けの実装、AVRなどに対応。 tinypy - 同じく組み込み向けの実装。ソースコードが64kb未満と非常に軽量なことが謳われている。 Python - Wikipedia
>>174 > 例えばRubyで実装したPythonは、Rubyを超えることはない。
インタプリタの場合はそれは正しいね。
でもコンパイルしてアセンブラにしてしまえば、
実装言語は関係ないね。
>>173 自分の都合のいい用にしか考えられないようだな
evalとC言語の関係性は無い
evalの有効性はその言語内または同じevalをもつもの同士でのみ比較できる
何故なら最悪evalを使わないとチューリング完全でない言語もありえるから
そうでなくとも
>>55 ということだアホがwww
>>177 アタナの主張はなに?
evalを使わざるを得ない言語はそりゃあり得るでしょうよ。
そんな言語は劣っているってだけなんだが。
ワロチwwww
>>175 問題は、その一覧の中にある(CPython を除く)実装が 3.3 に対応しているか?
ってこと
別にそこはどーでもよーないー? 別にPython5で書いてもOREthonで書いても怒らんよ
Mathematicaって商用だよねやっぱり 代わりの環境ってないかな
機能制限されたのなら良く見ないか?
186 :
デフォルトの名無しさん :2013/09/18(水) 22:20:41.04
一方でオープンソースのツールというのもある。それが今回、紹介するOctaveやMaximaである。
OctaveはMatlab互換を謳ったフリーの数値計算ツールである。
MaximaはMathematica,Mapleとは互換ではないがLISPで書かれたフリーの数式処理ツールである。
http://ks.ms.u-tokyo.ac.jp/~kyn/maxima.html Sage (数式処理システム) - Wikipedia
Sage (セイジ) は数学の幅広い処理を扱うソフトウェアである。
扱う処理は計算機代数、組み合わせ、数値計算など多岐に及ぶ。工学的応用に加え基礎科学の研究もカバーする。
Sage は2005年2月24日にフリーソフトウェアとして GNU General Public License の元で初版が公開された。
その開発目的は Magma、Maple、Mathematica 、MATLAB の代替となるフリーかつオープンソースなソフトウェアを提供することであった。
開発は、米ワシントン大学の数学准教授のウィリアム・スタイン (William Stein) が主導して始まった。
MuPAD
さげってwww
SimPy
>>159 スクリプト言語が記述するソフトウェアやライブラリ群は基本的に小さいものが殆ど
移植性の問題を切り捨てる為にJavaが使われ、JVMの性能の為にJavaが使われ、
堅牢性の為にJavaが使われ、ライブラリ質の為にJavaが使われ、大規模開発の為にJavaが使われる。
これが現実であり、リアリストの意見であり、そして現実とはかくも非常なものなのだ。
>>174 問題
ある言語の実装全体の集合から無作為にある実装を選んだとき
その速度は何に依存しているでしょうか
>>190 うん、Javaっていろいろ凄いよね
言語の代表でもいいと思うよ
でも尖ったとこがないから面白くないね
顧客の要求を形にするのが仕事であって、言語仕様自体の面白味なんて入りません。 むしろ、無意味な学習コストとデバッグコストが増えるだけ。これが現実。
”パーソナルリアリティ”ですね わかりますよ〜
>>190 スクリプト言語が記述するソフトウェアやライブラリ群は基本的に小さいものが殆ど
移植性の問題を切り捨てる為にCOBOLが使われ、堅牢性の為にCOBOL使われ、
ライブラリ質の為にCOBOLが使われ、大規模開発の為にCOBOLが使われる。
これが現実であり、リアリストの意見であり、そして現実とはかくも非常なものなのだ。
何を言いたいかというと、Javaは21世紀のCOBOLだってこと
COBOLは10進数の計算が出来るから銀行で未だにDSLみたく使われてんだよ
固定小数点演算は将来的にどの言語もサポートするだろうね
しません。ライブラリが付くだけ
Ruby版を参考に、eval内で一桁ずつ積和計算するようにしてみた
コードをクリーンアップして実質40行未満になった
http://ideone.com/q6znjO SEND + MORE = MONEY 〜 TOTTORI + YAGAMATA = YOKOHAMA
全部合わせて0.6秒程度
eval使ってるくせに、足し算以外には対応してない(する気もない)
rubyって10進演算するんだっけ? COBOLの代替にrubyつかわれないかな
>>170 見よう見まねでかなり見苦しいかもですが、Python版も書いてみました。
こちらも同環境で4.9秒と、Ruby2.0とよい勝負をしています。
>>143 が言うほど遅くはないですね。
from itertools import permutations
results = []
n1 = n2 = n3 = 0
def check(s,e,n,d,m,o,r,y):
global n1, n2, n3
n1 = ((s*10+e)*10+n)*10+d
n2 = ((m*10+o)*10+r)*10+e
n3 = (((m*10+o)*10+n)*10+e)*10+y
return s > 0 and m > 0 and n1+n2==n3
for digits in permutations(range(10), check.__code__.co_argcount):
if check(*digits): results.append([['send',n1],['more',n2],['money',n3]])
for x in results: print( x )
JSは巨大数、10進数、分数、複素数型の導入が前向きに検討されてる
数値計算って暗黙的な型変換のバグを発見し辛い よって、関数型言語が流行れば良い
fromIntegral fromIntegral fromIntegral
固定小数点演算と、10進演算は違うものだよ。
>>196 >>195 で書いたのは、現在のCOBOLではなくて全盛期(1970年代-)の話
移植性/堅牢性/ライブラリ品質/大規模開発、すべて備えていたのが当時のCOBOLだった
その姿が今のJavaとだぶって見える.... という既視感
なんか、豊富な数値型とか、Common Lispが20年前に通った道だけど、 より現代風に洗練された形で色々な言語でサポートされるんならそれはそれで 大変良いことだ。
>>202 そんなにすぐすぐは無理
ES6のValueObjectsが実質の下準備
あと演算子オーバーロードとも分けて考えられないから
まだまだやることがある
多分ES7の仕事の半分くらいはこれ
ES7の動向については今週、今まさに開かれてるtc39ミーティングで、 初めて大々的に話し合われるから今週はJSerなら寝られない週だね。 これでES7がいつどのくらいの規模で勧告されそうか予想ができる。
せやな
ここで使われてるPythonやRubyの実行系は何が得意なの?
214 :
デフォルトの名無しさん :2013/09/19(木) 16:09:15.66
オブジェクト指向
この処理系は関数呼び出しが得意とか、ループが得意みたいなの無いの? 1強なの?
v8は典型的なJSerが書くクソコードが速く走るように最適化されてる。 だからナイーブな総当たりとか、そういう頭悪いコードについては 他の言語処理系より頑張って最適化してくれる。
V8が速いのはJITコンパイルしてるからだろ
JITコンパイルするPythonの処理系PyPyで
>>201 を実行してみたら0.8秒になった
同じ環境で
>>212 は0.5秒
典型的なクソコードが得意、って無茶苦茶矛盾してんね もう得意とか苦手とかの概念がこの世から無くなりそうなレベル
総当たりじゃないコードではどうなるの?
もう基本的な部分はどの言語も、これ以上あまり最適化のしようがないだろうね
それでもV8は今年に入ってから大きな実アプリ系ベンチで50%もスコア伸ばしてる
https://www.dartlang.org/performance/ V8とは言え、最初は特定の苦手な書き方が結構合ったり、
GCがいまいちだったのを改善して安定性が格段に増した
ここの所コードの整理をしてきたのも大きい
昔はこれはFirefox(SM)の方が早いとかハッキリしてたけど
最近はそこまでは無くなった
>>216 嘘を付かない
JITはプロファイリングと仮定の積み重ねだから、
その過程を壊すような爛漫なコードは最適化できない。
まず単純ループの最適化なんかはどの言語でも最も力を入れてやるべきで
コードの上手い下手とかの話ではない
特に構造的なレベルの最適化では、V8も〜MonkyもClassを仮定する
https://developers.google.com/v8/design だから、構造がなってないようなのは遅い
V8が、典型的なJSのコードを元にいろいろ最適化してるのは確かだが、
クソコードの最適化なんて当然出来るわけがない。
一度整数で初期化された変数は、ずっと整数だけが入ることが殆どとか
むしろ、典型的なコードの「お行儀の良さ」に期待した最適化をしてる
一例を挙げると、JSでは配列はただのオブジェクトで、操作には色んな検証が本来必要だが、
普通は配列は配列としてしか使われないので、検証をできる限りスキップできると仮定して、
仮定が崩れた時はフォールバックすることで対処してる
配列への処理も、「穴空き/無し」、「全部整数、全部浮動少数、オブジェクト入り」
とか沢山の条件を元にそれぞれ最適化してる
これがV8や著名なJSエンジンが早い理由
もういいだろって感じですが最後に
def solver(q)
; vars = q.scan(/[a-z]/i).uniq
; chk1 = q.gsub(/([a-z]+)/i){ '(' + $1.chars.reverse.map.with_index{|e,i| "_#{e}*#{10**i}"}.reverse.join('+') + ')'}.sub(/=/,'==')
; chk1 = "begin;#{chk1.gsub(/\(/,'Rational(')};rescue ZeroDivisionError;false;end" if q.match(/\//)
; chk2 = q.scan(/[a-z]+/i).map{|e| "!_#{e[0,1]}.zero?" }.join(' and ')
; chk3 = "next unless " + q.split(/=/).map{|e| e.gsub(/[a-z]+/i){|s| '_'+s[-1,1]}.sub(/(.+)/){'('+$1+')%10'}}.join(' == ') unless q.match(/\//)
; eval <<-EOS
; ; (0..9).to_a.permutation(vars.size) do |#{vars.map{|e| '_'+e}.join(',')}|
; ; ; #{chk3}
; ; ; yield "#{q.gsub(/([a-z])/i){"\#{_#{$1}}"}}" if (#{chk1}) and (#{chk2})
; ; end
EOS
end
solver("send + more = money"){|a| puts a}
57秒 組み合わせループごとに計算式を組み立ててeval する素朴な実装
2.3秒 evalはループ前のチェック関数を作るとこだけに
2.0秒 ループ全体をevalして 関数コールを除去
1.5秒 配列の添え字アクセスをやめて、ローカル変数(仮引数)を直接生成 結局
>>24 みたいなのを生成することに
1.1秒 まず下一桁だけ計算してみる(割り算以外)
いいと思います
>>160 それ結構、言語ごとのユーザ気質が分かって面白いよな
Perlが高いのは今でもPerlを使うユーザはキャリアが長くて全体的なレベルが高いんだろうな
Rubyが回答時間長いのもいかにも典型的なユーザ像に思える、解けるまで粘着ぎみに拘ってる
確かにwww このスレでも取り敢えず真っ先にコード書いてくるのPythonerだしなww
JSerは自分のコードがクソってことも認識出来てないんだな 恥ずかしくて表に出せないようなクソコードばかり此処に貼られてるしな
>>226 矩形に収まるようにびっしり書かれたコード塊の方が美しいよね
マシンコードになれば皆同じ それならコンパクトな方がいい
>>226 あんまり煽るとJSer引きこもっちゃうぞ
スレタイに並んでる言語でコンスタントにコード例書かれるのって
RubyとPythonだけで、HaskellやSmalltalkは出るのに
PerlやPHPは出て来もしないんだからな
JSは俺がいくらでも頑張って書くけど来週から忙しくなるんだわ
PHP次回から外してくれませんかね。 まあ、馬鹿にする対象としてあなた方に必要なのはわかりますけどね。
このスレの「技術力」って「女子力」ぐらい使い所が不明なんだけど
女子力に失礼です
railsブームって、出エジプト記やスパルタクスの反乱みたいな社会的弱者層の反逆的だよね
Smalltalkerは割とコードが綺麗なので 書いてる人一人だとおも
今日日、smalltalkって仕事あるのかな
>>236 あったとしても、ここに例示された会社以外にはないだろう。
じゃあせっかく夏なんだし Seaside の話でもしようぜ
死再度
きれいなコードを書ける人間は日本で仕事するのは向いてないと思う ここで晒してるコードが瞬間的に出てくるならいいけど 熟考した上で実行速度とは無縁で行数ばかりにこだわったコードを書いている場合、 ほとんどの現場で切られる。 読みやすい
↑ことと、DRYの原則すら踏まえないコードは、保守する側にとってみれば「死ね」って思うけど 保守しやすいコードは、それはそれで仕事なくなるしな
だから、javaかPHPで書け
GPLと契約したら読めないコードが読めるようになるかな
>>240 行数にこだわるとか言ってる時点で
お前わかってないじゃん。
目指すべきなのは、読みやすいコード
メンテナンスしやすいコード。バグが起きにくいコード
それは実行速度を下げ出ても達成すべきものだ。
それを目指したからってコードが短くなるとは限らない。
わかり易い例で言うと、一つの複雑な関数を
分かりやすく二つ関数に分けるとたいてい行数は増える。
理由は関数定義とそれを呼び出すためのコードが増える。
そして関数呼び出しの分、すごく僅かだが実行速度も下がる。
実行速度も行数も重要度は高くない。
重要なのはメンテナンスしやすさだ。
>>244 短さだけにこだわってるこのスレの連中のことを指摘してるのに、
自覚も無かったようだね。
>>244 長文書く前に、それはここにRubyコード晒してるやつに言えよw
みんな1行になんでもつめようとしているだろ
1行に詰め込んでる奴に、 このコードの説明をしてって頼んで、 そいつがニコニコして説明しだしたらアウト。 そのコードは説明が必要なコードということ。 読みやすいコードは、説明なぞ不要。
PHPってrailsやdjango、expressのような定番のframeworkあるの? 乱立する中で、symfonyかcakePHPぐらいしか聞いたことないけど
>>249 自分で定番言ってるじゃん。オマエ馬鹿なの?
zend frameworkやcode ignitor,laravel,fuel PHP,yiiと魔法少女が乱立する中で、 symfonyとcakePHPしかあげなかったんだよ? それとも、symfonyやcakePHPがいまだに定番なの?
>>236 このまえうちの会社で ada の案件受注してたから、ひょっとしたらあるかも。
冗長で抽象化能力が低い言語ユーザから見ると、 このスレのコードは短さにこだわってるように見えるのかー 説明が必要なのも、単にその言語の経験が足りないだけでしょ
「読みやすさ」のような糞抽象論には多様な解釈がある だから、短さを目指すのも、オープンソースを目指すのも全部正しいとも言えるし 逆に、目標を一つだけに絞った時点で全部間違っているとも言える
>>253 短さに拘ってはいるだろ
でもなきゃ変数名ぐらいは普通にする
ローカル変数にも糞長い名前つけるJava脳のコードって かえって読みにくい
普通にするを長くすると解釈してる時点で 完全に昔のPerlerと被ってる発想だぞそれ
>>253 どう言い繕ったところで、過去スレは書き換わりませんよ
プログラムを知らないどころか字が読めない人が見ても理解できる
>>259 に比べたら
読みやすいだの何だのはいかにちっぽけな話なのか痛感するな。
>>252 え、何?戦闘機用の制御プログラムでも作ってるの
Java脳 variableName C#脳 name Ruby脳 var_name C++脳 _name Objective-C脳 mName Python脳 __var_name
JSerの自分としては パスカルケースはクラス名、キャメルケースは関数名だけで 変数はスネークケースにした方が統合性とれていいと思うんだが どうしても変数にもキャメルケース使ってしまう、、、
264 :
デフォルトの名無しさん :2013/09/20(金) 14:38:47.50
javascriptは勝手に変数をグローバルにするのを辞めたら良くなる。 vaの役目を反転して付けたらときだけグローバルに昇格するとか、グローバルを使う時だけvalを付けるとかがいい。
>>264 それはもう解決している
strict modeなら宣言なしでグローバルに代入されることはない
>>261 自分の案件じゃないので中身はよくわからない。
もっともわかってても言えないと思うが...
どこかの研究施設からの受注だったと思う。
たまたま、発注元の研究者が ada にかぶれてるところだったんだろうな。
それより、うちの会社で ada 書ける奴がいることに驚いたわ (w
これからってどんどん言語が統合されていくのかね それともどんな言語でも使えます的なことになっていくのかね
どんな言語も英語みたいな共通言語にコンバートできる環境が整ったら皆幸せになるんじゃない? デバッグと保守の問題があるが乗り越えられない壁じゃないと思う。 一例としてWebではGoogleはバイトコードに、MozillaはJSにあらゆる言語をコンバートする試みを進めてるね。
270 :
デフォルトの名無しさん :2013/09/20(金) 16:16:11.55
あるスクリプト言語で全言語を実装したらいい。
単に実装するだけじゃいろいろ問題あるんだよなあ 言語を統一しなくても各自好きな言語で書いたほうがコスパがいいとならなくちゃいけないから
お前ら英語を買いかぶりすぎ 話し言葉は方言が多いしコスパが悪い コスパが良いのは口を動かさない読み書き専用の言語
死ねゴミ共がw
ニーイト、ニイトニーイト
>>267 PL/1 に色々追加したようなもんだからなぁ。
マルチタスクとか、低水準 I/O とか、機能てんこ盛りだったはず。
どこまで実装されてるかは知らんけど、GCC にもあったはずなので、ちょっと見てみるかな。
JavaScriptはWebのアセンブラとかC言語とか言うと聞こえはいいが、 それはつまり誰も素で書きたがらないということだからな。 互換性がマシになったと思ったら今度は土管化問題だな。
ガチニートかよwww
ニートでも大統領でもこのスレでは皆平等関係ない
ガンジーも大統領も、プログラミングで繋がっているなんて素敵ですね
ニートでも死ねとかゴミとかしか言えないニートは要りません
>>277 LinuxはC言語で作られているんだが、
誰も書きたがらない?
意味がわからない。
どうせお前が書きたがらない(書けないから)
だけだろう?
と言うかJSを汗に例えるのは無理があるよ 手間も抽象度も性質も違うし
誰も書きたがらないからこそ誰かが書いたものを使いまわすんだよ
それを
>>277 は土管化と言ってるんでしょ
OSやミドルウェアを作るのには当然必要な言語だけど
最上位のアプリをC言語で書くのは
最上位のアプリをC言語で書くのがダメな理由って?
アセンブラ、C言語で最上位のアプリを書いたらダメな理由は ・クラスがない ・ガベコレがない ・文字列がない ・バッファーオーバーフローが起きる ・正規表現が使えない ・例外機能がない まあ色々あるでしょ?
>>287 うん、でもその理由はJavaScriptに当てはまらないよね。
ぜんぜん違うじゃん。
アホに何言っても無駄
290 :
デフォルトの名無しさん :2013/09/21(土) 02:18:29.54
誰もJavaScriptで書いちゃダメなんて言ってないだろ altJSが蔓延ってることは事実なんだから認めなさい
altJSが流行ってることとアセンブラ、C言語に なんの関係もないだろって話だろ。 altJSが流行ってる理由のは簡単。 まず、どの言語もバージョンアップしていくのが普通。 JavaScriptも同じだが、ブラウザという実行環境は ユーザーがバージョンアップするものだから、 開発者の都合ではバージョンアップが出来ない。 また一部の例外をのぞいてブラウザではJavaScript以外は動かない。 このJavaScript特有の事情のためにaltJSができただけ。 JavaScriptに問題があったというよりも、 ・言語機能を追加したい。 ・ブラウザで動く別の言語を作りたい これが理由なんだから、アセンブラ、C言語とは 全く事情が違うのは明白。
すでに普及している言語があるのに、 なぜ新しい言語を作るのかといえば 既存の言語がクソだからだろ。 そうやってプログラム言語というのは 新しい言語とともに進化してきた
新しく出来た言語ほど優れているもんな!
単にJSが機能不足だからだろ クラスがなかったりモジュールがなかったり
ObjectやArrayはクラスでありモジュールですが?
JavaScriptは、HTMLをよく文字列で出力することがあるのに、いまだにString.Formatすらないからなあ。 よその言語はstring.Format("{0}は9cm", chinko)とか"#{chinko}は9cm"とか書けるのに。 でもそれ以外はそこまで悪くない。 つうかJavaScriptの代替品が流行っているとか思ってる奴は妄想だろ。 TypeScriptやCoffeeScriptが本格的に採用されている現場なんて実際にねーだろ。 Dartはもう死んでいるし。
それ、そんなに必要ですか?
これでいいじゃないですか?
http://underscorejs.org/#template var compiled = _.template("hello: <%= name %>");
compiled({name: 'moe'});
=> "hello: moe"
_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'});
=> "Using 'with': no"
APIの多い少ないと基本構文の話は次元が違うと思うが
今は、FormatというAPIを実装してくれという話で 基本構文を拡張しろという話はしていません。
マジ基地乙
いや、TypeScriptやCoffeeは結構使われてるだろう
302 :
デフォルトの名無しさん :2013/09/21(土) 06:53:23.96
死ねゴミ共がw
TypeScriptはJSの良いところ悪いところを理解して合理性のあるものだけを提供してるけど CoffeeScriptは余計に悪くなってるとしか思えない
でも、敵に悪いものを提供する戦術は合理的だよね
DartとかCoffeeScriptとかnode.jsに行く奴って ちょっと触って良いと思ったら、これからはこの言語の時代だみたいに勘違いしてるけど 長く使わなきゃいけないコードなら普通は直接jsで書いたほうが良いのは少し考えれば分かる事 言語の乱立って善意に見せかけた悪意だろ プログラマが使う言語が分散すればするほど効率悪くなる
>>305 効率だけを考えていたらイノベーションは生まれません
なぜRubyを作ったの?Perlを良くすることに注力すればいいじゃん、に対するMatzの回答
その結果、効率だけを考えたRoRが大流行しましたとさ
ワロタ
>>305 悪意ではなく合理主義だよ
合理的に効率よくライバルを邪魔するんよ
310 :
デフォルトの名無しさん :2013/09/21(土) 10:18:02.47
死ねゴミ共がw
311 :
デフォルトの名無しさん :2013/09/21(土) 11:12:33.39
node.jsは基本のjavascriptを含むだろ。多少ずれはあるかもしれんが。
312 :
デフォルトの名無しさん :2013/09/21(土) 12:24:59.48
>>306 適材適所でライブラリ使わないとイノベーションもへったくれもなくなるw
イノベーションを生み出す作業と 将来性を考える作業を別に考えろよ。 お前は、常にイノベーションのために 将来性をすてて仕事するのか? 仕事とは別の場所で、イノベーションを生み出す作業はするべきだ。
CoffeeScriptのアロー関数はPythonかRubyを参考にしたものだったと思うけど ES6のアロー関数は直接の第一引用先はCoffeeScriptなんだよ 他にもCoffeeScriptだとこんな機能があって、こんな効果が出てこんな問題があるということが 凄く参考にされてる。多分直接PythonやRubyから参考するより多かったはず 同じくライブラリも凄く参考にされてる ライブラリで使われてきた便利な機能や仕組みを標準に持ってこようとする動きも活発 現に、ESの約20人の主力メンバにjQueryの人が2人も入ってる 単純に数で比較するとMicrosoftやAppleと同じ影響力 だからaltJSやライブラリはイノベーションという括りにおいて分かつことは出来ないんだよね 今は著名なものの良い所をどんどん吸収していこうとしている時期だから特にね
なんで直接の引用先がCoffeeScriptなんだよ。 そもそも->ではなくて=>だし、CSって書いたのをC#ではなくてCoffeeScriptだと思ったの?
CoffeeScriptにも=>はあるが?
どう考えてもCoffeeScriptのthisがbindされる特徴を持つfatAFを参考にしてるでしょ。
通りすがりだけど、ES6の=>にthisバインドなんてあったんだな。 いいなこれ。書くのがだいぶ楽になる。
ウンコJSerのCoffeeScript嫌いは異常だな 企業がバックに居ないと安心出来ないのは 底辺SEにありがちだけど、それかな?
正確にはbindというかレキシカル? 定義された空間のthisをそのまま受け継ぐのね .applyや.bindなんかでの変更もできない
CSもTSもES.nextも目指す所はBetterJSなんだから むしろ仲間だと思うってか、実際相互参考にあってるしね この前のMozillaの話もあったけど、 やっぱり実際に実装してあってフィールドバックがないと進みが倍遅くなる いい関係だと思うよホント ES4の時に比べたら全てが協力しあってる最高の時期
目指せ土管
つまりCoffeeScriptは流行る前に 死ぬ運命に有るということでOK?
jsを土管として使う数多ある言語のひとつになる
土管て例えがうけるw
いや、もうそろそろ役目を全うすると言った方がいいんじゃない? 演算子オーバーロードとかこれ以上の機能追加も要望があるけど、やっぱり難しいみたいだし これからは型があるTypeScriptがES7までBetterJS代表かな
ドーナツならまだ可愛らしいのに 土管は土方みたいな「土」っていうのはやっぱり印象悪いね
なんでこいつこんなに必死なの? 親を土管に殺されたりでもしたの?
別にこのまま10年も20年も使われるわけじゃないからいいじゃない Living Standerdでしょ?
JSを直接読み書きする時代が 終焉を迎えつつあるだけじゃん そんなにカリカリすんなよ
そう? 増えていってるでしょ間違いなく
残念だけど、Es7でjavascriptが勝つね
ES7の頃には、大抵の言語はJSにトランスレート可能になるだろうね
結局エンジン次第でしょ 演算子オーバーロードの最適化とか並の人じゃ理解すらできなくね
ちょっと前までES6で勝つるとか言ってなかったっけ?w
そんなの興味ある奴しか調べようとしないだろ
別に勝つとは誰も言って無くね 不便だった点がかなり解消されるから勝ち負けとかもうどうでもいいくらいに JSerにとってはただただ、心から嬉しい限りだよ その意味ではES6からがスタートで、ES7に期待するのは全うかな
JSer(笑)(笑)(笑)(笑)(笑) 何があってもそんなの呼ばれたくない名乗りたくない
typescript->javaライクなJS coffee->ruby・pythonライクなJS よってTypeも仕事が増えるであろう。たが、 ruby・pyプログラマ>>>Javaプログラマ なため イノベーションのあるアプリはcoffeeで書かれる可能性が高いであろう
もう萎んでいくだけのCS今から使うことはないんじゃない? 勿論個人ではまだまだ使えるけれど、ES.nextの先行実装を謳ってるTSの方がこれからは良くない? そうじゃないんならいっそES6simとかの方がいいね
JSにコンパイルする時代が来るって、デバッグすらろくにできなくなるじゃん。
source mapがあるからデバッグはほとんど問題ない
>>339 > ruby・pyプログラマ>>>Javaプログラマ
なんの比較だよw
ECMAScript 7から ECMAScript 5 or 3 に変換することで、 現在のブラウザでも最新のJavaScriptが使用可能です。 そういう時代がもうすぐそこまできている。
CSみたいにほぼ糖衣構文とか、TSみたいに実コードになる時には削られる、コンパイル時用の機能とか そういううのならソースマップで問題ないかもね
バグッたときにアセンブリコードが読めないと デバッグすらろくに出来ない人達が居るスレと聞いて
>>345 すべてのものがsourcd mapで問題ないぞw
こういうコンパイル技術に関する常識は
やっぱりスクリプト言語厨にはないのかな?
コンパイラの世界にはな、デバッグシンボルというものがあってな。
デバッグシンボルをつけることで、コンパイルしたバイナリには
含まれてるはずがない変数名や関数名などソースコードをマッピングしてるんだよ。
もう何十年も前に解決した問題だ。
ステップ実行の時に問題が出るんだが やっぱり知ったかぶりだったか
>>349 この話かね? 何十年遅れなんだかw
方法 : 最適化されたコードをデバッグする
http://msdn.microsoft.com/ja-jp/library/vstudio/606cbtzs.aspx > コンパイラは、ソース コードを最適化するときに命令を再配置したり再構成したりします。
> これにより、コンパイル後のコードの実行効率が向上します。
> しかし、この命令の整理が原因となり、一連の命令に対応するソース コードをデバッガーが識別できなくなる場合があります。
>
> 最適化によって次のような影響が生じる場合があります。
>
> ・ローカル変数がオプティマイザーによって削除されたり、デバッガーの追跡できない場所に移動されたりする可能性があります。
> ・オプティマイザーによってコード ブロックがマージされた場合、関数内の位置が変更されます。
> ・オプティマイザーによって 2 つの関数がマージされた場合、呼び出し履歴上のフレームに対し、間違った関数名が表示される場合があります。
>
> ほとんどの場合、呼び出し履歴上のフレームには、正しい情報が表示されます。ただし、これはすべてのフレームにシンボルが
> 割り当てられていることが前提です。 スタックの破損が生じた場合、アセンブリ言語で記述された関数が存在する場合、
> 呼び出し履歴上のシンボルに一致しないオペレーティング システムのフレームが存在する場合など、
> 呼び出し履歴上のフレームに誤った情報が表示されることがあります。
>
> グローバル変数および静的変数は常に正しく表示されます。 構造体レイアウトについても同様です。
> 構造体へのポインターが存在し、そのポインターの値が正しければ、構造体のすべてのメンバー変数は、正しい値で表示されます。
>
> これらの制限事項のため、できるだけ最適化する前のプログラムをデバッグするようにしてください。
> 既定では、最適化は Visual C++ プログラムのデバッグ構成ではオフ、リリース構成で有効になっています。
>
> ただし、最適化後のプログラムでしかバグが発生しない場合もあります。 このような場合は、
> 最適化されたコードをデバッグする必要があります。
本当に物を知ってる人はそれをひけらかしたり煽ったりしない それが出来ないのは無知で余裕が無いから それはこれまでのスレで散々証明されてきたこと
>>351 の意訳
わかってる人は黙ってろ。
俺の言うことに反論するな。
こいつ何ズレたこと語ってんだ?? スクリプトをバイトコードやアセンブラまで落として対象のコードに綺麗に復元するならまだしも 一部はASTより上の次元で出来るだけ楽なコンバートしてるんだから完全にマッピングできるわけ無いだろ
>>350 次から名前に【創作】って付けてね。
妄想話で暴れられるの目障りだから。
もしくは【理想論】でも【狂言】でもいい。
NG出来るように目印付けてね。
LLVMでコンパイルしたCのコードがJSで動く時代ですけどね
ぶっちゃけステップ実行とか1年に一回やるかどうかだわ 物凄い初心者の頃はVSのステップ実行のお世話になったけど
>>353 > 一部はASTより上の次元で出来るだけ楽なコンバートしてるんだから完全にマッピングできるわけ無いだろ
楽なコンバートしてる だから 完全にマッピングできるわけ無い
ならば、
楽なコンバートをしない それならば 完全にマッピングできる
で、それはあんたが作るの? こっちは現実の話をしているわけで 君の長い夢物語に付き合ってる暇はないんだけど
へ? 最初から未来の話をしていたのではないのか? 344 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/21(土) 20:09:53.86 ECMAScript 7から ECMAScript 5 or 3 に変換することで、 現在のブラウザでも最新のJavaScriptが使用可能です。 そういう時代がもうすぐそこまできている。 345 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/21(土) 20:14:02.29 CSみたいにほぼ糖衣構文とか、TSみたいに実コードになる時には削られる、コンパイル時用の機能とか そういううのならソースマップで問題ないかもね
やっぱり未来だよなぁ。 341 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/21(土) 19:15:08.08 JSにコンパイルする時代が来るって、デバッグすらろくにできなくなるじゃん。
くだらない話が始まった原因の
>>357 は
反省してるならさっさとお題でも出して
デバッグ = ステップ実行って発想に草不可避
なんか変な奴だと思ってたが、やはり日本語が弱い方だったか。
で、デバッグしにくいの? それはなぜ? 言ってみなよ。
365 :
デフォルトの名無しさん :2013/09/21(土) 21:12:59.86
持論を語るのはいいが空気読もうぜ
両方の言語を知ってれば何の問題もない
コンパイル前の言語で デバッグできるようにするのが ソースマップでしょう?
静的型言語ならコンパイル時の型検査を利用するとか そうじゃなくてもQuickCheck等でテストを充実させるとか、 既にそういう時代になってるのに このスレってずいぶん遅れてるんですね
>>364 来た、とうとう見えないものが見えて、独り言を始める狂人の特徴。
全ての元凶
>>348 すべてのものがsourcd mapで問題ないぞw
ソースマップ+デバッグビルドで全て解決。
Source mapsでcoffeescriptのコードのままデバッグが出来ないってどのレスに書いてあんのよ?
うん、デバッグビルドをすれば デバッグに問題になるような最適化を しないし、ソースマップも吐き出す。 デバッグビルドの存在も知らないんだろうな。 スクリプト言語の連中は。
何がJSerの怒りの琴線に触れたのだろう? JS土管説に対抗する最後の砦がステップ実行の不在だったからかな?
>>373 coffeescriptのコードのままデバッグができるなら
ステップ実行も出来るんじゃね?
ステップ実行だけjs見ながらやればいい 別にそれで何の問題もない
>>375 激おこプンプン丸なのはお前だけだと思うよw
>>377 ソースマップで、CoffeeScriptのまま
ステップ実行できる時代に
jsでステップ実行とかなんの意味があるの?
いつも思うんだけど別に意見の相異は争うほど無くね?
絡んだり意地はってる間にいつも拗れる
>>342 「(デバッグはほとんど)問題ない」
>>345 「(具体的にこれは)問題ない」
>>348 「(具体的にこれは)問題ない(かもしれないが基本的には問題がある)」
と受け取って
「全て問題ない」
と大口で煽る
〜〜そして荒れる〜〜
荒れる必要なくね?
全て問題無いと言われて激おこになっちゃんたんだろw 問題が有るというのなら、 ある場所を言えばいいだけの話なのに。
幾ら正しいことを言っていようが0か1かでしか語らないやつと打ち解けられるわけがない。
うちとけるひつようなんてないですよーw
マジ基地乙
JSは土管化するってことでFA
>>383 さっさと名前に目印つけるか、荒れるから煽り発言控えてね
マジ基地にレスするやつもマジ基地です。
>>386 残念ながらお前の願いは叶うことはなかったwww
せやな、なんか語りだしてやばそうだなと感じたら乗らずにスルーでいいね 何も生産性がないもの
会話成立させる気がないって、単なる荒らしと認めてるって事じゃないか。 ってそういう事すら言っても無駄なのか、こういう奴の場合・・。
多分巨人様だな……
これがJS土管ってやつだな。
JS土管はキチガイってことがわかりましたね。
JSの人も、うすうすJSがクソ言語ってことは察してるから ブラウザで動く唯一の言語っていうアドバンテージが無くなったら ヤバいって分かってる感じだな
JS土方 vs JS土管
>>395 あれ? もうそんなアドバンテージは
なくなってるんじゃなかったの?
おかしいなぁ。
まだJSの天下だよw
なんか一人、全部JSのせいにしようとしている奴がいるな。 そいつが真犯人だろうな。
すべてはECMAのシナリオ通りに。
>>395 他の言語より色んな物抱えてて要求も多いから悪く見えるだけで、
プロトタイプベースとか設計はいいし、ポテンシャルもあると思う。
問題と言っても、当初想定されてなかった大規模開発の部分だから
それは今治していければ、十分だと思うよ。
個人的にはどんどん進化していく未来感が好き。
ドカタの世界は進歩が遅いからな...
ドカタって言ってる奴の 正体も同じ真犯人か。 わかりやすいなw
>>400 他の言語がとっくの昔に実装した機能を
やっと取り込もうかって状況に未来を感じちゃいますか……
今のJSに「どんどん進化していく未来感」が感じられるような環境に置かれているなら その未来感のある機能が使えるのは10年後とかだろうな
>>403 ブラウザで動くというのを
他の言語はやっと手に入れたんですよねw
どうして他の言語は負けたのでしょうか?
たったこれだけの違いなはずなのに
相当のディスアドバンテージでしたねw
まあ、ブラウザっていうのが 未来のある技術だったってわけだよ。 そこにかなり初期から搭載されている言語 それがJavaScriptなわけだ。
コミュニティが活発ならそれでいい 新機能の提案進んでないかな? あの新機能V8に実装されたかな? って毎日チェックするのが一番の趣味になってる DOMのAPIも入れると毎日新しさに事欠かない
言語仕様よりnpmどうにかしてほしい。 パッケージ多すぎて選定に時間かかる。
でもなぁ。本当はブラウザは いろんな言語を動かす余地が残されていたんだよな。 実際にVBScriptだって動いていた。 <script type="text/vbscript"></script> ここに他の言語を指定することで 他の言語に対応できたんだよ。 それを生かせなかったんだよね。 ブラウザで動くことは意味が無いと思っていたんだろうね。
>>408 npmだけじゃない。
cpamもgemsも、だれでも参加できる
仕組みである以上、パッケージが多くなるのは
仕方がない話。
モジュール機能がないから大規模開発に向かないとされていたけど、 requirejsの登場で、本当はそういう機能があったことが判明した jsはそういう凄い言語だよ 誤解されてただけだった
JSに機能が入ることは、他と比べたら遅いのかもしれないが、どうでも良くない? Pythonではこういう機能がある、Rubyではこうだって話合ってるの見るの凄く楽しいよ? 各言語の良い所を取り入れられて凄く満足してる。 勿論感謝もしてるんだよ。結構仲間だと思ってる。
>>412 クロージャが入ったのは早いと思う
javaでは今だに入ってないし
>>409 ただでさえ当時document.layerとdocument.allで揉めてた時代で、
互換性もない言語なんて使ってられるかって感じだった。
パッケージとかネームスペースみたいな静的解決するものは どうしても動的解決の性質を持ったWebと合わないということで ES4が却下されてから今まで議論を避けてる でも簡単なモジュールの仕組みならES6で入るよ 妥協点
>>414 互換性のない言語って?
vbscriptのこと?
>>413 クロージャと同機能なのは入ってるよ。
入ってないのはlambda。java8でも高階関数無理。
スマホ時代になってJS終わったじゃん 誰もスマホでブラウザなんて使ってねーよ
正直ブラウザの組み込み言語がJSになったのはただの偶然。 ネスケが止せばいいのにわざわざ独自言語開発して搭載 → 対抗してIEも搭載 → 今に至る。 こんだけの話。 もしネスケがJSなんてゴミを作らずにPythonなり搭載していたら・・・ MSが.NETを始めるときにVB6/VBA/VBScriptを放置するような真似をしなかったら・・・ つーか一番の戦犯はMSだろうな。 MSってフロントサイドもC#やASP.NETで開発することを想定していたからVBSは捨てたんだっけ?
>>418 入ってないよ
無名インターフェースのことならfinalが必要だし
そもそも同等と言ってもinterface定義が必要で記述が冗長すぎるし
>>416 そう。
なんか拡張でNNでも可能になった気もしたが、それぐらいの異物だった。
>>419 むしろ逆じゃね
スマホが普及してHTML5が普及
HTML5の一部分であるJSもそれに便乗
なら 初期のPythonなら良かったの? 初期のRubyなら良かったの? まさかVBがいいなんて言わないよね???
>>413 逆。Javaに入るのはクロージャじゃなくてラムダ(自称)。
当初はクロージャにする予定だったんだけどね。
ローカル変数が取り込めるようになることはもう永遠にないと思われる。
>>420 python3ならともかく、2じゃjavascriptのようなエレガントな
イベント処理は無理だろう
>>421 final指定だけど、ラップすれば変更できるから、
実際はmutableなオブジェクトで包む事が多い。
>>425 何が逆なんだ?
javaにはまだ入ってないんだろ
だったらあってるじゃないか
この機能思いたか入れましたっていうのじゃ不安でしょうがないよな 既に色んな言語で使われてて実績のある機能は本当に良い
>>427 そこまでくると、「ただ同機能が実現できるだけ」だな
記述が違いすぎ
>>414 その状況が変わったのが、2005年のprototype.js
2006年のjQueryだったんだよな。
その頃はまだIE6の時代だった。
Firefoxは1.5、Safariは2、Chromeがでたのはその3年後の2008年
そんなIE6全盛期の時代に大きな変化が起きた。
Javaのラムダ()は結局検査例外どうすんだろうな このまま無視し続けて無かったことにするのか
Javaはクロージャー以前に、そもそも関数ポインタが存在しないから、何かの処理を投げるって行為がそもそもできない。 やるとしたら無名クラスを宣言するしかないんだけど、 その無名クラスに引数を渡したり、その無名クラスから戻り値を受け取る方法がないっていう C#だとキャプチャーとかあるのに、Javaだと何故か引数を渡すにはfinalをつけないといけないんだけど、 そんなポンコツをクロージャーと呼んでいる。
>>433 クロージャとは呼んでないよ
初期はクロージャと呼んでたけどキャプチャを諦めてからラムダと呼んでいる
>>430 ようわからんな・・。
そもそもクロージャって変更しなくても
キャプチャだけで十分なはずなんだが。
pythonだと、空白圧縮できないな
JAVAにクロージャが入っても現場では使えないだろうな 処理系が普及する以外にもハードルはあるんだなぁ……
ん?レス番が違うぞw しかし、434もなんか変だな 無名クラスのことをラムダって呼んでるのか?
>>437 要件としては十分なはずだけどって意味だよ。
>>441 お前が十分だと思ってるだけじゃね?
そもそもそれを利用してクラスがないのに、
クラスと同等なことが出来たわけで
C#のパーサって糞だよね。 ラムダに引数がないときも()は省略できない。 ()=> Console.write("おまんこ!")
>>440 Java8に入るラムダのことだよ
もともとJavaに関数式みたいなの入れようぜと話が出てから議論の初期はクロージャと呼んでいて、
当然外のローカル変数を変更できる予定だった
>>443 変更は要件じゃないだろと言ってるだけだよ。
Javaがどう実装してるかは大して興味はない。
>>444 C#は絶対にガラガラポンができない言語だから、
極力、将来的な拡張に制約が出ないようにしなきゃいけない
実際ScalaとかCoffeeとか破綻してるしな
なんて旬な話題。 引数なし、()要らずラムダは今当にES6に入るかどうかアメリカで話し合われてる。 でも一部の(多分セミコロン省略?)スタイルで現に問題があるんだってさ。
JS使ってるとクロージャ=変更可能なプライベート変数ってイメージ
WebはEmacs化してる 素のJSを使うのはEmacsを初期設定のまま使うのと同じ 使う意味がない
でもさ、先行していたはずなのに 追い詰められる気持ちってどうなんだろう?
急に何の話?
いえいえ、あと数年もして言語の機能に差が見られなくなった時 一体何を基準に言語を選ぶんでしょうねと。
RubyやScalaやCoffeeって今文法的に可能だからってなんでもかんでも省略できるようにして その結果変な制約だらけになって「驚き最小」とは正反対の言語になってるよね
>>448 セミコロン省略ってどこ発祥なのかな?
Googleは禁止してるし、Mozillaは暗黙的に使う前提のように見えるし。
まあ、言語仕様にも何度か「リファクタリング」が必要になる方が「普通」だよな JSは良く耐えてきたよ、ES4も先走らなくてよかったかもね
>>453 業務要件、工員のコスト、プラットフォーム、開発環境、etc
言語仕様なんてはっきり言ってどうでもいい
>>458 あ、これに影響があるって話だったから
問題はセミコロンじゃなくてコンマファーストとかかも知れない。
>>458 ありがとう。npmがそうだったのか。
結構な勢力だな。
ES5以降は慎重に議論を重ねた上で拡張して行ったのに 巨大なクソの山になったC++みたいになりそう
>>453 IE6以前に、JavaScriptの問題点(ライブラリの不足)を指摘して、
(当時)DHTMLの可能性に目をつけAltJSが出てくることを予見し、
今のJavaScriptを取り巻く環境を言い当てた俺が答えてやるよ。
将来は言語ではなく処理系で言語を選ぶようになってくる。
処理系が持つべき機能が拡張され標準化されるようになる。
現状のようにコンパイルするたびにコンパイラを実行するのではなく
コンパイラはサービスとして常駐起動するようになる。
プロジェクトディレクトリを指定しコンパイラをサービスとして起動し
エディタはコンパイラサーバーと通信しながら
(ソースファイル単体ではなく)プロジェクト全体から情報をあつめ
高速で効率的な開発サポートができるようになる。
そのために必要な機能が標準化される。
その時代の開発ではコンパイルはリアルタイムで行われる。
(なぜならサービスとして起動してるから、修正している所以外の
情報をすべて持っていてコンパイル済みだから)
言語はこの「標準化された機能」を効率的に提供できるような形に進化していく。
>>463 そんなもんVisualStudioとか昔から普通にやってること
465 :
463 :2013/09/21(土) 22:45:09.16
>>453 > いえいえ、あと数年もして言語の機能に差が見られなくなった時
> 一体何を基準に言語を選ぶんでしょうねと。
あ、質問に答えてなかったなw
つまりだ、言語というよりも、開発者にどれだけ情報を提供
できる処理系が存在するかで、言語を選ぶようになってくる。
この話に言語仕様は全く関係ないってわけでもなく、
言語仕様によって提供できる情報は異なってくる。
まあセミコロンフリーが一番問題になるのは webでよく使われるクロージャでグローバル、スコープ汚染を避ける方法だからな var a = 1 (function(){ var a = 2 }) がこう解釈される var a = 1(function(){ var a = 2 }) //TypeError: number is not a function Webじゃないのならブロック文とブロックスコープ宣言使えばいい var a = 1 { let a = 2 } これで、問題の7,8割は解決する あとは行を括弧で始めないとかそんなところ
467 :
463 :2013/09/21(土) 22:46:49.72
>>464 テキストエディタでできるようになるのが
重要なのだよ。
またサービスとして起動していると
一つのプロジェクトをリアルタイムで
複数の開発者が共有して開発できるかもな。
これがどういった結果をもたらすかはまだ分からないが、
ソースコードをマージするという作業を
超えた何かが生まれるかもしれないな。
>>466 セミコロンフリーって
確かRubyでもなんらかの
問題が起きるんじゃなかったっけ?
>>467 コンパイル言語なんてどうせIDEないと使いものにならないんだから意味ない
静的型のメリットを最大限活かすにはIDEが適しているという面もあるね
>>454 最善を尽くすのが当然だと思ってるんじゃないの
妥協したり諦めたりする方が変だ驚きだという人もいるだろ
なんでJSでセミコロンフリーが避けられてるかというと
これでも
>>466 と同じ問題が起きるから
<script>
var a = 1
</script>
<script src="a.js"></script>
////a.js////
(function(){
var a = 2
})
最近のまともなライブラリはこうなってるから昔よりは心配が減ってる
////a.js////
;(function(){
var a = 2
});
予言するって変更部分のみコンパイルなんてccacheとか古くからあるし、 エディタ連携はctagsとかあるし、CI環境なんてjavascriptにもあるし。 標準化されるしか言ってないな。
JavaScriptとかJavaって普通に書くと、これが非常に多いよね }) });
VSに付いてるコンパイラなんて実体はバックグラウンドでコードを解析するVSのサービスそのものだよな TypeScriptのコンパイラもそうらしいね
JSとか毎日触ってたら精神的におかしくなる自信あるわ 本業じゃなくてよかった
COBOLの俺に謝れ
jsはわけがわからないな function a() { return 1; } var a = function() { return 1; }; window.onload = func(); window.addEventListener('load' func, false); var a = [1,2,3,4,5]; var a = {1,2,3,4,5}; (function(){ })(); { };
わけがわからないのを統一するためにjQueryがあるんだよきっと
jQueryはDOMのクソさをJSの柔軟さで補うものだぞ ちなみに次世代DOMはjQueryっぽくなる プラグインの影響は大きい
jQueryってローカルで動いたと思ったらサーバー上で動かなかったりして ググったら似たようなことで悩んでる奴いっぱいいる感じだけどアレなんなの 原因突き止めなくてもしばらく待ってたら動くようになるんですかね・・・・(めんどくさい)
文字コードとかじゃね 逆ならいくつか思いつくがそのパターンは珍しい
>>473 > 予言するって変更部分のみコンパイルなんてccacheとか古くからあるし、
ccacheってファイル単位でしかないぞ。
ファイルの中のクラス単位、関数単位でなければだめだ。
更に言うならば、ccacheはファイル単位なんで、
1バイトでも中身が変われば役に立たない。
JSはわけがわからないというが どんな言語でもDOMやWebAPIをサポートすればコールバック地獄になるのは避けられん
>>481 > jQueryってローカルで動いたと思ったらサーバー上で動かなかったりして
具体例を出してくれなきゃ
お前の勘違いとしか言えないな。
原因突き止めたんだろう?
突き止めた原因の一つぐらい
言ったらどうだ?
>>474 > JavaScriptとかJavaって普通に書くと、これが非常に多いよね
>
> })
> });
指摘できるのがその程度だなんて・・・。
なんでコールバックの話になるのか
かっこが多い言語を馬鹿にするな。
>>484 そのコールバック地獄を解決したのが
ECMAScript6だと思うんだけど?
>>486 じゃあこの程度じゃない「セミコロンがうざい例」を出してください。
Javaは hoge(new HogeCallback() { @Override public void callback(int x) { } }); だろw
>>489 既存のWebAPIがジェネレータに対応してくれるわけじゃない
>>483 じゃあclangでもhugsでも何でもいいよ。
ただの既成品のアイディアや受け売りじゃ、
予言でも何でもないって言いたいだけだから。
function地獄もthisバインドのアロー関数が入るだけで 苦しみが1/3位になる気がする
>>492 そもそもジェネレータは非同期コールバックの解決にはなりませんよ
メソッド繋いだほうがマシなレベルのハック
知ってる人にはどんどん使いやすくなっていいが 今からWeb上のJSを始めるのはかなりきつい
テスト書いてるけどaltJSって言語仕様変わるから意味ねえ。
セミコロン派だけど、省略する利点がないので省略しない。 オフサイドルール導入されたら省略する。
>>495 IndexedDBとかFileAPIとかジェネレーターで書いてみ
勿論標準はコールバックだからラッパーを少々不格好にかませることになるけど
それでもあまりの美しさに本当に泣けるから
AjaxとかはPromiseでいいよ?
でもこの手のものはチェーンでも冗長だわ
まあ、やっぱりWorkerで同期API使うのが一番いいかもしれないけどね
セミコロン書くと見難いし、無駄だから出来る限り省くわ
>>492 > 既存のWebAPIがジェネレータに対応してくれるわけじゃない
ならば既存のWebAPIをジェネレータに変換する
ライブラリを作ればいいのではないか?
https://brendaneich.com/2012/10/harmony-of-dreams-come-true/ ECMAScript6の仕様みてみたら
・デフォルト引数
・可変長引数
・まともなforeach
・文字列以外をキーとできるHash
・ガベコレされやすいMap
・Setコレクション
・String.startsWith, String.endsWith, String.contains
・Number.isNaN, Number.isFinite, Number.toInteger, Number.isInteger
ワラタwwwwwwwwwwwww
2013年になってもこんなもの実装ってどれだけ周回遅れなんだ
Proxyは認める
>>501 そういうことを話してるんじゃないんだよ……
>>478-484 をちゃんと見てくれ
扱いづらいのは言語というよりむしろAPIの責任と言いたんであって
APIは言語でカバーできると言う論は噛み合ってないんだよ
>>502 Proxyって、これ他の言語で実装された実績あるの?
他の言語にはWeakな(GCを妨げない)SetやMapってあるの?
>>493 > じゃあclangでもhugsでも何でもいいよ。
> ただの既成品のアイディアや受け売りじゃ、
> 予言でも何でもないって言いたいだけだから。
なんか勘違いしてね? 俺が言ってる予言は
新しい技術ができるなんてひとことも言っとらん。
将来の一般的な開発スタイルがどうなるかの予言だ。
JSのライブラリもソースマップもAltJSも類似の技術は
他の言語には既にあった。そんなの当時でも知ってる話だ。
JSに足りないものを言い、それが普及するという予言だ。
今回の予言もまさにそれと同じ。
JS、そしてスクリプト言語全体に足りないもの。
それが
>>463 の内容だ。そしてそれが将来普及する。
当時もいたよ。JavaScriptの潜在能力を見抜けず
俺の言ったことを理解できない人間。
実際に俺が言った世界になったがな。
弱参照サポートしてる言語ってあるの??
>>503 > 扱いづらいのは言語というよりむしろAPIの責任と言いたんであって
> APIは言語でカバーできると言う論は噛み合ってないんだよ
コールバックの話だろう?
コールバックでしか実現できない言語あれば
コールバックを使うAPIしか提供できないではないか?
そこに言語で違うやり方が出来るようになったら
APIもそれを使った、使いやすいAPIができるだろう?
汎用のWebAPIが使用に対して1ライブラリでしかない jQueryを要求するのはなんか変な感じだけど、 ECMAScriptにPromiseとか入ったら 標準機能を使うWebAPIは変ではないよな。
>>508 一応DOM周りのAPIはJSから切り離されてるという立場で話してるから
その気になればどの言語でも導入可能
>>505 > 他の言語にはWeakな(GCを妨げない)SetやMapってあるの?
あるよ
まあ昔はVB、今からだとDartとかの可能性もあるしな。
>>510 そのレス
何がいいたいのかさっぱりわからんw
>>511 C++やJavaにあったよな。
WeakなSetやMap
言語標準かどうかは忘れたけど
見たこと有るわ。
>>514 Perlディスってるんですか?
いろんな書き方がある方が
優れてるんですよ!?
WebAPIは意外とJSありきじゃないかもな 一応全部がDOMのホストオブジェクトで配列でさえもJSのArray使ってないし TypedArrayは逆輸入されたし、ArrayBufferも今逆輸入しようとしてるのをみると、 上で書いたライブラリの件もそうだけど、JS「が」Webありきなんだな
>>514 TypeScriptが生成したコード読んで真似すればいいよ
altJSの中じゃ多分一番標準を重視してて見た目も綺麗
>>516 > WebAPIは意外とJSありきじゃないかもな
当たり前だと思うが?
WebAPIはブラウザありきだろ。
フォームのPOST/GETがベースになってる。
POST/GETができればどんな言語でも使える。
>>514 同じのが2つあるんじゃないぞ
両方使い時があるんだよ
あとES6式だとこれからかなりイメージ変わる
まあ好きに書けばいいさ
>>515 Perlもだんだんカオスになってきたね
昔のコードならそこそこわかるけど最近のコードはさっぱり
>>517 ありがとう
早速ぐぐってみる
>>518 IndexeDBとかWebAudioAPIとかそれらも全部含めて言ってるのよ
>>516 > JS「が」Webありきなんだな
もともとネットスケープが
ブラウザに載せた言語ですから。
常識だと思うんですがねぇ。
まあ、それが功を奏して世にも珍しい、
ファイルアクセス、標準有出力を
標準で備えてない言語になったわけですが。
それが十数年の時を超えて、
何もないなら、自分たちで世界を作れるということで
nodeという非同期ベースの実行環境ができることに
至ったわけで、世の中何が成功するかわからんよね。
デメリットがメリットになったわけだし。
その通りやな
>>521 > IndexeDBとかWebAudioAPIとかそれらも全部含めて言ってるのよ
それらは、WebAPIではなく
JavaScript APIですが?
>>524 JavaScript=ECMAScript+Web
と言うんならそう言うのかもしれないけど、それは屁理屈だと思う
仕様はEcmaScriptに何も依存してないよ
>>506 言うだけならそこらで地震起こる言ってる奴と変わらんだろ。
自覚がないのは本当に危ないぞ。
>>526 地震起こるって言っている奴と同じではない。
地震を的中させた奴と同じである。
JavaScriptAPIならDart涙目じゃね? 自分たちでDart用の標準仕様策定しないといけないの? そうじゃないでしょ
>>514 どう見てもそれ書いてるやつは後者の書き方推してるだろ。
>>525 どのライブラリでもいいんだけどさ、
仕様が特定の言語に依存したものなんてあるの?
それはどういった点で依存してるというの?
それがWebAPIにはないの?
>>531 へ? それが何を説明してんの?
IndexeDBとかWebAudioAPIは仕様で
JavaScript(EcmaScript)の
データ型を使用してるでしょ。
JavaScript(EcmaScript)に依存してるじゃんか。
また0か1か君か そこら辺は感覚の問題だろ だが比較的抽象度が高いということだろ
自分もっと
>>532 の言葉遊びに付き合うべきなのかな……
>>536 うん。変換レイヤーを儲けてある言語のデータ型を
他の言語のデータ型に変換してもいいというのなら、
仕様が特定の言語に依存したライブラリなんて世の中に無いよね。
そう言ってるんですが?
実際は0と1の中間なのに 0側推しの時は0だと証明出来なければ認めない 1側推しの時は1だと証明出来なければ認めない 最初から意見を押し通す気なんだから相手しても無駄
>>536 おい、他人が横から口を挟むなw
せっかくエスパーしてんのにさ。
>>535 なるほどね
よくわかったよ
ありがとうね
巨人様大口自重してくださいwww
Perl6って流行んないの?
>>506 他の言語もなにもサーバーサイドJSは最初からあったし、
ASPの時代からあったよ。
ついでにJavaScriptへのトランスレータも当時既にあった。
そりゃブラウザでこれだけ普及してれば、いつかは流行る。
そんなのを見て予言が的中って、歴史を知らなさすぎる。
とりあえず俺も、ネイティブバイナリコンパイラは消えて、
llvm+配布時aotコンパイルで、
アーキテクチャ関係なくなるって言っておくわ。
ミス >ASPの時代からあったよ。 ASPの時代からJavaScriptへのトランスレータもあった。
AOTコンパイルといえばasm.jsという糞素晴らしい物がある。
asm.jsはスクリプト言語としては最速級……
>>541 > 他の言語もなにもサーバーサイドJSは最初からあったし、
サーバーサイドJSの話なんかしていませんが?
あんたがしてないからなによw
>>541 > そりゃブラウザでこれだけ普及してれば、いつかは流行る。
当時は全然普及していなかったよ。
JavaScriptはOFFにするのが
自称情強だった時代。
>>547 当時の年代によるけど、IE4以降なら十分普及してたよ。
もうその時、既にリッチクライアントとか出始めてた頃。
というか2chのPCオタを標準にするなw
ブラウザにインタプリタが載っていた=普及していた?
> ブラウザにインタプリタが載っていた=普及していた? 誰がそんなことを言ったんだろう? 書いてない幻が見える人かな?
1998年ぐらいからインターネットしていたけど 当時JavaScriptなんて普及していたとは言えんだろ Perlですらアクセスカウンターに使うのが普通、よくて掲示板やチャット自作ぐらいだし JavaScriptなんてお遊びでalert出していた個人サイトがあったぐらいだぞ IE4時代に既にJavaScriptが普及していたなんてとんでもないわ。 そりゃ大抵のブラウザは対応していたけど
IE4が気に食わないなら、2003年以降でもいいよ。 さすがにDOM L2が整備された頃なら文句ないだろ。 いつ予言したのかは知らんが。
JavaScrpitなんてマウスに画像のせたら変わったり、 マウスカーソルに変なキャラが追尾したり、背景に雪を降らせたり・・・ ちょっとした装飾や自己満でウィンドウサイズ変える嫌がらせとかその程度だったな googleがmap公開するまでは見向きもされなかったわ
flashの方が全然普及していたな JavaScriptは右クリック禁止とかそういうお遊びにしか使われてなかったし Google MapってIE6ではまともに動いたっけ? 当時は既にFireFoxに移行していてIEなんてすぐにエラー吐いて落ちるゴミは切ったから知らん
JavaScriptでフォームのパラメータをいじってpostとかはしてたけど 具体的にサーバサイドとの連携が生まれたって感じたのはAjaxが注目されてからだね XMLHttpRequest自体は昔からあったようだけど
JavaScriptのFlashのお話でしたとさ
自分がJS始めた5年前は十分に普及してたな その頃からケータイでも動くようになったし Webに必須という段階になったんだと思う
JavaScript普及の背景はAjaxだけじゃなくてPC性能の向上もあると思う IE6〜IE8はいくらPC性能が良くても重かったけど
IE8で何倍もパフォーマンス改善して9でまたかなり改善してる そこからはエンジンの進化は緩やか
ActiveXはプラグインみたいなものでIE6の機能ではない
ActiveXを呼び出せるのはIEの機能だ
それがJavaScriptと何の関係が? その理屈だとChromeのJavaScriptはFlashの能力も得てることになるよな
いや、セキュリティ問題があるから ActiveXならなんでも使えるわけじゃないし。 JavaScript(ブラウザ)から使うものとして 作られているという話。
ActiveXはあらゆる言語から使える汎用的なAPIだよ だからあんなに使いにくい
FlashってJavaScriptになるの?
C言語ライブラリはあらゆる言語から使える汎用的なAPIだよ だからあんなに使いにくい
JSからFlash作れるし、API叩ける
>>568 誰がそんなこと言ってるの?
ブラウザで標準的にできることの話をしてるだけなのに。
ごめん。 FlashのスクリプトってJavaScript扱いになるの?
は? ならないだろ? 今は、ブラウザが標準的に 使える機能の話をしてるの。 あとづけで入れるFlashに興味はないの
ActiveXがなるんならなんでもなるんじゃね
>>573 Chromeは標準でFlash乗せてる
>>574 潜在能力的には何でもなるけど、
当時既に作られていたもの、
ブラウザが入っている環境であれば
使えるものに限定すればできることは限られてるから。
そもそもFlashに出来て今のJSに出来ないことは無いんじゃね
ないな確かに
>>573 そうでなくて、FlashのスクリプトはECMA系だけど、
JavaScript扱いになるのかって話。
FlashはActionScript+なんか+バイナリだよ でもJavaScriptって言葉自体どっかに正式な定義があるわけじゃないからなぁ
>>579 あぁ、ECMAScript4をベースにした
ActionScriptの話だな。
>>580 それはもう随分前からできる
勿論相手サーバーが許可すればだけど
>>582 それよくそう思われてるけど
本当はASの構想がES4のベースになったんだよね
標準でActiveX並のことができるって、良い世の中になったな
>>446 話が通じてないな
Javaではなく、jsの話だよ
というか、なんでブラウザにインタプリタが載ったんだ? 歴史上のどこかで、ILみたく中間言語に置き換えられなかったんだろうか これから起こるとしたら、js厨が糞ノウハウと共に絶滅するのにな
今の状況だと、jsが中間言語になりつつあるなw
>>549 M$の狙いが優れているとすれば、次に流行るのはtypescriptかocamlだな
例えJSが滅びてもHTMLやCSS、APIが滅びるわけじゃないんだから壊滅級じゃないよ まあ逆に言えばこれらとJSは三位一体だから、崩壊することはない
TypeScriptはES.nextの先取りという謳い文句だから、 それ以上にはならないね。
591 :
デフォルトの名無しさん :2013/09/22(日) 07:07:22.47
死ねゴミ共がw
いいんですか?そんな事言ったら本当に死にますよ?
一発使うだけだから保守性とかどうでもいいから、 とにかく早いコード書けって言われたら書ける? そういう観点でお前ら同じ課題で勝負してみて
テスト一発で証明終わりの世界って 無限回使うことを想定している言語を冒涜しているよね
どんな観点で勝負してもJSは負けるよ 言語がヘボの上に大半のコーダもカスだからな
>>590 TypeScriptの一番の売りはインターフェイスを用いたstructual subtypingによる静的型検査だよ
この手の機能はEcmaScriptに提案されることはあっても採用されることはまあ永遠にないだろうし
TypeScriptはジェネリックも使える interfaceはcreateElement('canvas')とcreateElement('div')で 戻り値の型が変わるように型宣言を「オーバーロード」できたりするのが特徴的で 何のための言語なのかをよく表しているね
TypeScriptの型推論はウンコすぎ
JSって標準的な書式がないんだよな 変数名や関数名を大文字にするか小文字にするか、パッケージのファイル名をどうするか 継承をどうやって表現するか みんな好き勝手に書いてて、まったくまとまりがない
JSに比べればAS3は遥かに良かった
602 :
デフォルトの名無しさん :2013/09/22(日) 12:17:49.05
>>600 ほとんどの言語はそうだ。
ある会社とかに限定すれば纏まりはあるだろうが。
規定するなら言語自体が使える文字を制約すればいい。
>>600 > JSって標準的な書式がないんだよな
お前が知らないだけじゃね?
JSHintなどで
標準的な書式が
決まってるだろ。
いつの間にJSHintが標準になったんですか?
ここ二年ぐらいの間かな
JSHintの全てがいいとは言わないが2/3くらいはいいものだな
jQueryはこんなに普及したのに、どうしてString.Format, String.Cotainsとかの関数を配賦するライブラリーは普及しなかったの?
だってそんなもの要らないもの 欲しいと思ったこともほぼない
ド〜カタには〜ドカタの〜世界が〜ある
いい加減Array.prototype.slice.callと、 String.toArrayがほしい。
Array.prototype.slice.callとじゃねえ。 Array.from
Array.fromもString.prototype.toArrayもES6にある
TypeScriptってサーバサイドのnode.jsで使うことを想定した言語? htmlと簡単に連携できるのかな? わざわざコンパイルしないとブラウザでの動作確認とかできないと面倒だよね <html> <head> <script> //typescript code </script> </head>〜 こんな感じに書いて実行押したらブラウザ開いて見れる的なIDEがあればいいんだけど
1つ言うと TypeScriptはJSにコンパイルされる時に型なんかのチェックをしてくれるのが特徴なんだよ 実際吐くコードはCoffeeScriptとさほど変わらない だから「コンパイル」っていう段階が一番有り難みが合って大事なとこなんだから そこを嫌がるのなら合わないかもね
やっぱ完全なコンパイラ言語なのか 型は別に入れなくてもいいって書いてたからちょっと期待してしまった
616 :
デフォルトの名無しさん :2013/09/22(日) 16:01:53.16
<script type="text/typescript"> のほうがいい
TypeScriptはスクリプト言語だけど、Dartはスクリプト言語じゃない その違いはどこだろう どちらもjsにして実行させられるのに
618 :
デフォルトの名無しさん :2013/09/22(日) 16:03:46.69
言語と実装はわけろ。 node.jsで動く実装がある言語だからといって 言語としてnode.jsが必須とはいえない。
どういうことなのかさっぱりわからないけど ESでCSやTSみたいなのをサポートしようというのが確か合ったな 多分メタ的なのをもっと増やすとか ForeignScript{ } みたいなのを作るってことなんだろうな
汎用的なAST操作APIとか
621 :
デフォルトの名無しさん :2013/09/22(日) 16:10:34.58
>>621 RPythonてpypyと同じだよね。
やっとまともなRuby実装でてきたのか。
いい傾向(?)だな
CRubyは既存のC拡張を捨てれない制限の中で 最適化してるんだから、あれでも頑張ってるよ まあ、そのわりにはバージョン上がるたびにgemぶっ壊れるけど
Topazなんて殆どの仕様は未実装だろ
Ruby2.1でGC改善するらしいし、 Ruby2.2以降でスレッド周り書き直したらなんとかなるんじゃないの
jsはgithubなんかで有名なプロジェクト見て回っても書き方バラバラでまったく統一性ない
書き方は色々ある。 それがプログラミングの楽しいところである。 ドカタは一つの書き方だけしてろw
統一性とか意味不 違うことしてるんなら違うコードになるのは当然だし 書いてる人の雰囲気が出るのも当たり前だろ 言語なんだからさ 伝わればいいのよ
630 :
デフォルトの名無しさん :2013/09/22(日) 19:14:45.16
ライブラリを提出するひとは、統一しなきゃいけないよ
インターフェイスは奇想天外のじゃない方がいいだろうが ライブラリのコーディングスタイルなんてどーでもよくね
ライブラリのコードなんて読みもしないドカタらしい意見で好感が持てますね
ライブラリのソースコード読むのは、PHPとかRubyとかJavascriptで書いてるゴミみたいなやつら 静的型付け言語の場合はコンパイルされていてメタ情報しか読めないから
メタじゃなくて無知だろ
これはヒドい
ライブラリを提供してもらってる側なのに偉そうにすんなよ。
jqueryオブジェクトの変数名は最初の文字を$にするとか、それ自体の良い悪いはともかく、プロジェクトの誰かがそういうふうに書いてたら、それに合わせるしかないよな
$aaa = $("div#aaa") みたいな感じか? そんなコトする奴いんのか?
>>639 オライリーの本でそういう書き方を
した方がいいって書いてあるよ。
どの本だったかは忘れたが。
まあ、もっと見識を広めようw
そうなのか。 知らんかった。
jQueryオブジェクトをキャッシュすること多いと思うけど、 それに$つけるのは普通だろ
普通普通 余裕に普通っすよ
随分頭お固いっすね...
頭お固い人ばかりっすね...
>>458 うわあ
最悪だなあ
npm作ってる奴らって脳みそイカれてるのか
こういう奴らのせいでES6に悪影響があるのか
セミコロン必須だったら良かったのに
Webで声がでかいのってRubyかぶれの省略バカばっかりだからね
JavaScriptみたいなゴミを好んで使うなんてよっぽど頭がおかしくないと出来ないからな
npm作ってる連中はnode作ってる連中ではないけどね まあnodeの作者RyanDahlも、 初めはHaskellを試して駄目だったのでJavascriptにしたらしいし 頭がどっかおかしいのは間違いないw
Haskellは海外じゃオワコンだもんな
天才は頭がおかしいよ
低能には無理でした > Haskell
残念ながらHaskellのIOがパフォーマンス上、駄目だったらしい javascriptがIO機能を持たなかった事が優れていたんだと
node.jsって、.jsみたいな名前ついてるけど、実際はC++で実装じゃん C++とV8エンジン依存しすぎ
実装してる言語とか名前に関係ないから
>>656 ゆとりは口挟むな。
.jsって名前つけるからには、全体がJavaScriptのファイル1つでできていることを示唆する。
underscore.jsとかそうだろ。
でも実際はそうじゃない。
.jsがついてなければ、JavaScriptで実装してようとしてなかろうとどうでもいいよ。
Nodeの為に書かれた量としてはJSの方が多いよ
C++もHaskellもLuaも出来る、お前らをはるかに超えるレベルの 超人様が色々試して最後に出した結論が「JavaScriptが完璧」 お前らのような何の実績もないど素人が口出しても負け犬の遠吠えだよ
>>649 「haskellの実装をhackしようとしたけれど、僕は、それほど賢くなかった」
って言ってなかった?
>>660 そういや、ryって何で消えたの?
製作者は否定してるわけじゃなくて、 目的に合わなかったって言ってるだけだよ。 代弁者気取って否定するなよキチガイ。
>>661 実装をhackしようとしただけでも凄いけど、
V8の実装をhackしてC++バリバリ出来る人なんだから、
よくある謙遜だろう
で、ryって?
>>662 そりゃマイルドな言い方するよね
「Haskellは糞だった」なんて俺でも絶対言わないね
でも、結局その人の行動が物語ってるw
665 :
デフォルトの名無しさん :2013/09/22(日) 23:57:17.03
アホか。 .jsは拡張子名でなく、javascript言語を指す目的だろ。
>>663 ダールのtwitterやgithubのHNってryじゃなかったけ?
突如として消えたって一時期ほど話題だったような
>>657 >.jsって名前つけるからには、全体がJavaScriptのファイル1つでできていることを示唆する。
見識が狭すぎる
人生やり直せ
>>664 経験者だからこそ、適材適所で安易に否定しないだけだろう。
狭い考えの奴にはわからんだろうけど。
>>663 nodeよりも性能の良いYesodがGHCをハックしなくても実装できたんだから、
本当はハックしなくても良かったし、しなくちゃダメだと思っちゃう程度の理解度だった
Haskell使える程賢くなかったんだね、謙遜じゃなくて本当に
どっかいけよニートども
>>666 さあ、俺がnode知った頃には、nodeのアカウントはjoyentだったから
昔の話か?
Haskellだったらドカタが使えなかったし Haskellを使いこなしててHaskellに拘るような人が作者だったら ドカタが使えないような難解なAPIになっていた
>>669 後発ならなんとでも言えるわなw
俺だってピタゴラスの定理なんか簡単すぎて屁が出るし、
余弦定理の方が優れてるとか言えるわw
ま、Yesodが流行ってないところ見るとHaskellじゃやっぱり無理なんじゃないのw
node.jsだってドカタは採用しないだろw ドカタは間違いなくPHPかJava よくてASP.NET(VB)
>>672 実際利便性に優れていなかったんじゃないの
ノンブロッキングと相性悪いって話しだし
そもそも高負荷ならRhinoのがいいし まあjsだけじゃまともに動かんからv8に組み込んだんだろうけど
土方はASPかPHPかJavaだな で、「VBは簡単だけどJavaは難しいな」なんて言ってるw Python、Ruby、Javascriptはもうちょっとレベルが高いイメージ Haskellはレベルが高いけど数学オタクが使ってるイメージ
>>675 ノンブロッキングと相性悪いって
インポート文一つで済みそうだけど・・
>>677 V8はJavascriptを動かすためのエンジンだろ
何言ってんだ?w
Javascriptを貶したいだけなのが見え見えだw
Haskell is pretty ideal but DOKATA is not smart enough to hack the GHC.
>>679 さあな
本人が言ってるんで
いろんなノンブロッキングが想定されていないAPIをノンブロッキングのAPIと一緒に使わなくてはいけない
その足かせがないのはJavaScriptだけだったと
Haskellなんかも一見なさそうに見えるけど、本人がそういってるんだからしょうがない
>>682 本人は自分が賢くなくて無理って言ってるだけだよ?
>>681 そのDOKATAは偉業を成し遂げた分だけ、hackも何もやってないお前よりはマシだなw
>.673 nodeも十分後発物だろ ノンブロッキングIO以外目新しい点無い
いや、マジだよ ソースは失念したが ただよくある謙遜だとは思うけど
>>687 nodeと比較してYesodは後発だから
>>680 お前の言ってる意味のが理解できん
v8もnodeもC/C++でできてる
>>688 そこに書いてあるJavascriptが良かった点
single threaded, without preconceived notions of "server-side" I/O, without existing libraries
Haskellには当てはまってないな
Haskellは静的型付けの上にモナドで型を縛れるから うっかりブロッキングIO使っちゃったなんてことは起こらない(コンパイルエラーで弾ける)だろうが そんな堅苦しい言語でプログラミングしたくないな
>>691 実装がC/C++ってことに何の関係があるんだ?
ターゲットにしてるのはJavascriptだろ
C/C++ではターゲットにならなかったわけだ
うまくノンブロックのプログラムが書けないから
まあ、実装もJavaScriptが多いらしいけど
>>676 ドカタ現場はとにかく過去の実績があるものを好む。
国内のWebシステムの多くがPHPやJava、ASPでできているんだから、それ以外を採用するはずがない。
ASP.NET(C#)ではなくてASP.NET(VB.NET)なのは俺のイメージ。
VBを採用する現場はとにかくレベルが低くてコーダーもVB専門みたいな印象が強い。
>>693 でもHaskellのGHCなんかの標準のIO実装がブロッキングIOだからなあ
結局はそれで台無しになっちゃうってことなんだろうね
>>695 お前が理解できないのは多分、プラットフォームの実装に使っている言語の話と
プラットフォームがターゲットにしている言語の話の区別が
出来ていないからじゃないかな
nodeの作者がGHCをハックできる程賢くなかったのを わざわざ本人の発言を謙遜と曲解してまで 認めたくないヤツが居るのは何故だろう?ふしぎー
>>693 デバッグし辛いバグが混入したままプログラムが走った感じるだろ。jk
>>696 Real World Excel
>>697 なんでYesodは台無しにならなかったの?
Yesodの作者がnodeの作者よりずっと賢くて問題解決しちゃったから?
>>698 だって、曲解しないと言ってる事が矛盾してるじゃん明かにw
>>692 の特徴をHaskellは備えていない
>>697 とりあえずjsが完璧という考えなのかそうじゃないのかはっきりしてくれ
>>700 作者の懸念は、誰かがライブラリ等にその標準IOを使ってしまって
ノンブロッキングのプログラミングが
書きにくくなるってことだろ
台無しになっているかどうかは知らないけど、
なっていないとしたら、nodejsの登場によってそういう懸念を世間が
理解して、問題を避けることが出来るようになったって
だけじゃないの?
フレームワーク側でノンブロッキングIOしか使えないようにユーザに強制できる場合、 既存IOがブロッキングだったとして、何か問題が起きるかな?
nodeの作者はエンジニア界では賢い部類だろうけど Haskell作ってるような連中の知能と比べたらチンカスでしょ で、それのどこに問題が?
おいドカタ。 俺はドカタを恨んでるんだからな。 ずっとドカタっいいづつけるぞ。
>>704 フレームワークの外側で使われちゃったらどうしようもない
そもそもブロッキングが前提なのはIOだけじゃないらしいしね
よくわからんけど、DNSとかもそうだっていってるな
>>706 何の問題もないな
少なくともこのスレの連中よりはるかに賢い
> フレームワーク側でノンブロッキングIOしか使えないようにユーザに強制できる場合、 それが無理なんでしょう?
>>708 Haskellの場合、mainをフレームワーク側が握ってて、
フレームワークのインターフェースがIO型を持ってなかったら
ユーザがIOを使いようが無くね?
まあ、言語の普通のやり方でブロッキングするのなら、 ノンブロッキング主体の世界は作れなかっただろうね。
>>711 どうだろう。
mainのシグネチャを自由に出来ないとか、そういう考え方もあるのか。
それでも二つのプログラムに分かれてしまったら無力だが。
nodeのライブラリっていうのは nodeが出来たあとに作られたんだよ。 nodeが出る以前にJavaScriptのライブラリはあったが それらはブラウザ様なので当然I/Oライブラリは使用されていない。 つまり0からのスタート。 これがノンブロッキング主体の世界を作るのに 一番適していたんだろうね。 他の言語では世界を作れなかっただろう。
715 :
デフォルトの名無しさん :2013/09/23(月) 00:57:25.68
>>714 libioとかlibevの話かと思ったのに
JSerアホだな
なんかのアプリのプラグインを書くときの スクリプト言語としてJavaScriptは最適なんだよな。 デフォルトで何も出来ないから、 セキュリティ的に安全。 それがベースが安全側に倒れており、何かを許可したい場合に ライブラリを追加してあげれば良い。 言語仕様が必要十分かつ、ここまで標準のライブラリの機能が 制限されてる言語って他にないよ。
>>714 それに付け加えてシングルスレッドのイベントモデルだったってのが
大きいんじゃないの?
もともとそれがやりたかったわけで
スレッドで並列処理をする他の言語では、大量の処理を並行して実行する場合に
スレッド生成のオーバーヘッドが
致命的になってしまう
>>713 mainのシグネチャ云々じゃなくて、main自体はフレームワーク側で記述されて
実行されてしまってて、使う側はコールバックをフレームワークに登録するようなケースね
そのコールバックの型がIOを含まなかったらIOは使えない
>>716 スクリプトに提供するAPIなんてホストがいくらでも制限できる
既存の資産が活かせなくなるが、JavaScriptだってそれは同じだ
>>718 だから、mainを自分で記述できないってことでしょ?
そういうアイディアならいけたかもね
まあ、なんか直感的に後からいろいろ不都合がありそうに思えるけど
(mainが実行されちゃっててあの機能が使えないとか、後から出てきそう)
PHPのように言語のコアと標準ライブラリを ブクブク太らせて、便利にするという考えもあるんだけど、 C言語みたいに、言語のコアと標準ライブラリは 必要最小限にして、汎用性を高めるという方法もある。 JavaScriptは結果論だが、C言語をさらにシンプルにして 言語のコアとメモリ内で完結できるライブラリしか持たない言語 外部I/Oを標準で持たないという画期的な言語という見方もできる。
>>716 RubyにPythonにLuaにLisp
スクリプト言語は元からバインディングさえ無ければ
勝手に制限付き環境になりますよ
>>719 その制限を選ぶ作業がとんでもなく大変だろ
何を制限すればいいのか、何をすればセキュリティ的に問題ないのか
それこそ、世界中の技術者達(その中には天才クラスもいるだろう)が
何年もかけてやる作業だ
>>719 > スクリプトに提供するAPIなんてホストがいくらでも制限できる
それじゃだめなんだ。
デフォルトOKで危険なものを制限する。いわゆるブラックリスト方式
デフォルトNGで安全なものだけ許可する。いわゆるホワイトリスト方式。
どちらが安全かは言うまでもないでしょう?
>>721 そういう事はユーザー側がきっちりメモリ意識するようにして、
それできちんとGCもまともに掃除するようになってから言えと。
726 :
デフォルトの名無しさん :2013/09/23(月) 01:09:58.85
Linuxにすればいい。
>>725 ユーザーが問題の話は関係ない。
今は言語の話をしている。
>>723-724 自分でやったことがあればわかるが
どっちかというとホワイトリストだよ普通
OKなモジュールを入れるだけ
少なくともnode.jsのAPIを整備する手間に比べたら無視出来る程度のオーバーヘッドだよ
pythonとかimport禁止してprint関数(2系ならprint文)禁止したら もう入出力できなくね?
オブジェクト指向においてimportを禁止する意味があるのか
>>729 デフォルトでI/Oモジュールも入ってるしなぁw
> 少なくともnode.jsのAPIを整備する手間に比べたら無視出来る程度のオーバーヘッドだよ
え? 既存のライブラリ全てを忘れて
全部ブロッキングなしのものに変更するんだよ?
新しいものを作るだけじゃない。
既存のものを忘れるという作業が必要。
ほぼ全部作り直しじゃないか。
こっちのほうがよっぽど大変だよ。
734 :
デフォルトの名無しさん :2013/09/23(月) 01:15:37.71
>>734 あーうん、俺はクロスプラットフォーム派なんで論外
736 :
デフォルトの名無しさん :2013/09/23(月) 01:16:42.01
>>736 ドカタ必死だなw
お前が就職活動しろ。
明日はちゃんとハロワに行くんだぞw
>>732 最初から必要なのだけバインドさせとけばいいんじゃないの
JSみたいに
>>735 素直にWindowsしか使えないと認めなさい?
740 :
デフォルトの名無しさん :2013/09/23(月) 01:18:20.63
今日は休みだよ〜
>>740 明日って言っただろバーカw
日をまたぐってことだ。
今日は月曜日だからな。
ドカタは曜日の感覚すら無いwww
>>741 は?何が?
sandbox内でevalさせればいいだけじゃないの?
>>744 それでブロッキング関数が
全部ノンブロッキング関数になるとでもいうの?
ファイルI/Oだけじゃない。
ネットワーク関数やデータベース関数
全てがノンブロッキングでないと意味ないからね。
結局全部作りなおさないといけないよね?
今ある資産を捨てて。
>>745 JSだろうとコンテキストは実装持ちでやってること変わらんぞ。
JSONはさすがに例外だけど。
そんなあなたにgevent
750 :
デフォルトの名無しさん :2013/09/23(月) 01:24:52.14
スクリプトは知らないけど、boost::asioのブロックしない関数の一部は、 呼ぶたびにスレッド作ってブロックするAPIを呼び出してるんだよ〜 Windowsでは将来、ブロックしなくなる予定があるんだよ〜
>>747 JavaScriptならそれらを新たに作らなくてもいいとでも?
100あった資産を切り捨てて0からやり直すのと
もともと0のところから始めるかの違いにすぎない
>>751 資産を捨てるのは難しいんだよ?
なぜなら言語の標準でこのライブラリを使うって
頭に叩きこまれているから。
最初から何もなくて、ブラウザのコードで
ノンブロッキングでずっとやってきた人たちと
旧来の方法がずっと身にしみてきている奴
発想を変えないといけないからね。
754 :
デフォルトの名無しさん :2013/09/23(月) 01:33:46.51
両方普通に書けるC++11が流行ればいいと思うのであった〜
たまにパフォーマンス的な理由でノンブロッキングIOをやりたいことはあるけど、 普段はブロッキングIOの方が便利でしょ このスレでも、ノンブロッキングIOがデフォのせいで標準入出力のお題が不得意じゃんJS
メッセージループ内でAsync系の読み書き呼び出しなんて、 昔から普通に使われてたよ。 昔だから分岐はswitchだったけど。
>>753 現実としては間違ってないが、
プログラマの経験や実績を持ち出すならこのスレの話なんてほとんどファンタジーになっちゃうぞ?
node.jsなんて論外だぞ?
758 :
デフォルトの名無しさん :2013/09/23(月) 01:37:00.93
altJS予言の人?
759 :
デフォルトの名無しさん :2013/09/23(月) 01:38:41.57
SMTPサーバと通信してメールを送るSCGIプログラムを書いたけど、 ノンブロッキングで書くととても面倒な感じがした〜 見通しが悪くなる〜
おい、みんな気をつけろ! altJS予言の人がいるぞ。 お前か? お前なんだな?
このスレの特定言語持ち上げ意見のほとんどは「学習コストが高い」で片が付いちゃうな
epollとかkqueueとか昔からあったよね
>>759 そういうのは、今はnodeのオハコだよね。
見通し良いまま書く方法が議論しつくされている。
有るんじゃなくて 無いのが重要だってことが わかってないのかな?
765 :
デフォルトの名無しさん :2013/09/23(月) 01:41:13.72
C++がいいのです〜
jsのコードが見通しが良いとか 冗談はこのスレのコードを100回読んでから言って下さい
>>755 > このスレでも、ノンブロッキングIOがデフォのせいで標準入出力のお題が不得意じゃんJS
だけど、ノンブロッキング標準入出力は得意だよ?
C++とかスレチだから帰れよ
>>766 上ので納得したが、それでまた納得してしまった。
コールバックネストさせすぎで全然見通しよくねえ。
前前スレだっけ?簡単なお題にJSだけ あーだこーだと何100レスも使っててワロタわ
772 :
デフォルトの名無しさん :2013/09/23(月) 01:45:50.34
>>767 得意?
インラインで関数オブジェクトリテラルが書ける言語なら何でも一緒だろ
いや、JSは function(x) { } なんてクソ冗長な表記だからその中でも劣ってるか
もともと JavaScript に標準入出力は入ってないだろう ある特定の実装においてサポートされてるってだけ
775 :
デフォルトの名無しさん :2013/09/23(月) 01:50:51.26
[](X x){ } <- c++11
777 :
デフォルトの名無しさん :2013/09/23(月) 01:52:53.67
ちゃんと進化してるよ〜
>>773 > いや、JSは function(x) { } なんてクソ冗長な表記だからその中でも劣ってるか
え? アロー関数でかけばいいじゃん?
779 :
デフォルトの名無しさん :2013/09/23(月) 02:01:30.24
LUAが速いと書いてあるので、これで全言語を実装したらいい。
シンプルなプログラムが書けたら書けたで javascriptだと何かしら絶対文句つけるから functionが長いとか、遅延評価じゃないとかがその定番w このスレはjavascriptを批判することだけが目的の奴が一匹常駐してるからw
782 :
デフォルトの名無しさん :2013/09/23(月) 02:04:38.37
流行ると叩かれるのは仕方ないよ〜
functionがクソ冗長って意味がわからないな タイプ数がちょっと多いだけじゃね 本質じゃないと思うが
>>491 がクソ冗長って意味がわからないな
タイプ数がちょっと多いだけじゃね
本質じゃないと思うが
>>630 がクソ冗長って意味がわからないな
タイプ数がちょっと多いだけじゃね
本質じゃないと思うが
正直まともな自動補完を用意しないから、functionが長いとかいうくだらん話が出るわけだ。 動的言語の信奉者は、動的言語には自動補完なんて不要とかガチで思っているのが怖い。 Rubyの開発者とか。 ああいう人たちは一度C#やVBで開発すれば、どうしてRubyがオワコン化しているか分かる。
788 :
デフォルトの名無しさん :2013/09/23(月) 02:31:20.29
windowsで、GUIとDLLが短く書けるのはどれになるんですか。
JSerが簡単なお題すら解くのに 多大な時間と議論が必要なのは functionが長くてうざくて コードの可読性を落とすのも一因だと思ってた
ないないw 問題を解くだけならアロー関数でいい。 それを単純にfunctionに変換すれば今でも動く。 単にたまたま信者がいるだけ。多分そいつ一人が頑張って 問題といてる。
>>787 ×動的言語の信奉者は
○Smalltalk以外の動的言語の〜
>>787 ある程度の言語側のサポートはやっぱり必要
もっとも優れたIDEをもつC#には delegate(int x) { } の形式のクロージャがあったのに
その後アローが導入されたよね?
JavaのGUIをIDEで作ろうとすると、IDEが生成する
>>491 みたいなノイズで冗談みたいに見通しの悪いコードができる
Pythonも結構IDEサポート厚いけど
794 :
デフォルトの名無しさん :2013/09/23(月) 12:15:18.53
秀丸最強伝説
スクリプト言語だと IDE使う意味が無いんだよね。
IDE使って出来るいろんなことが スクリプト言語だとできないからな。
シンタックスハイライト、オートインデント、補完、 リアルタイムのエラーチェック、コード全体とコードスニペットの一発起動 このくらい出来たら個人的には十分だわ
(優れた)シンタックスハイライト、(優れた)オートインデント、(優れた)補完、 (優れた)リアルタイムのエラーチェック、(優れた)コード全体とコードスニペットの一発起動 これができるのがIDEなんだけどね。 スクリプト言語だとこれかができなくなるからなぁ。 なら、テキストエディタでもいいんじゃね?ってなるよね。
いまどきのIDEだと、ユニットテストを実行する際に 全体やファイル単位じゃなくて、 関数単位で実行できるんだよね。 特に追加の作業なしに。 もちろん実行するだけじゃなくて、 そこからデバッグも出来る。
802 :
デフォルトの名無しさん :2013/09/23(月) 12:41:51.69
ここまでをまとめると、C++も混ぜてもらえるってことでいいですか〜
アルゴリズム周りは、今でもエディタとfind,grep
>>800 スクリプト言語か否か関係ないもんが含まれてるぞ
お前、なぜスクリプト言語じゃ出来ないか説明できないだろ
型情報がないからリファクタリングできないんだろ
>>804 できるかできないかじゃなくて
どっちが高度に出来るかって話。
俺でもF1レーサーでも車は運転できるが、
どちらも同じレベルで出来るわけじゃないでしょう?
で、シンタックスハイライトやオートインデントやコード実行と静的型情報に なんの関係があるんですかね?
静的厨は馬鹿だなー Javaドカタかな?
>>807 静的型情報を元にメソッド調べてるんじゃないの?
気になるならIDEのコードでも調べたら
>>807 例えば、テキストエディタで、JavaScriptでdelete"メソッド” に色がつくんだよね。
deleteは予約語だから色がついていいけれど、
deleteメソッドは 予約語のdeleteとは別物だから色がついてはいけないんだよ。
811 :
デフォルトの名無しさん :2013/09/23(月) 12:49:06.85
>>809 なにその頓珍漢な答え
全く理解できてないことだけ分かるんですけど
>>810 どうでも良いけど、メソッド名に使えるようなもんは予約語じゃなくね?
予約語の定義的に
構文強調やオートインデントなら動的言語と大差ない気もするな
元JavaドカタがJavaの仕事がなくなって JSに流れて来た感じの低能がスレに一匹混じってるな
Javaの仕事が市場から無くなるなんて馬鹿を言えるだけでもニートだって分かるね!
需要より供給が上回れば十分ありうるよ 馬鹿には理解できないかな?
敢えて言うなら、動的言語の需要などない 顧客にとって動的言語であることにメリットなどない
オートインデント。同じ {} でも、関数の時とハッシュの時では インデント変えたいとかいう要望があるよね。 {を関数の定義の次の行にしたいが、if文の場合は 同じ行にしたいとか、switchは{}でくくられているが caseでインデントしたくないとか ”ローカル変数” のカンマの前後に空白入れるとか そういう細かい設定がIDEでは出来たりするんだ。
受注開発の世界しか思い浮かばないところが 骨の髄までドカタなんだよなぁ
>>820 そんなことエディタでも出来るから。
プログラム書いたことあるの
はぁ。どこから受託開発が出てきたんだか。 またいつものキチガイか。 はいはい、ドカタ大嫌いなんでしたねw
>>822 だから、できるできないじゃないんだって、
どっちが高度に出来るかって話。
825 :
デフォルトの名無しさん :2013/09/23(月) 13:01:43.11
結局PHPが勝ったの?
>>820 ホントお前黙ってろよ
一人だけレベル低いんだよ
>>824 高度ってのが細かく設定出来るって意味ならエディタでも余裕
拡張用にスクリプト言語備えたエディタならね
静的型を活かしたIDEの機能というと 安全なリファクタリング 高精度で高速なコード補完 コード解析に基づいた、設定ファイルに依存しないGUIビルダ 型やメンバのエラーをリアルタイムに検出 高精度なlint 依存関係の解析 くらいか
ただし、このスレのスクリプト言語厨が10分で解けるお題を解くのに 優れたIDEのサポートがあっても1週間かかるアホが このスレに常駐してる静的厨です
832 :
デフォルトの名無しさん :2013/09/23(月) 13:07:23.94
バカスレw 死ねゴミ共がw
>>827 > 高度ってのが細かく設定出来るって意味ならエディタでも余裕
じゃあ証拠見せて
IDEの場合の証拠は
>>831 に書いたから。
マウスでぽちぽち設定してる姿を想像するだけで草不可避 プログラマとは思えん
835 :
デフォルトの名無しさん :2013/09/23(月) 13:08:53.13
型が動的ってことは、処理の流れによって変数の型が変わる事があって、 IDEが型情報を元に処理を行うのが難しいとか?
このスレにemacs lispとかvim scriptが貼られる展開?
>>830 本業でもスクリプトで書いてると限らない
>>834 設定ファイル直接いじればいいじゃんw
おまえ馬鹿なの?
マウスでポチ→左のプレビューに違いがすぐに表示 VS 設定項目名調べて、何文字か書いて保存。 適当なソースコード開いて違いを確認。 いえ、なんでもないですーw
841 :
デフォルトの名無しさん :2013/09/23(月) 13:13:12.90
IDEは確かに便利だよ〜 でも拡張する一番簡単な方法がたいていのIDEでスクリプトなんだよ〜
>>835 それはもちろんその通り
最近のVSとかだとバックグラウンドでJSを実行して型やメンバの情報を収集してコード補完するらしいが、
関数の呼び出し元を探して関数の引数まで型を推測してくれるのはまだ無いと思う
>>838 得意気に画面を貼ってくるから、普段からぽちぽちやってるんだろうなーって誤解しちゃった
そうかー、ぽちぽちやるようなアホがこのスレにいるわけないよね、ゴメンごめん
>>841 IDE厨ってろくにコード書けなさそうなので、
その方法で拡張することは無いんじゃないかな
845 :
デフォルトの名無しさん :2013/09/23(月) 13:16:16.65
ポチポチ出来るときはぽちぽちやってるよ〜
>>842 ブラウザのコンソールで書くのが最もよく補完してくれるよ
動的言語のパラメータの型は絶対決まらないよ そこが限界
849 :
デフォルトの名無しさん :2013/09/23(月) 13:23:23.49
テンプレートのパラメータの型は絶対決まらないよ そこが限界 とかもありそう〜 限界じゃなくて可能性と解釈してるけど〜
ゆとり世代の特徴: 公式サイトを読まずに、誰かの書いたブログ記事だけで解決しようとする。 最初からubuntuで、debianやsuse,fedoraが選択肢にすら無い エディタはgeditかnano perlを書いたことがなくjsが唯一の選択肢 マシンのメモリは購入時で既に2GB以上 gnomeは既に死に体でKDEが唯一の選択肢だと思っている エディタのマクロを書いたことがない。 そもそも、エディタやIDEにマクロがあることを知らない。 英語のマニュアルが読めない。 誇大広告な新しい技術に飛びつく。
今時の静的言語だとジェネリック型は制約を使って型安全にするのが普通
動的言語でも、いつも動的に型を変更するわけじゃないので、 動的に型を変更しないときは正しく補完してくれるって感じが良いな
853 :
デフォルトの名無しさん :2013/09/23(月) 13:29:10.85
出来ないと言って批判するより、どうしたらできるようになるか考えたほうがいいのかもね〜
JavaScriptの世界は現実主義なんだよな。 XHTMLをやめてHTML5にしたという点にも それは現れている。 過去を捨てるのではなく、 過去を踏まえながらどうするのが 一番最善かを考えて行動している。
ESはES4以降から「Webを壊すな」を事あるごとにずっと言ってきてるよね 完全に自由じゃなくて、今を壊さずに追加する方法を考えるっていう方が、 方向性も決めやすいし、意見もまとまりやすいのはあるでしょうね
>>854 こんな感じで引数を引き回しても補完できて欲しい
class A:
def aaa(self):
pass
def f(func):
return g(func())
def g(x):
x.bbb = lambda x: x
return [x]
def h():
return f(A)
h()[0]. # bbbは無理だけどaaaは補完できて欲しい
HTMLで必要な閉じタグを書かなかったとか、 タグの対応が取れてないだとか。 そういうミスをするなといったのがXHTMLで、 やった場合どう解釈されるかを完璧に定義したのがHTML5 これすごいよな。よく出来たと思う。 間違いを完全に定義するだけじゃなく、 既存のブラウザの動きまで織り込みずみなんだぜ。 HTML5の<meta charset="utf-8">なんて感動モノだよ。 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 昔ながらの書き方はこう。だけど古いブラウザ(IE6等)でHTML5の書き方で正常に動くんだぜ。 古いブラウザの仕様から外れた動きを、うまく利用して優れた仕様にしちまった。 そういう考え方をする連中がJavaScriptの仕様を作ってるんだ。
コメントにこの関数の返り値の型は○○です って書くと実際の返り値がなんだろうが コメントに書かれた型に沿って補完してくれるという 明後日な方向に進化した言語があってですね・・・ まあでも動的言語ならそんな程度の方がいいのかとも思ったり
861 :
デフォルトの名無しさん :2013/09/23(月) 13:59:17.26
ガードは、ユーザー定義形式の適用に対して便利な文法として使われます。 それらは型として使用できますが、同様に任意の制約を適用することもできます。 変数、パラメータ宣言、関数の返す結果、プロパティ定義へ注釈をつけるために ガードを使います。 それぞれのガードは、それを通過させるか強制するか拒絶するか決定するために、 入ってくる値、標本について承認する事を要求されます。
言語?
>>860 そういうのは実行時にコメントに書いていないものが
返ったりしたらエラーになって欲しいところだな。
864 :
デフォルトの名無しさん :2013/09/23(月) 14:01:46.66
強制するっていうのは、型を変換するってことなのかな?
865 :
デフォルトの名無しさん :2013/09/23(月) 14:09:17.05
動的に型が決まるところにガードを導入すると、例えば代入するだけで 検査が実行されるってことになって、重いから使わないほうがいいってならないのかな?
867 :
デフォルトの名無しさん :2013/09/23(月) 14:15:35.22
それとも逆なんだろうか? 処理系にヒントを与えることになって最適化が進むんだろうか? そうだとしても、こう書くと最適化されて、こう書くと実行時の負荷が増えるとか 色々考えないといけないことが増えそう〜 さらに○○らしいみたいな風のうわさを頼りに書くことが増えそう〜
それは実装に依存する部分だから、これと決まることはないだろ。
賢い連中が形推論を動的型に持ち込む一方で ドカタ共はコメントに型を書く方向へ退化していたw
870 :
デフォルトの名無しさん :2013/09/23(月) 14:26:22.51
文芸的プログラミングかな〜 可能性はあると思う〜
>>858 そのコード片って具体的には、どんな場面で使うものなの?
コードが貼られなくなった途端に動的型 vs. 静的型になるあたりとてもわかりやすい
>>869 「一方、ロシアは鉛筆を使った。」って、雛形文を聞いたことない?
文芸的プログラミングってクヌース先生の奴? javadocとかは実装ありきだから逆な気が。
875 :
デフォルトの名無しさん :2013/09/23(月) 14:31:04.91
AngelScript マニュアル日本語訳
http://dl.dropboxusercontent.com/u/91791736/manual/index.html スクリプトの例を示します。
int main()
{
array<int> arr = {1,2,3}; // 1,2,3
arr.insertLast(0); // 1,2,3,0
arr.insertAt(2,4); // 1,2,4,3,0
arr.removeAt(1); // 1,4,3,0 arr.sortAsc(); // 0,1,3,4 int sum = 0;
for( uint n = 0; n < arr.length(); n++ )
sum += arr[n]; return sum;
}
http://dl.dropboxusercontent.com/u/91791736/2250/manual/doc_datatypes_arrays.html
876 :
デフォルトの名無しさん :2013/09/23(月) 14:33:30.33
それそれ〜
comment firstなDRY原則。 がコンパイラやインタプリタの実装レベルで適応された処理系ってありますか?
>>873 「一方、ロシアは静的型言語を使った。」
880 :
デフォルトの名無しさん :2013/09/23(月) 15:09:09.66
以下は、AngelScriptのsampleに含まれているソースである。C/C++とほとんど変わりの無い構文であることがわかる。ちなみに、クラス定義にはメソッドを含むことも可能。
国内人気 Ruby>=Python>>>Lua>|超えられない壁|>>>>AngelScript
テキスト処理能力 Python≒Ruby>>>>|超えられない壁|>>>>AngelScript
class ThreadArg { int count; string str; };
void main() {
for(;;) {
int count = 10;
ThreadArg a;
a.count = 3;
a.str = " B";
CreateCoRoutine("thread2", any(@a));
while( count-- > 0 ) {
Print("A :" + count + "\n");
Yield();
}
}}
void thread2(any &in arg) {
ThreadArg @a;
arg.retrieve(@a);
int count = a.count;
string str = a.str;
while( count-- > 0 ) {
Print(str + ":" + count + "\n");
Yield();
}}
http://wikiwiki.jp/tnwpg/?%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%B8%C0%B8%EC
>>871 ネストされた関数呼び出しの中で生成されたインスタンスが
戻り値で返ってきた場合の例のつもり
素人考えだけど、補完が難しそうかなって
>>880 コアな部分に携わるゲームプログラマが開発に集中するために使うスクリプトだろ
似たような言語のどうでも良いノウハウを掻き集める余裕ってweb開発ぐらいじゃないの?
これ使うならC/C++で良いです
今日もドカタいじめるの楽しいなw
>>885 それだ! altJSの欠点
コンパイル時間がかかる。
普通にJavaScriptで書いたほうがいいな。
後数年もすりゃアロー関数も普通に使えるようになり
最強の言語になるだろう。
>>885 「コアな部分に携わるゲームプログラマが
開発に集中するために使うスクリプト」
じゃなかったの?
つーかさ、コード修正するたびに 10分近くもコンパイルに待たされるわけで、 よくそんなので開発できるよね? 理解できない。
修正の度に10分てどんなクソ設計でやってんだよ。
>>887 translaterレベルのコンパイル時間なんて気にする必要ないんじゃない?
>>888 c/c++プログラマが学習コスト無しで、ゲーム内のAIなんかを記述するもの
インタプリタだからコンパイル時間不要
何が不思議なの?
>>890 脳内プログラマ乙
クソ設計? 有名プロダクトだけど? makeしてみろよ。 10分ぐらいかかるからさ。
テスト回しながらやってんだから結局時間かかるだろ。 それにプロコンパイルさせてdistccすりゃ相当に短縮される。 脳内C++er乙。
894 :
デフォルトの名無しさん :2013/09/23(月) 15:44:25.71
CINTは C/C++スクリプトの処理を目的とした C/C++インタプリタです。
CINTは ANSI Cの85%、C++の95%をカバーしており、ANSI Cで書かれていて、自分自身の解釈実行もしっかりでき、その解釈実行バージョンもプログラムを実行できます。
http://sourceforge.jp/projects/freshmeat_cint/ // Minimal ROOT based Qt example
#include <qapplication.h>
#include "TGraph.h"
#include "TQtWidget.h"
#include "TCanvas.h"
int main( int argc, char **argv ) {
QApplication *app = new QApplication(argc, argv);
TQtWidget *MyWidget= new TQtWidget(0,"MyWidget");
// Create any other Qt-widget here
MyWidget->show();
MyWidget->GetCanvas()->cd();
TGraph *mygraph;
float x[3] = {1,2,3};
float y[3] = {1.5, 3.0, 4.5};
mygraph = new TGraph(3,x,y);
mygraph->SetMarkerStyle(20);
mygraph->Draw("AP");
MyWidget->GetCanvas()->Update();
app->exec();
return 0;
}
http://root.cern.ch/download/doc/ROOTandQt.html
895 :
デフォルトの名無しさん :2013/09/23(月) 15:45:08.87
ビルドに時間がかかるのは確かにつらい〜 最近のIDEは書いてる端から添削してくれる〜
訂正 ☓ プロコンパイル ○ プリコンパイル
>>893 c++プログラマだなんて一言も言ってないけど、あんなもの常識。
>>894 それって、NASAとかCERNがシミュレーション書くために書いた処理系で、
ろくにメンテもされてないでしょ。今は確か、chあたり使ってんじゃない?
というか、組込み用途に出来たものじゃないし、最適化もウンコな実装を
誰が製品用途に使うのか不思議で堪らない
スクリプト言語でも、組み込みドライバぐらいかけますってばw
>>897 まともに知らずに語ってたの?
脳内プログラマー乙。
組込みってembededって意味でなくって、スクリプト用途って意味
>>899 まともに知ってるはずのあんたのレスは
なんで中身が全くないの?
お〜か〜し〜い〜なぁ〜(笑)
903 :
デフォルトの名無しさん :2013/09/23(月) 15:56:51.95
>>889 そういうの俺も疑問に思ってた頃もあったけど
アルゴリズムを考える時間 >>>> コンパイル時間
な奴らだから問題ない
同じように冗長な言語を使っていても
アルゴリズムを考える時間 >>>> ソース記述する時間
な奴らだから問題ない
この手の奴らは圧倒的に思考が遅い
>>901 静的言語は一度コンパイルさせれば、修正にはたいして時間かからないよ。
スクリプトで書く程度の内容で、毎回コンパイルに時間がかかるということは、
上位がそのコードに依存し過ぎて、多岐にわたった影響があるという事。
つまり設計が悪い。
906 :
デフォルトの名無しさん :2013/09/23(月) 16:02:15.07
C++の場合は、テンプレートマジックに魅せられて翻訳単位を分割できなくなった 経験ある人が多いと思う〜
テンプレート遅いよね。 インスタンス別にオブジェクト分ければいいのにね。
909 :
デフォルトの名無しさん :2013/09/23(月) 18:27:50.57
コンパイルが遅く、実行が速い〜
基本的に動的言語の方が使い手のスキルが高いから(関数型言語を除く) 話が噛み合ってないね 最後は各自が感想を述べて終わってる
DynamicInvokeがあるから、それに対応した言語ならつぶし効くのかなと、javaでかきとうない。
このスレの奴らは自画自賛する傾向にあるあるからこの上なくキモい
914 :
デフォルトの名無しさん :2013/09/23(月) 21:20:25.91
Python 2らしいぞ おれ迷ってる。せっかくPython 3をインストールしたのに
そりゃDropboxの開発を始めた当初にPython3を使う選択はありえなかっただろうから仕方ない 今更移行しようと思ったらアホみたいなコストがかかるわけで それに見合ったメリットがあるとは思えん
Pythonで93万行もかけてあんなゴミ作ったのかよ・・・・ Linux C/アセンブラ 1700万行 Rails Ruby 10万行 jQuery JavaScript 1万行 Pythonはゴミだな
むしろjQueryみたいな小さなライブラリに1万行も必要な時点で JSのウンコさが際立っている
>>917 jQueryは大きいライブラリだと思うけど?
っていうか、じゃあ同じものを実装してみてというだけの話なんだが、
まあ自分にできないことを偉そうに言うのは恥ずかしいよね。
919 :
デフォルトの名無しさん :2013/09/23(月) 22:12:31.07
大きさを競いだした!
jQueryはコメントが腐るほど書かれているし、IE678というゴミの対応を廃止したら1000行減ったらしい
心配するな DropboxもRailsもjQueryも、お前らの作るゴミ作品に比べたら 遥か雲の上の存在だ お前らが比べてどうこう言える代物じゃない
>>921 俺達の作品がゴミならその素材のゴミなんじゃないの
JSはマジでコールバック地獄で可読性最悪だから 1万行も書いたら体感的にすげー巨大な印象になるだろうな
>>908 テンプレートのインスタンス化と、objファイルの話
jQueryに嫉妬してるのかw
>>920 ゴミ対応(ブラウザ間の差異吸収)こそがjQueryの本質だと思うが
IE678がゴミであることは否定しないが
>>926 それは認識が甘い。
JavaScriptというかDOM操作に関数型言語の
力を加えたのがjQueryの本質。
セレクタを使って、階層構造であるDOMを
リストの形に置き換えることで、関数型の操作が
できるようにしている。
ライブラリに対して嫉妬ってどういう意味? どんな発想したらそんな意味不明な発言出てくるんだ?
なんだ、またJS馬鹿が暴れてるだけか
今はブラウザ間の互換性も高くなって、 セレクタエンジンもDOMに標準搭載されている。 (getElementsBySelector) それでもなおjQueryが優れているのは 全てのa要素に対してclickイベントを割り当てるという 操作をjQueryならループ無しに記述できる所。 getElementsBySelectorを使ってもそれだけでは実現できない。
getElementsBySelectorじゃなくてquerySelectorだし、 forEachが使える今2,3行の関数作れば綺麗に同じことができるよ
・関数型風DOM操作ライブラリのjQuery ・関数型風汎用ライブラリのunderscore ・アロー関数 ・yield この4つが揃った時、JavaScriptは 最強のスクリプト言語になりそう。 あ、一番目はDOM使わないなら不要だけどw 今言われてる欠点は下二つで もうすぐ解決しようとしてるよね。
>>931 querySelectorだったか。普段使わないもんでなw
で、functionですら長いと言われているのに
forEachなんか使うのはもってのほかだってw
2,3行の関数作るよりも
jQueryを一行読みこめばそれで、
もっと多くの事ができるようになるんだし。
>>926 jQuery2.0からはゴミに対応することはやめたらしいよ
>>931 > forEachが使える今2,3行の関数作れば綺麗に同じことができるよ
そこからオレオレライブラリが生まれるんですよね。
jQueryを読み込むことすら憚れる場合はどうするの? かーっ!jQueryないと辛いわ−!かーっ! とか周りに撒き散らしてるの?
>>934 なんかわざと不正確に書いてるようだから
注釈入れとくわ。ごめんなw
jQuery は1.9系 と2.0系に別れた。
別れたと言っても基本的なコードは同じで
提供する機能は1.9系と2.0系で完全に同じ。
そして今後数年は1.9系と2.0系の開発は
並行して進んでいく。
何が違うのかというと古いブラウザへの対応のみ。
よくある「新しいバージョンでは古いブラウザへの対応は終了。
もう古いブラウザ用の開発は行いません」とはわけが違う。
古いブラウザへの対応は続くが、バージョン番号が違うという話。
>>936 > jQueryを読み込むことすら憚れる場合はどうするの?
しらん。
Perl、Ruby、PHP、Pythonを使うことすら
憚られる場合はどうするの?って聞き返したいぐらい。
知らんって言うしか無いだろw
それでjQuery使うと上の糞コードが綺麗になるの?
>>939 上のっていうのがさっぱりわからんが、
ライブラリを使える場面では、
ライブラリを使わないことに比べて綺麗になるのが
一般的と、当たり前のことを言っておこう。
何となくお前は、どんな場面でも使える
銀の弾丸的な最強のライブラリが存在するって言いかねないからw
>>940 さっきからコードも書かずにさいきょうのげんごと言い張ってるのがお前だろw
どうしたんだよw何予防線張り始めてるのw
jQueryの話してたんじゃないの? 言語の話? なんかいろいろごっちゃになってない?
>>944 ふん、やっぱりそうか。
> ・関数型風DOM操作ライブラリのjQuery
> ・関数型風汎用ライブラリのunderscore
> ・アロー関数
> ・yield
>
> この4つが揃った時、JavaScriptは
> 最強のスクリプト言語になりそう。
この4つってちゃんと書いていても、jQueryだけだと
読み違えるんだ。
そういうレベルの人だろうと思ったとおり。
取り敢えずこの流れ一流JSerの俺からしたらどちらの意見もおかしいから 次スレには持ち越すなよ
>>946 じゃあ前が噛みあわせろよ。
先に言ったのは4つそろったら
最強のスクリプト言語なるといった
俺の方だよ。
俺にレスするなら、お前が噛み合わせろ
配列を操作したら関数型風って、関数型の本質を完全に取り違えてるな
そして、オレオレ関数型の定義を
>>949 が始めます(苦笑)
952 :
デフォルトの名無しさん :2013/09/24(火) 01:07:25.06
キチガイばっかり
foreach ( box in boxes ) { foreach ( file in box.getfiles() ) { foreach ( list in file.getlists() ) { print list.header } } } が print boxes.getfiles().getlists().header って書けたら、それはとってもうれしいなって eachやmapなしってのはさすがに変態かねぇ
954 :
デフォルトの名無しさん :2013/09/24(火) 01:29:37.77
変態ですね〜
真面目な話、jQueryって普通に手続き型スタイルのライブラリだよね
違うよ
関数型言語が大得意にしてる無限リスト・遅延ストリームのお題に グチグチ文句つけた挙句、時間かけて出てきたコードもクソだったので JSerが関数型云々言っても全く信用出来なくなった
クソなコード書いて悪かったね
geekってのは生産者なのか消費者なのか
javaとjavascriptの重要性が強調されるなかで、 nashornが諸手を挙げて優遇されないところに、 言語としてのjavascriptに構文上の限界を感じる。
触っちゃいけないタイプのキチガイが増えたね
規制解除で出てきたんだろうな
底の浅いJS推しが増えて、タイトル改悪したスレが立つようになった頃から ずっと変な奴が住み着いてるよ
宣言を改悪されるくらいなら宣言しないほうがマシという考え方がある
>>960 構文上の限界を、具体的に言えないでしょ?w
無理矢理な屁理屈つけるのやめなよ
恥ずかしいから。
次からJSは抜きで。 コードは書けんわ、屁理屈こねるわ、 糞の役にも立たんくだらん仕様談義でレス浪費するわでかなわんわ
>>965 protectやprivate,アクセッサ、オペレータのオーバーロード辺りすらないじゃん
rubyとjavascriptの2つを同時に選択できるとき、わざわざjavascriptでOOPなコードなんて書きたくないし
コーディング規約のレベルでOOPなコードが書けても、そんな規約なんか覚えたくないでしょ?
アクセサはあるだろ どっかのJS厨がほざいてる夢物語じゃなくて今現実に十分使えるぞ
>>966 コード出てるだろ。
なんで自分に都合の悪いことは
見えないんだろうな。
そもそもお前がしきった所で
誰もいうことは聞かない。
>>967 JavaScriptはプロトタイプベースのオブジェクト指向。
っていうかそういうなら、同じ理由で
Perlも当然、アウトなんだよな?
privateない。オブジェクト指向じゃない。
>>971 どれか一つ。どれであるかは意味があるとは思わないので答えない。
で、この質問は重要な事なのか?
ES6 private ES5 アクセサ ES7 演算子オーバーロード
>>972 具体的に答えたら、「あ、それ俺が書いたよ」ってヤツが出てきちゃうもんね
でもそうやってぼかした答えなら大丈夫だね
>>974 あぁ、それが魂胆か。
たしかに、偽物が「俺が書いたやつだ」っていう可能性あったな。
ぼかして正解だったようだ。
意図がわからない質問は罠だと思ったほうがいいね。
自演が激しすぎてもう・・
>>977 くそこーどwwwww
これでいいですか?
お前がやるんだろうなと
思った低能な行動w
新しいお題振ってくれるなら助かるけどさ、 ずっどただ喧伝してるだけならほんともう出て行ってもらえませんかね
>>979 クソコードなのは自他ともに認めてるよ
でも、ちゃんとJSも書いたよ
勿論代表としてじゃなくて、1つの例として書いたから、
他のJSコードがどんどん出てきて埋もれるのが本望だったけど
自分でお題出せばいいだろ。 なんのこいつ?
>>981 別にお前にどのコードを書いたのか聞いてねーし、
答えたからってどうすりゃいいのさ?
知らんよ。
>>983 自分がいる限りちゃんとお題に対してのJSコード書き続けるから
JavaScriptを認めてねってこと
>>982 どういう解釈したらお題を出せって言ってる事になるのさ・・
>>985 だから、このスレにいたいなら
お題を出せって、俺が言ってるんだよ。
987 :
デフォルトの名無しさん :2013/09/24(火) 23:44:38.28
>>986 もう意味わかんねえよ
ほんと疲れるわあんた
>>987 お前が、難しく考えるからだろw
2ちゃんねるは誰でも自由に参加できる掲示板
以上。
お題:2^32までの回文数の数を計測しなさい
また言語は関係ない問題か。 アルゴリズム考える問題じゃねぇか。 まあいいけどさ。
クズだなほんと・・
次スレどっち?
42948 + 99999 - 9 で 142938個 ?
定数式で出ちゃいそうだな
JSerの考えつくお題なんてせいぜいそんなもんだろう
埋め
本当にJavascriptを使っている人が憎くて憎くてたまらない病気の人が 一人いるみたいだね
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。