著者
遠藤 侑介
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.47-58, 2013-01-11

本稿は,実用性の観点を排除してプログラミング本来の美しさを追求する「超絶技巧プログラミング」を提案する.このプログラミングにおいては,実用上意味のない目的や制約を設定し,それを充足するプログラムを書く方法を開発する.さらに,Ruby における超絶技巧プログラミングの実例を,その実装技法の解説と共に2 つのテーマに分けて紹介する.1 つはself-descriptive なRuby プログラム,もう1つは使用可能文字を制限したRuby プログラムを書く方法である.これらの事例を通して超絶技巧プログラミングの魅力を示し,また,プログラミング言語Ruby の神秘性の一端を解き明かす.
著者
光成 滋生
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.59-68, 2013-01-11

昨今のコンパイラやインタプリタの技術の進歩には目を見張るものがある.「アセンブリ言語で書くより,コンパイラなどの高機能言語に任せた方がよい」と言われて久しい.しかし,それでもなお多くのパソコンに搭載されているIntel系CPUの命令を真に生かしたコードを生成するのは難しいのが実情である.ここでは,C++をx86/x64用高機能アセンブラとして利用するライブラリを紹介する.そしてCPUに応じたコード生成,および文字列処理などのいくつかの基本的な処理における高速化テクニックの例をあげる.
著者
田中 英行
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.17-26, 2013-01-11

今日に於いても、プログラマにとってエラーハンドリングは頭の痛い問題である。正しいエラーハンドリングを行うことは、堅牢なソフトウェアを構築する上で大変重要な問題であるが、適切な抽象化が行われてきたとは言い難い状況にある。現在広く用いられている手法としては、古くからのエラーコードによるものと、例外によるものがある。エラーコードによる手法には大きく2つの問題がある。エラー処理のためのコードがコードのあらゆる部分に組み込まれ、コードの見通しが非常に悪くなることと、エラーを無視するのが非常に容易なので、予期せぬエラー処理漏れを犯しやすいことである。一方で例外を用いる方法は、正しいリソース管理とともに用いられる必要がある。メモリの管理をGCに任せた場合でも、GCの管轄外のリソースは正しく処理されないといけない。これを怠れば、多くの場合深刻なバグを引き起こすことになる。このような処理をもれなく記述すると、往々にして例外捕捉のために深いネストが必要となる。例外処理を正しく行うには、例外の正しい伝搬も必要であるが、これをきちんと行うのはかなり面倒なため、いわゆる例外の握りつぶしが横行する結果となるケースも少なくない。いずれの方法でも、エラーを正しく処理できているかどうかは簡単には推論できない。コードをじっくり観察する必要がある。かくして現代のプログラマは、退屈で面倒な、容易に間違いを犯し得る、そして何より「美しく」ないコードを神経をすり減らしながら書かなければならない状況にあり、また、ともすればそれを良しとする風潮すら見受けられる。しかしながらそれは解決できる問題であり、単にプログラミングモデルからくる制限に他ならないと考える。本発表では、モナドによってエラー処理の抽象化を行うための手法を紹介する。それとともにエラー処理に欠くことのできない、リソース管理の抽象化もあわせて紹介する。モナドを用いて、例外処理のための雑多のコードを、いわゆる「モナドの床下配線」によって隠蔽する方法を、実際のHaskellにおける応用例とともに見てゆく。それにより、エラーの通知側とそれを受け取って処理する側が完全に分離され、用途にマッチしたエラーハンドリングを自由に記述できるようになる。最終的に、正しいエラーハンドリングを美しく行えることを示す。
著者
稲葉 一浩
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.75-82, 2013-01-11

アルゴリズムやデータ構造は,速度やメモリ消費など効率面での評価が第一になされることが多いが,「美しさ」もまた,その価値を計る重要な指標である.なかでも,神秘的・魔術的な美しさではなく,わかりやすい美しさ,言い方をかえれば,キーアイデアさえつかめば誰でもいつでもどこでも応用できる類いの,「近寄りやすい・親しみやすい」美しさには価値があろう.本稿では,筆者が今までに出会ったアルゴリズムの中から,そのような親しみを感じたアルゴリズムを紹介し,また,いかにそれらのアイデアに親しんで異なる問題に転用したかの実例を論ずる.
著者
久野 靖
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.35-46, 2013-01-11

プログラムのコードは美しくなければいけない、とは昔から言われていることである。かっては「よいプログラムを書くための指針」のような本がいくつもあり、そのようなテーマの議論も普通になされていたが、今日ではそれがあまり見られなくなっているように感じられる。なぜそうなのか、「指針」論は不要なのかということと併せて、本稿では今日における「指針」について議論の題材を提供することを試みる。
著者
山本 和彦
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.27-34, 2013-01-11

純粋関数型プログラミング言語 Haskell に対して、三つのテスト基盤を統合したテスト手法を提案する。ライブラリのユーザに見せるべき振る舞いの記述には、Python から移植した doctest を用いる。doctest では、利用例、設計、および自動テストが実現できる.ユーザに見せるべきでない振る舞いの記述には、Ruby の rspec をヒントに実装したhspec を使用する。hspecでは、設計および自動テストが実現できる。Haskellでは、純粋なコードと副作用のあるコードが型システムにより明確に分離される。純粋なコードは、性質をテストしやすいことが知られている。我々は、性質テストツールである QuickCheckをdoctestと hspecに統合した。
著者
和田 英一
雑誌
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集
巻号頁・発行日
pp.83-90, 2013-01-11

これまで出会ったプログラムで, これは素晴らしいと思ったもの, うまく出来たと感じたものはいくつもある.そのうちで比較的簡単な小数の十進二進変換, 横方向の和のアルゴリズムなどの優れている例を述べた後, 特にセルオートマトンのプログラミング技法のいくつか, 中でもLife Gameの生死判定, Hashによる高速計算などを紹介する.