1 名前:仕様書無しさん mailto:sage [2007/07/06(金) 14:42:11 ] この会社辞めようと思ったソースコード。 プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#16 pc11.2ch.net/test/read.cgi/prog/1175485506/
20 名前:仕様書無しさん mailto:sage [2007/07/07(土) 02:29:48 ] while(rs.next()) { ~~ break; } を見て嫌になった。本人に↓と同じ意味だよね?と確認しつつ直した。 if(rs.next()){
21 名前:仕様書無しさん mailto:sage [2007/07/07(土) 03:01:48 ] >>20 何か問題でも?
22 名前:仕様書無しさん mailto:sage [2007/07/07(土) 03:10:39 ] >>21 詳しく書かなかったから伝わらなかったかな。 while(rs.next()) { System.out.println("hoge"); break; } って書けばわかるかな。
23 名前:仕様書無しさん mailto:sage [2007/07/07(土) 03:16:32 ] あー、無条件にbreakしてるのか
24 名前:仕様書無しさん mailto:sage [2007/07/07(土) 03:23:34 ] >>23 そうそう!そうなの。そういえば更に思い出したんだけど、こんな感じだったなあ↓ while(rs.next()){ if(cond) { // some statement } break; } もちろんif(rs.next() && cond)に書き直した。 VB6とかやってる人間は、if(cond1 && cond2)の中身が &&とか関係なく全て評価されると思っちゃうから、 二重if文とかを書く傾向があるように見える。
25 名前:仕様書無しさん mailto:sage [2007/07/07(土) 03:23:35 ] breakとcontinueは好きな奴はホント好きだよなあ
26 名前:仕様書無しさん mailto:sage [2007/07/07(土) 03:34:14 ] >>25 思考が構造化されてないんだよ
27 名前:仕様書無しさん mailto:sage [2007/07/07(土) 04:48:50 ] while(1){ if ( hogehoge ){
28 名前:仕様書無しさん mailto:sage [2007/07/07(土) 04:50:00 ] 書きこんじったorz while(1){ a++; if ( hogehoge[a] ) { b++; continue; } break; }
29 名前:仕様書無しさん mailto:sage [2007/07/07(土) 05:10:30 ] >>24 実はその while は中で break や continue を使ってジャンプするためのもので、 そしてさらに実は別のループ文に含まれていて、内側の while を if に置き換えると それまで配置されていた break や continue が外側のループに適用されるように っていう悪夢が頭の中をよぎった。
30 名前:仕様書無しさん mailto:sage [2007/07/07(土) 05:38:34 ] >>28 文字数のカウント? どこから教えるべきか悩むな
31 名前:仕様書無しさん mailto:sage [2007/07/07(土) 05:39:08 ] >>15 どの言語でも何故か for { case } が好きな奴いるよな。何故だろ
32 名前:仕様書無しさん mailto:sage [2007/07/07(土) 09:18:30 ] if(なんか条件) { } なにも実行しないんですか? 気になって眠れません><
33 名前:仕様書無しさん mailto:sage [2007/07/07(土) 10:35:50 ] >>32 その「なんか条件」の式は副作用を持っているのかなあ。 それとも将来その中に何かを書きこむのが100%確実だからそう書いているのかな? 気になって(ry
34 名前:仕様書無しさん mailto:sage [2007/07/07(土) 12:12:43 ] >>32 その条件のときは何も処理しないということを明示するために敢えてそういう風に書くことはあるけど グダグダ陰口叩かれないように今度からコメントを書いておくか
35 名前:仕様書無しさん mailto:sage [2007/07/07(土) 12:37:39 ] >>34 if (条件) { 空 } else { 何かする } ならまだわかるけど(条件逆転しろとは思う)、 上から下に流れるだけの状況でelseもなくif (条件) { 空 } と書く理由はよく わからんな。
36 名前:仕様書無しさん mailto:sage [2007/07/07(土) 13:11:54 ] 空の関数DoNothing()を入れとくとか。
37 名前:仕様書無しさん mailto:sage [2007/07/07(土) 13:14:28 ] >>35 たしかに if(条件){ 空っぽ }else{ 処理 } はあるけど if(条件){ 空っぽ } はないな 失礼した。
38 名前:仕様書無しさん mailto:sage [2007/07/07(土) 14:11:20 ] if (a = 0) { }
39 名前:仕様書無しさん mailto:sage [2007/07/07(土) 14:56:37 ] 削るとバグが出るって奴か。
40 名前:仕様書無しさん mailto:sage [2007/07/07(土) 15:24:23 ] >>32 条件のところが関数とかメソッドを呼んでいるならば怖いね 条件式というか関数実行後の副作用がありえるし、エラーコード判定の名残の可能性がある・・・ 例外使えないような連中とJavaとかやるとよく出くわすコードかも
41 名前:仕様書無しさん mailto:sage [2007/07/07(土) 15:30:07 ] >>40 中途半端に使えると、 } catch( Exception e ){ } と書いて揉み消してくれるので、余計タチ悪い。w 何度出くわしたことか。orz
42 名前:仕様書無しさん mailto:sage [2007/07/07(土) 15:47:04 ] >7 昔DOSプログラマだったころ、MSC6でそれ書いてはめられたことがある。 オプティマイザが順番を入れ替えやがって、>7のコードでいえばi < 8のときも else if (i < 19)の部分が先に評価されて条件が成立してしまうという…。 そのときは#pragmaで部分的にオプティマイザを切ったけど、それ以来 冗長でもelse if ((i >= 8) && (i < 19))と書くようにしてた。
43 名前:仕様書無しさん mailto:sage [2007/07/07(土) 16:35:07 ] >41 それは中途半端に使えるというレベルでもないw
44 名前:仕様書無しさん [2007/07/07(土) 21:05:11 ] >>42 初歩的な言語仕様から外れてるんだから それはコンパイラのバグだと思うが。
45 名前:仕様書無しさん mailto:sage [2007/07/07(土) 21:05:22 ] >>42 それはオプチマイザのバグだろ・・・
46 名前:仕様書無しさん [2007/07/07(土) 21:08:52 ] ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
47 名前:仕様書無しさん [2007/07/07(土) 21:17:10 ] >>38 誰を騙そうとしてんだよw
48 名前:仕様書無しさん [2007/07/07(土) 21:39:55 ] >>45 最適化もコンパイラの一部だろ
49 名前:仕様書無しさん mailto:sage [2007/07/07(土) 21:42:27 ] >>45 は>>42 へのレス
50 名前:仕様書無しさん mailto:sage [2007/07/07(土) 21:48:54 ] それは見ればわかるよ
51 名前:仕様書無しさん [2007/07/07(土) 21:50:48 ] if((((式1)&&(式2)) || ((式3)||(式4)) && ((式5)||(式6))){ --意味不明なスパゲッティが数十行-- }else if(--眩暈がするたくさんの式--){ --以下略-- } せめてコメント付けておいてください…
52 名前:42 mailto:sage [2007/07/07(土) 21:53:07 ] いや、当然コンパイラのバグだよ。だからといってそのコンパイラを使うのをやめるわけには そう簡単にはいかないから、防御的プログラミングをしたっていう話で。
53 名前:仕様書無しさん [2007/07/07(土) 22:11:27 ] >>42 コンパイラの不具合にあわせて防御的プログラムをしたのはいいと思うよ。 でもね、このスレは会社をやめようと思ったソースコードなんだよ。 そのソースコードで会社を辞めようと思ったのか?
54 名前:仕様書無しさん mailto:sage [2007/07/07(土) 22:23:42 ] コンパイラのバグをどうにもせず、防御的コーディングのみで 対応するような会社だったら辞めたくなるな。 まぁ、製品によっちゃどうしようも無いこともあるだろうけど。 そうだとしたら、間違って最適化された箇所を早期に 発見してくれるツールなり何かが欲しくなってくるな。
55 名前:仕様書無しさん mailto:sage [2007/07/07(土) 22:25:39 ] コメントも無い 変更履歴も無い あるのはコピーライトだけ
56 名前:仕様書無しさん [2007/07/07(土) 22:28:24 ] >>54 テストをちゃんとすれば気づくだろ。 テスト時は最適化せずに、リリース時だけ最適化してコンパイルする奴ならむしろ辞めてほしい
57 名前:仕様書無しさん [2007/07/07(土) 22:38:42 ] >>51 どうせ正解はこんな感じ。 if((((式1)&&(式2)) || ((式3)||(式4)) && ((式5)||(式6))){ //もし今年が閏年なら --意味不明なスパゲッティが数十行-- }else if(--眩暈がするたくさんの式--){ --以下略-- }
58 名前:仕様書無しさん mailto:sage [2007/07/07(土) 22:42:58 ] 一番辞めようと思ったというか辞めたのはアプリケーションを改修のために引き継ぐ事になった時の話だ。 外注に作らせていて炎上したらしく、酷いことはまあ予想していた。 だが、本気で辞めようと思ったのはその時が最後だ。 ソ ー ス コ ー ド が 存 在 し な い
59 名前:仕様書無しさん [2007/07/07(土) 22:46:25 ] >>58 逆アセンブルでGO!
60 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:00:21 ] >>58 うちのプロジェクトではよくあることだ 10年勤めて2回はソースコードがまったく存在せず、 2回は偽物またはバージョン違い(つかそもそもコンパイルエラーが出る)のソースコードが提供された。 もちろん仕様書つきのプロジェクトなどお目にかかったこともない。
61 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:03:12 ] >>58 ソースコードがないのも、ソースコードのバージョン管理ができていないのも 経験したけど、 ど っ ち も 嫌 だ ! >>59 最初から組み直したほうが早いこともあるかも……。 俺が経験したのは、マシンごとバイナリが失われて、ソースコードも無くて、 あったのはインタフェース仕様書だけという、かなりアレな状況だったけど。www
62 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:05:53 ] >>60 >コンパイルエラーが出る さすがに都市伝説かと思ってたけど、本当にあるんだな。w
63 名前:仕様書無しさん [2007/07/07(土) 23:15:19 ] >コンパイルエラーが出る VisualStudioの古いバージョンで作ったのを 新しいバージョンでコンパイルしようとすると コンパイルエラーはしょっちゅうでる
64 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:18:43 ] >>60 そんなプロジェクトにしか回されないお前って一体・・・
65 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:19:12 ] ソースコードないのはないので好きだけどな。 1年ぐらい時間くれるし。ないならしかたないよねって感じで 今時年契約で5000万とかうますぎるし
66 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:21:37 ] コメントアウトされたコードあるのは全て糞 消せよ読みにくいんだよ
67 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:23:57 ] >>66 NEC様のご命令で消せません><
68 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:24:41 ] 結構変更履歴として残させるとこ多いね。 ローテクな感じでかわいそう。
69 名前:仕様書無しさん mailto:sage [2007/07/07(土) 23:33:30 ] >>66 お前が消せよ
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 そういうパターンって意外に多いみたいだな。 なぜそういう却って難しい書き方をしてしまうのか、理解できない。
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
228 名前:仕様書無しさん [2007/07/13(金) 08:34:20 ] >>215 前、銀行子会社のソフト会社に勤めてた。 親絡みの仕事してる事業部と、親関係ない自前パッケージ作ってる事業部があって 関係ない方にいたんだけど、親絡みの方から移動してくるコボラはそんな感じだった 内部コード、ソート順、名称、種別、区分、大分類、中分類、少分類、ステータス1、ステータス2… 内部コードとソート順にキーをはってるくせに 実際は種別でテーブル分けろよみたいな動きを切替えて 区分でみてるデータと大中小分類でみてるデータがあって 有り得ないデータの制御はアプリで規制するの 正規化とかはなにそれ?って感じなの だって単項目マスターに全マスターほおりこむから 高望みしないからせめてソート順のキーをはずしてくれ… 意味のない内部連番キーにしてるんだから十分じゃないか
229 名前:仕様書無しさん mailto:sage [2007/07/13(金) 10:03:31 ] HogeCopy(Hoge * dst, Hoge * src) { Hoge * dstOld = dst; // とりあえず全部コピー *dst = *src; // 以下2つはコピーしたくない dst->x = dstOld->x; dst->y = dstOld->y; } *dst = *src した時点で、dstOldのさしている先も更新されているって…
230 名前:仕様書無しさん mailto:sage [2007/07/13(金) 12:51:28 ] >>225 おまえ C 使えないだろ。
231 名前:仕様書無しさん mailto:sage [2007/07/13(金) 14:11:00 ] >>224 メンバ変数aがポインタ型だったとして、 dst->a = src->a と *dst = *src がどう違うと言うんだ? >>225 ワロタw
232 名前:仕様書無しさん mailto:sage [2007/07/13(金) 14:51:23 ] >>225 馬鹿!!!
233 名前:232 mailto:sage [2007/07/13(金) 14:52:49 ] およよ。既に突っ込まれ済みですかw
234 名前:仕様書無しさん mailto:sage [2007/07/13(金) 15:28:05 ] >>225 の人気に嫉妬
235 名前:仕様書無しさん mailto:sage [2007/07/13(金) 17:43:53 ] >書くかもしれない ってとこからして、間違った時のことを想定してるんじゃないの?
236 名前:仕様書無しさん mailto:sage [2007/07/13(金) 17:59:37 ] >>225 と寿司九位タイ
237 名前:仕様書無しさん mailto:sage [2007/07/13(金) 18:17:50 ] >>>Hoge * dstOld = dst; -- <<<Hoge dstOld = *dst;
238 名前:仕様書無しさん [2007/07/13(金) 18:30:36 ] 女なら普通に3本まではつっこめる。 男でも3本くらいはつっこめる。
239 名前:仕様書無しさん mailto:sage [2007/07/13(金) 18:55:29 ] >>225 イジメないから出ておいで。
240 名前:仕様書無しさん mailto:sage [2007/07/13(金) 20:18:13 ] ・・・いぢめる?
241 名前:仕様書無しさん mailto:sage [2007/07/13(金) 20:58:31 ] 当然だろ
242 名前:仕様書無しさん mailto:sage [2007/07/13(金) 20:59:50 ] >>237 そのpatchはコンパイルが通らなくなる可能性が・・・
243 名前:仕様書無しさん mailto:sage [2007/07/13(金) 21:38:16 ] HogeCopy(Hoge * dst, Hoge * src) { Hoge dstOld = *src; *dst = *src; dst->x = dstOld.x; dst->y = dstOld.y; } か? >>231 メンバにポインタや参照があるとシャローコピーになってしまう恐れがあるって事じゃ?
244 名前:仕様書無しさん mailto:sage [2007/07/13(金) 22:59:08 ] ホイコーローコピーってどんなコピーだっけ?
245 名前:仕様書無しさん mailto:sage [2007/07/14(土) 00:26:54 ] つーか、SQLだとテストいらなくて、同処理をするjavaだとテスト必要って ....なにが違うの?
246 名前:仕様書無しさん mailto:sage [2007/07/14(土) 00:31:29 ] >>245 SQLはプログラミング言語ではなく、 javaはプログラミング言語だからです。
247 名前:仕様書無しさん mailto:sage [2007/07/14(土) 00:40:56 ] あまり複雑なストアドは書かんでほしい。 デバッガはもちろん、printデバッグもできんじゃないか。
248 名前:仕様書無しさん mailto:sage [2007/07/14(土) 07:44:07 ] SQLもプログラム言語というか普通に命令セットの集合だと思うが。 つか、SQLと同処理をするJavaはそりゃテスト要るだろ。 SELECT WKDATE,DAYNAME(WKDATE),COUNT(NUM1).AVG(NUM1) FROM HOGE WHERE YEAR(WKDATE) = 2006 GROUP BY WKDATE ORDER BY WKDATE ; SQLだと1行(?)ですむ処理がjavaだと結構な行数(?)になるしな。
249 名前:仕様書無しさん mailto:sage [2007/07/14(土) 11:31:43 ] >>248 SQLはプログラム言語じゃないよ。 PL/SQLはプログラム言語だよ。
250 名前:仕様書無しさん mailto:sage [2007/07/14(土) 11:47:15 ] >>249 「〜じゃない」は言えるけど、「〜だ」が言えないタイプの奴だなw 脊髄反射で否定するのは得意。 まあ俺も SQL はプログラミング言語に分類するより、データベースに特化した クエリ言語に分類するのが適当だと思うけれども。
251 名前:仕様書無しさん mailto:sage [2007/07/14(土) 11:57:30 ] SQLは問い合わせ言語であって、プログラム言語じゃないよ。
252 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:00:48 ] マシンに明確な指示を与えるための規則の集合という意味では プログラミング言語と呼んでも間違いではないと思うんだが。 クエリ言語という分類があるとすれば、集合的には、プログラミング言語とクエリ言語の積といったところか。 HTMLはプログラミング言語か―というような議論と同質だな。
253 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:01:03 ] >>250 アホかw 「俺も〜が適当だと思う」って、お前の意見なんか聞いちゃいねーよw SQLのことをよく知らないの丸わかりだな
254 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:03:38 ] >>252 htmlをプログラミング言語なんて思ってる奴なんか、何も知らない初心者だけだろう。 テキストをマークアップするだけの作業のどこがプログラムなんだ? 本に蛍光ペンや赤ペンで線引いたりするのと本質的には同じ作業だろうが。 つまりお前は何も知らない初心者と言うことだ。
255 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:09:17 ] >>254 様々なプラットフォームのブラウザに同一の表示結果を与えるための マークアップは、プログラミングと言っていいと思う。
256 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:10:26 ] 実際、たとえばOracleのcaseを駆使したSQLなんかはプログラムと言っても差し支えはないだろうが もともとそういうのはクエリを呼び出した側がやるべき処理ではあるんだよな。 SQLがどんどん高性能化していってるせいで境界線がよくわからなくなってきてる。
257 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:12:23 ] >>255 いいわけがない。 そもそも、htmlを読んでどう表示するかはブラウザ側の実装次第。 つまり「様々なプラットフォームのブラウザに同一の表示結果を与えるため」に必要なのは ブラウザ開発者側の努力だよ。 だからAcid2なんてものがあるんだろ。
258 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:15:20 ] Acidテストも知らない新人がなに息巻いているんだ? 休日使って勉強でもしとけや
259 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:17:09 ] つかドラゴンブックにHTMLはプログラミング言語だって 書いてあるけどな
260 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:21:32 ] クエリ言語っていうかSQLの一説は構造化照会言語なんだから そのまんまな話に思えるが。 ストアドなSQLは立派にプログラム言語してると思う。
261 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:23:17 ] つか、字句を拾って構文を読み取る者全般を プログラミング言語って解釈だぞ。
262 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:23:54 ] あなた方の発言はこちら向きです pc11.2ch.net/test/read.cgi/prog/1179420838/
263 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:25:59 ] >>261 じゃあ、面接か何かで 「プログラム言語が得意です!とくにHTMLです!」 って言ってみてよ。 俺にはできない。 それで笑われたら「字句を拾って…」って同じ反論してみてよ。 俺にはできない。
264 名前:261 mailto:sage [2007/07/14(土) 12:35:01 ] 俺、今はもう作ってないけど 組込み向けのブラウザ作ってた時期があった(都合により退社) んで今の会社の面接で得意な言語はなんですか?って聞かれて 最近ではHTMLですね。バリバリかけますって言ったよ。 採用担当者とエンジニアは笑ってたな。 レンダリングエンジンを作ってたのでHTMLは得意なんですよねって 言い直した。 まぁ今その会社で7年目だが文句あるか?
265 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:38:49 ] >>264 >最近ではHTMLですね。バリバリかけます じゃなくて >レンダリングエンジンを作ってた ここが重要だったんだろ? 日本語が不自由だって自覚を持った方がいいよ。
266 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:39:47 ] >>264 結局>>257 が書いてるのと意味合い的には何も変わっていないわけだが
267 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:51:28 ] バイナリだって言語と呼べるのかもな。 CPUが解釈できる命令のことを機械語って言ったりするし。 >>257 それはブラウザ以外にも言えることだと思う。 そもそも、機械語を読んでどう処理するかはプロセッサの実装次第。 つまり「過去のプロセッサ含め、さまざまなプロセッサで同一の処理結果を保証するため」に必要なのは プロセッサ開発者側の努力だよ。 だから・・・なんてものがあるんだろ。(←思いつかなかったw)
268 名前:仕様書無しさん mailto:sage [2007/07/14(土) 12:55:39 ] >>267 本物の馬鹿がやってきた
269 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:01:21 ] >>267 スレタイも読めないんじゃ、そんなバカな書き込みもむべなるかな。
270 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:03:04 ] 自分の固定観念で追いつけなくなるとすぐ馬鹿呼ばわりする プログラマってのはこういうのが多いなw プログラミング言語でも何でも出来合いのものを組み合わせて作るのはうまいが 自分から新しいものは作り出せない香具師が多い理由がわかる気がするわ
271 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:04:59 ] 今までさんざんスレ違いな会話していて、俺がきたら「スレタイ嫁」かよw まあいいや、続きをドゾー。おじゃましますた^^
272 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:06:54 ] >>271 だって、プログラミング言語の話なのに、CPU持ち出すんだもん。 そりゃ違うじゃん。
273 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:10:17 ] いくらなんでも「HTMLはプログラミング言語じゃない」から>>267 の話は飛躍しすぎ 揚げ足取りのコピペって時点でもどうかと思うが >>257 の書き込み自体はもっともじゃないのか
274 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:16:03 ] アバヨいっといてまた書き込むのもアレだが、俺は端的に言語の例を挙げただけなんだがな。 プログラミング言語の範疇だとか定義だとか、これほど曖昧な物はない。 データの処理のしかたを規定するものなら、例外なくプログラミング言語だと、俺は思うんだが。 SQL然り、HTML然り、機械語然り。どれも何かを処理する手順書という点では共通。
275 名前:仕様書無しさん mailto:sage [2007/07/14(土) 13:28:34 ] 定数が1ずつずれちゃってたときなんか修正がいやだったなあ・・・
276 名前:仕様書無しさん mailto:sage [2007/07/14(土) 14:35:46 ] いや、>>245 はSQLだろうがJAVA組もうがテストしろと 言いたいだけではない
277 名前:仕様書無しさん mailto:sage [2007/07/14(土) 14:49:05 ] この会社辞めようと思った腐れ上司の一言0x1E pc11.2ch.net/test/read.cgi/prog/1179420838/ もし日本語が読めるのであれば、どうぞこちらへ
278 名前:仕様書無しさん mailto:sage [2007/07/14(土) 15:31:05 ] >>263 君の話は飛躍しすぎ 厳密に言えばhtmlもプログラミング言語の範疇であろうが、普段われわれがプログラミング言語として考えるところのCやJavaなどから見ればプログラミング言語らしくないというだけの話 ここで面接官がいうPLにhtmlが含まれないであろう事は当たり前である。でもそれはhtmlがPLに含まれないことを示すものではない
279 名前:仕様書無しさん mailto:sage [2007/07/14(土) 15:46:28 ] 君の文は読み悪すぎ 厳密に言えば句読点の使い方もあやしいし そもそも適度な改行が入っていないのがおかしいという話
280 名前:仕様書無しさん mailto:sage [2007/07/14(土) 15:55:49 ] Q. SQLってプログラミング言語なの? A. 全然違うよ。全く関係ないよ。
281 名前:仕様書無しさん mailto:sage [2007/07/14(土) 16:38:45 ] ttp://ja.wikipedia.org/wiki/SQL >SQLは「宣言型プログラミング言語」と分類される
282 名前:仕様書無しさん mailto:sage [2007/07/14(土) 16:46:23 ] >>278 PLってなに?甲子園の常連校?
283 名前:仕様書無しさん mailto:sage [2007/07/14(土) 16:51:06 ] この会社辞めようと思った糞議論。
284 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:11:46 ] >>279 この、改行厨めがっ >>282 常連ってほどでもないだろ、最近は 昔は強かったよねぇ
285 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:17:10 ] >>281 うぃきをソースにスンナよ糟が
286 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:18:15 ] >>285 うるさい、お前はもっとかす
287 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:19:36 ] 「言語」と「プログラミング言語」は分けて考えようぜ。
288 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:21:46 ] くっだらねぇ そんな本質的でないところにこだわるなよ 議論するなら、定義を持ち出してきて白黒決着つく形で議論しろよ これだから糞文系プログラマーは面白い
289 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:26:37 ] 公理も定義もない状態で議論しても主観によるところが大きいから、お互いの論理に矛盾無しに反立しうる。 つまりはお互い平行線のまま水掛け論になりうる。そんな無駄な議論の好むのがえてして文系。あいつらの考えることはよくわからん。
290 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:29:21 ] どうでもいいけどオナニー文章書いて 悦にはいるのはやめてけろ
291 名前:仕様書無しさん mailto:sage [2007/07/14(土) 17:38:25 ] この会社辞めようと思った腐れ上司の一言0x1E pc11.2ch.net/test/read.cgi/prog/1179420838/ もし日本語が読めるのであれば、どうぞこちらへ
292 名前:仕様書無しさん mailto:sage [2007/07/14(土) 20:47:46 ] 俺、今からメロン食う みんな応援ヨロシクな
293 名前:仕様書無しさん mailto:sage [2007/07/14(土) 20:51:21 ] 馬鹿野郎 コロッケだろ 台風なんだから
294 名前:仕様書無しさん mailto:sage [2007/07/14(土) 20:53:17 ] メロン半分食い終わった
295 名前:仕様書無しさん mailto:sage [2007/07/14(土) 20:54:10 ] 俺、今からスイカ食う みんな応援ヨロシクな
296 名前:仕様書無しさん mailto:sage [2007/07/14(土) 20:55:20 ] Wikipediaをウィキと呼ぶプログラマが書いたソース。
297 名前:仕様書無しさん mailto:sage [2007/07/14(土) 21:14:34 ] >>296 おお、新しい。 メールの内容の英数字が全角半角混在のやつが 書いたソースなみにいやだなあ。
298 名前:仕様書無しさん mailto:sage [2007/07/14(土) 22:15:41 ] 10年単位の長きに渡ってつぎ足しつぎ足しして熟成されたソース
299 名前:仕様書無しさん mailto:sage [2007/07/14(土) 22:35:21 ] >298 カオスっぷりが頭に浮かぶなw
300 名前:仕様書無しさん mailto:sage [2007/07/14(土) 22:59:47 ] プログラミング言語の定義(誰が言ったかは忘れた) 『逐次実行・条件分岐・繰り返しの構造を持つ言語』 …コレがホントかどうかも忘れた。
301 名前:仕様書無しさん mailto:sage [2007/07/14(土) 23:57:06 ] ダイクストラの構造化定理が似てるが、 プログラム→順次・反復・分岐で書ける という感じの命題だから、論理学的には「逆」だな。
302 名前:仕様書無しさん mailto:sage [2007/07/15(日) 01:05:21 ] じゃあやっぱりSQLもHTMLも含まれないでFAなんじゃん
303 名前:仕様書無しさん [2007/07/15(日) 01:41:50 ] Programming with Stored Query Language.
304 名前:仕様書無しさん mailto:sage [2007/07/15(日) 01:44:06 ] プログラミング言語かどうかはともかく、テストはしなくちゃな。 JavaやSQLの記述はもちろん、iniファイルの内容を書き換えた場合ですら。 そういえば設定内容を書き換えるのは開発じゃないと思ってる輩がいたっけ。
305 名前:仕様書無しさん mailto:sage [2007/07/15(日) 01:56:50 ] >>304 設定ファイルを書き換えることさえ開発だって言ってたら 運用の人まで開発者になっちゃうじゃまいか
306 名前:仕様書無しさん mailto:sage [2007/07/15(日) 02:00:56 ] その理屈だと秀丸の背景色を変えることすらも開発さ
307 名前:仕様書無しさん [2007/07/15(日) 02:07:38 ] ソフトを完成しさせて人手に渡るところまでは開発だろ Iniファイルだって完成前までの初期設定変更とかは開発だと思うけど そっからさきは違うだろうね
308 名前:仕様書無しさん [2007/07/15(日) 02:13:49 ] JAVAなんてアホでも出来るように作られてる言語なんだし そんなに熱く語るほどの事かね?
309 名前:仕様書無しさん mailto:sage [2007/07/15(日) 02:18:57 ] >>308 そのJAVAをこれから始めてみようと思う俺が来ましたYO!
310 名前:仕様書無しさん mailto:sage [2007/07/15(日) 04:16:26 ] // このURLへは今後接続しないことを示す public boolean discnct(String cnurl) { try{ URL url = new URL(cnurl); HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); urlconn.disconnect(); return true ; } catch(Exception e){ return false ; } }
311 名前:仕様書無しさん mailto:sage [2007/07/15(日) 08:52:46 ] >>310 何をしたいのかがサッパリだ
312 名前:仕様書無しさん mailto:sage [2007/07/15(日) 09:22:16 ] discnct という名前からして、いい感じに腐っている。 いまだに母音を省略する命名ルールが生きのこっているなんてガラパゴスか?
313 名前:仕様書無しさん [2007/07/15(日) 10:34:14 ] コメントが全部、日本語をローマ字表記。 koreha, komento desu. kokode***suru [debagu yy/mm/dd]
314 名前:仕様書無しさん [2007/07/15(日) 10:38:12 ] IME壊れたんだろう
315 名前:仕様書無しさん mailto:sage [2007/07/15(日) 11:46:40 ] > [debagu yy/mm/dd] にしても、これはちょっと。debug でいいやん。
316 名前:仕様書無しさん mailto:sage [2007/07/15(日) 11:59:26 ] せめてdebaggu
317 名前:仕様書無しさん [2007/07/15(日) 12:00:17 ] テーブル名とかカラム名がローマ字ならよく見る TORIHIKITBLとかHURIKOMIKINGAKU CHAR(10)みたいな
318 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:03:25 ] それならいいけど 未だに母音抜いてTRHKとかHRKMKNGKとかの方がよく見る気がする ヘブライ語かよ
319 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:36:35 ] discnctについては、母音省略もアレだが、dis-を「〜しない」だと思ってる のがイタイな。
320 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:37:52 ] >>318 KWSKかよ
321 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:38:40 ] >>313 文字コード関係じゃね いちおう・・・
322 名前:仕様書無しさん mailto:sage [2007/07/15(日) 12:43:36 ] >>JAVAなんてアホでも出来るように作られてる言語なんだし アホにはむり、コボラならOKの言語
323 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:16:14 ] >>319 disconnectは普通に「切断」という意味だが・・・?
324 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:18:24 ] >>323 そうだよ。 すでにつながっているものを「切断」するんであって、 最初からつながないという意味じゃない。
325 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:36:30 ] 最初から繋がらないなんてどこに書いてあるんだ 最初から繋げない じゃないのか
326 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:49:23 ] メソッド名としては、testConnectibityとかの方が助かると思う。
327 名前:仕様書無しさん [2007/07/15(日) 13:54:18 ] >>324 disableは最初から出来ないと思うよ
328 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:56:19 ] disableは、可能であることを出来ないようにしておくことだね。
329 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:56:32 ] >>327 できる/できないで話すのもなんだが、 It disable you to ~~ とかで使うから、出来なくするってのが一般的じゃないの? unableが最初から出来ない方なわけで。 dictionary.goo.ne.jp/search.php?mode=0&MT=disable&kind=ej&IE=sjis&type=sleipnir&ej
330 名前:329 mailto:sage [2007/07/15(日) 13:57:03 ] あ、it disable -> it disablesです。ごめんね。
331 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:57:15 ] >>326 それだ!
332 名前:仕様書無しさん mailto:sage [2007/07/15(日) 13:57:17 ] >>327 最初から出来ないのは unable じゃ?
333 名前:仕様書無しさん [2007/07/15(日) 14:27:26 ] >>332 ああ、そうだね。 だけど、身体障害者には生まれつきもあるわけで、 本来出来るというのは、健康な人間なら本来出来るが、その人は障害のために最初からできないわけで、 つまり、構造的に接続できるようになってる物を、切断した状態にしておくのが切断であり、 さっきまで接続していたかどうかとか、時間的経過に関係なく切断状態にあるのが切断だと思うよ。>>324
334 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:28:29 ] 正直どうでもいい
335 名前:仕様書無しさん [2007/07/15(日) 14:30:47 ] >>334 名前と実際が食い違うのをいちいち関数仕様を読んで覚えたりソースコード追っかけたりするのは面倒だろ?
336 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:37:10 ] >>333 日本語と英語じゃ言語構造も単語の細かい意味も変わってくるので、 生半可に論じられないし、そもそもスレ違いだからEnglish板にでもいってらっしゃい。 そして、ここでdisconnectといっているのは、切断のことではなく、 「〜を切断する」ということです。他動詞ですね。
337 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:38:59 ] >>333 disconnect(切断する)じゃなく disconected (切断状態にある)ならいいんだろうな。 元のはdiscnctだからそこまで考えてないだろうけど。
338 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:40:10 ] distnctにするとぜんぜん違う意味になりますな。
339 名前:仕様書無しさん mailto:337 [2007/07/15(日) 14:40:59 ] ×disconected ○disconnected 細かい綴りの話してるときにtypoしちまったぜ orz
340 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:45:06 ] kiretemasu?
341 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:47:23 ] kiretenaissuyo
342 名前:仕様書無しさん mailto:sage [2007/07/15(日) 14:54:01 ] >>310 確認するけど、コメントと関数名とやってることの三つがバラバラというのが問題なんだよね? やってることは、与えられたURLに接続してみて、 接続できたら(例外が発生しなければ)trueを返し、例外が発生したらfalseを返す。
343 名前:仕様書無しさん mailto:sage [2007/07/15(日) 17:56:01 ] そもそもこんないらん議論を呼ぶ 変数名つけるのが問題
344 名前:仕様書無しさん mailto:sage [2007/07/15(日) 18:15:24 ] もう全部 func001(); func002(); でいいよ
345 名前:仕様書無しさん mailto:sage [2007/07/15(日) 18:23:57 ] >>344 いちばんスレにふさわしいやつだな。
346 名前:仕様書無しさん [2007/07/15(日) 18:31:26 ] ・・・ if (ret == false) { // 上記の処理が以上の場合、ファルスを返す。 return ret; }
347 名前:仕様書無しさん [2007/07/15(日) 18:33:59 ] if (ret==false) { return true; }
348 名前:仕様書無しさん [2007/07/15(日) 18:57:03 ] >>346 ,347 変数名の付け方に問題があるかもしれんが一概に悪いとは思わんよ。 以下のような場合もあるから bool ret = 何かの初期化メソッド(); if(ret == false) { // 初期化失敗 return false; } // ほかの処理 .. return true;
349 名前:仕様書無しさん [2007/07/15(日) 19:02:26 ] // (略) falseを返す。 のつもりを // (略) バルスを返す。 と書いていた奴。。。(読みはファルスじゃねぇし)
350 名前:仕様書無しさん mailto:sage [2007/07/15(日) 19:19:36 ] >>349 いや、あれだよと突っ込んでほしいのか?
351 名前:仕様書無しさん mailto:sage [2007/07/15(日) 20:54:06 ] >>349 自爆装置を仕込んでいるのか
352 名前:仕様書無しさん mailto:sage [2007/07/15(日) 20:55:06 ] >>349 コードを追記したら func(); // 目がぁ〜目がぁ〜 はお約束だな
353 名前:310 mailto:sage [2007/07/15(日) 21:44:15 ] 変な議論呼んだようですまん 貼った俺自身もこのメソッドが何をしたいのかよく分からなかったんだが、 呼び出し先メソッドが↓のレスなんで、 どうやら接続した後の切断処理をやってるつもりなのかなぁ、と考えてる
354 名前:310 mailto:sage [2007/07/15(日) 21:46:05 ] // 接続先のファイルサイズを取得 public long getFileSize(String cnurl) { boolean isCnct = cnct(cnurl) ; // ※接続テストをしているらしい if (!isCnct) { return -1; } // 接続可能ならtrue URL url; try { url = new URL(cnurl); HttpURLConnection urlconn; urlconn = (HttpURLConnection)url.openConnection(); long fullsize = 0; Map headers = urlconn.getHeaderFields(); String key = "Content-Length" ; String e = (headers.get(key)).toString(); e = e.substring(1,e.length()-1) ; fullsize = Long.parseLong(e) ; boolean isDisCnct = discnct(cnurl) ; // ※ここで310呼び出し if (!isDisCnct) { return -1 ; } if(fullsize < 0) return -1 ; else return fullsize ; } catch (IOException e1) { } return 0; }
355 名前:仕様書無しさん mailto:sage [2007/07/15(日) 22:08:18 ] なんというコード・・・
356 名前:仕様書無しさん mailto:sage [2007/07/15(日) 22:18:14 ] 何したいわけ?
357 名前:仕様書無しさん mailto:sage [2007/07/15(日) 22:27:07 ] cnct(対象URLに接続) ↓ getFileSize(ファイルサイズ取得) ↓ discnct(切断処理) ・・・がやりたかったのかな?
358 名前:仕様書無しさん mailto:sage [2007/07/15(日) 23:41:45 ] たった二十行程度のコードに 山のように突っ込みどころが・・・
359 名前:仕様書無しさん mailto:sage [2007/07/15(日) 23:55:07 ] >>310 のコメント // このURLへは今後接続しないことを示す が、 /** @return true 切断成功 false 失敗。このURLへは今後接続しない */ ならまぁよかった、ということなのかな。
360 名前:仕様書無しさん mailto:sage [2007/07/16(月) 00:49:09 ] つか成功したかどうかHashかなんかで管理して 余計なオブジェクト毎回接続するたびに作らないようにしね? 結果の保持が必要な場合は別途なにかクラス作って 突っ込んだ方がよくね?
361 名前:仕様書無しさん mailto:sage [2007/07/16(月) 01:01:17 ] あまりにひどいコードに絶望した…! でもそういうコードを以前見かけたことが あるのに気づいて更に絶望した!!
362 名前:仕様書無しさん mailto:sage [2007/07/16(月) 02:02:50 ] コメントにアスキーアートがはってあったぞ 「カイジ」のやつ
363 名前:仕様書無しさん mailto:sage [2007/07/16(月) 02:11:13 ] __,,,.... -――‐- .._ そりゃあ…かまわない /vV///∠∠彡:ニニヽ おまえらの疑問に答えること それ自体は容易い 簡単だ {/`ー-‐'''"´ 二二ニニl 例外時の処理はこれこれこう こういうメソッド行き /ー--‐''''"´ 二二ニニ| 返り値は…?パラメータは? ,/ー---‐'''"´__ ニニ二二| そんなコメントは いくらでもできる 〈べヽ l. ヾニ-‐'''ヾ> =r-、ニニ| },-o-> ヽPニニ ミ ス.|ニ二| しかし 今 オレが そんなコメントを 仮に付けたとしても . |二/,' ー― ' `に!|二ニト、 その真偽はどうする…? |/,' __ ヽ\ r<二ニ| \ | 「r---一ァ'! | \ニ| |`'ー-、__ 真偽など どうでもいいから | !` 三 ̄ l | \! | 読みたいと言うのか…? \ _.. -''" /| | _,.. ‐'''"`ー <´ / | | ククク……
364 名前:仕様書無しさん mailto:sage [2007/07/16(月) 02:23:55 ] >>363 一見まともなコメントにこんなの付いてたら嫌になるな。
365 名前:仕様書無しさん mailto:sage [2007/07/16(月) 05:00:11 ] 何を信じればいいのかw
366 名前:仕様書無しさん mailto:sage [2007/07/16(月) 05:06:11 ] >>363 プログラマやめろよ、つかやめてくれw
367 名前:仕様書無しさん [2007/07/16(月) 12:26:01 ] >>354 酷いな・・・8行で済むのにそんなにダラダラと・・・
368 名前:仕様書無しさん [2007/07/16(月) 13:11:02 ] >>363 お前とは仕事したくねぇよ・・
369 名前:仕様書無しさん mailto:sage [2007/07/16(月) 19:13:26 ] 納期は命より重いっ・・・!
370 名前:仕様書無しさん mailto:sage [2007/07/16(月) 20:32:25 ] ざわ・・・ ざわ・・・ ざわ・・・ 俺のバグですたorz
371 名前:仕様書無しさん mailto:sage [2007/07/17(火) 11:34:53 ] >>344 ローカル関数に関してはそのルールで書く人を知っている。 本人曰く、『どーせ俺しか読まねぇし』。
372 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:00:04 ] 3年後の「俺」には読めない罠。
373 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:44:05 ] あるあるwww
374 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:51:10 ] >>372 一年後に読める自信がないです。 覚えているうちに仕様変更とかあればいいんだが…
375 名前:仕様書無しさん mailto:sage [2007/07/17(火) 12:54:19 ] 違う仕事一個でも挟むと無理そうだ
376 名前:仕様書無しさん [2007/07/17(火) 13:05:25 ] >>372 三週間でも微妙
377 名前:仕様書無しさん mailto:sage [2007/07/17(火) 13:50:59 ] >>376 って言うか、たったの3連休で頭真っ白なんですが・・・ 先週までの俺が何をどうしたかったか、やっと何となく解ってきたw 今週の俺によると、先週までの俺は未熟者だったらしいww
378 名前:仕様書無しさん mailto:sage [2007/07/17(火) 16:11:58 ] 前日の日記をつけろ。毎日3行程でいいぞ。
379 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:13:28 ] 似たようなのもう出てそうだが、 Hoge1() { __asm { : : } } Hoge2() { __asm { : : } } 7000行ほどでコメント一切無し
380 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:32:47 ] Cool!w
381 名前:仕様書無しさん [2007/07/17(火) 19:45:12 ] >>379 昔は、マシンコードを定数の配列にして、関数ポインタで指してたり...
382 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:55:24 ] 定数ならまだいいが、技術的な制限から、コードを実行中に書き換えながら走らせることもあったな。 当分使われないコードセグメントはメモリから削除して、空いた空間に別のコードセグメントをロードしたりとかもしたし。 今となってはOSが担当する処理だが、その当時はそんなトリッキーなことを強いられたもんだ。
383 名前:仕様書無しさん mailto:sage [2007/07/17(火) 19:59:06 ] >>381 今でもやっていたりする....
384 名前:仕様書無しさん mailto:sage [2007/07/17(火) 20:04:59 ] 辞めさせられないようにする為の保険か?
385 名前:仕様書無しさん mailto:sage [2007/07/17(火) 21:29:30 ] メモリに入りきらない。
386 名前:仕様書無しさん mailto:sage [2007/07/17(火) 22:01:34 ] >>379 何か問題でも?
387 名前:仕様書無しさん mailto:sage [2007/07/18(水) 02:59:01 ] せめてコメントぐらいはつけて欲しいな
388 名前:仕様書無しさん mailto:sage [2007/07/18(水) 03:38:17 ] ソースコードが残ってなくてROMがあるんだけど、バグ対処してねとかいうのもあったな。 電算室(古っ!)に配属になって初めて書いたプログラムが自己変更コードだった。指導者乙。 そういうのがお行儀悪いことだと知るのはその10年後。
389 名前:仕様書無しさん mailto:sage [2007/07/18(水) 11:48:54 ] 10年は長いですね。
390 名前:仕様書無しさん mailto:sage [2007/07/18(水) 11:58:05 ] その部署の文化になってればそれが当たり前になっちゃうからなあ。
391 名前:仕様書無しさん mailto:sage [2007/07/18(水) 12:07:48 ] >>388 Intel 8x86 の時は、自己書き換えしても問題なかったから、メモリの制約とあいまって、 むしろあたりまえのプログラミング技法だったと思う。 80x86nになってキャッシュの概念が出てきて、メモリ上で自己書き換えしてもそのコードが 保持されないので問題が顕在化して、行儀が悪いということになった。
392 名前:仕様書無しさん mailto:sage [2007/07/18(水) 12:17:59 ] 行儀の問題はキャッシュとは関係ないっしょ
393 名前:391 mailto:sage [2007/07/18(水) 12:42:13 ] いや、この場合は関係あると思ってるんだが。 「キャッシュのために今までのノウハウが使えなくなった」が「行儀が悪い」にすりかえられた。 まあ今じゃ通用しないノウハウだし、「行儀が悪い」という言葉にはよっぽどのひねくれ者じゃなければ 逆らおうと思わないから、いいけどね。
394 名前:仕様書無しさん mailto:sage [2007/07/18(水) 12:48:29 ] すげーどうでもいいことだが。 x86の自己書き換えはパイプラインで問題になった。 キャッシュは最初から対策してる。
395 名前:仕様書無しさん mailto:sage [2007/07/18(水) 13:10:44 ] 自己書き替えはそれこそZ80の時代から「行儀が悪い」とされてましたが何か
396 名前:仕様書無しさん mailto:sage [2007/07/18(水) 15:13:54 ] 86 系で自己書き換えのときのキャッシュのフラッシュ(の欠落)が問題になったのは ハーバードアーキテクチャを初採用した Pentium から。 Mac では 68040 を積んだ Quadra から。 メモリ上の自己書き換えやコード生成は今でも結構使われていて別に問題のある技法でもない。 他により妥当な方法があるのに使いたがるのは問題ある行為かもしれないけど。
397 名前:仕様書無しさん mailto:sage [2007/07/18(水) 18:36:28 ] 今はメモリ使い回すメリットがほとんどないだろ メモリが小さかった時代には一つのひゅほうだったかもしれないが
398 名前:仕様書無しさん mailto:sage [2007/07/18(水) 19:09:25 ] ひゅほうでんせつ
399 名前:仕様書無しさん mailto:sage [2007/07/18(水) 21:19:00 ] 最近は データ領域:書き換え○ 実行× コード領域:書き換え× 実行○ みたいなことやるしな。
400 名前:仕様書無しさん mailto:sage [2007/07/19(木) 00:50:51 ] LISPだと自己書き換えってどういう感じに捉えられているんだろう?
401 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:00:31 ] すべてがS式なんだから、コード書き換えもアリとは思う。 けど、アルゴリズムとしてトリッキーに過ぎる感はあるな。 で、そういう感覚もっていることは、PGとしては大事。
402 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:11:23 ] longjumpで書き換えまくるのは普通だし 今でもそうゆうコード書いてる。 書くなって言われるけどなんでって思う
403 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:18:32 ] テクニックとしては面白いんだけどな。バッファオーバーラン攻撃の基本だし。 だからといって、製品の中に自己書き換えを組み込むのは勘弁。動的に書き換わるコードは追跡が難しすぎる。 動的コード生成にしても、機械語直接生成よりもスクリプトを吐く方が簡単に済みそう。
404 名前:仕様書無しさん mailto:sage [2007/07/19(木) 01:26:53 ] >>402 longjmpは自己書き換えしなくても作れるだろう。 ものすげー変なCPUまで把握してないが。
405 名前:仕様書無しさん [2007/07/19(木) 02:18:03 ] コード書き換えはマルチタスクで動かせないだろ
406 名前:仕様書無しさん mailto:sage [2007/07/19(木) 06:58:17 ] iTRON準拠のマルチタスク環境では動いていたというか動かしていたよ。
407 名前:仕様書無しさん mailto:sage [2007/07/19(木) 10:06:50 ] >>405 >コード書き換え と >マルチタスク に、まるで相関がない。
408 名前:仕様書無しさん mailto:sage [2007/07/19(木) 15:50:24 ] 自己書き換えはすたれてるけど、コード生成自体は ATL のサンクとか JIT コンパイラ的技法とかで必要に応じて使われているよね。
409 名前:仕様書無しさん mailto:sage [2007/07/19(木) 18:43:12 ] HaskellのコンパイラがDEP(データ実行防止)に引っかかった。 HaskellはHaskell自身で書かれているらしいから、どうもコード生成or自己書き換えしてるっぽい。 まだまだ現役だな。
410 名前:仕様書無しさん mailto:sage [2007/07/19(木) 19:24:16 ] >>409 >>408 >JIT コンパイラ的技法
411 名前:仕様書無しさん mailto:sage [2007/07/19(木) 22:37:16 ] ふとリコンフィギュラブルを思い出した。 ttp://www.atmarkit.co.jp/fsys/zunouhoudan/037zunou/intel_reconfig.html
412 名前:仕様書無しさん [2007/07/19(木) 23:57:15 ] ふとりプリキュアに見えた
413 名前:仕様書無しさん mailto:sage [2007/07/20(金) 00:28:50 ] >>412 病みすぎ
414 名前:仕様書無しさん mailto:sage [2007/07/20(金) 14:03:15 ] うーん。「自己変更コード」とか「自己書き換えコード」とか呼ばれているけど。 誰も「自己改竄コード」とは呼ばないな。
415 名前:仕様書無しさん mailto:sage [2007/07/20(金) 14:08:29 ] 普通は悪用目的の書き換えを指すんじゃまいか?改竄て。
416 名前:仕様書無しさん mailto:sage [2007/07/20(金) 23:08:58 ] 進化するコード
417 名前:仕様書無しさん mailto:sage [2007/07/20(金) 23:32:27 ] >>414-416 だんだんウィルスになってないか?
418 名前:仕様書無しさん mailto:sage [2007/07/21(土) 00:35:34 ] 暴走してウィルス化するなんていかにも漫画的なシチュエーションだ
419 名前:仕様書無しさん mailto:sage [2007/07/21(土) 01:11:30 ] ソースが貼られず自称上級者の醜い言い争いばっかりじゃねーか もっとトンデモソースで俺を癒してくれよ
420 名前:仕様書無しさん mailto:sage [2007/07/21(土) 03:18:33 ] switch( cValue ) { case 0: hogehoge( ); break; case 1: ・・・ case 255: hugahuga( ); break; default: ASSERT( False ); break; }
421 名前:仕様書無しさん mailto:sage [2007/07/21(土) 05:19:36 ] これでcValueがucharなら笑えるな
422 名前:仕様書無しさん mailto:sage [2007/07/21(土) 08:40:07 ] 関数名が func0()〜func255() じゃないってことは、コボラーじゃないのか....
423 名前:仕様書無しさん [2007/07/21(土) 09:22:02 ] while( flg == TRUE){ switch( hoge){ case 1: hage1(); hoge = 2; break; case 2: hage2(); hoge = 5; break; ・・・・・ case 25: hage25(); hoge = 10; break; } } こんな感じのswitch文が3つあってループの関数は1000行くらいある。 当然コメントも仕様書もマニュアルも何もない。あるのはソースだけ。 VC++1.52でコンパイルするのだが、改変して行数が増えるとコンパイラがコンパイルしてくれない。 case12 とかで hoge = 0 とかしてるのと、あっちこっちジャンプしながら 最終的にcase12にたどり着くので無限ループにはなっておらず、しょっちゅうトラブるが、大抵はなんとなく動いている。 だけど何で動いているのか分からない上に、改造しようにも手がつけられない。
424 名前:423 mailto:sage [2007/07/21(土) 09:24:38 ] あ、case 12ではhoge=0じゃなくてflg=FALSEだった。 ま、5年ほど前に面倒見させられたソースです。 その部分はごっそり書き直したけどね。
425 名前:仕様書無しさん [2007/07/21(土) 09:25:14 ] >>423 コードの意味がわからないってのはわかるが、 改変して行数が増えるとコンパイラが通らないって何? VC++1.52だと最大行数の制限があるの?
426 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:27:51 ] >>423 パーサーとかそんな感じで作るけど #ifdef DEB_PRINTしこんで コールグラフ作ればいいだろ。 んで文法作ればいい。おそらく処理しきれない 例外を見過ごして別の規則に遷移してるだけ じゃねーの?
427 名前:仕様書無しさん [2007/07/21(土) 09:28:44 ] 16ビットの制限とかあるんじゃね?
428 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:33:31 ] >423 hogeX()や各case値に意味あるんだろうから、そっから状態遷移図でも描いて見れば。
429 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:46:32 ] >>428 hogeX()や各case値に意味あるケースは稀じゃね?w
430 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:49:31 ] そうなのかw
431 名前:仕様書無しさん mailto:sage [2007/07/21(土) 09:55:27 ] caseでのコードではこんなのあったな@Java メンテしろと言われたけど、拒否したら左遷された 後任は自殺未遂したらしいけど・・・ うろ覚え int i = 20; label WHILE_LABEL; while(true) { switch (i) { case -3: i = func3(); break WHILE_LABEL; case -2: i = func3(); break WHILE_LABEL; case -1: i = func3(); break WHILE_LABEL; // 中略 case 50: i = func50(); break; default: i = func0(); } } 423のに似ているけど戻り値がリザルトコードになっていてマジでカオス
432 名前:仕様書無しさん mailto:sage [2007/07/21(土) 10:25:39 ] オブジェクト指向はおろか構造化すら怪しいグラマが必死に考え出したコードっぽいな。 こんなコードが随所にあるなら431は拒否して正解だ。
433 名前:431 mailto:sage [2007/07/21(土) 10:31:32 ] 随所どころか、辛うじて理解できた一部だよ 結局、ほとんど理解できなかった
434 名前:仕様書無しさん mailto:sage [2007/07/21(土) 10:42:34 ] 例はちょっと書けないけど最強にカオスなコードならあるぞ make yaccでmake+コード自動生成 生成コードmake yaccでmake+コード自動生成 ・・・ これが15回も繰り返されるカオスなコードあったよ
435 名前:仕様書無しさん mailto:sage [2007/07/21(土) 11:58:45 ] >>434 それは何のプログラムなの?
436 名前:423 mailto:sage [2007/07/21(土) 12:10:28 ] >>425 1関数のサイズの上限が決まってたと思う >>426 ,428 何年も前に終わった仕事について批判されてもなぁ・・・ 大体1関数が1000行って時点で何かおかしいんだから直して当然だろ
437 名前:仕様書無しさん mailto:sage [2007/07/21(土) 13:08:52 ] 関数ってどんなに多く書いても数百行で済まないか? 絶対処理分割できるぞ
438 名前:仕様書無しさん [2007/07/21(土) 14:23:36 ] >>436 関数の制限じゃなくてswitchの制限だと思うよ。
439 名前:仕様書無しさん mailto:sage [2007/07/21(土) 14:51:16 ] >>437 普通に手続き言語をやってくれば、どんなに長くても数百行なんだが、 大昔のPLCしか触ったことない奴だとだらだら書く事しか知らなくて、1000行とかいく事がある。
440 名前:仕様書無しさん mailto:sage [2007/07/21(土) 16:49:09 ] 実行される行数が50を超えたらそれは長すぎ。
441 名前:仕様書無しさん [2007/07/21(土) 16:52:49 ] >>440 実行される行数ってコンパイルした後の話か?
442 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:38:24 ] 実行後の行数なんて意識する必要ないだろ、50行超えたら読みにくいだけ
443 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:43:39 ] 別にコードなんて動けばどーでもいいんだよ オマイラだってどうせ適当に書いて後は野となれ山となれだろう? この会社辞めようと思ったソースコードなんてお高くとまってないで 正直になれよ プログラムなんてちゃんと動けばそれでいいんだよ
444 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:44:18 ] 煽り乙
445 名前:仕様書無しさん mailto:sage [2007/07/21(土) 17:54:01 ] >>443 中国産は長い・意味不明・動かないの3拍子揃ってるぜw
446 名前:仕様書無しさん [2007/07/21(土) 18:05:21 ] >>445 コメントが中国語なら尚可。