CodeIQ Blog

自分の実力を知りたいITエンジニア向けの、実務スキル評価サービス「CodeIQ(コードアイキュー)」の公式ブログです。

祝!元祖コードゴルフ本が復刻! #codegolf #c

CodeIQ中の人、millionsmileです。

CodeIQではすっかりお馴染みの問題となっている「コードゴルフ」。その元祖ともいえる本がこの度めでたく復刻となりました!!!

ショートコーディング 職人達の技法

執筆者は、CodeIQの出題者で人気問題をたくさんだしているOzyさんです!

CodeIQの出題者ってことは・・・

そうです!この本がもらえる問題が掲載中です!

「コード美人」っていう名の問題です。
正解したらコード美人バッジがもらえるし、本がもらえるかもしれないです。

■コード美人(受付締切:2月24日(月)AM10:00まで)
https://codeiq.jp/ace/ozy4dm/q723
f:id:codeiq:20140206152803p:plain

本の内容については、Ozyさんからの寄稿記事にてお楽しみください!

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

ショートコーディング、再び

Ozyです。

2007年

本書が生まれるきっかけとなった舞台である、PKU Judge Online(POJ)は、当時存在していたオンラインジャッジシステム(プログラミングコンテストの問題をオンラインで解くことができるシステム)の中でも、最高レベルのクオリティを持つものの1つでした。今こそ“競技プログラミング”という用語は一般的になりましたが、当時はそれほど世間には知られていなかったのではないかと記憶しています。
現在は大小さまざまなプログラミングコンテストが絶えず行われており、非常に賑やかです。会津大学のAizu Online Judge(AOJ)が劇的に進化し、POJを凌ぐレベルになりました。今後もますます盛り上がっていくだろう思います。

2007年、『Short Coding 職人達の技法』が発刊されました。
当時私自身は、プログラムのソースコードを短く書く遊びが、“コードゴルフ”という名前であることを知りませんでした。POJで、ソースコードをひたすら短く書く遊びを続けていると、ある日、1通のメールが届きました。それは海外の方で、英語で書かれたメッセージでした。「なぜ君は、同じ問題の答えをそんなに何度も提出するんだい?」そこで私はこう返信しました。

Because I am a Short Coder.

ショートコーディング

ショートコーディングとは、

プロぐグラムのソースコードをどれだけ短く書けるか、データ構造・アルゴリズム・処理系の観点から探究すること

と定義しています。最初に述べたように、コードゴルフという名前を知らなかった私は、あとから何とか区別をしたいと思い、ソースコードを短くするのは間違いないけれども、“プログラムの高速化”・“省メモリプログラミング”についても研究し、プログラマとしての知識や技術のレベルを上げていきたいと考えるようになったのです。
そんなわけで、本書では、単にコードを短く書く方法だけでなく、プログラミングコンテストの問題を解くのに役立ちそうなテクニックが書かれています。ソースコードを短く書くのは、ほんのお遊びだとは思うのですが、“寿命まで縮みそうなほど、本気で遊び倒す”勢いであることは、本書を手に取っていただければ十分伝わるかと思います。

どうしてそこまでするの?

「ソースコードを短く書いたって読みにくいし、仕事でも使えないし、何も良いことないじゃん!バカじゃないの!?」と、思う方もいらっしゃることでしょう。正直申しまして、ここまで大きな話になるとは思っておりませんでした。感覚的には、子供が遊んでいるのと変わらないんですよね。数人で遊んでいたら、他の子供がやってきて輪に加わる。盛り上がってきたら、さらに友達がやってくる。みたいな感じです。コードが1バイト縮むごとに、興味を持つ人が2~3人増えて、さらに縮める人が1人現れる、という風に、遊びの輪はどんどん広がっていきました。

ショートコーディング、再び

“さらに縮める人”というのは不思議なもので、際限なく出てくるんですよ。記録を抜かれた人は、さらに抜き返そうとするしで、競争がどんどん激しくなってしまいました。私は最もムキになった人間の一人ですが、どれだけやっても心が荒むことはなかったのは、一緒になって遊んでくれた皆が、知識や技術に対して真剣で、本当に素直で、相手がどんな人間かということ関係なしに、純粋に尊敬し合えたからだと、今でははっきり言うことができます。

本書にも書いてあることですが、これは単なる技術書ではなく、職人たちがコードの短縮化にかけた熱い想いを、グッと凝縮した歴史書でもあります。わざわざ書籍にはならないだけで、いつでも、今この瞬間も、世界のどこかで必死にコードを削っている人たちがいるのだろうと思います。本書では、そういう世界を少し切り取って、ひとつの作品として仕上げました。当時の“プログラミング熱”を感じたい方は、一度本書を手に取ってみてください。

目次

「ショートコーディング 職人達の技法」
Ozy[著] やねうらお[監修]

A5判:398ページ
ISBN:978-4-8399-5063-7
発売日:2014年03月11日


監修者より
ショートコーディング復刻版の出版にあたって
復刻版の変更点
本書のコードが動かない?

Chapter1 ショートコーディング入門
1-1 ショートコーディングことはじめ
1-2 戦いの場所 ~オンラインジャッジシステム~
1-3 やってみよう ~ショートコーディングの基本~
1-4 ウォーミングアップ

Chapter2 必見! 超絶テクニック
2-1 規則性を極める
2-2 Quick Sort Hack
2-3 ライブラリ関数を使いこなせ
2-4 1バイトの頼りになるヤツ
2-5 ビット演算超魔術
2-6 ポインタを使いこなそう
2-7 数学的な問題
2-8 アルゴリズムでキメる
2-9 数の新常識
2-10 1バイトへの情熱

Chapter3 ショートコーディング研究
3-1 より高度なテクニックに向けて
3-2 ループ凝縮
3-3 強力な拡張構文
3-4 マクロでコードは短縮できるのか
3-5 神業main再帰
3-6 Quick Sort HackⅡ
3-7 チートコードとセキュリティ
3-8 難問に挑む

Chapter4 言語対決
4-1 ショートコーダーは言語を選ばず
4-2 Java vs C
4-3 Pascal vs C
4-4 C++ vs C
4-5 さらなる挑戦

Chapter5 自分を磨け!
5-1 読者の皆さんへ
5-2 貴重な参考資料
5-3 凄腕ショートコーダーたち
5-4 最後に

Appendix 付録
A-1 掲載問題リスト
A-2 ASCIIコード表
A-3 演算子の優先順位と結合規則

索引
謝辞


エンジニアのための新しい転職活動!CodeIQのウチに来ない?の特集ページを見る