Cookbookとはプログラミングの達人レシピ集。プログラミングでよく利用する「定番処理」をどう料理するか,というお題とベストプラクティスを沢山集めたもの。プログラミングの入門や,初級から中級にステップアップしたい人にとって有用なレシピ集。
なかでもPerl版のPerl Cookbookは有名で,多くのPerl開発者から「読むべし!」と推奨され,オライリーから書籍としても発売されています。
PLEAKというプロジェクトは,Perl Cookbookのレシピを他の言語で実装しよう,というプロジェクト。数年前から続いていて,多くの言語でPerl Cookbookのお題が「翻訳」されています。
たとえば,「今日の日付を得る」というお題について,多言語での実装例をかいつまんで見てみましょう。
Perl
($DAY, $MONTH, $YEAR) = (localtime)[3,4,5];
Python
today = datetime.date.today()
print "The date is", today
# あえてPerlに合わせるならday, month, year = datetime.date.today().day... かな?
Ruby
day, month, year = Time.now.day, Time.now.month, Time.now.year
# or
day, month, year = Time.now.to_a[3..5]
PHP
$today = getdate();
$day = $today['mday'];
$month = $today['mon'];
$year = $today['year'];
Haskell
import Data.Time
import System.Locale (defaultTimeLocale)
t = do tm <- getCurrentTime
let (year, month, day) = toGregorian (utctDay tm)
printf "The current date is %04d %02d %02d\n" year month day
Smalltalk
Date today printString. " -> '3-Jun-2005' "
言語によってカバレッジやノリに差はあるものの,どの言語もなかなかよく書けてます。Perl Cookbookはお題の選定が良いので,他の言語で実装しても,Perl版と同じように有用な達人レシピ集になっています。