この書籍の内容

内容紹介

プログラマに新しい視点を与える7つのプログラミング言語 <P>複数のプログラミング言語とパラダイムを使いこなせれば、プログラマとしての幅が広がります。

本書は、1週間で1つの新しい言語を学ぶ"Seven Languages in Seven Weeks"を、Rubyの作者まつもとゆきひろ氏の監訳で発行するものです。

言語の特徴を映画の登場人物になぞらえて、Ruby、Io、Prolog、Scala、Erlang、Clojure、Haskellという個性的な7つの言語を紹介。

各言語の特性とそこにあるプログラミングパラダイムを、体験を通してものにしましょう。

著者からのコメント

序文 <P>執筆中の著作『プルーストを読めば良いプログラマになれる理由』より <P>Joe Armstrong(Erlangの作者) <P>「Gmailのエディタが引用符の起こしと受けを正しく入力させてくれないのですが」

「けしからん.教養のないプログラマと退廃的な文化の兆候だ」

「どうすればよいでしょうか」

「プルーストの『失われたときを求めて』を読んでいることをプログラマの採用条

件に含める必要があるだろう」

「7巻すべてですか」

「そうだ.7巻すべてだ」

「それで句読点の使い方が改善され,引用符の使い方が正しくなるでしょうか」

「それは分からないが,良いプログラマにはなるだろう.禅的な考え方だよ......」 <P>プログラミングを学ぶことは,泳ぎを覚えるのに似ている.いくら理論を学んでも,プールに飛び込んで,息をしようと喘ぎながら水の中で手足をばたつかせる経験には代えられない.最初水中に沈んだときはパニック状態になるが,水面にひょいと顔を出して空気を飲み込むと,うれしい気分になる.「自分は泳げる」と思えるからだ.少なくとも,私は泳ぎを覚えるときそんな風に感じた. <P>プログラミングにも同じことが言える.学び始めが一番難しい.水に飛び込む気持ちになるには,良い先生が必要だ. <P>Bruce Tateはそんな先生だ.本書はプログラミングを学ぶときに最も困難な時期,すなわち最初のとっかかりの機会を提供するものだ. <P>興味のある言語のインタープリタまたはコンパイラをダウンロードおよびインストールする面倒な作業を何とか終えたとしよう.次に何をすべきだろうか.最初のプログラムはどのような内容だろうか. <P>Bruceはこの質問に見事に答えてくれる.「本書に掲載したプログラムまたはプログラムの一部を単に入力して,本書と同じ結果が得られるかどうか確認してみよ.自分でプログラムを書こうなどと思ってはいけない.本書の例を単に写すだけでよい.自信がついてくると,自分のプログラミングプロジェクトに挑戦できるようになる」. <P>何か新しいスキルを取得するときに実行すべき最初のステップは,自分で新しく何かを行えるようになることではなく,他の人が既にやってみせたことを自分でも再現できるようになることである.これが,新しいスキルを身につけるための最短経路だ. <P>新しい言語でプログラミングを始めるときに行うのは,その言語を構成している基本原理を理解するための難しい練習をこなすことなどではない.むしろ,セミコロンやカンマを正しい位置に指定するとか,何かを間違えたときにシステムが出力する奇妙なエラーメッセージを理解するといった単純なことだ.プログラムを入力し,コンパイラエラーをなくすという面倒な作業を終えて初めて,さまざまな構文の意味を考え始めることができるのである. <P>プログラムの入力と実行という機械的な作業を終わらせてしまえば,あとはゆったりくつろげる.残りの作業であるコードの解釈は潜在意識がやってくれるからだ.脳が意識してセミコロンの位置を決めている間に,潜在意識が表面的な構文の下に隠れている深い意味を理解する.そしてある日突然,論理プログラムの深い意味や特定の言語が特定の構文を備えている理由が分かるのだ. <P>多くの言語について少しだけ知っていると有用なスキルになる.筆者は,特定の問題を解くために,PythonやRubyを少しだけ理解する必要があると気づくことがよくある.また,インターネットからダウンロードするプログラムはさまざまな言語で書かれており,個人で使うには少し手を入れなければならないことが多い. <P>各言語にはそれぞれ,イディオム,長所,短所がある.さまざまなプログラミング言語を学ぶことによって,自分が興味を持っている種類の問題を解くのに最適な言語が分かるようになる. <P>喜ばしいことに,本書の著者であるBruceのプログラミング言語の好みは多岐にわたっている.彼はRubyのような確立された言語だけでなく,Ioのようなあまり評価されていない言語も取り上げている.プログラミングとは結局,理解することであり,理解できるかどうかはどれだけアイデアの引き出しがあるかにかかっている.したがって,新しい言語を直接体験することは,プログラミングが何たるかをより深く理解するために欠かせない. <P>禅の指導者は,数学が出来るようになりたければラテン語を勉強せよと言うだろう.プログラミングでも同じだ.オブジェクト指向プログラミングの本質を深く理解するには,論理プログラミングや関数型プログラミング(FP)を勉強する必要がある.関数型プログラミングに上達したければ,アセンブラを勉強する必要がある. <P>筆者がプログラマとして経験を積んでいた頃,プログラミング言語を比較した本は人気があったが,その大半は学術的な本で,言語の実際の使い方に関する実践的な情報は得られなかった.そうした状況が,その当時のテクノロジを反映していた.当時は,言語の概念について読むことはできたが,それを実際に試してみるのは事実上不可能だった. <P>現在では,概念について読むことができるだけでなく,実際に試してみることができる.泳ぐのは楽しいだろうかと思いながらプールサイドで突っ立っているのと,プールに飛び込んで水を楽しむのとでは雲泥の差がある.読むのと実際に試すのも,同じくらい大きな違いがある. <P>本書を心からお勧めする.皆さんが私と同じように本書を楽しまれるよう願っている. <P>2010年3月2日 <P>Erlangの作者 <P>Joe Armstrong <P>ストックホルムにて

著者について

著者・監訳者・訳者について <P>著者 <P>Bruce A. Tate(ブルース・テイト) <P>テキサス州オースティンに本拠地を置くRapidRedを経営する.RapidRedはRubyでライトウェイトな開発を行うコンサルティングファーム.過去にIBMでデータベースシステムプログラマやJavaプログラマなどとして勤務.その後,ベンチャー企業数社でクライアントソリューション担当部長やCTOなどを勤める.米国外での講演も多数.著書は10冊を超え,From Java to Ruby,Deploying Rails Applicationsやベストセラーの"Bitter"シリーズ,Beyond Java,ジョルト賞を獲得したBetter, Faster, Lighter Javaなどがある. <P>監訳者 <P>まつもとゆきひろ <P>株式会社ネットワーク応用通信研究所フェロー.その他,肩書多数.Rubyの生みの親.三女一男の父であり,良き夫でもある.性格はふまじめだが,敬虔(?)なキリスト教徒である.温泉好き.鳥取県出身,島根県在住.牡牛座.O型. <P>訳者 <P>田和勝(たわまさる) <P>フリーランス翻訳者.IT関連書籍.ドキュメントの翻訳を専門に行っている.主な訳書として,『Perlクックブック』『詳説正規表現第2版』(いずれもオライリージャパン刊),『プログラミングRuby 1.9言語編』『同ライブラリ編』(オーム社刊)などがある.兵庫県神戸市出身.

About this Title

第1章 <P>はじめに <P>人が言葉を学ぶ理由はさまざまだ.最初の言語,つまり母語は生きるために学ぶ.それは日々生活していくための道具となる.外国語を学ぶ理由もさまざまだ.キャリアアップのためかもしれないし,変化する環境に適応するためかもしれない.場合によっては,学ばなければならないからではなく,学びたいから,新しい言語をマスターしようと決心することもあるだろう.外国語を学ぶと新しい世界が開ける.新しい言語を学ぶごとに物の考え方が形成されることを認識したうえで,何かの啓示を得るために言語を学ぶ人さえいるだろう. <P>プログラミング言語にも同じことが言える.本書では7つの異なる言語を紹介する.といっても,母親が毎朝苦い薬を飲ませるようなやり方はしない.読者の皆さんに深い洞察を与え,プログラミングに対する見方が変わるような経験をしてもらうことが目的だ.本書を読んでプログラミング言語の専門家になることはできないが,お決まりの"Hello, World"プログラムよりは高度なことをお教えするつもりだ. <P>1.1 本書のねらい <P>多くの場合,筆者が新しいプログラミング言語またはフレームワークを学ぶときは,短時間で読める対話型のチュートリアルを探す.目的は,管理された環境で言語を経験することだ.必要ならスクリプトを実行して探索することもできるが,基本的には,脳に軽い刺激をもらい,シンタックスシュガーを垣間見て,主要な概念を把握することができればよい. <P>しかし,こうしたチュートリアルで満足できることはまずない.既に知っている知識に少し付け足した程度ではなく,あるプログラミング言語の雰囲気を本当に味わいたければ,短いチュートリアルで足りることは決してない.深くしっかりと学ぶ必要がある.本書では,そうした経験を1回ではなく7回してもらうつもりだ.本書を読めば,次の質問に答えられるようになる. <P>.型付けモデルは?型付けには,強い型付け(Java)と弱い型付け(C),静的型付け(Java)と動的型付け(Ruby)がある*1.本書に登場する言語は強い型付けのほうに近いが,静的型付けと動的型付けは広く混在している.このバランスが開発者に与える影響についても触れる.型付けモデルは,問題の解決方法を形成し,言語の動作方法を制御する.本書に登場するすべての言語はそれぞれ独自の特徴的な型付けを採用している. <P>.プログラミングモデルは?本書に登場する言語のプログラミングモデルは,オブジェクト指向型,関数型,手続き型,それらのハイブリッド型の4つに大別できる.なかには2つ以上のプログラミングモデルを組み合わせた言語もある.本書では,論理ベースのプログラミング言語を1つ(Prolog),オブジェクト指向の概念を完全にサポートした言語を2つ(RubyとScala),関数型の性質を備えた言語を4つ(Scala,Erlang,Clojure,Haskell),プロトタイプ言語を1つ(Io)取り上げる.なかにはScalaのようなマルチパラダイム言語もある.Clojureでは,マルチメソッドを用いて独自のパラダイムを実装することさえできる.新しいプログラミングパラダイムを学ぶことは,本書の構想で一番大事なことのひとつだ. <P>.言語処理系は?言語処理系には,コンパイラ型とインタープリタ型がある.また,仮想マシン上で動作する言語もあれば,そうでない言語もある.本書では,対話型シェルが用意されている言語ではシェルを使っての探索から開始し,より大きなプログラムに取り組むときがきたらファイル単位での処理に移行する.パッケージモデルを本格的に利用するような大規模プロジェクトは扱わない. <P>.分岐構文と主要なデータ構造は?驚くかもしれないが,ifやwhileの類を使わずに条件分岐させることができる言語は意外と多い.ErlangのパターンマッチングやPrologのユニフィケーションがそうだ.コレクションは,ほとんどすべての言語で重要な役割を果たす.SmalltalkやLispといった言語では,コレクションによって言語の特性が決まる.C++やJavaといったその他の言語では,コレクションはあちこちで提供されており,凝集度が足りないせいでユーザは不便を強いられる.いずれにしても,コレクションについてはしっかりと理解する必要がある. <P>.その言語を固有のものにしている主要な機能は?並行プログラミングのための高度な機能をサポートする予定がある言語もあれば,ClojureのマクロやIoのメッセージ解釈など,独自の高レベルの構文を提供している言語もある.ErlangのBEAMのように,強力な仮想マシンを用意している言語もある.Erlangでは,この仮想マシンのおかげで,他の言語よりもずっと短い期間で耐障害性分散システムを構築できる.また,論理を用いて制約を解決するPrologのように,特定の問題に特化したプログラミングモデルをサポートしている言語もある. <P>本書を読み終えると,各言語の専門家にはなれなくても,各言語固有の特性については把握できるようになる.では,本書で扱う言語を紹介しよう. <P>1.2 この本で扱う言語 <P>本書で紹介する言語を選ぶのは,皆さんが想像するよりずっと簡単だった.単に潜在的な読者に尋ねてみただけだ.結果をまとめてみると,8つの言語が候補として残った.そのうちJavaScriptはあまりにも人気のある言語だったので候補から外し,代わりに,次に人気のあるプロトタイプ言語であるIoを選択した.Pythonも候補から外した.オブジェクト指向言語は1つだけで十分だったのと,Rubyが既にリストの上位に入っていたからだ.そこで,リストのトップ10に入っていたPrologが意外な候補として挙がってきた.こうして次の7つの言語が残った.これらの言語を選んだ理由を以下に示す. <P>. Ruby.このオブジェクト指向言語は使いやすさとコードの読みやすさという点で評価が高い.オブジェクト指向言語を1つも含めないことも少しは考えたが,さまざまなプログラミングパラダイムをオブジェクト指向プログラミング(OOP)と比較したかったので,少なくとも1つのOOP言語を含めることは重要だった.それに筆者は大半のプログラマよりも強くRubyを推薦したかったし,Rubyの言語デザインを形作ることになった重要な決定事項について,その感じだけでも読者に味わってほしかったということもある.また,Rubyのメタプログラミングについてもかなり突っ込んで説明し,言語のシンタックスの拡張についても触れることができた.結果には大いに満足している. <P>. Io.Prologと共に,筆者が選んだ言語のなかで最も議論の多い言語だ.商業的には成功していないが,並行性構文とシンプルで統一されたシンタックスは重要な概念だ.余分なものを一切割愛した最小限のシンタックスは強力であり,Lispと大変よく似ている部分もある.Ioは小さなメモリ領域で動作し,JavaScriptのようなプロトタイプ言語であり,独特のメッセージディスパッチの仕組みを備えている(これには興味を持ってもらえるのではないかと思う). <P>. Prolog.確かに古い言語だが,極めて強力な言語でもある.Prologで数独を解いたことは,筆者にとって目から鱗の経験だった.これまでJavaやCで,いくつか難しい問題に苦労させられたが,そうした問題もPrologなら難なく解けただろう.筆者は,Erlangの作者であるJoe Armstrongが助けてくれたおかげで,Prologをより深く理解することができた(ErlangはPrologの影響を強く受けている言語だ).まだPrologを使ったことのない方は,この章を読んでうれしい驚きを感じるのではないかと思う. <P>. Scala.Javaの仮想マシン(JVM)上で動作する新世代言語の1つであるScalaは,強力な関数型プログラミングの概念をJavaエコシステムにもたらした.と同時に,OOPの概念も全面的に受け入れている.振り返ってみると,C++は手続き型言語とOOPの橋渡しの役割を担っていた.同じ橋渡し役という意味で,ScalaはC++と驚くほど似ている.Scalaのコミュニティに飛び込んでみれば,Scalaが純粋な関数型プログラマにとっては異端児だが,Javaの開発者には心底喜ばれている理由が分かるだろう. <P>. Erlang.本書で取り上げる言語のなかでも最も古い言語の1つだが,並行性,分散処理,耐障害性をきちんとサポートしている関数型言語として最近盛り上がりを見せている.新しく登場したクラウドベースのデータベースであるCouchDBの作者は,Erlangを選択し,ひたすら前進してきた.分散処理言語を少しでもかじったことのある人なら,その理由がお分かりだろう.Erlangを使えば,並行分散処理が可能な耐障害性アプリケーションを,これまでの言語では考えられないくらい簡単に設計できる. <P>. Clojure.もう1つのJVM言語であるClojureは,Lisp方言の1つで,JVM上での並行性の考え方に根本的な変化をもたらすものだ.Clojureは,本書で取り上げた言語のなかでは唯一,バージョン管理データベースと同じ戦略を用いて並行性を管理している言語だ.Lisp方言であるClojureはすごい威力を備えており,本書で取り上げるプログラミングモデルのなかでも最も高い柔軟性を実現している.しかも他のLisp方言と違って,括弧の数は大幅に削減されており,膨大なJavaライブラリや広範な配布プラットフォームなど,巨大なJavaエコシステムを利用できる. <P>. Haskell.本書で取り上げた言語のなかで唯一の「純粋関数型言語」だ.これは,書き換えることのできる「状態」がどこにも存在しないという意味だ.つまり,同じ関数に同じ入力引数を与えれば,毎回同じ結果が得られる.Haskellは,すべての強く型付けされた言語の中で,最も広範囲で高く評価された型付けモデルをサポートしている.Prolog同様,理解するには少し時間がかかるが,その価値は十分にある. <P>お気に入りの言語が含まれていなかったらご容赦願いたい.実は,既に何人かの言語好きの方から非難のメールが届いている.先ほど触れたアンケート調査では数十の言語が候補に含まれていた.筆者が選択した言語は必ずしも最善ではないが,それぞれ独特の個性を備えており,読者の皆さんに何かしら重要なことを教えてくれるはずだ. <P>1.3 この本を買ってください <P>もし,あなたが成長したいと思っている有能なプログラマなら,ぜひ本書を買ってほしい.自分が有能なプログラマかどうかなど漠然として分からないかもしれないが,どうかご容赦いただきたい.学ぶ姿勢を身につける <P>Dave Thomasは本書の発行元であるPragmatic Bookshelfの創業者の一人だ.彼は,多くの学生達に毎年1つの言語を学ぶことを奨励してきた.言語を学ぶことによる効用はいろいろあるが,最低でも,新しく学んだ概念を自分の選んだ言語で書くコードに取り込むようになる. <P>本書を執筆したことによって,筆者が書くRubyのコードは大きく変わった.実用性が高くなり,読みやすく,重複が少なくなった.可変変数を使うケースが減り,コードブロックと高階関数によって,コードの質が向上した.Rubyのコミュニティではあまり使われていないテクニックも使うようになり,おかげでコードがコンパクトで読みやすくなった. <P>うまくいけば,新たなキャリアを開拓することもできる.プログラミングパラダイムは,10年くらいのサイクルで変化する.Javaでは窮屈になるばかりなので,筆者は,Web開発に対するRubyのアプローチをより深く理解するために,Rubyでさまざまな実験を試みた.いくつか副次的なプロジェクトを成功させた後,自身のキャリアをRubyによるWeb開発の方向に強く押し進め,ひたすら前進してきた.筆者のRubyのキャリアは基本的な実験から始まって,拡大していったのだ. <P>移行期のヒントとして <P>本書の読者の多くは,ソフトウェア業界で前回プログラミングパラダイムが切り替わったときのことを覚えていないだろう.オブジェクト指向プログラミングへの移行は出だしで何度かつまずいたが,いずれにしても古い構造型プログラミングパラダイムでは,今日のWebアプリケーションに求められる複雑な処理には対応できなかった.Javaが成功したことで,オブジェクト指向への流れが一気に強まり,やがて新しいプログラミングパラダイムとして定着した.これにより,従来のスキルにどっぷりとつかっていた多くの開発者たちは,考え方,使うツール,アプリケーション設計の方法をすべて再編成しなければならなかった. <P>我々は現在,次のパラダイムシフトの真っ直中にいるのかもしれない.今回のパラダイムシフトを推進しているのはコンピュータの設計の変化だ.本書に登場する7つの言語のうち(RubyとPrologを除く)5つの言語が,大変興味深い並行性モデルを採用している.お使いのプログラミング言語がすぐにパラダイムシフトするかどうかはともかく,本書で紹介する言語が非常に興味深い回答を提示してくれることは間違いないだろう.Ioのフューチャの実装,Scalaのアクター,Erlangの「クラッシュさせろ」の哲学などを確認してみてほしい.Haskellのプログラマがどのような方法で可変状態を使わずに済ませているのか,Clojureがどのようにして,バージョン管理を用いて,最も難しい並行性の問題を解決しているのかを理解してほしい. <P>意外な箇所で深い理解が得られることもある.例えば,いくつかのクラウドスタイルのデータベースの開発言語として採用されているErlangは良い例だ.Joe Armstrong博士は,Prologを基盤としてErlangの開発を始めた. <P>1.4 この本を買わないでください <P>このセクションを読んで同意いただけるまでは本書を買ってはいけない.読者の皆さんには交換条件を提案したい.インストールの詳細ではなくプログラミング言語に焦点を絞って説明することに同意してほしい.代わりに,短い時間でできるだけ多くのことを教えると約束しよう.皆さんにはGoogleで検索してもらう機会が多くなるだろう.また,インストールに関してもサポートを期待してもらっては困る.その分,本題であるプログラミング言語についてより突っ込んだ解説ができるので,本書を読み終えたとき,プログラミング言語に関する皆さんの知識は格段に増えていることだろう. <P>7つの言語を解説するというのは,筆者らにとって野心的な試みであることを理解してほしい.読者の皆さんには,脳ミソを最大限に活用して,7つの異なるシンタックス,4つのプログラミングパラダイム,40年間にわたるプログラミング言語技術の蓄積を理解してもらう必要がある.筆者としては,広大な範囲のさまざまなトピックをカバーしなければならない.本書を執筆するために,実際にいくつかの言語を学んだ.各言語の最も重要な部分をうまくカバーするために,簡素化するための前提をいくつか設けることになる. <P>単なるシンタックスの説明では終わらない <P>言語設計者の考え方を本当に理解するために,本書では,基本的なシンタックスだけでなく,その背後にある考え方を積極的に吸収してもらう.つまり,お決まりの"Hello, World",あるいはフィボナッチ数列を出力する程度のコードでは終わらない.Rubyでは,メタプログラミングの世界を覗いてみる.Prologでは,完全な数独のパズルを解いてみる.Erlangでは,プロセスの死を検出して別のプロセスを起動したり,ユーザに通知したりするモニタを書いてみる. <P>本書の執筆にあたり,筆者は,基本事項だけにとどまらず,より深い解説をすると決めた.そこで,読者の皆さんに対して,1つ約束する代わりに,いくつか妥協してもらうことにした.まず,表面を撫でるような説明に甘んじることはしないと約束しよう.その代わり,専門書を読めば見つかるような基本事項には触れない.例外処理についても説明しない(ただし,それが言語の根本に関わる機能の場合は除く).パッケージモデルを必要としない小さなプロジェクトしか扱わないため,パッケージモデルについても説明しない.さらには,本書で提示するような基本的な問題を解くには必要ないプリミティブ(基本機能)について復習することもしない. <P>インストールガイドではない <P>筆者にとって最も大きな問題はプラットフォームだ.筆者はさまざまな書籍の読者から直接問い合わせを受けたことがあり,なかには3つの異なるWindowsプラットフォーム,OS X,少なくとも5つのバージョンのUnixのユーザがいた.それ以外のプラットフォームのさまざまな掲示板にコメントが掲載されているのも見た.7つの言語を7つのプラットフォームについて解説するのは筆者一人ではとても無理だ.共著者がいてもおそらく無理だろう.7つの言語のインストールについてもサポートは不可能なので,行わない. <P>読者の皆さんも,内容の古くなったインストールガイドなどに興味はないだろう.言語とプラットフォームは絶えず変化する.言語のインストールガイドのありかと筆者が使っているバージョンについてはそのつど触れる.そうすることで,読者の皆さんが同じ情報源を見て最新の情報を入手して作業できる.というわけで,インストール関連の疑問にはお答えできない. <P>リファレンスマニュアルではない <P>本書に掲載したサンプルコードについては,多くの方に徹底してレビューしてもらうように努力した.幸運にも,その言語の設計者本人にレビューしてもらったこともある.レビューが終わる頃には,本書は,各言語の神髄をうまくとらえた教材になるだろうと確信している.とはいうものの,各言語での読者のプログラミング作業のサポートまではできないことをご理解いただきたい.話し言葉にたとえて説明しよう. <P>通りすがりの旅行者として言葉を覚えても,ネイティブスピーカーとは大きな隔たりがある.筆者は英語は当然流暢に話せるし,たどたどしいがスペイン語も話せる.他にも3カ国語で,いくつかのフレーズを知っている.日本で魚を注文したこともあるし,イタリアでトイレの場所を尋ねたこともある.しかし自分の限界は心得ている.プログラミング言語に話を戻すと,筆者は,Basic,C,C++,Java,C#,JavaScript,Ruby,およびその他のいくつかの言語で自由にコーディングできる.その他にも,本書で取り上げた言語も含め,ある程度なら使える言語がいくつかある.本書で取り上げた7つの言語のうち6つについては,サポートできるだけの知識を持ち合わせていない.Rubyは常時使っており,5年間の経験があるが,IoでWebサーバを書いたり,Erlangでデータベースアプリケーションを作成する方法を教えることはできない. <P>7つの言語の詳細なリファレンスを書こうとしたら,大失敗に終わるだろう.プログラミングガイドを書くとしたら,本書で取り上げた各言語について,短くても本書と同じくらいのボリュームになる.本書では,各言語について,入門者には十分な情報を提供する.各言語をコード例を交えて解説し,プログラム例も掲載する.できる限り,すべてのコードをコンパイルし,確かに動作することを確認するようにする.ただし,読者の皆さんの実際のプログラミング作業を直接サポートすることはできない. <P>本書で取り上げた言語はすべて,サポートコミュニティが大変充実している.コミュニティが充実していることは,これらの言語を選択した理由の1つでもある.各章には,その言語に関する情報を検索してもらう演習問題を用意するようにした.これは,読者の皆さんに自力本願になってほしいという意図があってのことだ.自分の限界に挑戦してみよう <P>本書では,20分のチュートリアルよりは1段上の情報を読者の皆さんに提供していく.Googleについては皆さんご存じだと思うので,7つの言語すべてについて,簡単な入門者向けの記事を見つけることもできるだろう.本書では対話型のクイックツアーを提供する.また,ちょっとしたプログラミングの課題と1つのプログラミングプロジェクトを毎週提示する.これをこなすのは簡単ではないが,有益だし,楽しいはずだ. <P>本書を単に読むだけでは,シンタックスの雰囲気はつかめるだろうが,それ以上は無理だ.演習問題を自分でコーディングしてみる前にネット上で答えを探すようでは,失敗するだろう.まず自分で解いてみて,いくつかの問題が解けないことを自分自身で認識するようにしてほしい.いつだって,シンタックスを覚えるのは理屈を学ぶより簡単だ. <P>以上の説明を読んで不安になってしまうようなら,諦めて別の本を探すことをお勧めする.そうした方には満足してもらえないと思うからだ.そのような方は,7つの言語について,別個のプログラミング解説書を読んだほうがよいだろう.逆に,良いコードを短期間で書けるようにするという目標に興味を持っていただけたなら,ぜひ本書を読んでみてほしい. <P>1.5 終わりに <P>ここで,思い切って,やる気を起こさせるような言葉を書くつもりだったが,どうやら,すべては次の言葉に集約されるようだ. <P>楽しもう.

みんなのレビュー

まだレビューがありません