静的型付け言語の潜在開発生産性は今の100倍 ×4at TECH
静的型付け言語の潜在開発生産性は今の100倍 ×4 - 暇つぶし2ch2:デフォルトの名無しさん
13/11/04 22:39:10.51
write once, run ...
スレリンク(tech板)

3:デフォルトの名無しさん
13/11/04 22:44:32.15
スレリンク(tech板:986番)
なんだかインナークラスが static なクラスであることをあまり意識せずにバンバン書いていくのは気になるなあ‥‥
どうしても static メソッドを明示したこんな書き方を推奨してしまう
URLリンク(ideone.com) (バグ直した)
そのあたり Java から入った人はどう考えているの?

あと元プログラムの SearchLargestNode() って必要以上に難しくしてない?というかあってるの?

4:デフォルトの名無しさん
13/11/04 22:53:03.23
>>3
>なんだかインナークラスが static なクラスであることをあまり意識せずにバンバン書いていくのは気になるなあ‥‥

どういう意味?static classはトップレベルクラスと同等になるってだけだと思うけど

5:デフォルトの名無しさん
13/11/04 23:01:06.57
>>3
staticは極力使わないようにしている。
これを言うと知らない人は噛みついてくるかもしれないが。
staticな(クラス,変数,メソッド)はtomcatアプリケーションのオートデプロイ時に深刻な問題が発生する。

6:デフォルトの名無しさん
13/11/04 23:02:26.67
スレリンク(tech板:993番)
>再帰ってそういうものだよ。
関数を抜けるたびに値が変わるんだったらわかるけど、変わらない値を延々返すというのはねえ‥‥もっといい方法があるはずなんだけど

>Haskellのクイックソートも許せないタイプ?
in-place でないクィックソートとか意味不明:-)

7:デフォルトの名無しさん
13/11/04 23:06:53.76
>>3
>URLリンク(ideone.com) (バグ直した)

どこのバグを直したのかな?修正後のはremoveがバグってるようだけど

8:デフォルトの名無しさん
13/11/04 23:07:02.21
>>5
もとプログラム
スレリンク(tech板:986番)
URLリンク(rabbit.media.osaka-cu.ac.jp)
ってのは static なクラスに属するべきメソッドを、static と明示せずにアウタークラスにバンバン書いているので‥‥
いや、こういうのは自動的に static method と解釈してくれのだろうか?なんだが居心地が悪い‥‥

9:デフォルトの名無しさん
13/11/04 23:13:08.97
>>7
おっと
Node n = searchLargestNode(root.left);
n.right = root.right;
return root.left; //here, corrected.
URLリンク(ideone.com)
だねえ、thx

10:デフォルトの名無しさん
13/11/04 23:14:32.13
動的言語は遅い
速くしようとしたら
型を意識しなきゃだめ
でも遅いままで問題ないことが多い
って感じかな

11:デフォルトの名無しさん
13/11/04 23:22:33.56
まあそれでもいいかもしれないんだけど、そう言い切っちゃうともめるからなあ。
JSはCの二倍速い。
こういっておいたほうがいいよ。

12:デフォルトの名無しさん
13/11/04 23:25:56.47
2倍って微妙だな。200倍くらいでいいんじゃね?

13:デフォルトの名無しさん
13/11/04 23:29:45.15
いや200000倍ぐらいじゃないか

14:デフォルトの名無しさん
13/11/04 23:32:53.70
C++はCの二倍遅いと書いたら反論があったんだけど、普通に二倍遅いんだけどなあ。

15:デフォルトの名無しさん
13/11/05 00:02:05.60
>>3
修正前と木の構造が違うよ。
修正するならこうだと思うけど。

Node n = searchLargestNode(root.left);
if (n != root.left) {
 n.left = root.left;
}
n.right = root.right;
return n;

16:デフォルトの名無しさん
13/11/05 00:15:39.35
>>15
>n.left = root.left;
n よりも小さなノードが n.left に連なっているはずだよ、これをすると n.left 以下が宙ぶらりんになってしまうよ
また
n.left を root.left にすると
root.left -> ...... ->n->root.left で巡回してしまうよ

17:デフォルトの名無しさん
13/11/05 00:17:55.27
>>16
方向をつけくわえておくね
root.left (right)-> .... (right)-> n (left)-> root.left
巡回路ができるとまずいね

18:デフォルトの名無しさん
13/11/05 00:34:50.51
もしかしてjavaってメモリー配置の最適化出来ないの?
listクラスを実際にはリスト構造にしないとかよくあると思うんだけど。
そういうこと出来ないのかな?

19:デフォルトの名無しさん
13/11/05 00:37:17.24
>>18
どの言語でよくあるの?

20:デフォルトの名無しさん
13/11/05 00:39:41.38
このスレで言語聞いてもJSという答えしか返ってこないと思う。

21:デフォルトの名無しさん
13/11/05 01:23:59.47
>>16
>n よりも小さなノードが n.left に連なっているはずだよ、これをすると n.left 以下が宙ぶらりんになってしまうよ

ならないよね。

searchLargestNodeメソッドにこれがあって

if (n == root.right) {
 // root.right = null; となっていましたが,間違いです.
 root.right = n.left;
}

removeはこうやるんだから。

if (n != root.left) {
 n.left = root.left;
}

>root.left -> ...... ->n->root.left で巡回してしまうよ

しないよね。こうやってるんだから。

if (n != root.left) {
 n.left = root.left;
}

22:デフォルトの名無しさん
13/11/05 02:08:08.48
連結リストでクイックソートする方法を教えてください。

23:デフォルトの名無しさん
13/11/05 02:12:28.51
自己解決しました。

24:デフォルトの名無しさん
13/11/05 04:17:42.82
10秒で書くんじゃなかったのか?

25:デフォルトの名無しさん
13/11/05 04:21:03.19
>>5
> staticな(クラス,変数,メソッド)はtomcatアプリケーションのオートデプロイ時に深刻な問題が発生する。

なんか、こういう書き方をしているのを見ると、
オートデプロイを実運用で使用しているんじゃないのか?って思ってしまう。

デプロイはもちろん実運用でやることだが、
"オート"デプロイは開発環境でのみ使う機能だぞ。

26:デフォルトの名無しさん
13/11/05 04:53:40.40
>>10
型付き言語なんてアセンブリ言語より遅いくせに

27:デフォルトの名無しさん
13/11/05 04:54:48.59
動的言語はそれより更に遅いくせに

28:デフォルトの名無しさん
13/11/05 04:55:53.79
俺には無理だけど、すごい人が頑張って
極稀に速いことがあるんだからね!

29:デフォルトの名無しさん
13/11/05 04:57:53.98
まれに速くても意味ねーよ。

型付き言語が(最適化が不十分な一般の)
アセンブリ言語より速いという方が
まだよくあることだ。

30:デフォルトの名無しさん
13/11/05 04:58:26.46
アセンブリは動的言語何だが
歴史としてはそれに型をはめて扱いやすくしたのが静的言語

31:デフォルトの名無しさん
13/11/05 04:59:50.47
言っておくが型付言語には静的も動的も入ってるぞ?
そこ勘違いするなよ?

32:デフォルトの名無しさん
13/11/05 05:00:30.81
馬鹿だwアセンブリは動的言語じゃないぞw
動的言語は動的に型が決まるから
動的っていうんだが
アセンブリ言語は、動的に型が決まらない。
型そのものが存在しない。

33:デフォルトの名無しさん
13/11/05 05:33:48.68
>>32
ここは真面目なスレですんで
煽りは帰って
どうぞ

34:デフォルトの名無しさん
13/11/05 05:39:12.15
あ、言い返せないんだw

35:デフォルトの名無しさん
13/11/05 05:44:50.79
アセンブリ言語は自己書き換え可能な動的言語であり、
かつ、静的型も動的型も持たない型無し言語。

36:デフォルトの名無しさん
13/11/05 05:54:23.95
動的に型が決まらないから
動的型付け言語ではないな。

37:デフォルトの名無しさん
13/11/05 06:33:05.62
>>22
動的言語ならこんなに簡単に書けますお
URLリンク(ideone.com)

38:デフォルトの名無しさん
13/11/05 07:30:25.25
>>32
お前まだ話の流れが分かってないのな
動的言語と動的型付け言語は別物だろが
何が話されてるのかも分かってないのに絡んでくるのはNG

39:デフォルトの名無しさん
13/11/05 07:43:03.00
>>37
肝心のクイックソートが
ライブラリ呼んでるだけじゃないかw

40:デフォルトの名無しさん
13/11/05 07:44:20.67
10 名前:デフォルトの名無しさん[] 投稿日:2013/11/04(月) 23:14:32.13
動的言語は遅い
速くしようとしたら
型を意識しなきゃだめ
でも遅いままで問題ないことが多い
って感じかな

↓ ワロタw

38 名前:デフォルトの名無しさん[sage] 投稿日:2013/11/05(火) 07:30:25.25
>>32
お前まだ話の流れが分かってないのな
動的言語と動的型付け言語は別物だろが

41:デフォルトの名無しさん
13/11/05 08:03:20.15
>>22
連結リストならコムソート使いなよ、同じくΟ(nlong)だ

42:デフォルトの名無しさん
13/11/05 08:15:14.90
アセンブリと高級言語に差があるなら
スパコンでアセンブリ使うって
でも実際はそうなってない

43:デフォルトの名無しさん
13/11/05 09:45:13.18
とことん最適化するときは今でもアセンブラ使うよ

44:デフォルトの名無しさん
13/11/05 16:29:08.04
>>18
Listのインターフェイスと具体的な実装は別物。
外見は等しくListでも中身は連続したメモリ領域だったり連結リストだったりDBから
引っ張っていたりRESTインターフェイスを叩いていたりと色々。

45:デフォルトの名無しさん
13/11/05 17:10:46.19
>>5
tomcatのクラスの自動reloadの話をしているのであればこんなコンテナ側の事情それも
開発時限定の便利機能に併せてAPIの設計を曲げることなんてしないしこの例の場合単に
実装の詳細であるprivateなメソッドの話であって実際問題privateであればreloadしても
そんなにはまらん。

>>6
この例の場合「たまたま」insertやrevome等々の操作がBinSearchTreeには触れずに
個々のNodeだけを相手にして可能な実装になっているので「たまたま」staticに「も」
出来るだけであって、Nodeクラスがstaticであること云々はそれを操作するメソッドも
staticであるべきとか云々とは全く関係がが無い。

たとえばBinSearchTreeがアンドゥやトランザクションをサポートしていたり操作と
同時にファイルに永続化するような実装になっている場合はファイルハンドラ等々を
つかんでいるであろうBinSearchTreeの参照が出来ないstaticメソッドだと恐らく
書きにくいでしょ。

46:デフォルトの名無しさん
13/11/05 17:11:55.09
あ、ごめん。>>45>>6>>3へのレスの間違い。

47:デフォルトの名無しさん
13/11/05 18:02:37.64
QZ完全沈黙wwwww

48:デフォルトの名無しさん
13/11/05 18:09:47.68
>>25
開発のみで使うってどういうこと?
運用できるように使わなきゃ意味ないでしょ

49:デフォルトの名無しさん
13/11/05 20:48:59.05
スパコンでPythonが良く使われるのはなんでだろうね?

50:デフォルトの名無しさん
13/11/05 21:04:40.18
100倍もあったら案件ひとつが1週間で終わるな

51:デフォルトの名無しさん
13/11/05 21:09:10.07
学術系を中心にユーザが多い。
そのため科学技術計算向けに開発されたライブラリがそろっている。
大規模行列計算など正直不得意な分野もコアをCで実装したライブラリが存在する。
並列分散実行に関してもMPIのバインディングが存在したりHadoopのゲストになれる。

環境が十分そろっているだけの話であって言語自体が効率的な大規模並列計算に
向いている訳ではないと思う。

52:デフォルトの名無しさん
13/11/05 21:16:42.30
変態的なことをしてなくて素直だから安心して使えるってことじゃねーの
それ以外はマシンパワーで補えるしな

53:デフォルトの名無しさん
13/11/05 21:16:55.76
単純にPerlからの流れでPythonが多いだけ
研究分野って行列もそうだけど文字列操作することもかなり多いから
スクリプトのが使いやすい

54:デフォルトの名無しさん
13/11/05 21:35:42.46
スパコンではStringBufferを使わなくても高速な文字列処理ができるんですかね?

55:デフォルトの名無しさん
13/11/05 21:36:31.58
>>14
const + 参照使っているか?いちいちコンストラクタを走らせてるんじゃないか?

56:デフォルトの名無しさん
13/11/05 21:43:32.94
const type&みたいのだったか
あれは何か効能あるの?インライン化されるとか

57:デフォルトの名無しさん
13/11/05 21:54:20.98
>>56
単なるポインタ私

58:デフォルトの名無しさん
13/11/05 22:37:04.11
>>48

(デプロイの自動化ではなく)オートデプロイという機能は
開発段階で使う機能だって

URLリンク(otndnld.oracle.co.jp)

> 開発ドメインへのアプリケーションの自動デプロイ
> 自動デプロイメントは、評価またはテストのために、スタンドアロン サーバ (管理サーバ) に
> アプリケーションを迅速にデプロイするための手段です。この方法は、
> 単一サーバの開発環境でのみ使用することをお勧めします。

> 自動デプロイメントは、開発環境において単一サーバの対象で使用することを想定されています。
> Administration Console など、他のツールを使用して自動デプロイ済みの展開されたアプリケーションに
> 対象を追加した場合、アプリケーションを再デプロイしても新しい対象サーバに変更は伝わりません。
> 以下の節では、開発環境で自動デプロイメントを使用する方法について説明します。

ちょっと考えればわかるじゃん。オートデプロイのために、
本来あるべきソフトウェアの設計を歪めるなんてありえないだろ?
↓これのこと

>>5
> staticは極力使わないようにしている。
> これを言うと知らない人は噛みついてくるかもしれないが。
> staticな(クラス,変数,メソッド)はtomcatアプリケーションのオートデプロイ時に深刻な問題が発生する。

どっちが大事なんだよ?

59:デフォルトの名無しさん
13/11/05 22:37:23.32
>>56
最適化される
今はrvalue-refあるからいらんけど

60:デフォルトの名無しさん
13/11/05 22:40:08.20
>>59
最適化ってどんな?

61:デフォルトの名無しさん
13/11/05 22:45:57.37
>>58
言ってる意味がよくわからんな
最終的にAPIをstaticにしなくともstaticなんて極力使わないよ
インスタンスクラスにstaticをかぶせるのは容易だけど逆はできないもの

62:デフォルトの名無しさん
13/11/05 22:49:00.83
>>58
本来あるべき姿という考えなら
staticは本来極力使うべきではない。

63:デフォルトの名無しさん
13/11/05 22:51:45.82
>>60
const使ってるとコンパイラが(中で)定数扱いにしやすい
あと(ライフサイクルが短くなって)死にやすい

64:デフォルトの名無しさん
13/11/05 22:52:50.38
>>61
> 言ってる意味がよくわからんな
オラクルにでも聞いてください。
オートデプロイは開発環境用につくられてるって書いてあるんだから。

っていうか、実際にstatic使ったら問題が起きるんだろ?
それがオートデプロイを実運用で使うべきではない理由の一つじゃん。

> staticは本来極力使うべきではない。

なんでだよw

65:デフォルトの名無しさん
13/11/05 22:53:57.91
>>61
訂正
☓ APIをstaticにしなくとも
○ APIをstaticにするにしても

66:デフォルトの名無しさん
13/11/05 22:55:23.04
もはや、”センス”って言っていいのかもしれんな。

オートデプロイを使って開発している時に、
オートデプロイができない場合がちょくちょくあるのは
わかりきってるじゃん。

その時点で実運用で使おうなんて思わないよ普通。
オートデプロイの事を考えて開発するなんて本末転倒。

67:デフォルトの名無しさん
13/11/05 22:55:45.73
>>64
たいていのやつはstaticをグローバル変数みたいな使い方しているだろ。
グローバル変数を排除しスコープの局所化でリソースを有効に使うべきだから。

68:デフォルトの名無しさん
13/11/05 22:56:01.12
すべてstaticにするべき。

69:デフォルトの名無しさん
13/11/05 22:56:35.34
>>67
正しいstaticの使い方をしてください。

70:デフォルトの名無しさん
13/11/05 22:57:48.11
C/C++でグローバル変数を使いまくってウンココード書いているようなやつがstatic
信者だからだよ。

71:デフォルトの名無しさん
13/11/05 22:58:53.81
>>64
なんでだよってMockオブジェクトとか作れなくなるだろ
こんな簡単な事も理解できない奴が
なんでオートデプロイなんて使ってるんだ?

72:デフォルトの名無しさん
13/11/05 22:59:31.36
staticはインスタンスが無くても呼び出せる。
だからすべてstaticにするべき。

73:デフォルトの名無しさん
13/11/05 23:02:08.52
小規模開発でオートデプロイ
これなら全部staticで問題ない

74:デフォルトの名無しさん
13/11/05 23:22:56.75
例えば内部クラスは必要が無い限りstaticにすべき。
ここでも非static信者はstaticを避けるの?

75:デフォルトの名無しさん
13/11/05 23:26:12.93
>>74
避ける。

76:デフォルトの名無しさん
13/11/05 23:26:20.88
オートデプロイもクラスのreloadableも残念ながら現状あまりあてにならない。

77:デフォルトの名無しさん
13/11/05 23:26:16.36
>>74
それ、もしよければ理由を教えて欲しい >>9 もそうしてるね

78:デフォルトの名無しさん
13/11/05 23:28:26.18
staticこそが栄光であり神の教えでもあるから
Javaに幸あれ

79:デフォルトの名無しさん
13/11/05 23:28:54.31
親オブジェクトへの参照を持つから。

80:デフォルトの名無しさん
13/11/05 23:36:18.69
宇宙空間ならstaticじゃなくても良い可能性がある

81:デフォルトの名無しさん
13/11/05 23:57:35.13
>>79
ごめんここまで書いてわからなくなったURLリンク(ideone.com)
インナークラスにどう追加したら「親オブジェクト」(????)の参照を拾えるの?

82:デフォルトの名無しさん
13/11/06 00:13:02.17
>>80
地球では第1コンパイル以前の処理をstaticとしていますが、
宇宙には第2コンパイルも普通に使われ
第Nコンパイルに至ってはインタプリタと同等です。
どういうことかというとstaticはありません☆

83:デフォルトの名無しさん
13/11/06 01:18:29.47
>>81
staticでない内部クラスからは「親オブジェクト」のフィールドやメソッドに普通に
アクセスできる。この場合内部クラスでthis.mとかやれば自分自身が返る。
参照がほしければ親オブジェクトのクラス名.this。この場合はC.this。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch