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

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

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

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

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

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

前スレ
静的型付け言語の潜在開発生産性は今の100倍 ×3
http://toro.2ch.net/test/read.cgi/tech/1382656209/
0153デフォルトの名無しさん2013/11/08(金) 19:52:08.63
正義を実行できる言語はJavascriptだけ。
0154デフォルトの名無しさん2013/11/08(金) 20:09:32.19
え、Math使うほうが遅いんなら標準のMathがある意味0じゃね
0155デフォルトの名無しさん2013/11/08(金) 20:17:44.70
Mathはほぼネイティブで実装されててるから早くて当たり前
あとこれからのMathは最適化の重要な情報の付加も期待されている

var floats = new Float32Array(calc())

floats[0] = floats[1] + floats[2] //最適化容易

floats[0] = floats[1] + floats[2] + 1 //最適化困難

floats[0] = Math.fround(floats[1] + floats[2]) + 1 //最適化容易
0156デフォルトの名無しさん2013/11/08(金) 21:48:03.21
>>152
Math使わないで何をどうやる話?
0157デフォルトの名無しさん2013/11/08(金) 21:56:48.41
JSはCの二倍速いので、JSで書き直したほうが高速化するというお話。
0158デフォルトの名無しさん2013/11/08(金) 21:59:44.06
いやいや100倍な
0159デフォルトの名無しさん2013/11/08(金) 22:10:48.65
うそつけ!100倍も速いわけない!
せいぜい3倍程度だろ。
0160デフォルトの名無しさん2013/11/08(金) 23:01:06.08
100倍とまではいかないがC++の20倍高速だね
http://nothingcosmos.blog52.fc2.com/blog-entry-155.html
0161デフォルトの名無しさん2013/11/08(金) 23:24:44.74
特定のコードに限って20倍って話ならどうでもいいよ。
アプリ全体で考えるのが普通だからさ。
0162デフォルトの名無しさん2013/11/08(金) 23:28:25.97
このネタ飽きた。
0163デフォルトの名無しさん2013/11/08(金) 23:38:21.67
>>161
お前の基準なんか誰も興味ないからわざわざここに書かないでくれ
スレが汚れる
0164デフォルトの名無しさん2013/11/09(土) 00:28:22.15
はいはい今JSerは場違いだから。
大規模計算の分野で広くバリバリ使われるようになってから顔を出そうね。
0165デフォルトの名無しさん2013/11/09(土) 03:13:18.77
このスレではJavaScriptの話はすべてネタと化す
0166デフォルトの名無しさん2013/11/09(土) 04:11:52.17
未来の話か実績の伴わない話ばかりだからな > JS
0167デフォルトの名無しさん2013/11/09(土) 05:05:20.13
>>149
このレス一つで本来のOOPをまるで理解していないのがわかる
0168デフォルトの名無しさん2013/11/09(土) 06:10:28.31
どうせJS以外はことごとく本来じゃないという方向に持って行きたいだけだろうさ。
0169デフォルトの名無しさん2013/11/09(土) 11:31:53.25
そもそもスレタイのテーマが一切話し合われないネタスレなんだから
ネタは多ければ多いほど馬鹿騒ぎできていいじゃない
0170デフォルトの名無しさん2013/11/09(土) 17:16:44.32
JSは正義なんで。
正義に文句があるということは、お前が悪ってこと。
0171デフォルトの名無しさん2013/11/09(土) 17:23:35.58
>>170
JavaScriptってJavaScriptで実装されてんのかな?
RhinoはJavaだけど、Node.jsはNode.jsで実装されてんの?
正義ならそうするの?
0172デフォルトの名無しさん2013/11/09(土) 17:27:51.27
RubyってRubyで実装さ(ry
0173デフォルトの名無しさん2013/11/09(土) 17:40:00.17
>>172
Rubyもセルホスティングなんだっけか?Pythonは聞いたことあるが。
0174デフォルトの名無しさん2013/11/09(土) 17:46:56.08
所で、実装言語をその言語でやることで
何かいいことあるの?
0175デフォルトの名無しさん2013/11/09(土) 17:50:06.38
あ、ごめん。質問を変えるわ。
なにか良いことあるの?ではなく
なにか良いことあったの?にする。
0176デフォルトの名無しさん2013/11/09(土) 17:59:25.24
ネットスケープはCSSの解釈をJSでやっていた。

当時の技術でスタイルシートの解釈は非常に難しく、IEは凝ったCSSサイトを
正常に表示できず、ブラウザごと落ちてしまうことが多かった。
時にはOSごと落ちてしまうことすらあった。

しかしながら、ネットスケープはJSのパワーを生かし見事なCSS解釈をやってのけた。
CSSを避けながら閲覧しなければならないIEを後目に着々とシェアを伸ばしたのである。
0177デフォルトの名無しさん2013/11/09(土) 18:14:16.33
そんなうそで騙されるぐらい過去の話のなのかw

ネットスケープはひどかったな。CSSを有効にすると落ちるから
無効にするのが常識だった。

http://softark.net/articles/m-0002.html

Netscape の惨状
びっくりした。Netscape は、いったいいつの間にこんな惨状に陥ってしまったのだろう。

ひどいもんだ。スタイル・シートを使っているページは、これでは見る気がしないだろう。
画像と文字が重なるわ、画像同士が重なるわ、テーブルの罫線が見えないわ、
センタリングした筈の区画が左端に寄るわ、もう、ぐちゃぐちゃである。

いや、ぐちゃぐちゃと言ったが、画像も入れず、TABLE も入れず、float も使わなければ、
特に大きな問題は無いようだ。つまり、こういう文章だけのページは、ほぼ問題ない。
IE で見るより、少々しょぼいと言うか、不細工な感じがするが、多分、気のせいだろう。

しかし、画像を入れると、途端におかしくなる。たとえば、楽しい日記の2月14日。たとえば、
裏夜食日記の2月12日。また、たとえば、偽偽夜食日記の2月19日。float させていなくても、
おかしくなる。画像が文字を隠したり、画像同士が重なったり、要するに、絵日記は全滅の態である。

line-heightがあるとIMGもそれだけしか改行されないのだと風の噂【謎】に聞く。
やってみると、その通りだった。で、スタイル・シートを少々修正。しかし、依然として
float させるとうまく行かない。二行目からは回り込むが、一行目が必ず画像の下に隠れてしまう。
しかも、外部スタイル・シートでなく HTML 内で float を指定すると、これはこれで挙動が異なって、
何かヘン。では、というので、非推奨の align 属性で回り込みを指定すると、画像の下端を超えても文字列のコラム幅が復元しない
(回り込みが解除されない)。どうなってんのか、ワケワカメだ。いや、バグリまくりだ。もう、わしゃ、知らん。

Master Compatibility Chart というので見ても、Netscape の対応は Microsoft に比べて随分遅れているようだ。
また、float や clear は特に実装が難しい所なので、ブラウザによらずバグが多いようだ。
ただ、IE 5 はかなり良くなった、とも書かれている。
0178デフォルトの名無しさん2013/11/09(土) 18:15:37.34
http://www.wdic.org/w/TECH/Netscape%20Navigator

バグ
Netscape Navigatorは、数え切れないほどの意味不明な
バグを抱えるソフトウェアであった。

まだNetscape Navigator在りし頃、当時の厨房がInternet Explorerを
叩くのにセキュリティなどのソフトウェア面のバグをよく指摘していたが、
自分の用いているNetscape Navigatorについては見てみないふりをしていたらしい。

Netscape Communicator 4頃のバグにはかなり酷いものが存在し、
例えばスタイルシート(CSS)におけるline-heightのバグでレイアウトが異常になる、
日本語などのマルチバイト文字のフォント指定をするとCSSの指定自体が無効となる、
といったものがあった。必要最低限のレベルでさえ使い物にならない状態であったため、
ここからNetscapeは徹底的に叩かれることになる。
0179デフォルトの名無しさん2013/11/09(土) 18:16:54.47
http://www.marguerite.jp/Nihongo/WWW/Introduction/Note-HowToCSS.html

ネットスケープ 4.xのCSS処理は非常に問題が多いです。
この問題点を挙げるとそれだけでサイトが一つ作れてしまうほどです。
ここでは、ネットスケープ 4.xで問題が起こり難くする方法について解説しましょう。

ネットスケープ 4.xに関しては考慮しないと言うのが一番簡単な方法ですが、
だからと言ってネットスケープ 4.xで問題のあるスタイルシートをそのまま取扱わせるのは好ましくはありません。
最悪の場合、ネットスケープ 4.xがクラッシュする事もあるからです。

そこで、ネットスケープ 4.xではCSSを取扱わせないのが一番無難な方法です。
スタイル定義ファイルをネットスケープ 4.xで当てないためには、そのスタイル定義ファイルに
関する<link>要素にscreen値以外の値を入れたmedia属性を当てるだけで実現します。
具体的には以下の通りになります。
0180デフォルトの名無しさん2013/11/09(土) 18:20:19.37
netscapeの古いバージョンはここで落とせるよ。
http://www.oldapps.com/netscape.php

4とかのバージョンは本当にひどくて
多分Googleなんか落ちると思うよ。
落ちなくても10ページも見れないんじゃないかな?
見れないとか崩れるとかじゃない。落ちるんだよ。

ぐれぐれも、仮想マシンに入れること
0181デフォルトの名無しさん2013/11/09(土) 18:22:50.60
ネスケが落ちるのはWindowsが不安定だからです。
Linuxなら落ちません。
0182デフォルトの名無しさん2013/11/09(土) 18:26:38.11
NetscapeはLinuxで使うとOSごとフリーズさせるからひどかったよね。

http://his.luky.org/ML/linux-users.4/msg01985.html
Slackware3.5+PJE0.1.5でNetscape Communicatorを使ってるときに
フリーズが頻発するため困ってます。パソコン自体が完全に固まって、
Telnetでほかのパソコンからのアクセスも受け付けなくなり、リセット
ボタンを押さざるを得なくなります。
0183デフォルトの名無しさん2013/11/09(土) 18:33:17.60
Netscapeは2000年ころまで使ってたけどそのご激重になってMozillaに乗り換えた記憶がある。
0184デフォルトの名無しさん2013/11/09(土) 18:38:16.94
>>182
あほ
ユーザプロセスで落ちるかヴォケ
0185デフォルトの名無しさん2013/11/09(土) 18:42:16.92
じゃあ、Linuxが悪いっていうのかよ!
0186デフォルトの名無しさん2013/11/09(土) 19:20:12.65
>>171
V8はエンジンの中ではJavaScriptの度合いがかなり多い方
複雑な部分、例えばDateとかはJSでよく書かれてる
もともとESの企画中の内部関数が結構抽象度高いので
JSで実装するのには向いてる

Node.jsももうかなりJS
Socket、Event、Bufferの3本柱はネイティブだけど
その周りの肉やら何やらはほぼ全部JS

>>176
JSのCSSパーサは今になってまた需要が出てきてる
https://github.com/NV/CSSOM
0187デフォルトの名無しさん2013/11/09(土) 19:27:53.54
>>184
普通に落とせるよw
べつに変なこと考えなくても、例えばリソースを完全に食いつぶすだけでもクラッシュするからね
0188デフォルトの名無しさん2013/11/09(土) 19:51:25.61
へー、ネスケはLinuxのリソースを完全に食い潰すバグがあったとでも言うのかなー?

世の中には本当に手に負えないバカがいるんだなw
0189デフォルトの名無しさん2013/11/09(土) 20:05:02.69
まあ、なんにせよ。ネスケ4の時代は暗黒で、
ゴミと言われて反論できないブラウザだったよな。
0190デフォルトの名無しさん2013/11/09(土) 20:10:45.36
かといってIEを持ち上げる気にもならんけどな
0191デフォルトの名無しさん2013/11/09(土) 20:20:42.92
それは今の話だろう?
IE以外のブラウザがまともになったのは
それから何年後だと思う?
0192デフォルトの名無しさん2013/11/09(土) 20:23:16.47
何年??
Web業界では週単位で事態が動くんだが
1年前なんてかなりの常識が通用しなくなる大昔だろ
0193デフォルトの名無しさん2013/11/09(土) 20:25:48.83
そう。それなのに、IE以外のブラウザが
まともになったのはそれから数年後。

週単位で自体が動く中、数年間も
他のブラウザは使い物にならなかったのだよ。
0194デフォルトの名無しさん2013/11/09(土) 20:27:03.74
Linuxは落ちません。
JSはCの二倍速い。
0195デフォルトの名無しさん2013/11/09(土) 20:29:36.47
>>193
昔のことなんてどうでもいいよ

>>194
キチガイ乙
0196デフォルトの名無しさん2013/11/09(土) 20:34:34.33
V8はほとんどJSで出来ているんですよ。
だからCの二倍速いんです。
Node.jsも大部分JSで書かれています。
CSSの解釈もJSがいいという人が増えています。
0197デフォルトの名無しさん2013/11/09(土) 20:42:06.34
V8は本当にネイティブとJSのバインディングが上手いからねえ
本当にうまい具合にできてると思う
まあ速さの秘訣はネイティブ側で泥臭くやってるからなんだけどね
泥臭いと言ってもちゃんと整理されてるし
毎日のように何処かがリファクタリングされてて本当に美しい
最近はパーサを一新してて注目に値するね
0198デフォルトの名無しさん2013/11/09(土) 20:43:50.91
JS信者ってアホgoogleあたりの手先か?
0199デフォルトの名無しさん2013/11/09(土) 20:44:19.65
>>187
OS とその食い潰すリソースってなに?
0200デフォルトの名無しさん2013/11/09(土) 20:47:41.53
>>195
まったくだよw
なんでネスケ4の話しだしたの?
ばかじゃね?w
0201デフォルトの名無しさん2013/11/09(土) 20:52:17.28
ネットスケープは素晴らしいブラウザでOSとすら言えるものだったが、
M$の陰謀で消された。
消費者は皆ネスケの復活を望んでいた。
0202デフォルトの名無しさん2013/11/09(土) 20:58:04.83
正直、ネスケ3はクソだったが、IEのほうがもっとひどかった。
0203デフォルトの名無しさん2013/11/09(土) 20:58:23.31
ないないw
ネスケのせいでCSSが使われなくなったと
言ってもいいぐらいだよ。
0204デフォルトの名無しさん2013/11/09(土) 20:59:28.29
ここおっさんだらけなんだなw
0205デフォルトの名無しさん2013/11/09(土) 20:59:29.83
どうやらIEバカの脳内ではCSSは普及していないらしいw
0206デフォルトの名無しさん2013/11/09(土) 21:09:42.89
IEのCSS解釈はCで書かれていたためバグが多かった。
一方、ネスケはJSで書かれていたので完璧だった。

検索で調べてもこれらの事実は出てこない。
なぜならM$が工作しているからだ。

当時をリアルに知っているものだけがネスケの素晴らしさを知っている。
0207デフォルトの名無しさん2013/11/09(土) 21:11:41.58
mshtml.dll
0208デフォルトの名無しさん2013/11/09(土) 21:13:12.37
>>206
つまり、お前は嘘言っているってことじゃねーかw
自分で、言ってどうするw
0209デフォルトの名無しさん2013/11/09(土) 21:15:29.45
>>208
それはどういう意味かな?
0210デフォルトの名無しさん2013/11/09(土) 21:35:45.88
JSがネイティブの2倍早いってのは誤訳が元ネタだよ。asm.js関係の和訳記事だね。
まあ、陰謀とか言いながら自分に都合のいい情報を鵜呑みにするのは格好悪いね。
0211デフォルトの名無しさん2013/11/09(土) 21:37:50.44
だから何?
0212デフォルトの名無しさん2013/11/09(土) 21:42:42.04
JSがCの二倍速いのは事実だよ。
信じたくない気持ちは理解できるけど、使ってみればすぐ気付くこと。
ベンチで圧倒的に速いのも当たり前のこと。
今は何でもJSで書き直すフェーズに来てて、そのうちOSやドライバもJSで
書き直される。
これはLinusも検討すると言ってるよね。
0213デフォルトの名無しさん2013/11/09(土) 21:46:25.73
だから、「二倍」という具体的な数字は誤訳記事が初出なの。主張を変えるのは悪いことではないの。
0214デフォルトの名無しさん2013/11/09(土) 21:48:13.70
実は3倍速いのだと言いたいのですね?
0215デフォルトの名無しさん2013/11/09(土) 21:56:06.08
ソース無いけど2倍はやいよ。
全部MSの陰謀だよ。
0216デフォルトの名無しさん2013/11/09(土) 22:16:13.98
JavascriptはLisp直系のアカデミックなハイエンド言語です。
0217デフォルトの名無しさん2013/11/09(土) 22:38:25.84
アカデミックでハイエンドって感じじゃないな
カッコ可愛い言語ってかんじかな
0218デフォルトの名無しさん2013/11/09(土) 23:12:29.52
k○atchさん何してはるんすか
0219デフォルトの名無しさん2013/11/09(土) 23:46:13.32
JSは愛されてるな
0220デフォルトの名無しさん2013/11/09(土) 23:54:02.54
ネタにね。
0221デフォルトの名無しさん2013/11/10(日) 00:32:12.89
また妄想にふけっちゃったのか
0222デフォルトの名無しさん2013/11/10(日) 05:52:47.49
JSの気持ちも考えろ!
0223デフォルトの名無しさん2013/11/10(日) 06:58:46.17
ダメな子ほどかわいいとかいうやつか。
0224デフォルトの名無しさん2013/11/10(日) 09:31:39.84
背伸びしたい年頃の気持ちも考えろということだろ
0225デフォルトの名無しさん2013/11/10(日) 09:52:52.52
JavaScriptをコケにしたらなんかいいことあるの?
認めて受け入れようって気持ちがないと成長できないよ
0226デフォルトの名無しさん2013/11/10(日) 10:11:15.96
説教したいお年頃w
0227デフォルトの名無しさん2013/11/10(日) 10:36:06.09
今更だが>>128-129の狭苦しいOO観にはイラッとする
0228デフォルトの名無しさん2013/11/10(日) 10:45:47.53
>>227
どのへんが古臭いの?
クラスメソッドは副作用なきよう、というのは確かにちょっと、という感じだが
0229デフォルトの名無しさん2013/11/10(日) 10:48:00.35
説明文の文字数の割に内容が狭苦しいということじゃないかな?
0230デフォルトの名無しさん2013/11/10(日) 10:59:29.79
>>229
>狭苦しい
ここもう少し
0231デフォルトの名無しさん2013/11/10(日) 11:07:39.51
インスタンスメソッドがインスタンスの状態を変える場合は多いが
そんなの強制されてないし副作用が必ず発生するとは限らない。
その辺の認識からして狭いということだろう。
0232デフォルトの名無しさん2013/11/10(日) 11:09:44.28
>>231
多いと認めるんだろう?
ならお前は同じことを言っている。
0233デフォルトの名無しさん2013/11/10(日) 11:11:03.87
JavaScriptはJavaやC#にようやく追いついた程度
http://www.slideshare.net/dynamis/try-firefox-os/16
まだまだネイティブまでは遠い
0234デフォルトの名無しさん2013/11/10(日) 11:11:04.61
あとクラスメソッドは引数だけでなくstaticなクラス変数やstaticイニシャライザも関係している。
そこの認識も狭い。
0235デフォルトの名無しさん2013/11/10(日) 11:13:27.91
でも大筋ではあってるな。
0236デフォルトの名無しさん2013/11/10(日) 11:16:07.72
あとクラスメソッドとインスタンスメソッドなんて大真面目で長文書くほど大した概念ではないということ。
0237デフォルトの名無しさん2013/11/10(日) 11:16:30.62
asm.jsってGCすら無いのに
それでもCの2倍遅くて、
C#と同じくらいなんだね
0238デフォルトの名無しさん2013/11/10(日) 11:18:36.32
>>235
副作用のとらえかたが間違っている。
0239デフォルトの名無しさん2013/11/10(日) 11:19:18.31
大筋では合ってるだろう。
0240デフォルトの名無しさん2013/11/10(日) 11:19:57.93
副作用を持ち出した時点で大筋でも間違っている。
0241デフォルトの名無しさん2013/11/10(日) 11:21:12.23
asm.jsにもGCは効きます
その関数が終わるまで延期されるのと
生メモリを触ることでGCの影響を受けなくすることもできるというだけです
0242デフォルトの名無しさん2013/11/10(日) 11:24:29.56
>>240
間違ってるというのなら
間違っているという証明をした方がいいね。
0243デフォルトの名無しさん2013/11/10(日) 11:25:30.14
>>241
つまり、その関数がアプリ終了まで
ずっと動いていれば、GCの影響が
全くないってこと?
0244デフォルトの名無しさん2013/11/10(日) 11:25:43.38
意地を張るあまり収集つかなくなる奴って一番嫌いなんだよ。さよなら。
0245デフォルトの名無しさん2013/11/10(日) 11:28:16.12
>>237
次のページ見てもらえれば分かるけど
asm.jsそのものは数割遅い程度でNaClなんかといい勝負
でもasm.jsでは数値計算しか出来ないし
全部をasm.jsで書くのは不可能だからね
だから全体では概ね対応環境で2倍、
直接対応はしてないけどいろいろ頑張ってるChromeで3倍くらいになる
0246デフォルトの名無しさん2013/11/10(日) 11:28:52.69
なんでまたその話を蒸し返してるんだこいつ?
証明できないくせに蒸し返すとか
それ単に悔しかっただけだろw
0247デフォルトの名無しさん2013/11/10(日) 11:32:59.04
>>228
古臭い、ではなく、狭苦しい。
ほとんど全部だよ。

> インスタンスメソッドというのは、インスタンスの内容を変更するもの。
> データが主であり、それを変更するためにメソッドを用意する。
 この見識があまりに狭い。
 オブジェクトというのはある役割を果たすためのものだ。
 データが主?それって目的と手段がごっちゃになってる。

> インスタンスの内容を変更しないのであれば、それはインスタンスメソッドにする意味が無い。
> インスタンスメソッドはインスタンスを変更するのが目的であり、それはつまり副作用を目的としている。
 インスタンスの内容に「基づいて」役割を果たせばよいのであって、内容を変更する必要はない。
 >>128-129はオブジェクト自身に対するメソッド発行しか念頭にないんじゃないかと疑う。
0248デフォルトの名無しさん2013/11/10(日) 11:34:04.21
>>243
asm.jsで作った関数はJS層にエクスポートされてるネイティブ関数と同じように振る舞います
JS層からasmネイティブ関数を呼び、その返り値を受け取って
処理を続けるという形になるので、副作用の実質出来ないasm.jsの部分がずっと働くということはありません
また、GCが働かない範囲では数値や元々メモリを確保する役割のバッファへの書き込みしかしないので
いたずらにメモリを消費するということはありません
0249デフォルトの名無しさん2013/11/10(日) 11:38:37.21
オブジェクトって英語で
「物」って意味だけどね。
役割果たすための「物」
さて物ってなに?
物以外ってなに?
0250デフォルトの名無しさん2013/11/10(日) 11:39:43.12
メソッドというのは、物に対するメッセージ。
メッセージを物に対して送るとき、
反応するのは、送り先の物である。
これがオブジェクト指向の原則。
0251デフォルトの名無しさん2013/11/10(日) 11:41:04.98
オブジェクトは物以外に対象とか反論とか言う意味がなかったけ?
あとOOは対象指向と言うと思う。
0252デフォルトの名無しさん2013/11/10(日) 11:42:40.69
Smalltalkを勉強したら本来メソッドというのは
オブジェクトに対するッセージだってことがわかるよ。

なぜそのオブジェクトに対してメッセージを送るのか?
それはそのオブジェクトに送らなければいけない
理由があるから。
■ このスレッドは過去ログ倉庫に格納されています