今井氏:ソースコード公開は、社長のティム(*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
探検
今までみた絶望的なソースコード [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/04/17(金) 23:00:30.63ID:55USvuES2015/04/17(金) 23:07:42.31ID:UHVCP2Vk
★★★★★★★★★★★★★★★★★★★★★★★★★★
注意 この部分は、ゴミカスが書いたでたらめな文章です。
★★★★★★★★★★★★★★★★★★★★★★★★★★
> 初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に精通し、
> また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。
>
> すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねばならない
> という思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザインパターンを
> 適用しようとしだすのである。
>
> その結果、
> * 大量のクラス
> * 迷路のような変数渡し
> * 底なしに深いネスト
> などといった凄いものが生まれる。また、条件分岐に三項演算子を乱用するなどの症状も多く見受けられる。
> 最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。
> http://monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
注意 この部分は、ゴミカスが書いたでたらめな文章です。
★★★★★★★★★★★★★★★★★★★★★★★★★★
> 初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に精通し、
> また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。
>
> すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねばならない
> という思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザインパターンを
> 適用しようとしだすのである。
>
> その結果、
> * 大量のクラス
> * 迷路のような変数渡し
> * 底なしに深いネスト
> などといった凄いものが生まれる。また、条件分岐に三項演算子を乱用するなどの症状も多く見受けられる。
> 最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。
> http://monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2015/04/17(金) 23:09:53.52ID:UDbFCugu
2015/04/17(金) 23:16:09.05ID:2QruBEl7
最強は迷路のような循環参照だろ
2015/04/17(金) 23:20:08.61ID:eE8aPdvb
言語の構文はわずかに例外が有るにしろ、
コードをシンプルで分かりやすく書くことが出来るように
作られたもので、バージョンが上がると追加される機能っていうのは
それを更に良くするもの。
という当たり前のことから考えると、
問題ない機能を「俺が知らないから」「馬鹿が知らないから」という
理由で禁止する行為は、コードをクソコードに仕上げることになる。
もっと最悪なのが、俺がこれ以上勉強したくないから
他の人も使うの禁止!と言い出すリーダー。
コードをシンプルで分かりやすく書くことが出来るように
作られたもので、バージョンが上がると追加される機能っていうのは
それを更に良くするもの。
という当たり前のことから考えると、
問題ない機能を「俺が知らないから」「馬鹿が知らないから」という
理由で禁止する行為は、コードをクソコードに仕上げることになる。
もっと最悪なのが、俺がこれ以上勉強したくないから
他の人も使うの禁止!と言い出すリーダー。
2015/04/17(金) 23:26:55.79ID:ooZObC6M
>>2
かなり事実じゃね?
かなり事実じゃね?
2015/04/17(金) 23:29:30.64ID:eE8aPdvb
>>6
クソスレたてるな
クソスレたてるな
2015/04/18(土) 00:50:42.52ID:dyiDxr2Z
たしかに見に覚えがあるがプログラム書いてて一番楽しい時期でもある
2015/04/18(土) 11:31:06.97ID:rVGwSU9K
確かに2の通りだな
俺が見た絶望は、15全下の種類を持つフラグ変数が5つある奴だな
相互に挙動が干渉し、中で呼び出しが積まれたあとに突然最初のエントリーポイントを再帰しやがった
俺が見た絶望は、15全下の種類を持つフラグ変数が5つある奴だな
相互に挙動が干渉し、中で呼び出しが積まれたあとに突然最初のエントリーポイントを再帰しやがった
10デフォルトの名無しさん
2015/04/19(日) 13:46:48.22ID:ESsvP1kn 1000行を超えるswitchを見たときは痺れた
2015/04/19(日) 14:31:13.67ID:3NsiJz07
#include <stdio.h>
#define BUFFSIZE 7
int main(void)
{
char* buf;
char tmp;
buf = (char*)malloc(BUFFSIZE);
tmp = -126;
*(buf+0) = tmp + 0;
*(buf+1) = tmp + 72;
*(buf+2) = tmp + 0;
*(buf+3) = tmp + 103;
*(buf+4) = tmp + 0;
*(buf+5) = tmp + 89;
*(buf+6) = tmp + 126;
fputs(buf,stdout);
free(buf);
return 0;
}
#define BUFFSIZE 7
int main(void)
{
char* buf;
char tmp;
buf = (char*)malloc(BUFFSIZE);
tmp = -126;
*(buf+0) = tmp + 0;
*(buf+1) = tmp + 72;
*(buf+2) = tmp + 0;
*(buf+3) = tmp + 103;
*(buf+4) = tmp + 0;
*(buf+5) = tmp + 89;
*(buf+6) = tmp + 126;
fputs(buf,stdout);
free(buf);
return 0;
}
2015/04/19(日) 14:48:21.22ID:nqxUSETS
2015/04/19(日) 14:54:48.57ID:B0V38sso
2015/04/19(日) 14:59:17.52ID:YPSI+AI0
彡⌒ ミ
(´・ω・彡⌒ ミ
彡⌒ ミつ(´・ω・`) ))ハゲで何が悪い!!
(( (´・ω・`) ( つ )
( つ ヽ とノ
〉 とノ )^(_)
(__ノ⌒(_)
(´・ω・彡⌒ ミ
彡⌒ ミつ(´・ω・`) ))ハゲで何が悪い!!
(( (´・ω・`) ( つ )
( つ ヽ とノ
〉 とノ )^(_)
(__ノ⌒(_)
2015/04/19(日) 14:59:48.34ID:nqxUSETS
2015/04/19(日) 14:59:48.62ID:yTHXbUfS
17デフォルトの名無しさん
2015/04/19(日) 15:01:51.42ID:S//ZaxIU >>11
ガッ
ガッ
18デフォルトの名無しさん
2015/04/19(日) 15:36:02.22ID:oJmhIRRr >>11
くだらねぇ
くだらねぇ
2015/04/19(日) 16:05:31.47ID:dhzBOV6W
絶望的な人間が沸いてるな
20デフォルトの名無しさん
2015/04/19(日) 16:12:46.60ID:FgPTbLQc なんだこのスレw
2015/04/19(日) 16:54:41.99ID:H3AnyW4d
某一部上場企業で使われてる言語が日本語プログラミングのソースで吐きそうになったな
しかも1ファイル3万行とか普通にありやがるしそれこそ分岐しかしてねえ
しかも1ファイル3万行とか普通にありやがるしそれこそ分岐しかしてねえ
22デフォルトの名無しさん
2015/04/19(日) 17:04:27.02ID:A/MgNyGP 日本語ブロクラミングって実務で使う場所あんのか!
需要なんて絶対無いと思ってたけどw
需要なんて絶対無いと思ってたけどw
2015/04/19(日) 17:10:13.35ID:H3AnyW4d
あるんだななこれがしかも日本でも半端ない規模の会社よw
中身はcobolを日本語でラップしたような感じで。
「a=1」 というのを 「aを1に代入」って感じで組んでいく。脳が腐ると思ったわ。
中身はcobolを日本語でラップしたような感じで。
「a=1」 というのを 「aを1に代入」って感じで組んでいく。脳が腐ると思ったわ。
24デフォルトの名無しさん
2015/04/19(日) 17:32:24.76ID:A/MgNyGP 誰得だなw
当初は誰でも保守できるようにしたかったのだろうか?
結果誰も保守できなくなった的な?
当初は誰でも保守できるようにしたかったのだろうか?
結果誰も保守できなくなった的な?
2015/04/19(日) 17:53:27.13ID:xPXQDkXX
英語がわからないから日本語で書くという
アプローチは200%失敗する。
あー、そういやコードから日本語の仕様書を
作り出すとか言うソフトがあったな。
ね? 見事に失敗したでしょ?
アプローチは200%失敗する。
あー、そういやコードから日本語の仕様書を
作り出すとか言うソフトがあったな。
ね? 見事に失敗したでしょ?
2015/04/19(日) 18:29:17.86ID:dhzBOV6W
Interdevelop Desginerは売れたのか
売れたんなら買った企業の評判を聞いてみたいところ
今のところ俺はステップ実行設計書にご縁がない
幸せだ
売れたんなら買った企業の評判を聞いてみたいところ
今のところ俺はステップ実行設計書にご縁がない
幸せだ
2015/04/19(日) 19:04:55.40ID:Rt7hjrl3
日本語プログラムじゃないけど、ruby で6000行のプログラムなら見た事がある。
オブジェクト指向?何それ?っていう感じのコードだったw
オブジェクト指向?何それ?っていう感じのコードだったw
28デフォルトの名無しさん
2015/04/20(月) 07:31:46.14ID:l0+b2pIW >>22
FileMakerで作られた信じられないくらい巨大な社内システムの
スクリプト部分が全部日本語だった。
あまりにも酷いので某○ECにリプレイスの見積をとったら、
「30億円くらいじゃないですかね」という回答だった。
いまでも絶賛稼働中
FileMakerで作られた信じられないくらい巨大な社内システムの
スクリプト部分が全部日本語だった。
あまりにも酷いので某○ECにリプレイスの見積をとったら、
「30億円くらいじゃないですかね」という回答だった。
いまでも絶賛稼働中
2015/04/20(月) 12:22:22.82ID:Mmn5Ftfg
2015/04/20(月) 12:48:14.68ID:HTLIXLfD
などと下手糞が一丁前に語っちゃってます
2015/04/20(月) 13:47:35.36ID:lH6fvovP
変数名が日本語ならまだわかるが、演算子まで日本語にしたらかえってわけわからん。
2015/04/20(月) 13:53:08.80ID:SsAC3a+p
ガラパってるな
2015/04/20(月) 16:31:22.14ID:EfJAKFWG
大企業に限ってソースはダメなテンプレだよ。1ファイル5万行に及ぶクソコードと
分岐ネスト&goto乱発の超絶スパゲッティで某携帯会社のシステムは稼働している。
この会社で働いてた時は一時期プログラミング出来なくなって鬱で休職したわ。俺の知ってるプログラミングじゃなかった。
分岐ネスト&goto乱発の超絶スパゲッティで某携帯会社のシステムは稼働している。
この会社で働いてた時は一時期プログラミング出来なくなって鬱で休職したわ。俺の知ってるプログラミングじゃなかった。
2015/04/20(月) 18:40:19.36ID:USn+NwOK
RoofRaised って何だと思って、長い時間をかけてヘッダーファイルを調べてみたら、ただの double だった、なんてことがよくあったでしょ。
大規模なプロジェクトのすべてのクラスで暗黙の typedef を見つけ出すのにどれくらい時間がかかると思う?
大規模なプロジェクトのすべてのクラスで暗黙の typedef を見つけ出すのにどれくらい時間がかかると思う?
2015/04/21(火) 08:08:57.40ID:cRXNE3Zt
>>34
ダブルだけに二段屋根?
ダブルだけに二段屋根?
2015/04/21(火) 08:34:59.52ID:cJvjjAde
仕事選べない立場ってやっぱクズですね
同情します
同情します
2015/04/21(火) 10:01:54.00ID:P8FOHws6
2015/04/21(火) 12:33:47.15ID:5PzRDxP4
> 10分はかからないと思うが。馬鹿なの?
そんなにかかったらだめだろ。
せいぜい10秒程度だろ。
処理は読まないといけないからもう少しかかるが
定義は辞書を調べるようなものなんだから
grepとかfindなんか使わずに、単語を選択して
「定義場所を表示」ぐらいの調べられないとだめ。
この程度で分レベルの時間がかかってしまったら
調べている間に、何してたんだっけ?ってなるよ。
思考を中断させる原因となってしまう。
そんなにかかったらだめだろ。
せいぜい10秒程度だろ。
処理は読まないといけないからもう少しかかるが
定義は辞書を調べるようなものなんだから
grepとかfindなんか使わずに、単語を選択して
「定義場所を表示」ぐらいの調べられないとだめ。
この程度で分レベルの時間がかかってしまったら
調べている間に、何してたんだっけ?ってなるよ。
思考を中断させる原因となってしまう。
39デフォルトの名無しさん
2015/04/22(水) 20:53:51.72ID:NZ8QzlQ5 ☆ 日本の核ブ装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html
☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると改憲が実現します。皆様方、必ず投票に自ら足を運んでください。
私たちの『日本国憲法』を絶対に改正しましょう。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html
☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると改憲が実現します。皆様方、必ず投票に自ら足を運んでください。
私たちの『日本国憲法』を絶対に改正しましょう。☆
2015/04/22(水) 22:45:32.37ID:+mudGifq
増改築を繰り返せばどんなシステムでもスパゲティになる
2015/04/23(木) 14:29:59.79ID:z8bFtkdX
>>38
それくらいで止まるとかw
それくらいで止まるとかw
2015/04/23(木) 16:20:02.46ID:wgFAW8nP
お前たちは真の絶望を知らない
2015/04/24(金) 13:08:16.02ID:E5oc/4Vu
昔だがUNIX C使いがMSDOS Cで作ったソフト
auto変数でサイズ10000バイトとか普通にやってる上に子プロセスも同じだから全見直し
もっと酷かったのがC言語で書かれた移動体の基地局側ファームウェア
処理毎に移動体の数だけフラグ分けとif文の羅列で設計から全見直し
auto変数でサイズ10000バイトとか普通にやってる上に子プロセスも同じだから全見直し
もっと酷かったのがC言語で書かれた移動体の基地局側ファームウェア
処理毎に移動体の数だけフラグ分けとif文の羅列で設計から全見直し
2015/04/24(金) 14:39:36.66ID:TFN7oaD8
2015/04/26(日) 08:28:01.28ID:pIcJs2te
シングルスレッドの組み込みなら常識的なコードだが
2015/04/26(日) 13:23:54.32ID:3kjvd8px
昔のMSDOS環境はメモリ利用領域500KBほどだよ
stackでガバガバ取ったら、あっという間にエラーで落ちるからさw
stackでガバガバ取ったら、あっという間にエラーで落ちるからさw
2015/04/26(日) 16:19:44.76ID:T8rMi6ps
ロートルの何の価値もないXMS講座が始まるからDOSの話は止めろ
2015/04/26(日) 16:40:53.05ID:zBsfufMM
2015/04/26(日) 19:38:09.53ID:3kjvd8px
>>48
環境を考慮できないお前みたいな馬鹿ならできんじゃねw
環境を考慮できないお前みたいな馬鹿ならできんじゃねw
2015/04/29(水) 20:48:46.78ID:zWk0Y6jT
んと、UNIXではmallocの領域とスタックの領域は重なった四角形の上辺と下辺から衝突する方向で成長する。
だから、どちらが大きな領域を取れるかというと対等であるのだけれど
ヒープの側はfreeした場合、管理領域に虫食い穴ができてしまう。
そうした事情があるので、仮想記憶領域をムダに成長させたくなければ
可能な限り大きなメモリーはスタックに確保したほうが合理的なの。
だから、どちらが大きな領域を取れるかというと対等であるのだけれど
ヒープの側はfreeした場合、管理領域に虫食い穴ができてしまう。
そうした事情があるので、仮想記憶領域をムダに成長させたくなければ
可能な限り大きなメモリーはスタックに確保したほうが合理的なの。
2015/04/29(水) 20:54:30.77ID:ni+OWwPH
Windowsはスタックが1MBだったかな
2015/04/29(水) 21:02:54.96ID:a9t0k9yT
>>50
UNIXはそうかもしれないけど、LinuxもBSDもWindowsも違うよ。
UNIXはそうかもしれないけど、LinuxもBSDもWindowsも違うよ。
2015/04/29(水) 21:24:24.10ID:zWk0Y6jT
>>52
気になってlinuxのメモリモデル確認したら
テキスト(コード)、初期化、非初期化、(モート)、スタック
になってるじゃん。
ヒープが非初期化領域の末端に来て、反対側からスタックが衝突方向
だからLinuxもやっぱりUNIXと同じモデル。
ユーザーランドから見た論理モデルは変わってないじゃん。
気になってlinuxのメモリモデル確認したら
テキスト(コード)、初期化、非初期化、(モート)、スタック
になってるじゃん。
ヒープが非初期化領域の末端に来て、反対側からスタックが衝突方向
だからLinuxもやっぱりUNIXと同じモデル。
ユーザーランドから見た論理モデルは変わってないじゃん。
2015/04/29(水) 21:34:48.30ID:a9t0k9yT
>>53
どこを見たのか知らないけど、違うよ。
どこを見たのか知らないけど、違うよ。
2015/04/29(水) 21:45:11.23ID:BTL1OO/O
そもそも実装依存過ぎて話にならねえ
2015/04/29(水) 22:01:22.35ID:zWk0Y6jT
わかった今確認した。
カーネル2.6では
text, data, (moat?), heap, bss
になってる。
sbrk()にゼロを渡すと dataと heapの間の数値になるから
初期化データに対してヒープが衝突方向に成長し、
ヒープの後ろに非初期化データが続く。
ただ、ドキュメントによれば2.4ではUNIXと同じはず。
カーネル2.6では
text, data, (moat?), heap, bss
になってる。
sbrk()にゼロを渡すと dataと heapの間の数値になるから
初期化データに対してヒープが衝突方向に成長し、
ヒープの後ろに非初期化データが続く。
ただ、ドキュメントによれば2.4ではUNIXと同じはず。
2015/04/29(水) 22:33:43.39ID:jSKM1nC6
ほーん、で?いちいち書き込むなカス
2015/05/02(土) 14:37:22.70ID:xD347L3p
2015/05/02(土) 14:43:12.43ID:xD347L3p
switch分岐が5段連なった奴は絶望感が酷かったな
そのなかにたらたら転写、フラグ操作した上で、サブルーチンを呼び、サブルーチンでもまた分岐
調べると同じコードでフラグの設定値だけ違う
某地デジ
そのなかにたらたら転写、フラグ操作した上で、サブルーチンを呼び、サブルーチンでもまた分岐
調べると同じコードでフラグの設定値だけ違う
某地デジ
60聖マリアンナ医大病院20人資格取り消し
2015/05/05(火) 20:23:24.18ID:Xm1AWE572015/05/05(火) 22:49:52.71ID:bz0m6DRq
CRubyでは、compile.c 内の、iseq_compile_each 関数で、
AST(抽象構文木)を、Ruby仮想マシン用の中間コードに、
コンパイルするのだが、
ASTノードの種類によって分岐する、
switch文は数千行もある
switch (ASTノードの種類){ }
「Rubyのしくみ」という本を参照
AST(抽象構文木)を、Ruby仮想マシン用の中間コードに、
コンパイルするのだが、
ASTノードの種類によって分岐する、
switch文は数千行もある
switch (ASTノードの種類){ }
「Rubyのしくみ」という本を参照
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【🐻ニャー】京都府向日市の「クマ目撃情報」は見間違いか 市が映像確認「ネコに似ていた」 [nita★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
