[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 08:28 / Filesize : 90 KB / Number-of Response : 447
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

この会社辞めようと思ったソースコード#17



1 名前:仕様書無しさん mailto:sage [2007/07/06(金) 14:42:11 ]
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。

前スレ
この会社辞めようと思ったソースコード#16
pc11.2ch.net/test/read.cgi/prog/1175485506/

70 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:43:54 ]
>64
でもそんなプロジェクトこそ実力と経験は必要だよな
全然報われないだろうけどw

71 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:45:54 ]
>>68
コードの90%近くを書き直してコメント率が70%位行った時は、さすがにorzってなったな。

72 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:47:57 ]
コメント率って何?
ソースコード中のコメントの量?

73 名前:仕様書無しさん mailto:sage [2007/07/08(日) 00:17:26 ]
そうだよ

74 名前:仕様書無しさん mailto:sage [2007/07/08(日) 00:20:19 ]
もしくは各行に対してコメントの記述してある割合
// 変数i の宣言
int i ;
// 変数i に0を代入
i = 0;

とか死にたくなるくらいくどいソースは見たことある
肝心なi が何に使用されているかは記述されていないんだがなw

75 名前:仕様書無しさん mailto:sage [2007/07/08(日) 00:43:16 ]
>74くらいのコメントなら自動生成できるなw
そんな機能絶対いらないけどw

76 名前:仕様書無しさん mailto:sage [2007/07/08(日) 01:00:55 ]
>>74を短くしてみた。

// int i;
int i;
// i = 0;
i = 0

77 名前:仕様書無しさん mailto:sage [2007/07/08(日) 02:36:11 ]
// もし a と b が等しいなら
if(a==b){
 // c に func() の戻り値を代入
 c = func();

// それ以外なら
}else{
 // 何もしない
}

..._| ̄|○

78 名前:仕様書無しさん mailto:sage [2007/07/08(日) 02:46:53 ]
>>77
小学校の卒業式を思い出した



79 名前:仕様書無しさん mailto:sage [2007/07/08(日) 04:09:29 ]
まともなコメントは最後のだけか

80 名前:仕様書無しさん mailto:sage [2007/07/08(日) 04:38:53 ]
>79
最後はコメント以前にelse{}自体が要らない…

81 名前:仕様書無しさん mailto:sage [2007/07/08(日) 04:44:45 ]
いらないけど、会社で書くことが決まってるかもよ?
うちはdefaultは書く決まりになってるし。

82 名前:仕様書無しさん [2007/07/08(日) 05:09:37 ]

width を本気で ワイズと全員が言っていた時。。。



83 名前:仕様書無しさん mailto:sage [2007/07/08(日) 05:12:09 ]
スレ違い
変な読み方スレへお帰りください

84 名前:仕様書無しさん mailto:sage [2007/07/08(日) 06:15:04 ]
>>82
ワイドって読んでたけど、本当はなんなの?

85 名前:仕様書無しさん mailto:sage [2007/07/08(日) 06:31:05 ]
>>84
辞書引け

86 名前:仕様書無しさん mailto:sage [2007/07/08(日) 06:34:11 ]
辞書を引いてみたが、ウィドスと読むのかな?
発音記号はこんな感じだった → widθ

87 名前:仕様書無しさん mailto:sage [2007/07/08(日) 06:49:15 ]
え、俺はずっとwithと同じ発音だと思ってた・・・やべぇw

88 名前:仕様書無しさん mailto:sage [2007/07/08(日) 11:27:34 ]
Javaで一時的に2MBほどのbyte配列を確保しなければならなかったと言うことがある。
簡単なアップロードモジュールなんだが、実装をさせてみた所、単体テストでOutOfMemoryが炸裂。
嫌な予感がしたのでソースを追ってみた。

byte[][][] fileDate = new byte[2][1024][1024];

協力会社からきた30台Java経験3年の奴だったんだが、Fizz-Buzzやらせて辞めさせた



89 名前:仕様書無しさん mailto:sage [2007/07/08(日) 11:31:31 ]
>>88
それでいいんじゃねーのw?それで2MBって思えばさw

90 名前:仕様書無しさん mailto:sage [2007/07/08(日) 11:48:07 ]
何か見落としていたらすまんが>>88の何が悪いのかわからん

91 名前:仕様書無しさん mailto:sage [2007/07/08(日) 11:52:56 ]
>>88
分かりやすくていいじゃんw

92 名前:仕様書無しさん mailto:sage [2007/07/08(日) 11:57:15 ]
>90
オレも分からなかった
Javaの多次元配列だとなにかあるのか?

93 名前:仕様書無しさん mailto:sage [2007/07/08(日) 12:00:54 ]
>>90
参照するたびにオフセットから3つのインデックスを算出しないといけないのはナンセンスだな。

94 名前:90 mailto:sage [2007/07/08(日) 12:04:39 ]
>>93
JVMの仕様はオブジェクトの構造を定めていないから実装依存だと思うんだが。

というか何がわからんかって、>>88のコードでOutOfMemoryが炸裂する理由がわからん。
配列アクセスで参照を辿るという「普通の実装」で考えても
byte[1024][1024][2]ならタコだがbyte[2][1024][1024]なら問題ないと思うが。


95 名前:88 mailto:sage [2007/07/08(日) 12:07:57 ]
訂正
byte[][][] fileDate = new byte[1024][1024][1024];

96 名前:仕様書無しさん mailto:sage [2007/07/08(日) 12:10:26 ]
>>95
ちょww

97 名前:93 mailto:sage [2007/07/08(日) 12:15:31 ]
4GB積んだ企業向けシステムなら問題なしw

98 名前:仕様書無しさん mailto:sage [2007/07/08(日) 12:18:03 ]
>>88
つまり、その最初の2つのインデックスしか使用してないわけだなw

>>97
JVMって4GBもヒープとれたっけ?



99 名前:仕様書無しさん mailto:sage [2007/07/08(日) 12:21:27 ]
>>93
それに関しては多次元配列にする方が効率が良かったりする
new byte[2*1024*1024] だと2MBの連続した領域がヒープに確保される筈
だけど、new byte[2][1024][1024]だと1KBの連続した領域がバラバラに確保されて参照されるんで、OutOfMemoryが発生しにくい
最近の実装が最適化でもするならばスマソ

100 名前:仕様書無しさん mailto:sage [2007/07/08(日) 12:21:56 ]
88は、仕事でもタコミスを連発していることだろうな

101 名前:90 mailto:sage [2007/07/08(日) 12:33:40 ]
>>99
あまり詳しくないがGCがコンパクションくらいするのでは?
そもそも2MBの配列をローカルで使い捨てするようなプログラムなら
そっちの方が問題が大きい気もするが。

そもそも「2MBの配列」を
byte[2 * 1024 * 1024]で取るかbyte[2][1024][1024]で取るかというのは、
性能よりも何よりも、まずはその配列の意味を考えて決めるのが正しい姿勢だと思うが


102 名前:仕様書無しさん [2007/07/08(日) 13:20:04 ]
ファイルのアップロードという話だから
new byte[2*1024*1024]のほうがストリームと
つなげやすくていいんじゃないだろうか

それはそうと、「fileDate」に誰もつっこんでないんだな

103 名前:仕様書無しさん mailto:sage [2007/07/08(日) 13:25:00 ]
>>102
よくあるスペルミスだし、辞めるほどじゃないから

104 名前:仕様書無しさん mailto:sage [2007/07/08(日) 13:37:46 ]
JavaだったらNIOのDirectByteBufferとか使うんじゃね?


105 名前:仕様書無しさん [2007/07/08(日) 13:44:40 ]
>>99
OSによるだろうが仮想メモリ空間が提供されている以上は
メモリに空きさえあればOutOfMemoryの発生頻度は同じ


106 名前:仕様書無しさん mailto:sage [2007/07/08(日) 14:13:52 ]
>95
おいおい, 全然意味合いが違うじゃないかw

>102
byte型に独自フォーマットで日付の何かを入れてるんだと解釈していた


107 名前:仕様書無しさん mailto:sage [2007/07/08(日) 15:32:14 ]
32bitフラットメモリモデルでは、たとえば、
DLLのコード部分も同じ4GBの空間に読まれるので、
そこで仮想メモリ空間が分断化されることは多々ある。

108 名前:仕様書無しさん [2007/07/08(日) 20:27:13 ]
ソースコードじゃないが
仕様書のタイトルを♪で囲ってた時・・

♪○○○○システム♪




109 名前:仕様書無しさん [2007/07/08(日) 20:56:23 ]
>>107
なに適当言ってるの?

110 名前:仕様書無しさん mailto:sage [2007/07/08(日) 22:22:40 ]
いいか、みんな

        (゚д゚ )
        (| y |)

安部政権になれば「いい国」になると信じてたのに、
いつまでたっても苦しいままだ。

それどころか、ますます国じゅうが狂ってきて、
日本人同士が憎しみ合うようになっている。


    美しい  ( ゚д゚)   国
       \/| y |\/


ひらがなにして


        ( ゚д゚)  う つ く し い く に
        (\/\/

逆から読むと…

        ( ゚д゚) 憎 い し 苦 痛
        (\/\/


そういうことだったんだ。


111 名前:仕様書無しさん mailto:sage [2007/07/08(日) 23:32:49 ]
>74
今追ってるソースがさー

' SQL文を作成
(コード略。まぁベタベタに文字列連結してると思いねぇ)

' レコードセットオープン
(コード略。単にOpenメソッド呼んでるだけだが)

' フェッチループ
(コード略。毎度おなじみ、Do Until .EOF〜.MoveNext〜Loopだ)

もうDB読みに行くたびにこればっか。下の二つのコメントいらんから何がしたいのかを書けよと > 書いた香具師
明日もまた最初の「SQL文〜」のとこに「何を照会するのか」書き足す作業がはじまるお……

112 名前:仕様書無しさん mailto:sage [2007/07/08(日) 23:33:09 ]
>>110
死ね

113 名前:仕様書無しさん mailto:sage [2007/07/08(日) 23:38:52 ]
>109
何、どの辺りが適当なわけ?

114 名前:仕様書無しさん mailto:sage [2007/07/08(日) 23:39:54 ]
書かなくとも解るコメントって本当に邪魔だよな
そんな時に限って重要なコメント(目的とか制限とか)が記述されていない

115 名前:仕様書無しさん mailto:sage [2007/07/09(月) 06:19:47 ]
「コメントは全行に書け」という規則があったので、コーディング用紙の右側に全部
                              /*                  */
を書いた奴を大量コピーして使用。そのままパンチに出したから、隙間の所も全て
空のコメント行になってた。しかも肝心のコメント文はカタコト(w

116 名前:仕様書無しさん [2007/07/09(月) 14:21:50 ]
>そのままパンチに出したから、

50年くらい前かな?



117 名前:仕様書無しさん mailto:sage [2007/07/09(月) 16:21:34 ]
>>116
おいおい、25年くらい前まではあったぞ。

118 名前:仕様書無しさん mailto:sage [2007/07/09(月) 17:26:27 ]
確かに、紙カードを最後に使ったのは、25年前だなぁ



119 名前:仕様書無しさん [2007/07/09(月) 17:43:30 ]
ちょwwww
お前らいったい何歳なんだ?
俺29なんだが・・・

ps.別スレに誤爆して欝なおいら

120 名前:仕様書無しさん mailto:sage [2007/07/09(月) 18:39:25 ]
そんないい歳こいたオッサンが昼間から2chかいいご身分ですな。
しかし、五十路ニートってしゃれにならんなw

121 名前:仕様書無しさん mailto:sage [2007/07/09(月) 19:06:56 ]
マ板で昼間からとか

122 名前:118 mailto:sage [2007/07/09(月) 19:11:01 ]
いや、もう引退しているから。
暇で暇で仕方がないんです。
いいご身分でしょorz

123 名前:仕様書無しさん [2007/07/09(月) 19:30:43 ]
>>122
それはそれで、先派内がうらやましい気がする


124 名前:仕様書無しさん [2007/07/09(月) 20:15:17 ]
>>123
長くても20年短ければ明日だもんな

125 名前:117 mailto:sage [2007/07/09(月) 21:20:37 ]
悪ぃ、俺職場から書いてる。

126 名前:仕様書無しさん mailto:sage [2007/07/10(火) 01:42:34 ]
>>122
なんかおもろいソフトつくってよ

127 名前:仕様書無しさん mailto:sage [2007/07/10(火) 05:42:04 ]
ベタだけど、フィボナッチ数列の一般項を求めるプログラムで再帰で書く奴はどうかと思った。その子は情報系。あ、大学での話ね。

128 名前:仕様書無しさん mailto:sage [2007/07/10(火) 06:14:22 ]
>>74 >>111 そんなバカなことがあるもんか。



129 名前:仕様書無しさん mailto:sage [2007/07/10(火) 07:00:49 ]
>128
それが実際いるんだな。
「各処理が何をしているのか分かるよう、コメントを書くべき」
ということだけ知ってて
実際何を書くべきなのか全く分かっていない奴
コードを直訳しろとは誰も言ってないだろっちゅーに…

130 名前:仕様書無しさん mailto:sage [2007/07/10(火) 07:08:23 ]
' 結果をRetに格納
Ret = MsgBox(ry
' もしRetが6なら
If Ret = 6 Then
  ' Aに1を格納
  A = 1

VBじゃもはや見飽きたコメントだな。
せめて【Retが「はい」なら】と書け…
って言うかそれ以前に定数使えよと思うけど。
しかもAに1を入れる意味が何なのか書いてない。

131 名前:仕様書無しさん mailto:sage [2007/07/10(火) 07:23:12 ]
ようはアレだろ、コメントはコードを日本語化したものを書くのじゃなく、そのコードはどういう意図なのかを書けってことだろ。
コメントは他の人にも分かるよう、コードの意味を書くのですよとか言うのを言葉どおりに受け取ってるんじゃない?

132 名前:115 mailto:sage [2007/07/10(火) 08:49:54 ]
>>115が30年ぐらい前だったかな。 俺は今59だけどクミコで現役です。
小ぶりのシステム新築お任せがよく来ます。

133 名前:仕様書無しさん mailto:sage [2007/07/10(火) 10:19:08 ]
まあ入門書丸覚えが精一杯、てなレベルの人々が多いんだろう。
入門書に書いてある、コードの直訳としてのコメントしか
見たことが無いから、『コメントとはそーゆーモンである』と
身につけてしまうのであろう。
そうなってしまわない奴こそがまっとうなプログラマーになれるわけだが...

134 名前:仕様書無しさん mailto:sage [2007/07/10(火) 11:54:48 ]
久美子さん(59歳)まだまだ現役です。

135 名前:仕様書無しさん mailto:sage [2007/07/10(火) 11:55:37 ]
ワロタww

136 名前:仕様書無しさん mailto:sage [2007/07/10(火) 11:59:10 ]
ホットドックで楽しようと考えた管理者が大杉た

137 名前:仕様書無しさん [2007/07/10(火) 12:02:25 ]
>>134
どういう意味で現役なのかwwww


138 名前:仕様書無しさん mailto:sage [2007/07/10(火) 13:05:33 ]
えっ、そっち?うわー



139 名前:仕様書無しさん mailto:sage [2007/07/10(火) 13:26:38 ]
>>127
再帰の練習課題なのに
一般項の公式つかって得意になってる奴?

140 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:20:46 ]
>>139は無類の再帰好き

141 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:32:54 ]
フィボナッチ数列ぐらいの単純なものなら再帰より一般項を直接求めたほうが速いかも知れんけど、どっちでもいいよ

142 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:37:03 ]
>一般校を直接求め
どうやって?

143 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:38:03 ]
>>139
いや、そうじゃなくて線形で書けってこと。
オーダーが全然違う

144 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:38:49 ]
例えば
(define (fib n)


145 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:42:26 ]
線形?反復の間違いだろ

146 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:50:41 ]
そもそも数列自体が再帰的に定義されてるから、再帰的にプログラミングすることは別に自然だと思うけどな。


147 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:57:23 ]
言ってる意味がよくわからんが
 return fib(n - 1) + fib(n - 2);
じゃなくて
 int tmp = fib(n - 2);
 return tmp + n - 1 + tmp;
と書けってことか?

148 名前:仕様書無しさん mailto:sage [2007/07/10(火) 14:58:54 ]
ただ、フィボナッチのプログラムを書けなら再帰で全然OK
時間のオーダーをなるたけ小さくしろなら、再帰で書く奴はゴミ虫



149 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:03:24 ]
>>147
それ両方再帰じゃない?
再帰:
(define (fib n)
 (if (<= n 2)
   1
   (+ (fib (- n 1)) (fib (- n 2)))))

反復:
(define (fib n)
 (define (iter rersult a count)
  (if (=> count n)
    result
    (iter (+ result a) result (+ count 1))))
 (iter 1 1 1))


150 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:12:05 ]
フィボナッチ数の一般項ならWikipediaにも載ってるよ

151 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:13:42 ]
ただ、無理数のn乗が入ってるから余程nが大きくない限り普通に足し算したほうが速い気がするw

152 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:15:33 ]
>>142
・・・(^ω^;)
高校で習うから安心していいよ

153 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:22:07 ]
寿司食いたい

154 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:24:23 ]
>>146
自然ていやぁ自然かも知らんが、末尾再帰を再帰で書くのは阿呆。

155 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:35:22 ]
ちょっとおもしろそうだから、再帰・反復・一般項でそれぞれ実行時間計ってみた。
再帰;
35項まで求めて9.3秒
40項は1分たっても反応無いので中止
反復;
10000項まで求めて0.14秒
一般項:
10000項は無理数の10000乗が無理だった

156 名前:仕様書無しさん mailto:sage [2007/07/10(火) 15:36:01 ]
プログラムの頭に処理内容がフローチャートで書いてあるソース群を
渡されたのだが...
変更したら上に書いてあるフローチャートも直すのか?
つーかもうあってねぇよ


157 名前:仕様書無しさん mailto:sage [2007/07/10(火) 16:01:06 ]
イイハナシダナー

158 名前:仕様書無しさん mailto:sage [2007/07/10(火) 16:33:58 ]
>156
直してあげなさい
後の人のために

それか、チャートをDELしてあげなさい



159 名前:仕様書無しさん mailto:sage [2007/07/10(火) 16:51:39 ]
Schemeの場合
末尾再帰は最適化でループに書き換えられなければならない
という事が仕様で明示されてるから末尾再帰ならOK
末尾再帰と認められない書き方したらダメだが

160 名前:仕様書無しさん mailto:sage [2007/07/10(火) 16:53:23 ]
>155
実際そこまで違うものなのかー

161 名前:仕様書無しさん mailto:sage [2007/07/10(火) 17:03:40 ]
>>160
全く嘘はついていないぜ
TUTSchemeで実装&時間計測


162 名前:仕様書無しさん mailto:sage [2007/07/10(火) 17:19:01 ]
>>155
>10000項は無理数の10000乗が無理だった
その前に、64bit double で計算してると n=71 あたりで誤差が出始めるし
そもそもほぼ O(1) なんだから 10000 までやっても意味ない気が。

163 名前:仕様書無しさん mailto:sage [2007/07/10(火) 17:33:12 ]
ですよねー

164 名前:仕様書無しさん mailto:sage [2007/07/10(火) 17:59:32 ]
>>162
まぁね
オーダーはexpt使ってるからlogNくらいかも。まぁ係数がかなり小さいだろうが。

165 名前:仕様書無しさん mailto:sage [2007/07/10(火) 18:32:45 ]
n=70ぐらいでいいのなら、map が最速じゃね?

166 名前:仕様書無しさん mailto:sage [2007/07/10(火) 18:50:03 ]
普通に反復でも0秒だけどね、70くらいなら

167 名前:仕様書無しさん mailto:sage [2007/07/10(火) 19:11:23 ]
ここはスレ違いへの許容があるスレですね
このぐらいのほうが話題が膨らんで楽しい

168 名前:仕様書無しさん mailto:sage [2007/07/10(火) 21:46:22 ]
>>159
Cでもイマドキのコンパイラなら、最適化してくれるよ。



169 名前:仕様書無しさん mailto:sage [2007/07/10(火) 22:36:11 ]
こんなソースがありました。

Dim iIndex As Integer
For iIndex = 1 to 3
Select Case iIndex
Case 1
処理1
Case 2
処理2
Case 3
処理3
End Select
Next

これって・・・
処理1
処理2
処理3
でいいだろ...orz

170 名前:仕様書無しさん mailto:sage [2007/07/10(火) 22:39:26 ]
>>169
そういうパターンって意外に多いみたいだな。

なぜそういう却って難しい書き方をしてしまうのか、理解できない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<90KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef