トップページ⇒tech
1001コメント270KB

静的型付け言語の潜在開発生産性は今の100倍 ×2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/06(日) 00:30:02.59
人間がやっていたことを、コンピュータにやらせる。
これが生産性を上げる最大の方法。
コンピュータは間違わない、同じ事を何度も高速に行える。

その為に、コンピュータがコードの意味を正確に
認識できる方法が必要。実行しないとわからないことは
コンピュータは認識できない。

すなわち静的型付け言語であれば、実行しなくてもわかるので
コンピュータが理解できる。そうすれば様々な
コンピュータの高度な情報支援が得られる。

コンピュータのバックアップを受け、人間の生産性は
限りなく向上する。

静的型付け言語の潜在開発生産性は今の100倍
http://toro.2ch.net/test/read.cgi/tech/1362302249/
0002デフォルトの名無しさん2013/10/06(日) 00:35:23.66
おっつっつ
ポジティブな話題話そうぜ
0003デフォルトの名無しさん2013/10/06(日) 05:59:07.15
で、何なんだったんだあのJS馬鹿は
0004デフォルトの名無しさん2013/10/06(日) 06:05:38.89
JSが嫌いで憎くてたまらないんだろうさ。
0005デフォルトの名無しさん2013/10/06(日) 06:51:40.72
クロージャは関数外の変数を参照できる必要はあるけど、書き換えられる必要は無い

JSerはJSが関数型を取り込んでるとか云うわりに、関数型について無知すぎる
0006デフォルトの名無しさん2013/10/06(日) 12:12:29.38
> クロージャは関数外の変数を参照できる必要はあるけど、書き換えられる必要は無い

無知発見w

書き換えられないと駄目だし、その他の言語も全て書き換えられる。
0007デフォルトの名無しさん2013/10/06(日) 12:17:59.68
それ以前にだな、
JS馬鹿の
外のスコープを参照可能であることとvarのセマンティクスが腐っている事を
混同したアホな議論にいつまで付き合ってやるんだ?
0008デフォルトの名無しさん2013/10/06(日) 12:37:02.05
>varのセマンティクスが腐っている

具体的に
0009デフォルトの名無しさん2013/10/06(日) 12:49:06.19
>>6
>書き換えられないと駄目だし、その他の言語も全て書き換えられる。

Haskell
0010デフォルトの名無しさん2013/10/06(日) 13:08:41.57
>>9
Haskellは純粋関数型言語なので
変数の書き換えそのものがないだけ。
0011デフォルトの名無しさん2013/10/06(日) 13:11:18.52
「その他の言語も全て書き換えられる」と
言ったからダメなんだろ。

変数を書き換えられる言語であれば、
すべての言語がクロージャーから
クロージャー外の変数を書き換えれられる。
0012デフォルトの名無しさん2013/10/06(日) 13:12:17.57
>>5
> JSerはJSが関数型を取り込んでるとか云うわりに、関数型について無知すぎる

関数型を取り込む ≠ 関数型言語

ですよ?

いつ関数型言語になったといいました?
0013デフォルトの名無しさん2013/10/06(日) 13:30:25.98
完全論破された後のJSerの言い訳ワロス
無知すぎる
0014デフォルトの名無しさん2013/10/06(日) 13:37:44.00
OCamlも再代入はめったに使わない
0015デフォルトの名無しさん2013/10/06(日) 14:52:09.19
関数型言語の低レベルのメリットっていうのは純粋関数型言語でしか得られない
JSの場合関数型「スタイル」っぽくも書けるってだけのこと
0016デフォルトの名無しさん2013/10/06(日) 16:28:55.18
JSerの場合、関数型スタイルの事これっぽっちも分かってないと思うよ
まさかコールバック地獄を関数型スタイルだと思ってんの?
0017デフォルトの名無しさん2013/10/06(日) 16:52:19.10
JSを叩けなくなったら今度は架空のJSer叩きっすか……
凄い執念だぁ
0018デフォルトの名無しさん2013/10/06(日) 17:12:15.39
関数スコープ外の変数を上書き出来ないと困るー
めっちゃ頻繁に上書きしたいわー
上書きにvarとか必要になったら面倒でプログラミングにならんわー
ってのがJSerの主張でしょ?
0019デフォルトの名無しさん2013/10/06(日) 17:17:42.53
>>18
架空のJSer叩きっすかw
0020デフォルトの名無しさん2013/10/06(日) 17:22:56.54
関数スコープ外の変数をあまり上書きしないなら
varを付けた場合と付けない場合の振舞いは
逆の方が良いね
0021デフォルトの名無しさん2013/10/06(日) 17:40:17.18
>>20
意味がわからん。

varって変数宣言だぞ?

varを付けた時と付けない時が反対って、
お前、 varを付けなかったら、
変数宣言してないのに
変数が勝手に宣言されるってことか?

変数名間違ってもエラーにならないってことなんだが。
0022デフォルトの名無しさん2013/10/06(日) 17:42:40.03
IDE使わんの?
未使用変数をリアルタイムで色付けしてくれるタイプの
0023デフォルトの名無しさん2013/10/06(日) 17:45:51.65
varを付けなくても勝手に宣言されるとしたら、
名前間違ったら、未使用変数ではなくなってしまうよな。
0024デフォルトの名無しさん2013/10/06(日) 17:46:39.23
んなことないよ
よく考えろよ
0025デフォルトの名無しさん2013/10/06(日) 17:49:07.12
最初に一回宣言しただけで
他から一度も参照されてない変数に色付けする機能があるんだよ
varとか関係なく、便利
0026デフォルトの名無しさん2013/10/06(日) 17:50:00.56
例えばこういうこと。

var i, j;
k=123;

スペルミスでkという名前を使ってしまった場合、
varを付けたとき変数宣言されるならば、
宣言されてないkを使っている・・・スペルミスだろうと警告できる。

だけどvarを付けなくても変数宣言される場合は、
kを使ってるから、kは未使用ではない。
なんの問題もないと判断してしまう。
0027デフォルトの名無しさん2013/10/06(日) 17:50:11.33
グローバルに変数ができちゃうことが問題なわけでそれ以外は問題ない
よってvarとかそういうもので何か変わるもんでもない
0028デフォルトの名無しさん2013/10/06(日) 17:50:47.84
>>26
>>25を読んでね
0029デフォルトの名無しさん2013/10/06(日) 17:54:21.82
JavaScriptにはevalやグローバル変数のハッシュアクセスがあるんだからそれは無理
0030デフォルトの名無しさん2013/10/06(日) 17:55:03.85
>>28
二回間違ったらアウトじゃん?
0031デフォルトの名無しさん2013/10/06(日) 17:56:17.66
そうなんだ、残念だね
0032デフォルトの名無しさん2013/10/06(日) 17:56:35.64
>>27
グローバルに変数ができることなんて無いよ。

>>29
だよね。ソースコード上は変数が一回しか使われてないように見えても
使っていることだってあるし。

たぶん動的言語を知らないから
思いつかないんだろうな。
0033デフォルトの名無しさん2013/10/06(日) 17:57:31.79
>>30
最初の一回目でリアルタイムで色が付くのに、
それに気付かずに二回目も間違えるの?
0034デフォルトの名無しさん2013/10/06(日) 17:57:43.66
は?
x = 1
ってやったらもろxはグローバル変数だろうが
0035デフォルトの名無しさん2013/10/06(日) 17:58:44.93
>>29
関数スコープの変数宣言の話じゃないの?
0036デフォルトの名無しさん2013/10/06(日) 18:01:15.44
>>34
ちゃんと読んでよね。

$ cat a.js
"use strict"
x = 1;

$ node a.js
x = 1;
^
ReferenceError: x is not defined
at Object.<anonymous> (/tmp/a.js:3:3)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
0037デフォルトの名無しさん2013/10/06(日) 18:02:00.42
>>32
型が動的でもスコープはレキシカルって言語も多いよ
あんまりダイナミックスコープを採用してるメジャー言語って無いんじゃない?
Perl(両方使える)とかEmacs Lispくらい?
0038デフォルトの名無しさん2013/10/06(日) 18:02:30.53
変数がどこのスコープに属してるのか解析するのはかなり大変だと思うぞ
そんじょそこらのエディタのプラグインじゃないだろうし
これからもできないだろう
なんだかんだ言ってやっぱりJSはコンパイルが要らないことを活かして
トライアンドエラーで、ブラウザのコンソールを使ってデバッグしていくしかない
エディタの超高度な支援に期待するのは話がうますぎる
0039デフォルトの名無しさん2013/10/06(日) 18:03:55.16
ブラウザのコンソールってお前・・・。

ブラウザにはデバッガが内蔵されていることも知らんのか?
ブレークポイントもステップ実行もできるぞ。
0040デフォルトの名無しさん2013/10/06(日) 18:04:11.07
>>36
お前こそちゃんと読めよ
strict modeじゃない場合の挙動で
varの効果を逆にすればいいみたいなこと言う輩に言ったんだよ
0041デフォルトの名無しさん2013/10/06(日) 18:05:17.38
>>40
今はstrict modeがデフォです。
今ではとっくに解決してしまった、
昔の話をいつまでしてるんですか?
0042デフォルトの名無しさん2013/10/06(日) 18:06:13.56
さすがにuse strictじゃない挙動は論外だろ……
0043デフォルトの名無しさん2013/10/06(日) 18:06:19.72
>>39
バカはお前だ
当然それも含んでデベロッパーツールのことをIDEとかと対比して分かりやすくコンソールと読んでるいるに決まってるだろうが
言葉の揚げ足取りやめろよ
0044デフォルトの名無しさん2013/10/06(日) 18:06:32.40
馬鹿「varの効果を逆にすればいい(どやっ)」

天才「strict modeをONにすればいいじゃないですか( ゚∀゚)アハハハハ八八ノヽノヽノヽノ\/\ 」
0045デフォルトの名無しさん2013/10/06(日) 18:07:10.95
>>43
コンソールの意味もしらんの?

GUIのデバッガを
お前はコンソールって言うわけ?
0046デフォルトの名無しさん2013/10/06(日) 18:07:31.60
>>41
日本語分かんないのか?
話が噛み合ってないぞ
0047デフォルトの名無しさん2013/10/06(日) 18:08:19.24
良く使う&より危険でない操作の方を短く書けるべきだよね?って話でしょ
全然別の問題が並行して議論されてるんですよ
0048デフォルトの名無しさん2013/10/06(日) 18:08:39.55
>>43
お前の場合、GDB(デバッガ)をIDEじゃないからという理由で
コンソールっていいそうだなw
0049デフォルトの名無しさん2013/10/06(日) 18:09:27.39
>>45
言葉尻を捉えるのはもういいから
勘違いしてた、ごめんねでいいだろ
0050デフォルトの名無しさん2013/10/06(日) 18:10:13.76
コンソールはデバッガじゃないですよ。
勘違いしてたごめんねって誤るのはまだ?
0051デフォルトの名無しさん2013/10/06(日) 18:11:00.41
JavaScriptがどうのこうのこのスレで語ることじゃない
ここ行け
http://toro.2ch.net/test/read.cgi/tech/1379350030
0052デフォルトの名無しさん2013/10/06(日) 18:11:40.68
>>50
誤りでした
勘違いしてたごめんね
0053デフォルトの名無しさん2013/10/06(日) 18:12:51.92
>>51
そっちはJS厨に乗っ取られた
0054デフォルトの名無しさん2013/10/06(日) 18:15:02.48
過疎スレでJavaScriptが一番話題に事欠かないってだけでしょ
ここでもそうだけど
0055デフォルトの名無しさん2013/10/06(日) 18:23:49.46
>>38
evalとかバイトコード書き換えを使う場合を除けば
解析できると思うけどねぇ
eval使って解析できないのは自己責任と割り切る
0056デフォルトの名無しさん2013/10/06(日) 18:28:02.40
一応メモ帳でも書ける言語なんだからエディタに期待するのは
言語仕様検討外だからなあ
一応実行時のデバッグサポートについては沢山仕様で入ってるけど
そりゃあ不可能ではないが
JSLintやHintでさえ異常な認識したりするし、現状絵に描いた餅だなあ
0057デフォルトの名無しさん2013/10/06(日) 18:33:30.28
>>54
すげえプラス思考
0058デフォルトの名無しさん2013/10/06(日) 18:38:44.38
LListの場合はサーバサイド−クライアントサイドとして見た時
もしくはそうじゃなくても日常的にWebは皆触れてるし、
大企業が絡んでるのも合って公平に見てもJSが最も話題にしやすい言語かと
HTML5とES6の勧告が来年に控えてる今だからってのもあるけど
0059デフォルトの名無しさん2013/10/06(日) 18:42:00.43
単純にJavaScriptを使っている人が多いのと、サーバーサイドでは別の言語を使っていて
クライアントでJavaScriptを使う、みたいな人が多いだろうから他の言語との比較で色々
話題や不平不満も出てくるんじゃ無いのかな。

言語Aでの作業から言語Bへの作業にスイッチした時に「言語Aではxx出来るのにむき〜」
と感じる場面が自分は時々あるけれども、JavaScriptも例外じゃない。
0060デフォルトの名無しさん2013/10/06(日) 18:47:10.91
Webは日進月歩だしJSの仕様実装もLivingStandardだしね
WebAPIを含めれば毎日何らかの新しいことがあるだろう
個人的にはやっぱりES6で歴代のバージョンUPと比較できないほど
大きく変わるっていうのにワクワクしてる
0061デフォルトの名無しさん2013/10/06(日) 18:51:15.38
俺も土管として使いやすくなりそうでワクワクしてる
0062デフォルトの名無しさん2013/10/06(日) 18:56:44.77
ProxyやReflectionが入ったから色んな代替言語が作りやすくなるだろうね
0063デフォルトの名無しさん2013/10/06(日) 19:04:14.60
なかっち 動画
http://www.youtube.com/watch?v=z2qK2lhk9O0s



みんなで選ぶニコ生重大事件 2012
http://vote1.fc2.com/browse/16615334/2/
2012年 ニコ生MVP
http://blog.with2.net/vote/?m=va&;id=103374&bm=
2012年ニコ生事件簿ベスト10
http://niconama.doorblog.jp/archives/21097592.html


生放送の配信者がFME切り忘れプライベートを晒す羽目に 放送後に取った行動とは?
http://getnews.jp/archives/227112
FME切り忘れた生主が放送終了後、驚愕の行動
http://niconama.doorblog.jp/archives/9369466.html
台湾誌
http://www.ettoday.net/news/20120625/64810.htm
0064デフォルトの名無しさん2013/10/06(日) 19:56:54.77
Reflectってどういう時に使ったらいいんかね?
0065デフォルトの名無しさん2013/10/06(日) 21:36:18.25
Javascriptの生産性が低すぎる件ですが
どうやったら解消できますか?
0066デフォルトの名無しさん2013/10/06(日) 21:44:34.02
具体的には?
というか言語の生産性にそこまでの差なんて無いと思うけど
それDOMがつまらないってだけじゃない?
もちろんスクリプト言語なんだから環境によってぜんぜん違う
UnityのJavaScriptなんてまるっきり別物だし
0067デフォルトの名無しさん2013/10/06(日) 23:16:15.44
>>1
>静的型付け言語の潜在開発生産性は今の100倍

なるほど、今の静的型付け言語は、動的言語の/100の能力って事だな。
スレタイは一見、静的言語を褒めてるように見せてるけど、実は動的言語(´∀`∩)↑age↑なんだよね。
当面は動的が有望と。
0068デフォルトの名無しさん2013/10/06(日) 23:28:34.07
単純に考えて実行環境は
コア数が増えサンプリング推論技術が高まるほどより動的な言語に有利
0069デフォルトの名無しさん2013/10/06(日) 23:33:52.61
>>67
> >静的型付け言語の潜在開発生産性は今の100倍
>
> なるほど、今の静的型付け言語は、動的言語の/100の能力って事だな。

なんでこんなに馬鹿なんだろう?
論理学の勉強したこと無いのかな。

馬鹿にも分かりやすくたとえてあげよう。

フリーザ「私の戦闘力は今の100倍だ」
ヤムチャ「ということは俺の1/100の戦闘力って事だな」
0070デフォルトの名無しさん2013/10/06(日) 23:35:00.24
世代じゃないから分からん
とある辺りで例えてくれ
0071デフォルトの名無しさん2013/10/06(日) 23:41:08.74
世代じゃないって、60代以上か?
でも俺の親でも知ってるし、
だとしたら、70代以上か?
0072デフォルトの名無しさん2013/10/06(日) 23:43:17.61
20だ
0073デフォルトの名無しさん2013/10/06(日) 23:44:59.16
頭が悪いからJSしか使わない
動的言語なんて他にもいろいろあるのに
0074デフォルトの名無しさん2013/10/06(日) 23:47:39.68
こりゃまた頭が悪そうな台詞だ
0075デフォルトの名無しさん2013/10/06(日) 23:54:31.22
ほらな
本当に一つしか知らないからこんなレスにも反応してしまうし、
そう思考停止してるから与えられた環境で満足してしまう

それがJS使いの平均だと思われるのが本当に残念だ
0076デフォルトの名無しさん2013/10/06(日) 23:55:41.09
>>75
お前誰にレスしてるんだ?
いきなり出てきてわけのわからんこと言うなよ。
お前の人間性が問われるところだぞ。
0077デフォルトの名無しさん2013/10/07(月) 01:16:50.67
とりあうな
0078デフォルトの名無しさん2013/10/07(月) 01:46:28.22
>>69
100倍もあるなら何故すぐ発現させないんだ?ってところだろ。
いつまでたっても発現しない「潜在性」に縋るのは単なる厨か信者だしな。
0079デフォルトの名無しさん2013/10/07(月) 01:50:00.70
民主の潜在可能性は自民の100倍!
株価は3倍、国民所得は2倍に!
0080デフォルトの名無しさん2013/10/07(月) 09:12:15.81
>>78
> 100倍もあるなら何故すぐ発現させないんだ?ってところだろ。
ツールとか技術がまだ確立されてないから。
すぐに出来ると思うなよw
0081デフォルトの名無しさん2013/10/07(月) 09:19:38.08
どの辺りに伸び代があるの?
と建設的な質問をしてみる
0082デフォルトの名無しさん2013/10/07(月) 11:05:44.53
データベースとモデルクラスが一体化すれば楽になる
DDLを定義変更したら自動でモデルクラスが再生成されるとか

もう既にあるんだろうけど
0083デフォルトの名無しさん2013/10/07(月) 15:24:23.75
その辺りはもはや言語と言うよりフレームワークの問題では?
そもそも言語にそんな差があるとは思えない
純粋関数型は特殊さがいろいろあるけど、静的か動的かくらいでねぇ
0084デフォルトの名無しさん2013/10/07(月) 16:44:03.54
>>80
じゃあ動的言語も、ツールとか技術が確立されたら、静的言語を軽く超えるな。
0085デフォルトの名無しさん2013/10/07(月) 18:39:43.99
>>64
ポリフィルに凄い大活躍すること間違いなし
0086デフォルトの名無しさん2013/10/07(月) 20:06:59.73
もう型推論でも使ってろ
これで静的も動的も仲良くなれる
0087デフォルトの名無しさん2013/10/07(月) 20:39:00.13
JavaScriptの著名なエンジンは型推論してるじゃん
0088デフォルトの名無しさん2013/10/07(月) 20:54:13.50
TypeScriptのあまりに御粗末な型推論を見る限り
JavaScriptの型推論には期待出来ない
0089デフォルトの名無しさん2013/10/07(月) 21:14:41.66
TypeScriptの型付けはコンパイル時エラーを出すためのもので
実行時には何の効果も及ぼさないよ
JSのエンジンの型推論は普通に協力
だからこそあの速度を維持できるんだからね
0090デフォルトの名無しさん2013/10/07(月) 21:37:40.21
真面目な話、実行時プロファイルに比べたら効果は微々たるもの
0091デフォルトの名無しさん2013/10/07(月) 21:42:52.87
仮に実行時に効果を及ぼせたとしても、
簡単に数値化と文字列を間違えるようなウンコな型推論じゃ
全く効率的では無いだろうね > TypeScript
0092デフォルトの名無しさん2013/10/07(月) 21:57:02.85
文字列と数値の間違いなんて無い
0093デフォルトの名無しさん2013/10/07(月) 22:00:54.71
馬鹿なんだから、確かめもせずに無いとか書くなよ
>>6で知ったかして恥かいたばかりだろJSerは
0094デフォルトの名無しさん2013/10/07(月) 22:02:46.11
今のCPUじゃ32bitや64bitが扱いやすいんだから
オーバーフローが気になる固い数値型は要らなくて
JSとかDartとかみたいに自動スケーリングのほうがいいと思う
0095デフォルトの名無しさん2013/10/07(月) 22:04:43.82
>>93
エディタの表記が間違うのはエディタのせいであって言語の間違いではない
全てはTSの仕様通りですがなにか?
0096デフォルトの名無しさん2013/10/07(月) 22:08:49.19
これを貼れば良いんだよねw

> function g() : number { return ((x,y) => x + y)(1, "Hello World"); }
> の戻り値は "1Hello World"
0097デフォルトの名無しさん2013/10/07(月) 22:19:23.80
それ型推論関係ないし
TypeScriptの型指定は実行時は関係ない
IDEのサポートのためのものでしかない
0098デフォルトの名無しさん2013/10/08(火) 00:24:47.80
>>84
> じゃあ動的言語も、ツールとか技術が確立されたら、静的言語を軽く超えるな。

それはないよ。

動的言語の定義により、
「実行するまで状態が確定しない」

故に実行前に知ることが出来ない情報が多い。
0099デフォルトの名無しさん2013/10/08(火) 01:24:19.23
コンパイルが要らないから
実行時も開発環境に気楽に入れれるから
状況が違う
0100デフォルトの名無しさん2013/10/08(火) 01:38:39.24
>>99
おいおい、実行って一度実行すれば
いいってもんじゃないぞ。

実行しないと状態が確定しないというのは、
一度実行しても違う実行パターンがあるならば
状態が確定しないということだ。

すべての実行パターンなんて、想定不可能なわけで
事実上いくら時間があっても、状態は確定しないってことだぞ。
0101デフォルトの名無しさん2013/10/08(火) 01:42:04.10
コンパイル時間なんて実行時間に比べりゃ
微々たるもんよ。
■ このスレッドは過去ログ倉庫に格納されています