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

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
コメントが中国語なら尚可。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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