トップページ⇒tech
180コメント60KB

__フリーソースコードのレベル__

■ このスレッドは過去ログ倉庫に格納されています
0001夏厨学生NGNG
CodeProjectとかPlanetSourceCodeとかでは沢山のソースを
公開されてますが、これらのレベルってどうなんでしょう?

業務レベルには程遠いんでしょうか?
また、業務レベルのソースとはどういうソースなんでしょうか。
0002デフォルトの名無しさんNGNG
大変恐縮ではありますが、わたくし 「ろ」 キーが>>2を頂戴いたしました。

┌───┐   >>1へ たまには押してください。
│_  �U│   >>3へ 「¥」は「¥」キーではなく、わたくしを押してください。
│     │   >>4へ 「_」は「アンダースコア」といいます。名前を覚えておいてくださいね。
│\  ろ.│   >>5へ 「\」は「逆スラッシュ」で、「/」は左隣にあります。
└───┘   >>6へ 「ろ」は「呂」が変化したとされています。
           >>7へ 特に何もありません。
           >>8へ ここまで読んでくださってありがとうございます。
0003デフォルトの名無しさんNGNG
>>2
\

押してみた。使いにくいなお前
0004デフォルトの名無しさんNGNG
>>2
_

押してみた。使いやすいな、アンダースコア
0005デフォルトの名無しさんNGNG
>>2
\
ん?逆スラッシュじゃねーじゃん。なんつって。
0006デフォルトの名無しさんNGNG
>>2
emeditorでCtrl押しながら押したら
0x1CだったところでFSってなに?
http://www.mars.dti.ne.jp/~torao/program/appendix/ascii.html
0007デフォルトの名無しさんNGNG
炉
0008デフォルトの名無しさんNGNG
「あ」は「亜」だよ
0009デフォルトの名無しさんNGNG
>>6
Fantasy Story
0010GET!DVDNGNG
☆★ 新商品 ゾク・ゾク 入荷!! 急げ〜!! ☆★☆
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安!  スピード発送!  商品豊富!   
★☆      http://www.get-dvd.com        
☆★ 激安DVDショップ 「GETDVDドットコム」 
★☆      http://www.get-dvd.com        
☆★ 今すぐアクセス Let’s Go!   急げ! 
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
0011デフォルトの名無しさんNGNG
>>6
Final Soldier
0012デフォルトの名無しさんNGNG
>>6
Free Source
0013デフォルトの名無しさんNGNG
>業務レベルには程遠いんでしょうか?
遠いものが多い。近いのはユ〜ザインタフェ〜スの見栄えとか。

業務レベルのソ〜スコ〜ド:
条件1:バカでも読めるソ〜スコ〜ド。
    頭のいい人にしか読めないソ〜スは業務では必要ありません。
条件2:えら〜処理が完璧。
    あらゆる可能性を考慮。

まぁ、アメリカ人はだねぇ、
コンセプト・基本設計まではいいんだが実装が最悪ね。バグばっかり。
そもそも、バグは出て当たり前って奴ら考えてるからね。
Windowsを見れば分かるでしょ。バグ多くて、重たくって。
0014デフォルトの名無しさんNGNG
>>2
このタイプのコピペでは一番面白かった
0015デフォルトの名無しさんNGNG
>>13
何をむきになってるんですか?
0016デフォルトの名無しさんNGNG
>>15
そうはみえんが
0017デフォルトの名無しさんNGNG
Linuxのコードを参考にしれ
0018デフォルトの名無しさんNGNG
Linuxのコードはきれいとは思えない
0019デフォルトの名無しさんNGNG
Apacheは綺麗だよん♪(^-^*)
0020デフォルトの名無しさんNGNG
http://www.shitamachi.net/ranking/cgi23/ranklink/ranklink.cgi?id=23top




.
0021_NGNG
http://homepage.mac.com/hiroyuki44/
0022_NGNG
http://homepage.mac.com/hiroyuki44/hankaku02.html
0023デフォルトの名無しさんNGNG
あ〜、漏れも興味あるかも。

実際、職業プログラマの人からネット上のいろんなソースを見て、
この辺はやっぱ違うなぁ、とか、へぼいなぁ、とかって思う部分ってどんな部分なんスか?
誰かなんか語ってくれ〜
0024デフォルトの名無しさんNGNG
う〜ん、業務プログラマでもネットでソース公開してる人でも、
うまい人はうまい。下手な人は下手。
神のごとくうまい人もいれば、目も当てられない人もいる。
業務もネットもはっきりいうとレベルは変わらない。

漏れがうまいと思った人はネットでしか見かけなかったが。
0025デフォルトの名無しさんNGNG
なんだ、業務のレベルってたいしたことないんだな。
ネット上のソースコードの方が凄いのか。
0026デフォルトの名無しさんNGNG
>>25
少なくともお前が日本語が下手ということは分かった。
0027デフォルトの名無しさんNGNG
>>26
そうか?>>25の文章のどこがどのように下手なんだ?
0028デフォルトの名無しさんNGNG
カゴメソースを参照してくれ
0029ヘタニマジレス君NGNG
>>8
「安」じゃねーの?
0030デフォルトの名無しさんNGNG
仕事でやってるやつと、趣味でやってるやつも大して変わらんよな
実際、酷いソース見たことあるし
雑誌とかで勉強している人のほうがいいコード書く場合が多い

でも、趣味でやってるやつは局所的に詳しいけどその他全般に関する知識乏しい
その辺がプロとアマの違い
0031デフォルトの名無しさんNGNG
むしろ業務用の方が周りを見ない分レベルは低い。
0032デフォルトの名無しさんNGNG
フリーのソースっていうと C と C++ と Java でほとんど全てなワケだが、
この中でバカでも出来るのは Java だけなわけで、仕事がある割合も
Java がほとんどなわけで、君たちは本当に C や C++ の業務のコードを見たことあるのか?
あと
>>13
> アメリカ人はだねぇ、(禿しく中略)バグは出て当たり前って奴ら考えてるからね。
バグは出て当たり前です。出ないように努力するのも当たり前だけど。
後は出たバグを叩くのみです。
003331NGNG
>>32
Cがほとんどだが。
0034デフォルトの名無しさんNGNG
>>32
まぁ、GNUだけ見ればそうなんでしょうね。
0035デフォルトの名無しさんNGNG
BSDもそんな感じでしょ
0036山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0037デフォルトの名無しさんNGNG
>バグは出て当たり前です。出ないように努力するのも当たり前だけど。
>後は出たバグを叩くのみです。

テスト仕様書と報告書まで出てるヤツは少ないからなぁ...
うまく動作する事をルーチンパスにプログラムするのと、うまく動かない事をルーチンパスにするのじゃやっぱクオリティに出てくるね。コストも変わるけど。
MSのテスト技法に「すべての行にブレイクポイントを設定して、通ったところはポイントを解除して、ポイントが0になるまでデバッグする」ってのがあるけど、さすがに真似できない。コスト的にね。
0038デフォルトの名無しさんNGNG
むしろ、設計書やテスト仕様書のフォーマットが知りたい。
PMもSEもいつもこのへんでぐちゃぐちゃしてる。
0039デフォルトの名無しさんNGNG
多人数でごちゃごちゃいじったソースは駄目。
一人よがりのソースはピンからキリまで。
0040あぼーんNGNG
あぼーん
0041デフォルトの名無しさんNGNG
んなもん出来上がったソフトの差を見りゃ歴然

業務のほうが30くらいレベル低い
0042デフォルトの名無しさんNGNG
はいはい。極少数のフリーソフトとそこらへんにある業務のソフトを比べてもしょうがありませんよ。
0043デフォルトの名無しさんNGNG
ピンキリ
0044デフォルトの名無しさんNGNG
>>37
違う状態で通るような場合はどうするの?
またブレークポイント置くの?
0045デフォルトの名無しさんNGNG
例えば、おまえらが普段使ってるコンパイラ。
フリーで実用に耐えられるのはgccぐらいだろう。
0046デフォルトの名無しさんNGNG
見やすいサイトを目指してます
http://homepage3.nifty.com/manko/
暇つぶしドゾー
0047デフォルトの名無しさんNGNG
>>45
gccは実用に耐えられる代物ではありません^^;
0048デフォルトの名無しさんNGNG
じゃ、Linuxは実用に耐えられないOSだな(w
0049デフォルトの名無しさんNGNG
昔、あるメーカのコンパイラが変なので文句言ったら
「全ての面でgccのほうが上です」
と答えられたという話があったな。
0050デフォルトの名無しさんNGNG
某王国だな。
0051デフォルトの名無しさんNGNG
王は余計だった
0052デフォルトの名無しさんNGNG
業務用は仕様書から作るから見易い。
ただし、試運転で疲れてくると、ソースだけを直して
仕様書を直さない事がままあるので、始末が悪い。
0053デフォルトの名無しさんNGNG
フリー:自分が欲しいもの
業務用:他人が欲しいもの

好きこそ物の上手なれ、な面は多分にある。
0054デフォルトの名無しさんNGNG
フリー:自分が使えれば十分なもの
業務用:他人が使えなきゃ十分じゃないもの

フリーだとドキュメントが貧弱だったり、
ユーザインタフェースがしょぼかったり、
バグがあっても自分にとって問題が無かったら
放置されたりする。
0055デフォルトの名無しさんNGNG
>>52
それは会社の体質に依存する。
0056デフォルトの名無しさんNGNG
GNUツールやBSDはソースを弄れるひとが使うもので、
なんも分ってないのが使っても大したメリットを得られるわけではない。
0057デフォルトの名無しさんNGNG
>違う状態で通るような場合はどうするの?
それは問題ない。状態は関係なくその場所を通った事に意味がある。

>設計書やテスト仕様書のフォーマットが知りたい。
知らない香具師が多いが、IEEEに仕様書のテンプレートすばりその物があるよ。
すんげぇ参考になる。
書籍でこの手の仕様書の作り方系を探っても、汎用機時代からの遺産なのであまり参考にならない場合が多い。
005857NGNG
追加
>違う状態で通るような場合はどうするの?
それは問題ない。状態は関係なくその場所を通った事に意味がある。
アプリに対して、すべてのコードが実行されるパターンを用意してテストするって事。
0059デフォルトの名無しさんNGNG
>>54
確かにそうだが、ソースのクオリティに関しては
好きこそ物の上手なれ、な面は多分にあると思う

仕事のソースは、実現できればよい思考なのであまり、
ソースのレベルが高いとはいえない
0060デフォルトの名無しさんNGNG
>>57
>知らない香具師が多いが、IEEEに仕様書のテンプレートすばりその物があるよ。
>すんげぇ参考になる。
>書籍でこの手の仕様書の作り方系を探っても、汎用機時代からの遺産なのであまり参考にならない場合が多い。
それってタダじゃないんですよね。ちょっと探ったんですがStoreのとこにしかないような・・・
006157NGNG
>>60
根気よく探せば、どこかに落ちてるよ。ちなみに全部英語だけどね。
外部仕様書ならIEEE1362、内部仕様書ならIEEE830、検査仕様書は忘れた。
古いヤツと新しいヤツが有るので注意。
0062デフォルトの名無しさんNGNG
>>59
たしかにそうかもしれないが、
プログラムってのはソースがすべてじゃない。

趣味でプログラム(特にソースのクオリティが高いとされるもの)を
作っている奴はソースにしか眼中に無いので
使い勝手が悪かったりヘルプが貧弱だったする。
006360NGNG
>>57>>61
ありがとうございます。がんばって探します。
006459NGNG
>>62
たしかに、言ってることは正しい
ただ、スレ違いだということが言いたいだけ
0065デフォルトの名無しさんNGNG
>使い勝手やヘルプ
世の中にはそういうキーワードの存在しない世界もある。
たとえばFAでは、客がフローチャート付きの仕様書を書いてきて、
しかもソースが読めたりする。
インターフェイスはDCS。ただし、マスターテーブル多数。
楽といえば楽。苦しいといえば苦しい。

実にスレ違いでした。
0066デフォルトの名無しさんNGNG
とりあえずネット上で良いコードを見ることは希なわけだが。
あれで業務用と大して変わらないのか…。
一番酷かったところのソースコードを自分なりに書き直してみたことがあるが、
なんか500行から120行くらいまで圧縮できたぞ。
よくそんなコードを晒せたなと褒めてやりたかった。
まぁエラートラップにはC++の例外処理使ったからその分も結構あるだろうけど。
0067デフォルトの名無しさんNGNG
>>66
頼む、両方あげてみれくれ
0068デフォルトの名無しさんNGNG
>>67
自分のしか残ってないな〜。
PNG作るライブラリあるだろ?
あのオープンソースのやつ。
オレ英語読めねえから、関数解説してるサイト探してたら、
例のソースが出てきた。
一応探してみるわ。
0069デフォルトの名無しさんNGNG
libpng?違うか…。

参考になりそうなので、おらも期待
if( pointer != NULL )をif( pointer )にしたとか、そういう話じゃないよね?
0070デフォルトの名無しさんNGNG
>>69
いやlibpng。

>>67
素で参考にならんよ。
下記のことを行うことができる人はあれは、誰でも同程度のコードに出来ると思われ。

1,同じような処理を一纏めにする知恵があり、それを実行する努力ができる。
2,switch文を乱用しない。
3,エラー処理はC++の例外処理を使う。
4,ZeroMemroy等、標準で用意されているマクロ、関数をちゃんと使う。
5,DIBを猫○ロのようなアフォな扱い方をしない。
6,256色DIBに関しては、ヒープメモリに読み込んだカラーテーブルを、
わざわざ配列にコピーするという荒行をしない。

というか、こんなことも出来ない香具師が果たしてこの板にいるか?
0071デフォルトの名無しさんNGNG
で、それはほかに持っていってもそのままコンパイルが通るシロモノなのかい?
0072デフォルトの名無しさんNGNG
趣味グラマだが。
好きこそ物の・・・なので初版のソースはやたらきれいなんだが
一通り書き終わったコードには興味がないので
再版を重ねるごとに激しく読みにくくなってく。
0073デフォルトの名無しさんNGNG
Linux界隈ではプログラム実行時の引数の解析に
getopt とかいうライブラリ?がよく使われるんだけど,
あれってどうなの?(;´Д`)使いやすい?
漏れが馴れてないだけなのかな。。。
0074デフォルトの名無しさんNGNG
業務用ってーと、会社で会計に使ってるのとか顧客管理に使ってるのとか。
UIは悪くないけど、あれって仕事で使うものだから
ユーザーが覚えようとしてくれるのがでかいんじゃないのかねぇ。
GNUのソフトとかは業務で使ったことがないからわからないけど
そこまで差があるようには思えないけどなぁ。
0075デフォルトの名無しさんNGNG
>>70
ZeroMemory って標準か?

っつか、C/C++ の標準ライブラリに ZeroMemory なんてないよね。
0076デフォルトの名無しさんNGNG
>>75
うん、ないね。
0077デフォルトの名無しさんNGNG
>>71
Win32API使ってるから無理ですな。
さらにデフォルトでRGBをリトルエンディアン用に変換するから無理。
一番はオレに移植生を考えたコードが書けないから無理。
Window以外の環境なんてMS-DOSくらいしか知らん(´Д`)

話は変わるが、Cの移植生が高いっていうのは嘘らしい。
「移植生が保障できるように意識してプログラムを組まないと移植生はない」 by宮坂○人
だとさ。アセンブラで組んでた時代に移植生が高いと有名になった名残だそうだ。
ちなみに、趣味でやってる素人のオレは移植生なんて考えたことがない。
どうせWindows用以外のプログラム書かんし書けんし。
UnicodeとNULL、NUL、\0、0の違いに気を付けてることくらい。
0078デフォルトの名無しさんNGNG
>>78
標準ライブラリを使ってる限り、移植性はほぼ100%だよ。
機種依存機能を使えば移植性がなくなるのは、どの言語でも同じ。
0079デフォルトの名無しさんNGNG
連続投稿スマソ。
>>75-76
ZeroMemoryはdefineディレクティブですぞ。
↓こんな感じ
memset((Destination),0,(Length))
要はmemsetだからCRTに含まれると思うのだが、
マクロ化すると除外されるのかな?
0080デフォルトの名無しさんNGNG
>>78
いや、ポインタ演算とかも意識して書かないとだめじゃないかな。
0081頭悪い ◆gGTEz68pSM NGNG
CodeProjectの場合はあくまでサンプルでしょ。
その記事のテーマになってる部分しかフォローしてない。
0082デフォルトの名無しさんNGNG
union{
int a;
struct{
char b[4];
}
};

これで bを参照すると、エンディアンの関係で失敗するよ。
0083デフォルトの名無しさんNGNG
union{
int a;
char b[4];
};

すまん、structいらん。
なにやってるんだろうなぁ俺。疲れているな。
0084デフォルトの名無しさんNGNG
機種依存機能にはCPUアーキテクチャも入る(ということにしてくれ)。
0085デフォルトの名無しさんNGNG
>>79
memsetは標準だが、
ZeroMemoryという定義の書かれた非標準のヘッダファイルなどを
必要とするということは標準とは言えない。

ZeroMemoryがmemsetしか使っていないマクロであるかどうかってのは
実装の詳細であって、利用者からは関係ないし。
0086デフォルトの名無しさんNGNG
そもそも

> 4,ZeroMemroy等、標準で用意されているマクロ、関数をちゃんと使う。

ZeroMemoryなんて置き換える必要のないモノを置き換えるな。無駄だ。
そんなものを挙げる時点で低脳が窺い知れる。
0087デフォルトの名無しさんNGNG
>>81
スマン、CodeProjectって素なんだか知らない。
アマなんでゆるしとくれ。
ちなみに、オレが頭悪いこと自他共に認めてるぞw。

んで、どうせだから宮坂○人氏の供述を簡単に書いとく。
「OSのAPIやCPUに依存する記述を除いても移植生が保障されるわけではない。
同じマシンで同じOSを使っても、コンパイラを変更するだけで動かなくなるソースも存在する」
移植生の壁となるものに、には、int型やポインタのサイズ、メモリ保護や資源保護の有無、
アーキテクスチャの違い、式の評価順序、エンディアン、アラインメントなどを上げている。
0088デフォルトの名無しさんNGNG
>>86
memset 使えっつーのは同意だが、元が自前で for ループ回したり、構造体の各要素を
ちまちま 0 に設定しているのだとしたら、ZeroMemory() 使うだけでも「元よりマシ」だとは
思うぞ。

っつか移植性なんて、移植性が必要なところでのみ考慮すればいいと思うんだが。
画像表示や GUI での入出力が絡むと、それを完全に移植性を保った形で書くのは
かなり手間が掛かる。

プログラムの構造として MVC の分離はするにせよ、Model 内部で画像を保持する
部分の型なんかは、汎用にすると効率悪すぎだし。(全部 char[] 配列とかにすれば
汎用的だが、Win32 ならメモリハンドルとかにした方が幸せなわけで)
0089デフォルトの名無しさんNGNG
シフトや除算も処理系依存
型変換(主にダウンするキャスト)モナー

規格自体のそういうトコが非常になげやりにできてるので
移植性100%のソースを書くのはなかなか難しい
0090デフォルトの名無しさんNGNG
実際問題、実用的なプログラムはOSにも強く依存してるわけで・・・。
0091デフォルトの名無しさんNGNG
>>84
そういやwindows.hは標準でもなんでもないなw。
正確にはwinbaceだけど。
とりあえずもっともな意見。

>>85
>ZeroMemoryなんて置き換える必要のないモノを置き換えるな。無駄だ。
構造体やクラスを0で埋めるの楽だよ?
windosプログラム組んでると、デフォルト動作を行わせるために
0で埋めとかんといけない場合が多いから。
行数減らせるし、コンストラクタで使うと便利な上に、
オレはmensetを0以外で使用したことがないw。
オレには必要な物だけど、まぁ人好きずきだからね…

>>88
>構造体の各要素をちまちま 0 に設定しているのだとしたら
ご名答。あれじゃ無駄に行数が…

しかしまぁ、自分の発言でよう墓穴掘るなオレはw。
0092デフォルトの名無しさんNGNG
ごめん、
>>84→>>85
>>85→>>86
の間違い
0093デフォルトの名無しさんNGNG
>んで、どうせだから宮坂○人氏の供述を簡単に書いとく。
げげ、、、宮坂○人氏って、printfデバッグの記事をかくのが好きな人ですか?
ローテクも大事とかじゃなくて、ローテクしか書けないんじゃっていつも思う。
0094デフォルトの名無しさんNGNG
>>93
うん、それw。
今月のCマガでも似たようなこと言ってたw
0095デフォルトの名無しさんNGNG
std::fill
0096デフォルトの名無しさんNGNG
bzero
0097C1メジャーの名無しさんNGNG
OpenSSL↓
http://pc2.2ch.net/test/read.cgi/tech/1006617496/838
http://pc2.2ch.net/test/read.cgi/tech/1006617496/842
0098デフォルトの名無しさんNGNG
>>88
> っつか移植性なんて、移植性が必要なところでのみ考慮すればいいと思うんだが。
> 画像表示や GUI での入出力が絡むと、それを完全に移植性を保った形で書くのは
> かなり手間が掛かる。
libpngは「画像表示や GUI での入出力」とは関係ない。
あくまでもPNG形式の画像データを扱うためのライブラリ。
0099デフォルトの名無しさんNGNG
>>1
PlanetSourceCodeはたまに世話になってますが、これっていわゆる「フリー」とは
違うでしょ?ソフトウェアで「フリー」といえばGNUをさすと思うんだが、、

それはそれとして、PlanetSourceCodeなんかのクォリティーはそれほど高くないが、現場で
実際に書かれているコードはもっとひどいと思う。
010086NGNG
>>91
>>ZeroMemoryなんて置き換える必要のないモノを置き換えるな。無駄だ。
>構造体やクラスを0で埋めるの楽だよ?
>>88も言ってるが「memset使え」。

第2引数に0しか入れなかろうと文字数もタイピングのしやすさもmemsetの方が使いやすい。
その上こんなマクロは知らない人間も多い。

どう考えてもZeroMemoryを選ぶ理由がねぇ。コーディング規約で求められてでもしない限りはな。
0101デフォルトの名無しさんNGNG
>>100
それは個人の好みじゃね?
■ このスレッドは過去ログ倉庫に格納されています