[表示 : 全て 最新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/

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
そういうパターンって意外に多いみたいだな。

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

171 名前:仕様書無しさん [2007/07/10(火) 22:40:02 ]
>>169
ばっかwww
きっと増える可能性を考慮して頑張って考えたんだよwwww
そのあと増えることは実はないのにwwwww

End Select
Next

の間に共通の処理があるならいいとおもうけどさ・・・・


172 名前:仕様書無しさん [2007/07/10(火) 23:19:17 ]
>>169
テストコードじゃないの?


173 名前:仕様書無しさん [2007/07/10(火) 23:28:08 ]
ステップ数で金額が決まるんじゃね?
どうせコボラだろ。

174 名前:仕様書無しさん mailto:sage [2007/07/11(水) 00:00:39 ]
>>173
そんな事言ってると、
大勢のコボラーにピンセットで全身の皮膚を摘まれるぞ。

175 名前:仕様書無しさん mailto:sage [2007/07/11(水) 01:43:49 ]
>>174
このルールを適用しよう
pc11.2ch.net/test/read.cgi/prog/1179927770/247-253



176 名前:仕様書無しさん mailto:sage [2007/07/11(水) 03:17:01 ]
>>171
増える可能性を考慮すると、余計に
単に並べた方が良くね?

177 名前:仕様書無しさん [2007/07/11(水) 12:53:19 ]
>>176
無理やり解釈したが結構無理があったようだ

178 名前:仕様書無しさん mailto:sage [2007/07/11(水) 13:56:19 ]
寿司食いたい

179 名前:仕様書無しさん mailto:sage [2007/07/11(水) 14:04:32 ]
( ゚д゚)ガリでも食ってろ

180 名前:仕様書無しさん mailto:sage [2007/07/11(水) 14:31:07 ]
char *hoge(char *inbuf, char *outbuf);

コメントには入力専用と書いてあるが、
inbuf を変更されるのか気になって夜も眠れない。


181 名前:仕様書無しさん mailto:sage [2007/07/11(水) 14:43:29 ]
while(1) printf("寿司食いたい\n");

182 名前:仕様書無しさん mailto:sage [2007/07/11(水) 15:11:08 ]
ちょっとリアルで寿司食いにいってくるわ

183 名前:仕様書無しさん mailto:sage [2007/07/11(水) 15:17:13 ]
while(1) printf("ウニ軍艦\n");

184 名前:仕様書無しさん [2007/07/11(水) 16:20:13 ]
寿司.Dispose

185 名前:仕様書無しさん mailto:sage [2007/07/11(水) 18:06:44 ]

while(1) printf("かんぴょう巻\n");

printf("大トロ\n");

printf("シマアジ\n");

printf("あわび\n");

printf("ウニ\n");

printf("ぷりん\n");



186 名前:仕様書無しさん mailto:sage [2007/07/11(水) 18:11:16 ]
/(^o^)\

187 名前:仕様書無しさん mailto:sage [2007/07/11(水) 19:03:13 ]
先生、かんぴょう巻きがオーバーフローしました

188 名前:仕様書無しさん mailto:sage [2007/07/11(水) 20:08:40 ]
>>185を改善してpythonに移植。

while hara!=full:
    print "かんぴょう巻き"

if hara!=full:
print "大トロ"
    print "エビ"
    print "トラフグ"
    print "ウナギ"

189 名前:仕様書無しさん [2007/07/11(水) 20:31:00 ]
>>188

行:7ParalysisExceptionが発生しました!!

こら!!
ふぐ使うときはちゃんとキャッチしないと大ごとになるぞ?

190 名前:仕様書無しさん [2007/07/11(水) 20:33:35 ]
スレッドでグローバル静的変数が最強。

191 名前:仕様書無しさん mailto:sage [2007/07/11(水) 21:27:31 ]
std::vectorの中身を書き換えるのがその次くらいに最強ですよ。


192 名前:仕様書無しさん [2007/07/11(水) 22:23:57 ]
ちょっと前に見かけたやつ

resultset = statement.executeQuery("select a.id id1,b.id id2,a.namae namae,b.denwa denwa from tbl1 a,tbl2 b where a.id=" + param);

while (resultset.next()) {
if (resultset.getString("id1").equals(resultset.getString("id2"))) {
namae = resultset.getString("namae");
denwa = resultset.getString("denwa");
}
}

193 名前:仕様書無しさん [2007/07/11(水) 22:28:43 ]
>>192
C丼かjavaかよくわからんが、とにもかくにもSQLを見直せという事か・・・。

194 名前:仕様書無しさん mailto:sage [2007/07/11(水) 22:58:19 ]
>>192
ループでいちいちIDチェックするくらいならJOINしろと。>>193の言いたいことはそういうことだよね?
あと、SQLインジェクション対策をしていないのも問題かな。

195 名前:仕様書無しさん mailto:sage [2007/07/11(水) 23:04:51 ]
しかし、こういうSQLとロジックを思いつく方が逆に凄いと思うんだが。
COBOLerでもこんなコードは思いつかんだろう。

と思いたい。



196 名前:仕様書無しさん mailto:sage [2007/07/11(水) 23:22:00 ]
>>195
同感

197 名前:仕様書無しさん mailto:sage [2007/07/12(木) 03:24:35 ]
>170
意図的に Case 2 の部分だけを動作させたいとき(デバッグの時とか)に
For 文を直すだけで良い とか?

198 名前:仕様書無しさん mailto:sage [2007/07/12(木) 04:24:42 ]
>>195
コボラはそもそも SELECT * FROM テーブル名 しか知らないからなw

199 名前:仕様書無しさん mailto:sage [2007/07/12(木) 09:51:02 ]
>>192
社保庁の名寄せか?w

200 名前:仕様書無しさん mailto:sage [2007/07/12(木) 10:10:57 ]
テーブルの設計がヘンで>>192みたいな事になったことはある。

当然使いものにならなくて、最終的には全部作り直しになったらしい。


201 名前:仕様書無しさん mailto:sage [2007/07/12(木) 15:53:24 ]
>>195
見よう見まねで内部結合しようとしたら、なんかいっぱい返ってきたから
チェックするようにしました、みたいな。
ヴビ厨が得意。

202 名前:仕様書無しさん mailto:sage [2007/07/12(木) 16:19:41 ]
データベースを使ったデータ操作関連プログラムは、テーブルの設計がしっかり
していれば糞ソースになりにくい。



203 名前:仕様書無しさん mailto:sage [2007/07/12(木) 16:32:42 ]
いや、なるでしょ。
テーブルの設計と、プログラマが書くコードは別問題。

204 名前:仕様書無しさん mailto:sage [2007/07/12(木) 16:33:09 ]
>>202
ダメな奴は、正規化すればするほど >>201 みたいなことに陥りやすい件。

205 名前:仕様書無しさん mailto:sage [2007/07/12(木) 16:41:12 ]
テーブル設計がしっかりとしたものになるかどうかは、
6割の努力と4割の運任せだよって、かあさんが言ってた。



206 名前:仕様書無しさん mailto:sage [2007/07/12(木) 16:51:42 ]
>>205
それはブイヤベースの間違いじゃないかい?

207 名前:仕様書無しさん mailto:sage [2007/07/12(木) 17:05:48 ]
運任せってのはわかるな。
初期設計の時は見落としていた活用の道が出てきて、転用しようとしたら設計が悪くて、再構築になることがある。
再構築しなくてよいテータベースがあると、その設計に感嘆する。
センスの差なのかもしれんね。

208 名前:仕様書無しさん mailto:sage [2007/07/12(木) 17:05:59 ]
結局、最前線に配置されている兵隊が駄目だと、どんなに
すばらしい作戦も失敗すると。

209 名前:仕様書無しさん mailto:sage [2007/07/12(木) 17:07:35 ]
>>207
>再構築しなくてよいテータベースがあると、その設計に感嘆する。

ER図がぱっと頭の中に浮かぶんだな。

210 名前:仕様書無しさん mailto:sage [2007/07/12(木) 17:22:05 ]
>>207
発展型の転用と、思いつきの転用の差だと思う。
ユーザーがぶれてないだけで、設計の良し悪しはあまり関係ない気がする。

211 名前:仕様書無しさん mailto:sage [2007/07/12(木) 18:45:01 ]
テータベースに萌えた

212 名前:仕様書無しさん mailto:sage [2007/07/12(木) 21:47:11 ]
>再構築しなくてよいテータベースがあると、その設計に感嘆する。

本来はそうなるように最初から設計しておくものだが・・・。

Excelしか触ったことなかったり、Accessが256以上のカラムが使えないから困るとか
言う人には夢の話なのかもしれんが。


213 名前:仕様書無しさん [2007/07/12(木) 22:29:53 ]
>>212
1レコード212のカラムの設計するほうが難しいと思うんだがw
でも・・・あるんだよなぁ・・・・orz

超汎用テーブルとかだれが思いつくのさ

214 名前:仕様書無しさん mailto:sage [2007/07/12(木) 22:50:36 ]
>>213
みかか村で過去に14テーブルぐらいそうゆうのみたなw


215 名前:仕様書無しさん mailto:sage [2007/07/12(木) 22:59:21 ]
こんなDBもあるんだからびっくりだ
名前, 種類, データ1, データ2, ・・・・, データ99, 予備1, 予備2,・・・予備99




216 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:04:34 ]
そんな用途不明のフィールド量産してどうするんだwww
暗号か?www

217 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:07:11 ]
データベースの設計は基本的に「1 fact 1 place」を頭に入れておけば
そう難しいモノでもないのだが、どーもCOBOLerとかAccessやExcelしか
知らん人は不思議なテーブル設計をするよな。

なんでそんなに面倒で難しい方向に走りたがるのかよーわからん。

218 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:08:37 ]
>215
予備の無意味さに吹いた

219 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:14:10 ]
C++で、構造体にメンバ変数を追加する必要があって、
その構造体を扱っているコードをみていたら、わざわざ
メンバ変数を一個ずつコピーしてる関数が。

HogeCopy(Hoge* dst, Hoge* src)
{
  dst->a = src->a;
  dst->b = src->b;
  dst->c = src->c;
  :
  :
}

これ、*dst = *src; でいいだろと思ったけど、念のためにコードを確認してみると、
メンバ変数は31個なのに、コピーしてるのは29個だけ。

ただのバグだと思うけど、*dst = *src;に置き換えて全部コピーするようにして、なにか
影響があるといやなので、(影響がないか調べるのもめんどうなので)上のコードに、
追加したメンバ変数を、コピーするコードを追加しておきました。
(こうやってどんどんダメなコードになっていくんだろうなぁ)



220 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:17:01 ]
>>217
COBOLは、レコード長固定のファイルに対して
1レコード読む→レコードを桁で区切る→処理
をすることに特化した言語だからな
予備カラムなんて考え方もそれに由来するんだろう

コボラはその考え方でしか理解出来ないからDBにまでそれを持ち込む

221 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:18:36 ]
ポインタのコピーは、ポインタが上書きされるだけでは?
それを行うならmemcpy(だったっけ)を使うのでは?

222 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:20:06 ]
>>221
メンバ変数にCStringがあるから、それやると、逆に大惨事に。

223 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:36:04 ]
>>221
>219 のどの辺がポインタのコピーなのかkwsk

224 名前:仕様書無しさん mailto:sage [2007/07/12(木) 23:52:26 ]
src->aのメンバ変数aが何の型か
解からないけど実はポインタ型とか
勝手にいい方に解釈してみるテスト

225 名前:仕様書無しさん mailto:sage [2007/07/13(金) 00:29:36 ]
>>219
数にもよるが俺ならこう書くかもしれない。
HogeCopy(Hoge * dst, Hoge * src)
{
Hoge * dstOld = dst;
// とりあえず全部コピー
*dst = *src;

// 以下2つはコピーしたくない
dst->x = dstOld->x;
dst->y = dstOld->y;
}



226 名前:仕様書無しさん mailto:sage [2007/07/13(金) 00:31:55 ]
強い保障されたswap( )実装しろよ


227 名前:215 mailto:sage [2007/07/13(金) 07:19:23 ]
実はこれある大手銀行のデータベースなんだ・・・
二度とそこには預金しなくなったYO






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

前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