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

動的言語の問題点、大規模開発でテスト工数が増大

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/04/24(火) 05:02:52.54
 しかし、RubyとRailsの限界に気がついてしまったのです。Rubyのランタイムは
非常に遅いため、Rubyで作成したアプリケーションの納品をためらったことがあります。
Rubyはプロトタイプ作成用に使い、納品用にJavaで作りなおさなければなりませんでした。

 RubyとRailsのプロジェクトが数千行の規模を超え、チームに新しいメンバーを追加したときに、
動的言語の問題が明らかになって来ました。私たちは、コーディングの時間の半分をテスト作成の
費やさなければならなかったのです。Railsによって得られた生産性の向上は、テスト作成の作業に
失われてしまいました。作成したテストの多くは、Javaであれば不必要なものでした。テストの大半は、
リファクタリングによってメソッド名やパラメータの数を変更した際に、呼び出し元が
正しく変更されているかを確認するためのものでした。

また、Rubyでもチームメンバーが2名から4名であれば、メンバー間のコミュニケーションは
非常にスムーズでした。しかし新しいメンバーをチームに参加せせようとすると、
これまでチームで培ってきたノウハウを新しいメンバーにうまく伝えることが出来なかったのです。
0153デフォルトの名無しさん2012/06/07(木) 00:38:15.04
C++はC言語に変換しやすいというか、
実際昔は、C++はC言語に変換されていた。
0154デフォルトの名無しさん2012/06/07(木) 00:39:53.68
副作用の塊でできたコードを
関数型言語に変換するのは難しいだろうね。

関数型言語は、手続き型言語に変換しやすだろう。
その言語はおそらく機能的に劣ってる。
0155デフォルトの名無しさん2012/06/07(木) 00:58:13.33
>>153
変換されてたけど、簡単じゃないよ。

びよーんすっぽすっぽ先生が書いてるけど、cfrontという実装があるから
というのを「簡単に変換できる」と思うのは、よくある誤解。

>>154 の論理に従うと、あらゆる言語は機械語に変換できるから、
あらゆる言語は同じくらい劣っている、ということになるな。
0156デフォルトの名無しさん2012/06/07(木) 00:58:48.85
>>155
じゃあお前は、何から何が簡単だと思うんだ?
0157デフォルトの名無しさん2012/06/07(木) 04:11:50.80
日本語は、韓国語に変換するのが難しい

なぜなら、韓国語は日本語にない機能を使って記述されるからである

ゆえに、日本語は機能的に劣っている
0158デフォルトの名無しさん2012/06/07(木) 06:52:10.60
>>155
Cでオブジェクト指向プログラミングができる人なら、C++ -> C は簡単。
0159デフォルトの名無しさん2012/06/07(木) 07:02:02.30
>>157
よく韓国人に「日本語でおk」ってレスをされるw
0160デフォルトの名無しさん2012/06/07(木) 07:21:22.18
>>158
例外は?RAIIは?テンプレートはどうすんの?
0161デフォルトの名無しさん2012/06/07(木) 07:36:19.42
>>152
コンパイラが実装しやすい言語は機能が少ないってことだろ
0162デフォルトの名無しさん2012/06/07(木) 08:24:38.11
>>145
理解できない機能はカウントされないから
「理解できない機能が多い」という事実を「機能が少ない」と認識してしまう
0163デフォルトの名無しさん2012/06/07(木) 08:42:53.74
>>160
例外は戻り値(引数)を使う方法で機械的に変換可能だし、
RAIIは単に処理を割り込ませればいいだけ。
テンプレートはただのマクロにすぎない。

ある言語からある言語への変換の話は
元の言語が何かは全く関係なく、
変換後の言語が、手続き的に記述できる言語ならなんでもいい。
副作用が簡単に記述できない言語には変換しにくい。
0164デフォルトの名無しさん2012/06/07(木) 11:05:34.74
Haskellだってモナドとdo記法使えば、副作用だって簡単に記述できるのに
0165デフォルトの名無しさん2012/06/07(木) 11:07:00.19
もしかして、背景にあるものが理解できない=記述できない、とでも
思い込んでるのかな、このJava厨は。

だったら、自分がHotSpot VMの実装についてどれだけ理解しているか、
考えてみればいい。
0166デフォルトの名無しさん2012/06/07(木) 11:22:25.43
Java厨って言葉が気に入ってるようですけど
今の話の流れはC++っすよw
0167デフォルトの名無しさん2012/06/07(木) 12:40:58.41
>>157
一行目と三行目の間に論理の飛躍というか崩壊があるんだが?
0168デフォルトの名無しさん2012/06/07(木) 13:27:10.03
>>167
157と同じ主張のプログラミング言語版が少し上にあるわけだが?
そいつに言えよ
0169デフォルトの名無しさん2012/06/07(木) 13:59:00.23
>>150の主張は
A言語がB言語に変換し易い ⇒ A言語は機能的に劣ってる。
A言語は機能的に劣っていない ⇒ A言語がB言語に変換しがたい。

正しく使うと
日本語は韓国語に変換しがたい。
なぜなら、日本語は機能的に劣っていないからである。
0170デフォルトの名無しさん2012/06/07(木) 14:25:04.01
韓国ネタとかどうでもいい
ネトウヨはニュー速にでもいけ
0171デフォルトの名無しさん2012/06/07(木) 14:34:30.34
逆に韓国語も劣ってないことになるからおかしな話
0172デフォルトの名無しさん2012/06/07(木) 15:01:46.22
互いに劣らない(優劣は付けられない)ではダメなのか。
0173デフォルトの名無しさん2012/06/07(木) 16:02:35.66
「他の言語に変換できない(しにくい)(>>148)」と
「ある言語からある言語への変換の話は 元の言語が何かは全く関係なく、(>>163)」が
Java厨の頭の中では矛盾無く両立するわけ?
0174デフォルトの名無しさん2012/06/07(木) 16:06:07.23
>>150
>だから異なるパラダイムの言語間での変換は難しいし、
これが正しいなら、

>もし「自分の使ってる言語は他言語に変換し易い」と感じるのならば、
>その言語はおそらく機能的に劣ってる。
じゃなくて
>その言語はおそらくパラダイムに大きな違いが無い
だろ?
0175デフォルトの名無しさん2012/06/07(木) 16:40:38.07
同じオブジェクト指向パラダイムでも

Java ⇒ Ruby は簡単
Ruby ⇒ Java は困難

なぜならクロージャもダックタイピングも無いJavaは機能的に劣ってるから
RubyのところはSmalltalkでもPythonでも同じだよ
0176デフォルトの名無しさん2012/06/07(木) 18:22:53.39
同じ機能を持つ処理を記述できるんじゃないのか?
0177デフォルトの名無しさん2012/06/07(木) 19:47:29.39
>>175
機能は関係ないだろ
タイプセーフでコンパイラが型がわかるから別の言語に変換できるんだろ

機能が違ったら変換できないなんていう理論は、
特定のロジックをかけないプログラミングがあるといってるようなもんだ
意味がわからない。
0178デフォルトの名無しさん2012/06/07(木) 20:03:31.59
>>177
おいおい、同じロジックが原理的に書けるなら
簡潔に書けるか冗長にしか書けないかの違いは無視できるってか?
0179デフォルトの名無しさん2012/06/07(木) 20:17:09.81
>>178
入力文字数だけみて開発の生産性を語るバカがおおくて驚く。
高機能なIDEなしに、効率よく開発できるわけがないってのに

コードの短さ至上主義の宗教がRuby

>冗長にしか書けないかの違いは無視できるってか?
もっさりなのは無視できるってか?w
0180デフォルトの名無しさん2012/06/07(木) 20:35:43.40
クロージャすらないゴミ言語で開発効率高いとかワロスwww

みんなが簡単にクロージャ生成して
メソッドの引数に渡したり戻り値で返したりしてるとき、
Java厨だけはしこしこインターフェース定義して
型書いてんでしょ?馬鹿じゃね?
0181デフォルトの名無しさん2012/06/07(木) 20:57:40.82
>>180
JavaやC#の文句言うのは
まともな速度でうごくプログラムかけるようになってからにしろよな
Rubyでは一生無理だろうがw
0182デフォルトの名無しさん2012/06/07(木) 21:38:22.99
クロージャーは、いちおうどちらにもある。
あれではダメというなら、処理系書くやつが悶絶しながら実装することになる
0183デフォルトの名無しさん2012/06/07(木) 21:39:37.84
IDEといえばEclipseはバージョン上がるごとに
順調にゴミ化していってるな
0184デフォルトの名無しさん2012/06/07(木) 22:53:09.06
動的言語はC/C++と組み合わせて適材適所で使うと
開発効率も実行効率も良いんだが、
これって複数の言語を使える事が最低条件だからなー。


単一言語しか使いこなせないボンクラにはJavaがお似合い。
0185デフォルトの名無しさん2012/06/07(木) 22:54:18.86
>>175
> 同じオブジェクト指向パラダイムでも
>
> Java ⇒ Ruby は簡単
> Ruby ⇒ Java は困難
>
> なぜならクロージャもダックタイピングも無いJavaは機能的に劣ってるから
> RubyのところはSmalltalkでもPythonでも同じだよ

ダックタイピングなんてリフレクションで簡単に実装できる。
0186デフォルトの名無しさん2012/06/07(木) 23:01:39.79
>>180
Javaにクロージャーがないと何が出来ないと思ってる?

無名クラスでできないことを5つあげてみよ。
0187デフォルトの名無しさん2012/06/07(木) 23:03:39.45
大規模開発なら静的言語の圧勝。
小規模使い捨てスクリプトなら動的言語の圧勝。

これでいいじゃんか?
公平な結果だろ。
0188デフォルトの名無しさん2012/06/07(木) 23:04:38.25
Ruby厨は、最高の言語だと思い込んでるからなw
イテレータがRubyだけのものと思っている奴もいたww

まつもと氏も各所でRubyは開発の効率がいいとか嘘ついてるから
初心者はかんたんにだまされてしまう
0189デフォルトの名無しさん2012/06/07(木) 23:12:36.39
日本語化 地域化しにくい時点でゴミ以下
0190デフォルトの名無しさん2012/06/08(金) 06:55:53.33
>>186
5つも上げる必要無いよ
「簡潔なコードが書けない」これがJava最大の欠点

Java厨はコードの簡潔さが重要でないかのように言うけど
本当に重要じゃなくて、無名クラスで問題ないなら
Java8でクロージャを入れようなんて議論してない
0191デフォルトの名無しさん2012/06/08(金) 08:09:50.16
>>190
おまえがコードの短さしか見てないだけだろw

そんなに簡潔なコードがかけるのなら、
なぜ実行速度が速くできないんですかwww
裏で冗長なコードが走ってるから遅いんだろ

RubyはJavaの11分の一以下のスピードだ
静的な言語の足元にも及ばない。

PHPやPythonの半分以下の速度しかでないのはどうするんだ
0192デフォルトの名無しさん2012/06/08(金) 08:30:46.86
intがオブジェクトだから遅いのかな
0193デフォルトの名無しさん2012/06/08(金) 08:37:04.54
>>190
お前の言うことからはっきりしたのは2点

無名クラスはクロージャの代わりになる。
Java8で簡潔なコードが書けるようになる。

0194デフォルトの名無しさん2012/06/08(金) 08:37:15.91
Javaで関数型言語のfoldを実装、使用するとどんな感じ?
Pythonのreduce()やRubyのinject()でもいいけど
勿論あらゆる型に対して使えるようにジェネリクスは必須ね
0195デフォルトの名無しさん2012/06/08(金) 08:40:58.88
>>194
ここで議論されてる
http://code.google.com/p/guava-libraries/issues/detail?id=218
0196デフォルトの名無しさん2012/06/08(金) 12:27:22.02
無名クラスでクロージャの例


import java.util.*;

interface function<T> { public void func (T x); }

abstract class Foo { int n; abstract int foo(); }
class Bar extends Foo { Bar (int x) { n = x; } int foo() { return n + 1; } }
class Baz extends Foo { Baz (int x) { n = x; } int foo() { return n * 2; } }
class Main {
    public static void runClosure (function<Integer> f) {
        for (int i = 0; i < 1; i++) { f.func(i); }
    }
    public static void main (String args[]) {
        final Foo[] x = new Bar[]{ new Bar(0) };
        runClosure(new function<Integer>() {
            public void func(Integer n) {
                System.out.println(x[0].foo());
                x[0] = n % 2 == 0 ? new Bar(x[0].foo()) : new Baz(x[0].foo());
            }
        });
    }
}
0197デフォルトの名無しさん2012/06/08(金) 12:55:22.71
うはww
Javaウンコすぎるwww
0198デフォルトの名無しさん2012/06/08(金) 12:58:34.84
f.func(i)はf(i)としてほしいが、Rubyでもf.call(i)だ
つまり静的と動的の問題ではなくオブジェクトの問題だ
0199デフォルトの名無しさん2012/06/08(金) 14:05:54.90
つ python
0200デフォルトの名無しさん2012/06/08(金) 16:16:30.63
うん、やっぱクロージャ入れるべきだな…
0201デフォルトの名無しさん2012/06/08(金) 19:53:36.64
型推論が無いからクロージャ(もどき)にまで
グダグダと型を書く必要があって
コンパイル時チェックまでしたあげくに
実行時型エラーで落ちるクソ言語Java
0202デフォルトの名無しさん2012/06/08(金) 20:01:34.38
ぬるぽですね
わかります
0203デフォルトの名無しさん2012/06/08(金) 23:21:50.19
後で代入する変数にとりあえずnullを入れるわけですが
これを止めるには時間の概念や代入の概念をガラガラポンしないといけないですね
0204デフォルトの名無しさん2012/06/08(金) 23:48:59.63
概念は人間の頭の中にあると信じるなら言語を変える必要はないです
でも人間を信用しないなら言語を変えるしかない
0205デフォルトの名無しさん2012/06/09(土) 00:36:57.48
>>196
なんでそんなに冗長に書いてるの?
わざとわかりにくく書いてない?

Javaでクロージャと言ったらこうでしょ。
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Ordering.html

Ordering<String> byLengthOrdering = new Ordering<String>() {
 public int compare(String left, String right) {
  return Ints.compare(left.length(), right.length());
 }
};
0206デフォルトの名無しさん2012/06/09(土) 00:43:17.57
最新のJava7なら少し削れるのかな。

Ordering<String> byLengthOrdering = new Ordering<>() {
 public int compare(String left, String right) {
  return Ints.compare(left.length(), right.length());
 }
};
0207デフォルトの名無しさん2012/06/09(土) 00:50:20.81
>>205-206
これぐらいの量なら充分小さといえるね。

しかし、書く人によってここまで
説明の量が違うとはw
0208デフォルトの名無しさん2012/06/09(土) 00:53:05.16
まあこれぐらい知ってない人が、Javaのコードはこうなんだ!って語っちゃいけないね。
http://japan.internet.com/developer/20080603/26.html
0209デフォルトの名無しさん2012/06/09(土) 02:03:14.73
クロージャのところのコード量は>>196も>>205も変わらん。
>>206は型推論で少し短くなってるけど。

それよりも>>196は型安全じゃなくてループ回数を増やすと
例外で落ちる。
0210デフォルトの名無しさん2012/06/09(土) 02:16:15.17
>>209
> クロージャのところのコード量は>>196も>>205も変わらん。

うん。知ってる。
だからこそ短く書いてみせた。

これでJavaはコードが長いと勘違いしている人が
単に読んでないだけだってあぶり出されるw
0211デフォルトの名無しさん2012/06/09(土) 02:21:30.41
あと、>>196は外部スコープの変数の参照(書き換えも含む)が
Javaの無名クラスで出来ると言いたいんじゃないかと。
クロージャの重要な特徴のひとつだし。

>>196が長いのは
・メソッドfooの振舞いをポリモーフィズムで入れ替え可能
・クロージャは呼び出すたびに結果が違う(副作用有り)
・クロージャが外部スコープの変数を書き換え
と色々やってるからで、意外と他の言語で書いても長くなりそうだ。
副作用が在るから関数型でもすっきり書けないし。
0212デフォルトの名無しさん2012/06/09(土) 02:34:11.80
逆に>>205>>206は動的言語派が凄く喜びそうだ。
例えばPythonで同じコード書いたら凄く短い。

byLengthOrdering = lambda x,y: cmp(len(x), len(y))

だけど、>>196は代入があるからPythonのラムダじゃ(たぶん)書けない。
0213デフォルトの名無しさん2012/06/09(土) 03:01:57.68
スレの流れを見てたら、D言語で書きたくなってきたりする。
空気は読まない。
http://ideone.com/p8v3x
0214デフォルトの名無しさん2012/06/09(土) 03:23:26.38
> それよりも>>196は型安全じゃなくてループ回数を増やすと
> 例外で落ちる。

wwwwwwww
0215デフォルトの名無しさん2012/06/09(土) 06:36:08.45
長々と説明したのに「で?」と返された気分?
0216デフォルトの名無しさん2012/06/09(土) 07:47:05.58
うわ、マジだ
ホントにJavaの型チェックはゴミだな

http://ideone.com/H3cXr
0217デフォルトの名無しさん2012/06/09(土) 08:15:48.97
java厨もといC++系統厨だけどjavaのSAM Type用の構文糖衣くらい
java5くらいの時点で入れとけよって思うよ

ジェネリクス使用クラスを可変長引数にしたときのアレも
さっさとどうにかして欲しい

でも静的言語の方が気が楽
>>90の静的手続き型言語:大規模ドカタ開発に同意だわ
経験浅い要員にJavaScriptとかやらせるとこっちが死ぬる
0218デフォルトの名無しさん2012/06/09(土) 08:30:21.51
>>210
>>206で短く書けてると思ってる事に一番驚いたわwww
0219デフォルトの名無しさん2012/06/09(土) 09:08:38.63
あのな、クロージャがある言語では>>206はもっと圧倒的に短く書けて、

sortBy ((.length).(compare.length)) xs

とか

sorted(xs, cmp=lambda x,y: cmp(len(x),len(y)))

のように使ってるわけよ
上のコードのクロージャのところに>>206のような冗長なコードを
ぶち込んだら可読性落ち過ぎだろ
高機能なIDEがあればカバーできるレベルの話じゃないわ
0220デフォルトの名無しさん2012/06/09(土) 09:25:47.31
おまえらアホじゃないの?
Java8までクロージャの機能がないんだから、
コードの長短を比較するのはナンセンスだろ。

>>219
多少、短くかけても実行時に遅かったら意味がないだろ。
冗長とバカにしてるそのコードよりもスクリプト言語は遅い。
0221デフォルトの名無しさん2012/06/09(土) 09:46:37.41
java8でSAM Type用の構文糖衣が導入されたら

Collections.sort(ls,
  new Comparator<T>(){
    public int compare(T a, T b) {
      return a.length() - b.length();
    }
  }
);

が

Collections.sort(ls,
  (a, b) -> a.length() - b.length()
);

と書ける
0222デフォルトの名無しさん2012/06/09(土) 10:41:28.50
呼び出し側はそれで良いけど、定義する側は相変わらず
異なる型のラムダ式毎にSAM Typeを定義する必要があるんでしょう?
0223デフォルトの名無しさん2012/06/09(土) 10:51:52.64
>>213
同じく話の流れを無視してHaskellで書いてみた。

http://ideone.com/72ySa
0224デフォルトの名無しさん2012/06/09(土) 11:05:34.15
a -> b -> c
SingleAbstractSingleArgument< A, SingleAbstractSingleArgument< B, C > >
0225デフォルトの名無しさん2012/06/09(土) 11:24:00.45
>>222
既存interfaceやjava.util.functionsで対応出来ないものはそうなる
ただの構文糖衣だし
0226デフォルトの名無しさん2012/06/09(土) 11:29:58.02
>>222
> 異なる型のラムダ式毎にSAM Typeを定義する必要があるんでしょう?

今まで何種類の「異なる型のラムダ式」を書いたことがある?

ラムダ式ってのその用途から、引数の型は単純で
ライブラリとGenericsを使えば、すでに定義済みであることが多いよね。

そこ、気にするところじゃないよ。
0227デフォルトの名無しさん2012/06/09(土) 11:38:01.79
ユーザ定義型不要論ワロタ
0228デフォルトの名無しさん2012/06/09(土) 11:43:11.59
クロージャーは外にある変数にアクセスできるから
引数や戻り値はあんまり必要ないしね。

必要な場合っていうのは例えば、
Collections.sort(ls, ← これのこと。

コレクションが渡された時にそのコレクション内の項目ごとに
クロージャーを呼び出すってときに、引数を伴ったクロージャが必要になる。

で、項目一つを引数に呼び出すとき(map等)は、クロージャの引数は一つ
で、項目二つを引数に呼び出すとき(compare等)は、クロージャの引数は二つ
引数三つ、四つもどこかのライブラリで定義されていたと思うが忘れた。

型の違いはGenericsで吸収できるし、まあ要するに、
異なる型のラムダ式毎にSAM Typeを定義する必要があるということは
気にすることではないということ。
0229デフォルトの名無しさん2012/06/09(土) 11:43:55.67
>>227
誰もそんな事言ってないよ。
0230デフォルトの名無しさん2012/06/09(土) 12:04:21.11
こんな感じで力技で片っ端から定義していけば大丈夫だよ
え?ダサい?だってJavaだもん

http://gee.cs.oswego.edu/dl/jsr166/dist/extra166ydocs/extra166y/Ops.html
0231デフォルトの名無しさん2012/06/09(土) 12:07:26.43
>>230
バカですか? genericsで数個に統一できます。
バカのみがJavaをダサいと言う。論破完了w 
0232デフォルトの名無しさん2012/06/09(土) 12:10:19.67
>>230はネタで言ってるだけだろ〜
馬鹿って言ったら可哀想だよ。
本気で言っているとしたら、馬鹿だけどね。あはははは。
0233デフォルトの名無しさん2012/06/09(土) 12:30:43.42
>>230はGenericsを使って"アレ"なんだけどね
0234デフォルトの名無しさん2012/06/09(土) 12:33:17.01
職業プログラマとしては>>230はアリだな
C++のテンプレートやC#のジェネリクスとは異なるJavaのジェネリクスで
コストに折り合いを付けるならこうなる
0235デフォルトの名無しさん2012/06/09(土) 12:34:24.29
>>234
無理しなくていいよw
そんなこといってもJava使いには見えないからw
0236デフォルトの名無しさん2012/06/09(土) 12:37:25.81
Java使いじゃなくて、>>234がそう思ってるだけだろw
馬鹿が自分定義のJavaはこうだって言ってるだけ。

誰も使ってないものを持ってきてもな。
それじゃJavaを貶められないよ。
0237デフォルトの名無しさん2012/06/09(土) 12:39:48.04
いやいや、馬鹿すぎるのは>>235だろ
馬鹿過ぎて痛々しいレベルだわ
>>234がコスト持ち出してフォロー入れてる時点で気付けよ
0238デフォルトの名無しさん2012/06/09(土) 12:42:29.51
はいはい、自己フォロー乙
恥ずかしい奴だ
0239デフォルトの名無しさん2012/06/09(土) 12:45:45.85
進化がとまっているJavaと比べるのは酷だ。
比べるならC#
0240デフォルトの名無しさん2012/06/09(土) 12:48:23.25
俺の中ではJavaはJDK 1.0.2の時点でもう終わってた
0241デフォルトの名無しさん2012/06/09(土) 12:49:41.01
・Javaのジェネリクスは型パラメータにプリミティブ型を指定できない
・オートボクシングによるプリミティブ型からオブジェクト型への変換は
  コスト的に許容できないケースがある

という理由によって>>230の定義になってるわけだが

>>231>>232>>235>>236はプリミティブ型にもジェネリクスが使えると思ってるアホ
0242デフォルトの名無しさん2012/06/09(土) 12:56:45.10
>>241
オートボクシングを使えばいい。
コストに関して言えば、オートボクシングを使ったとしても
動的言語よりも速い。

論破完了www
0243デフォルトの名無しさん2012/06/09(土) 12:58:55.56
このスレで分かった事

・Javaはヌルポあるし、それ以外でも実行時型エラーを簡単に起こせるよ!
・ラムダ式の糖衣構文はJava8まで待ってね!今はJava7だよ(ドカタ開発では未だにJava4の場合すら……)
・プログラマのレベルは底辺だよ!まともなプログラマはScala使ってるし!

というわけで、静的型付け言語の比較するときにJavaを使うのは辞めましょう
弱い者いじめは良くない事ですよw
0244デフォルトの名無しさん2012/06/09(土) 13:00:28.87
>>243
実行時にしかわからないエラーがあるのだから
当たり前の話。

実行時にしかわからないエラーってのは
対応に時間が掛かる。

だから静的に分かるようにし
減らすってのが重要なんだよ。

お前は論点がわかっていない。
02452342012/06/09(土) 13:02:53.34
>>235-236
http://ideone.com/P5SxK
>sum=1774919424 time=275msec
>sum=1774919424 time=3984msec

定義側はジェネリクスを使った方が楽になるが
使用側のコーディングコスト及び実行コストが高くなる
そして都度定義するより標準で>>230のような定義があった方が便利
0246デフォルトの名無しさん2012/06/09(土) 13:06:17.18
>>242
>オートボクシングを使ったとしても、動的言語よりも速い
Javaの中の話なのに完全に意味不明。
0247デフォルトの名無しさん2012/06/09(土) 13:11:32.82
>>246
それはJavaは他の言語と比べて
速いのは当たり前ということか。
0248デフォルトの名無しさん2012/06/09(土) 13:12:51.80
>>246
Javaが他と比べてダサいって話なんだから
Javaの中の話ではない。

よってオートボクシングを使えばぜんぜんダサくないし、
それでも他の動的言語よりも速い。
0249デフォルトの名無しさん2012/06/09(土) 13:17:33.99
>>240
老害乙
0250デフォルトの名無しさん2012/06/09(土) 13:30:27.44
>>248
>>234-237 >>241は>>230のリンク先の設計意図である
プリミティブとジェネリクス&オートボクシングの話
他言語は関係ない
0251デフォルトの名無しさん2012/06/09(土) 13:35:55.05
そういう話にしないと気が済まない?w
スレタイ見ろよ。
0252デフォルトの名無しさん2012/06/09(土) 13:39:43.75
ああ全てのレスがスレタイに沿ってると思ってるわけか。
■ このスレッドは過去ログ倉庫に格納されています