今までみた絶望的なソースコード [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
今井氏:ソースコード公開は、社長のティム(*2)の意向です。彼はバリバリのプログラマーで、初期の「Unreal Engine 1」を
1人で書いた人ですが、若い時に雑誌に載っていたコードを書き写して勉強したそうです。それで今の若い人にも、プロのソー
コードとはこういうものだというのを見せたいという願いがあって、ソースコードを公開しています。本当に今のゲーム業界の
事情を憂いてる1人だと思います。(*2)Epic Gamesの創業者兼CEOであるTim Sweeney氏
出村氏:読みやすいコードですよ。「C++」というのは、黒魔術(高度な計算)が多くなりがちな言語ですが、
そういうこともなく、すっきりしていて目的の機能も探しやすい。解読しやすいコードなので、確かにお手本になると思います。
僕は初代のゲームボーイからプレイステーション 2の頃くらいまでゲームプログラマーだったのですが、ゲームプログラミングでは
必ず数学が出てきます。行列とか三角関数とか。もちろん今でもまったく不要になったわけではありませんが、そういう知識の
重要性は薄れてきていると思います。「Unreal Engine」では特にそうです。
http://game.watch.impress.co.jp/docs/interview/20150417_698349.html
初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に精通し、
また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。
すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねばならない
という思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザインパターンを
適用しようとしだすのである。
その結果、
* 大量のクラス
* 迷路のような変数渡し
* 底なしに深いネスト
などといった凄いものが生まれる。また、条件分岐に三項演算子を乱用するなどの症状も多く見受けられる。
最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。
http://monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85 971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某
強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ
フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない
異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン
30秒ごとに口と鼻から異音
ふんっっ! ふんっっ!
備品破壊 貸与P C 破壊 他人のもの破壊
奴の作ったスクリプトとプログラムは使えない バグ製造機
電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない >>685
funcX(){
funcAB()
funcC()
}
funcAB(){
if
A
else
B
retuen
}
funcC(){
C
}
ってことなんじゃねーの。funcCが、funcABの動作に影響しないんであれば、
テストパターンは減らないけど、テストパターンごとの確認観点が減るんじゃない? ABとCが常にセットにして呼ばれる仕様だとしたら、
関数が増えて見通しが悪くなるだけな気がするけど
ユニットテスト利用する場合ってこうするほうがいいの? ソースコード見て問題なければテストする必要ないと思うの 完璧なプログラムを書けばテストは必要ない。
テストに頼るのは甘え。 プログラムが完璧でもコンパイラがバグっていて間違った実行ファイルができることもよくある プログラム通りにペリフェラルが動くと思ったら大間違いだ コンパイラのバグは稀たが、スペックシートのミスは日常茶飯事 16bit系組み込みCで
配列の要素数が16bitに制限されるのを
無視したコード渡されてバグってた事あるな
コンパイラからの警告一切無し 配列の添字が汎用レジスタのサイズ(≒int)の範囲に制限されるのは仕方ない
でもまともなコンパイラなら制限事項として明記してある >>710
要素が16bit 越えるって、どんなソフトなんだ? 型がByteだとして
65536Byte=64KByte
組み込みだとしても十分ありうる >>714
それだけ大きくなったら、普通ポインタとか使うだろ? 組み込みなら標準ライブラリがないとか
ヒープがないとか普通だからな >>715
ROMに大きなテーブルだと配列使うでしょ >>717
Cの標準ライブラリが無いってことは最近では非常にマレ
ROM容量の関係で使えないことはある
これを無いって言うなら無い
デカいのはprintfとか
あとはfloat, double, long longもROM容量の関係で使えないことも 標準ライブラリを使うのをためらうくらいの規模なら、当然ヒープも使わない
当然OSレスで、シングルタスク+割り込みのみ
もっと小さく、時計レベルのコードになると、そもそもコンパイラを使わない >>719
printf使えなかったらデバッグできないじゃん! >>721
リアルタイム性が不要ならICE(デバッガ)が使える
動かしながら変数の読み書きが出来るヤツもある
原始的なのだとポートを上げ下げしてオシロスコープで見るとか、LEDを点灯したりとか >>722
ちげーだろ?
そこはputs使ってるだろ。
見栄はらなくていいよw putsどころかそもそも標準入出力ないからな
汎用ポートの空いてるピン使うか
JTAG使ってICEか計測器繋ぐかだな >>726
真っ先に、シリアル入出力とprintfもどきを作るのはデフォだろ? 組み込みは感心する反面潰しきかないのがなんとも言えねぇ
組み込みは程々にした方がいいぞ シリアル入出力はよく使うけど、....
規模が小さいとデバッグ用だけにわざわざシリアルドライバを書かなかったり
そもそもシリアル用ハードが無かったり使えなかったり
非常にリアルタイム性が要求されるDSPプログラミングとかだと割り込みなんか使いたくないし、
小型マイコンだとバッファ用にメモリが割けなかったり
まあ物によってデバッグ方法もいろいろ どんな低速でもソフトUARTぐらい作れるだろ
ドライバって程かよアホが 低速マイコンでRAMも使わずにCPUも占有せず、場合によってはポートも使わないでソフトUARTか
頑張って作ってね >>730
割り込み禁止にしてCPUサイクルでクロック作るのか
タイマ割り込み駆使してクロック作るのか
どっち? もう一個位は方法があるけど...
まあ普通はそんなことはせずもっと普通の方法を使う
スローCPU、RAM使えず、ピンが足りない、パフォーマンスがシビア
とかだと使えないし 自分の主張を通す為に手段はどうでも良くなってるカワイソウな人は放っておこう なんでマイコン1個でやろうとすんだよ
そんな後付け条件出すなら信号垂れ流し用と信号待ち受け兼UART出力用のマイコン2つ使えばいいだろアホが >>732
AVRやLPC810とかなら知ってるけど?
つーか米粒の6ピンすらソフトで全二重UARTぐらい実装できるだろ
アホが >>733
ソフトUARTつても実装は色々あるからな
その全部かな
つーかアホはオシロやロジアナも使えないのか >>736
いや、マイコンの規模によって、いろんなデバッグ方法があるって話だが
デバッグ用にわざわざマイコンを積むのか?
金をかけて
組み込みはコストが非常に重要だったりサイズが非常に重要だったりするんだけど
で、複数マイコンを積んだとして、マイコン間の通信はどうする?
デバッグじゃなくてシリアル通信が目的になってないか? >>739
UART云々はシリアルでやるって流れから書いただけだよ
文脈読めアホが というか組み込みでデバッグ大変だわーで釣ってる奴が気に入らないわ
肝心なコアをMSに握られてるWindowsアプリのデバッグ考えるとただの愚痴にしか見えないんだわ >>740
あり得ないデバッグ方法を突然書き出したお前が全て悪い >>742
誰が悪って言うならデバッグ方法いろいろとか書いといて具体的な方法は何一つ提示しないアホが悪いなんじゃないの?
組み込みはこういう口ばっかの奴が多くてうざいわほんと は??
具体的な方法はいくつも書いただろうが
日本語が読めない? そういやここ絶望的なコードのスレなんだが
そもそも組み込みで絶望的な事なんてあるか?
作った品が売れないとかか? >>745
>>721は別のIDだしお前の発言かなんてわかんねーよ
ID:Xzg+p3Xeで具体的なこと何も書いてねーなーってことだよ
IDも判らないアホだって言いたいのか? >>746
いくらでもある
組み込みも規模はいろいろ
時計や簡単なオモチャレベルからWindowsを積んだようなものまで >>747
>>722も違うIDだろ
もうアンカーはいいから自分の口で説明してみ? >>722 はおれだ
俺の言葉で書いたレス
証拠はないが >いろいろある
>いくらでもある
吹いた
組み込み業界はこんなんばかりでまさに絶望的だな! なんか知らんが、そのあと無理やりUARTでデバッグする書き込みが続いた 組み込みを知らないのに知ったかぶって >>730 を書いたのか
出来もしないのに 組み込みって一人で何でもやるような商売だから
人とのコミュ力が試されるなー >>727 があまりにトンチンカンだからつい >>729 を書いたんだ なんでわざわざUART使うんだよ
普通JTAGとかLFASTとか使うだろ >>756
いや、だから組み込みにもいろんな規模のがあるんだって >>758
わざわざUARTを使う理由はいろいろある
UARTを使わない理由もいろいろある
使わない理由は既にいろいろ書いた
使う理由は、
ログをテキストで(簡単に)残せる
PCからいろいろな制御が出来る
テストの自動化がやり易い
などなど
デバッガはデバッガで便利だが、シリアルデバッグもいろいろと便利 まあ>>726は俺なんだけど
>>727に言いたいのは
printfもどき作る暇があったらICE使ってステップ実行した方が効率的だってこと こういうこと言うのもアレだけど
JTAGとかLFASTがシリアルじゃないとでも?
プログラムトレースとかデータトレースはリアルタイムで吐かせようよ
どうせ周辺のIPが勝手にやっといてくれるんだし
ログっておいて後でデバッガで再生すりゃいいんだからさ 膨大かもしれないログ追えるんだ
すごいな〜〜〜〜〜 >>764
なんで追えないの?
検索機能とか知らないの?
膨大なログを出すだけの実行コード行を
ステップで一行一行実行していく気?w 膨大と言ってもせいぜい数百MB程度だから検索できない訳がない
printf使ったって結果はファイルにリダイレクトするだろ
同じようなもんだ ロギング
∧_∧ __
( ・∀・) | i \ \
( U U | i l =l
と_)_) ____ | |__ノ ノ
| i(;;)H| | ̄ ̄| ̄ ̄| そもそも、小さいマイコンじゃそんなに多量には吐けない
ブロッキングだと動作速度が大きく変わり
ノンブロッキングだと間引かれる 小さいマイコンはバッファを大きく取る余裕がないから 971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某
強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ
フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない
異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン
30秒ごとに口と鼻から異音
ふんっっ! ふんっっ!
備品破壊 貸与P C 破壊 他人のもの破壊
奴の作ったスクリプトとプログラムは使えない バグ製造機
電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
f Enumを文字列のコード値にswitch文で変換して、それをswitch文で別のEnumに変換する
ってのがいろんな所に書いてあった いまどき変数名が衝突して不具合を生じてたとか馬鹿な報告を上げてくる下請け >>786
釣りかもしれんが
納品検収テストで見つけられない発注元の方に絶望するわ 国や公務員からしてそんなことやってるから三菱になめられるんだよ >>787
納品前の結合環境のバグだよ
まともなフェーズ管理のある環境で働いたことのないガキは引っ込んでろ 「datas」って英語圏でも使ってるの見るね。間違いではないのかな? int a[10];
int b[10];
int c[10];
があったとき、 a, b, c をまとめると datas
それぞれは data だっていうのを聞いたことがある
信じるか信じないかはあなた次第 datumは見たことあるな
miceとかも見たことあるな indicesを最近まで知らずにindexesって書いてたわ railsみたいにそういうの判っててindexesにしてるケースもある 2400bpsの通信速度のコンソールに9600bpsの通信回線の通信ログを吐き出すプログラム C#で、糞長いメソッド内の処理を、意味のある単位にregionで囲ってるの見ると、切り出したくてムラムラする。 ■ このスレッドは過去ログ倉庫に格納されています