1 名前:仕様書無しさん mailto:sage [2007/07/06(金) 14:42:11 ] この会社辞めようと思ったソースコード。 プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板 pc11.2ch.net/tech/ に逝って。 前スレ この会社辞めようと思ったソースコード#16 pc11.2ch.net/test/read.cgi/prog/1175485506/
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 コメントが中国語なら尚可。