スラドに聞け: 2015年版「読んでおきたいコード」は? 69
ストーリー by headless
読解 部門より
読解 部門より
m_nukazawa 曰く、
他人の書いたコードを読む能力はプログラマーにとって重要とされており、コードリーディングに関する書籍も出版されている。
しかし、オープンソースプロジェクトは数多く、読み慣れない素人には良いコードの選定すら難しい。プログラマーごとにターゲットが異なるため、読んで役立つコードも人それぞれだろう。今年はGoogleのAIやAppleのSwift、MicrosoftのVisual Studio Codeなど、新たにオープンソース化された注目すべきプロジェクトもある。
そこで、あなたの知っている領域において「今年はこのコンパイラのコードがすごかった」「このJavaScriptフレームワークはコードが綺麗」「これはモダンなCコードを書くためにぜひ読むべき」と思うコード・プロジェクトについて語っていただきたい。
2015年と銘打ってはいるが、今年に限らず、少し早めの年末大掃除のつもりで記憶をさかのぼっていただければ幸いである。
とりあえず (スコア:4, 参考になる)
C言語の初心者はFFmpegのコードを読むのが良いと思います。
速度を優先しながらも綺麗なコードを保っていますし、コンパイラー拡張を有効的に使っていますし、
ベストプラクティスに溢れているので、お勧めです。
Re:とりあえず (スコア:2)
FFmpegさっそく読み始めました。
とりあえず挙動の理解から(mainで躓いて勉強不足を再認識)
Re:とりあえず (スコア:1)
対比はImagemagickなんだろうか、なんかコンパイルしたけど維持がどうこうって話題があったような。
# というかそれは対生成物っていう意味でFFmpegもけっこうあったようななかったような
M-FalconSky (暑いか寒い)
Re:とりあえず (スコア:1)
話ズレるけど、ImageMagickのチームは、コマンドに
display
import
convert
あたりの一般語をつけるのにあたって議論とかなかったのかな? どなたかご存知でしたら教えて
Re: (スコア:0)
ImageMagickはコーディングスタイルが変なので、お勧めしがたいです。
Re: (スコア:0)
だから「対比」と言ってるのではなかろうか…
RPGツクールMV (スコア:2)
今ホットなのだとRPGツクールMVかな。
プログラマ向けアドベントカレンダーやってますね。
http://qiita.com/advent-calendar/2015/rmmv#day-1 [qiita.com]
Re:RPGツクールMV (スコア:2)
問題点がガンガン列挙されているようで、これは良い兆候かと。
実際に使っているプログラマの方々がそれなりにいるということですから。
でも使わないかな。
ツクール系の素材もノウハウも持たない、モバイルアプリ汎用フレームワークとして見てしまう私からすると、1から始めるなら、難読化も機能に持つもっと良いフレームワークがオープンソースで普通にありそう。(辛辣)
Re: (スコア:0)
RPGツクールMV本体がオープンソースなのかと思ったじゃないですか。
# そんなやついない
Re:RPGツクールMV (スコア:3)
あっ。
(上げかけた手を恥ずかしそうに隠す)
Re:RPGツクールMV (スコア:1)
言葉足らずですんません。
Webブラウザ動作用のランタイムJS群のことです
年をとわず (スコア:2)
というか今年向けなのがわからないので
まめめもさんところのコード類
http://d.hatena.ne.jp/ku-ma-me/ [hatena.ne.jp]
糞コード各種(反面教師として)
...良いサイトがおもいつかんので各自でググること
かな
M-FalconSky (暑いか寒い)
1年前に自分が書いたコード (スコア:1)
その糞ったれコードを読んどけよ
suckless.org (スコア:1)
git版sl (スコア:0)
飲んでおきたいコーラは? (スコア:0)
…見間違えてた。
Re:飲んでおきたいコーラは? (スコア:2)
個人的には
「コカコーラ バニラ」
にんにくいりの「ジャッツ タッコーラ」(飲んでいないが気になる)
伊江島の黒糖入りコーラ(名前忘れた)
ハロウィン限定ペプシ(名前忘れた)
ドデカミンコーラ(名前忘れた)
ペプシストロング
/\ /\ /\
(・大・ )3
___/\___________________
Jody Wisternoffこそ至高。
- Tetsuya Hiragino
Re: (スコア:0)
グリーンコーラ
Re: (スコア:0)
もうちょっと高度なひねりを頼む。
Re: (スコア:0)
ダビンチコードですかね。
Re: (スコア:0)
Code Red
コーラじゃないな
Re: (スコア:0)
インカコーラ
ニトリ通販ページ (スコア:0)
T/ o
コードは読まなかったけど、 (スコア:0)
Effective Modern C++ [oreilly.co.jp] は読んだな。とりあえず、C++11 はスキップして、C++14 で書こうと思った。
Re: (スコア:0)
C++はモダンなほど読み辛くてデバッグし辛いのは何故なんだろうか
Re:コードは読まなかったけど、 (スコア:1)
モダンと聞くとそば入りを連想するがデバグはし辛そうな印象。
Re: (スコア:0)
抽象的な話ってのは分かりづらいもんさ
それにしても、人間が抽象化して、具体的なところはコンピュータ任せにするのが
モダンな言語の役割分担なわけだが、本当はコレ逆のほうが捗るんじゃないかなぁ。
同じような処理をまとめて共通化するとか、変数を抜き出して再利用性を高めるとか、
そんなん気を利かせてIDEのほうで適当にやっといてほしい。
俺はおよそ人間には読めないような、数万行くらいのコードをだらだら書きっぱなしにしたい。
人間だって、ある程度偉くなるとおおざっぱに喋り倒すだけであとは全部ゴーストライターに書かせてるじゃん?
いい加減ああいう感じにプログラム書けるようになってほしくてたまらないのは年のせいか。
Re: (スコア:0)
汚いプログラムを、意味を変えないまま綺麗なプログラムに変換するのは無理筋ではないだろうか。
Re: (スコア:0)
なんつーか、そうなると人間様の出番自体がない世界になる方が先なんじゃ
抽象的なことすら機械に取って代わられるとなると自分含めて仕事失う人が多そうで怖い
そんなふうに怯えを先に感じる私も歳なんだろうか
Re: (スコア:0)
あなたはモダンなコードを読みづらいと感じるかもしれませんが、私は読みやすいと感じます
Re: (スコア:0)
マクロを多用したlispのコードなんかでも、書く分にはいいけど他人のコードが異様に読みづらかったりしたもんです
たぶん頭の中の考えが比較的ストレートに出るからだと思うけど、やっぱり他人の考えはフローを追ったほうがわかりやすい
Re: (スコア:0)
マクロってモダンでなく、労咳の最たるものでは?
Re:コードは読まなかったけど、 (スコア:1)
いちいち『老害』に頼りすぎ
「古いものは悪いんだっ!」っていう弱気な予防線を手軽に張れるもんだから
抗生物質みたいにとりあえず連発しとく弾幕ワードになってるね
Re: (スコア:0)
CやC++しか知らない人がそう考えるのは無理のないことです
Re: (スコア:0)
エヴァった結果が使えないのはC系を問わないマクロの
弱点で、ロジックによる文字列ビルダーに勝てるはずの無い、
実用的にしようとすると途端に見通し最悪になるから
既に全面的に否定されているのでは?
Re: (スコア:0)
あんたが老害化してるだけ
Re: (スコア:0)
ぱっと見どこのコードを呼び出しているのかわかりづらい、からとか?
Windows系のソースコード (スコア:0)
まあ合法的に読める.NET Coreあたりとかがいいと思う。
msvcのコードとかもいいけどイカれてる。
Re:Windows系のソースコード (スコア:2)
Coreじゃない通常の.Netのソースも読めますよ。ただし製品版フルセットではなく、あくまでサブセットですが。
http://referencesource.microsoft.com/ [microsoft.com]
https://github.com/Microsoft/referencesource [github.com]
# お仕事で既存のクラスの派生とか類似クラスとかを書くときに、ベースの実装を把握するのに役立ってる。
Re:Windows系のソースコード (スコア:1)
仕事で.Net使っているなら内部の挙動を知ることで学習だけでなく実益にも繋がって、とてもいいと思う
Re:Windows系のソースコード (スコア:1)
msvcのコードとかもいいけどイカれてる。
そういえばVisual Studio 2015でC Runtime Library・スタートアップコードがC++言語で全面的に書き換えられているのでお勧めかも。
それまではC言語で書かれたMS-DOS時代から継承されていそうなコードでした。例えばprintf系の関数は142パターンありそれらは#ifdefで分岐されていたのですが、今回の書き換えでtemplateで表現され#ifdefは排除されています。
読みやすいコード != リバースエンジニアリングしやすいコード (スコア:0)
今年の話ではないが、swftoolsのリバースエンジニアリングをしたことがある
素晴らしいコードというわけではないが、フローは単純でコード自体は追いかけやすかった
しかしその読みやすさがswfの理解に貢献したわけではなかった
理由の一つに、独自のデータ構造で生のデータを隠蔽していたことが挙げられそう
やめてほしいとおもいました
まる
Re:読みやすいコード != リバースエンジニアリングしやすいコード (スコア:2)
"読むコード"としては、コード・ビルドシステムの良さだけでなく、理解しやすいターゲットかどうかも重要な点になりそうですね。
Re: (スコア:0)
隠蔽していなかったら、その読みやすさも無かったのでは?
設計モデルの理解をボトムアップで行おうというのがそもそも筋違いな気がする。
Re: (スコア:0)
> 隠蔽していなかったら、その読みやすさも無かったのでは?
それはありえない話です
正式な名前は知らないのですがswfはシンプルなプロトコルやエンコーディングですから、扱うプログラムはどうやってもシンプルなフローになるのです
> 設計モデルの理解をボトムアップで行おうというのがそもそも筋違いな気がする。
リバースエンジニアリングと断っていますが…
Pythonのソース (スコア:0)
が綺麗という話をどっかで聴いた。とくに初期のやつはプログラミング言語はこうやって実装するのかぁという感じらしい。
Re:Pythonのソース (スコア:1)
Re:Pythonのソース (スコア:1)
Re:Pythonのソース (スコア:1)
C のコードで他人に読むことを薦めたくなるものは私にはありません。素晴らしいコードもありますが、その箇所はゴミの中に埋まっている感じがします。
Perl なんて自分のコードでも読みたくありません。書き捨てコードにすることを要求している言語仕様です。
C++/STL/Boost あたりだと書くのが楽なのは分かりますが、他人のコードは余程必要にせまられないと読む気になれません。追いきれない可能性が常にあります。Temperate 文法は可読性を犠牲にしています。
IOCCCの作品 (スコア:0)
日本への出張の際、飛行機の中で自分の仕事をほとんど終わらせたあと
日本に着いてからはNetHackをして遊んでいたり、IOCCCのプログラムを読んでいた人がいた。
IOCCC
http://www.ioccc.org/index.html [ioccc.org]
芸術的!?読み難いC言語ソースコードコンテストの作品!
http://matome.naver.jp/odai/2138933760758227301 [naver.jp]
# すんげーできるプログラマでした
# でも靴下には穴があいていました