導入
「実践的プログラミング専門課程」
工業高校で教員としてプログラミングの初歩を教えていると、
最終回である今回は、
展開
改めて、プログラミングが「できる」とは
プログラミングが
定義:コードで目的の仕事を行えることが、
例えば、
しかし、
プログラミングは楽しい?
ところで、
考えてみてください。勉強が楽しくて毎日ウキウキしている生徒が学校にどれだけいるでしょうか。ある程度のレベル以上の内容を学習するためには、
前提:プログラミングは、
プログラミングが「できる」ようになるために
私は、
第0回で提示した図を再掲します。
あるプログラミング言語の文法を学習して、
そこで、
提言:ソフトウェア開発能力は、
教養として学ぶ「使える」ソフトウェア開発能力学習方法
ソフトウェア開発能力を得たいと考える人は、
- 使用するプログラミング言語の文法や簡単なデータ構造、
アルゴリズムを学ぶ。できるだけ多くの、 実際に活用されているソフトウェアのソースコードを読む (週に2時間、 合計で60時間程度) - 本連載の内容を学習する。同時に月に一つ程度のプログラム作成課題をこなす
(週に2時間、 合計で60時間程度) - 自分のソフトウェア開発テーマを設定し、
これを完成させる。できればチーム開発を行う (週に3時間、 合計90時間程度)
最低限、
提言:プログラミングの学習は知的学習と実践実習を並行して継続してこそ身につく。
おわりに
プログラミングに対してArtという表現を使うときがあります。日本語でアートは芸術というニュアンスが強い単語ですが、
私の住む町には、
現在、
プログラミングが
ほぼ一年間にわたる連載をご愛読くださったみなさん、
付録
学習内容総覧
この連載で学習したテーマの一覧を下に示します。今後の学習を進める際のブックマークとして活用ください。
大変広い範囲ですが、
テーマ | 概略 | |
---|---|---|
0~2 | 導入 | この連載の目的、 |
3, 4 | コーディングルール | 統一感が有り読みやすいソースコードを書く |
5~8 | 構造化 | コードに小さな単位の構造を与える |
9~12 | データ構造とアルゴリムズ | 基礎的なデータ構造とアルゴリズムを知る |
13~17 | オブジェクト指向 | オブジェクト指向の基本を知る |
18~20 | UML | コードの構造を表現する図法を知る |
21~22 | テスト駆動開発 | テストによってコードを確実に書く |
23~26 | デザインパターン | プログラムの大きな単位の構造の常套句 |
27~30 | リファクタリング | 読みやすくメンテが容易なコードを書く |
31 | まとめ | 総括、 |
参考文献総覧
この連載で紹介した参考文献をテーマごとに整理し掲載します。また、
ProcessingとJava言語
- 『Getting Started with Processing』
(ケーシー・ リアス, ベン・ フライ著 Oreilly社 - Processingの両親によるProcessingの入門書。簡易な英語で書かれていますので、
高校生の英語学習にも使えます。邦訳はこちら。
- Processingの両親によるProcessingの入門書。簡易な英語で書かれていますので、
- 『プログラミング言語Java』
(ケン アーノルド、 デビッド ホームズ、 ジェームズ ゴスリン 著、 東京電機大学出版局) - Java言語のバイブル。必携です。
- 『Java言語プログラミングレッスン 第3版
(上) (下)』(結城浩 著、 SBクリエイティブ上巻下巻) - Java言語の入門書として最高の一冊。上巻はJava言語入門者向け。下巻はJava言語でのオブジェクト指向を学ぶための良書。
- 『本格学習Java入門
[改訂新版]』(佐々木整 著、 技術評論社) - Java言語の基本的な文法が良くまとめられています。また、
大変広い範囲をカバーしているので、 はじめてJava言語に触る人が、 Javaがどんな言語なのかを知るために役立つ資料になるでしょう。
- Java言語の基本的な文法が良くまとめられています。また、
- 『Processing 2: Creative Programming Cookbook』
( Jan Vantomme著Packt Publishing) - たくさんの興味深いProcessingのサンプルコードが掲載されています。どれも楽しい題材です。特に動画や音楽に関するサンプルは秀逸です。課題として本書に掲載されたサンプルに取り組めば、
おのずとProcessingでのプログラミングを楽しめるでしょう。残念ながら邦訳はありません。
- たくさんの興味深いProcessingのサンプルコードが掲載されています。どれも楽しい題材です。特に動画や音楽に関するサンプルは秀逸です。課題として本書に掲載されたサンプルに取り組めば、
プログラミング概論
- 『イラストで読むプログラミング入門』
(ダニエル・ アップルマン著, インプレス社) - プログラミングという技術全般をイラストレーションで分かりやすく解説しています。中高生から読めます。
- 『エクストリームプログラミング』
(ケント・ ベック、 シンシア・ アンドレス 共著、 オーム社) - エクストリームプログラミング
(XP) の原典。XPはプログラミングの技術というより、 身につけるべき習慣。プログラミングを職業とする方、 プログラミングを業務の一部として持つ方は必修。
- エクストリームプログラミング
コーディングルール
- 『プログラム書法 第2版』
(ブライアン・ W・ カーニハン, P. J.プルーガー 著、 共立出版) - 広い意味でのコーディングルールの古典的書物。
- 『プログラミング作法』
(ブライアン・ W・ カーニハン, ロブ・ パイク 著、 福崎俊博 訳、 KADOKAWA) - コーディングルールからテストまで、
プログラミングの基本がまとめられています。
- コーディングルールからテストまで、
- 『Javaルールブック ~読みやすく効率的なコードの原則』
(大谷晋平、 米林正明、 片山暁雄、 横田健彦 共著、 電通国際情報サービス 監修、 技術評論社) - 効率良くJava言語の標準的なコーディングルールを学習できます。
- 『ずばりわかる! Java Javaの良いコード、
悪いコード (日経BPパソコンベストムック)』(日経ソフトウェア 編著、 日経BP社) - 各トピックともにコンパクトにまとまっており、
Java言語でコーディングをする際の具体的な指針やその例が掲載されています。
- 各トピックともにコンパクトにまとまっており、
データ構造、アルゴリズム、コンピュータ数学
- 『改訂C言語によるはじめてのアルゴリズム入門』
(河西朝雄 著、 技術評論社) - 各種のアルゴリズムとサンプルコードが掲載された入門書。辞書的な内容です。
- 『教養としてのコンピュータ・
サイエンス』 (渡辺治 著、 サイエンス社) - 大学1年生の教養科目としてのコンピュータ・
サイエンスの教科書です。
- 大学1年生の教養科目としてのコンピュータ・
- 『ハッカーのたのしみ 本物のプログラマはいかにして問題を解くか』
(ヘンリー・ S・ ウォーレン、 ジュニア 著、 株式会社エスアイビー・ アクセス) - 計算効率と速度を究極まで求めるならば、
本書がオススメ。
- 計算効率と速度を究極まで求めるならば、
- 『Javaで学ぶコンピュータ数学』
(平田敦 著、 カットシステム) - 高校生から学べるコンピュータ数学のテキストです。
- 『いかにして問題をとくか』
(G・ ポリア 著、 丸善株式会社) - 数学的に問題を解く考え方を丁寧に解説した名著。
- 『The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版』
(ドナルド・ E・ クヌース著、 アスキードワンゴ社) - プログラミングを学習する人は、
早期に本書を入手して学習しましょう。大変ハイレベルな文献ですが、 本書を敬遠するのは損失です。
- プログラミングを学習する人は、
- 『コンピュータの数学』
(ドナルド・ E・ クヌース、 オーレン・ パタシニク、 ロナルド・ L・ グラハム 著、 共立出版社) - 一般的にプログラミングで活用される数学を丁寧に解説した実用数学書。プログラマの教養として学習しましょう。
UML、デザインパターン
- 『これだけでわかる!初歩のUMLモデリング―基礎から各種テクニックまで第一人者が伝授!! (@ITハイブックス)』
(萩本順三 著、 技術評論社) - UML入門の良書。
- 『オブジェクトモデリング表記法ガイド―例題で学ぶUML』
(MISCOオブジェクト指向研究会 編著、 今野睦 監修、 プレンティスホール出版) - UMLの全体像が大変分かりやすく記述されています。
- 『増補改訂版Java言語で学ぶデザインパターン入門』
(結城浩 著、 ソフトバンククリエイティブ) - デザインパターン入門書の最高峰。
- 『オブジェクト指向における再利用のためのデザインパターン』
(Eric Gamma 著、 ソフトバンククリエイティブ) - デザインパターンの原典。別称
『GoF本』。デザインパターンを学ぶなら必携です。
- デザインパターンの原典。別称
- 『Java デザインパターン徹底攻略』
(日立ソフトウェアエンジニアリング (株) インターネットビジネス部 著、 技術評論社) - GoF本の解説書で、
サンプルはJava言語。
- GoF本の解説書で、
- 『Robocodeで学ぶ 一歩先のJavaプログラミング』
(平田敦 著、 カットシステム) - Robocodeを使ったJava言語の学習書です。デザインパターンの活用にも言及します。
ソフトウェアテスト
- 『ソフトウェアテスト293の鉄則』
(セム・ カーナー, ジェームス・ ベイハ, ブレット・ ベチコード 著、 テスト技術者交流会 翻訳、 日経BP社) - 現場で長年現場経験を積んだ著者らがまとめた各鉄則は、
大変有益です。
- 現場で長年現場経験を積んだ著者らがまとめた各鉄則は、
リファクタリング
- 『新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)』
(マーチン・ ファウラー著、 オーム社) - リファクタリングのバイブルです。
- 『Java言語で学ぶリファクタリング入門』
(結城浩 著、 ソフトバンククリエイティブ) - ファウラーのバイブルと併せて読むことをお勧め。