- 本日の作業内容
- まつもとさん講演会の内容について
以下の内容は2000年7月21日に行われたまつもとさんによるRuby講演会のレジメです。プログラミングに関する授業の導入としてふさわしい内容なので、ここに掲載します。見出しだけなので、全てを理解することは出来ませんが、参考になることも多いと思いますので、読んでみてください。
- プログラミングとは?
- コンピュータに仕事の手順を教え込む
- コンピュータに仕事を肩代わりさせる
- 仕事を定式化する
- 人間が楽をする
- 究極のパズル
- なぜプログラミングするか
- 無精(楽したいから)
- 短気(繰り返しは嫌い)
- 傲慢(人間は知的な活動に従事するべき)
- 勤勉(労働(プログラミング)の喜び)
- 忍耐(バグとの戦いに耐え忍ぶ)
- 謙遜(人々の問題を解決したい)
- プログラミングしたいっ
- 野球中継が延びて録画がずれた
- 夜中にエアコンを制御したい
- レポート用に必要なデータを抽出・計算したい
- おもしろいパズルを解きたい
- プログラミングの実例
課題
100個あるばらばらの名前の付いたファイルを、あるファイルに記録してある一覧の順番に番号を付ける。
- 創世記 001_創世記
- 出エジプト記 002_出エジプト記
- レビ記 003_レビ記
・・・
- 解答1
手でやる。100回繰り返すのに10分くらいか
- ファイルが1000個だったら?
- ファイルが10000個だったら?
- ファイルが100000個だったら?
- 解答2
手分けしてやる。10人なら数分で済む
- ファイルが1000個だったら?
- ファイルが10000個だったら?
- ファイルが100000個だったら?
- 解答3
プログラムしてコンピュータにやらせる
i = 1
IO::foreach("./list") do |f|
f.chomp!
File::rename(f, format("%03d_%s", i, f))
i += 1
end
ファイルが100000個でも待つだけ
- 人はなぜプログラミングするか
- 仕事や課題のプログラミング
- お金が欲しい
- 単位が欲しい
- 食べていかなきゃ
- 家族を養わなきゃ
- 楽するためのプログラミング
- 人間がやりたくない仕事
- 人間がやるのは大変な仕事
- 人間がやるのは現実的でない仕事
- 人間がやるのは不可能な仕事
- 楽しむためのプログラミング
上記の全ての動機に加えて
- 現実世界を捉え直す
- 人間の性質を理解する
- 頭脳を活躍させる
- 達成感
- 名誉
- 楽しいプログラミング
プログラミングは本質的に楽しめる
しかし、なぜ楽しくないのか?
- 思ったことが直接記述できない
- 欲しい機能がない
- 面倒な約束ごとが多い
- 手間がかかる
などの理由で楽しくない場合もある
- 楽しいプログラミング言語
上記の障害を軽減するプログラミング言語が欲しい
- やりたいことがすっきり書ける(簡単なことは簡単に、難しいことも可能に)
- お約束が少ない(寛容な文法、良く使う物は簡単に)
- 一貫性がある
- その気でないのに分かりにくいプログラムにならない
- オブジェクト指向プログラミングを簡単に実践できる
- やらなくても良いことはやらなくても良い
- 楽しいプログラミング言語Ruby
- やりたいことがすっきり書ける(高機能のクラスライブラリ)
- お約束が少ない(寛容な文法)
- 一貫性がある(オブジェクト指向という統一した原則)
- その気でないのに分かりにくいプログラムにならない(オブジェクト指向、変数スコープ)
- やらなくても良いことはやらなくても良い(メモリ管理、例外処理)
- オブジェクト指向プログラミング
プログラムを作るときの考え方
- 「責任者」に依頼する
string.size
- 責任者は自分の仕事を知っている
- 依頼する人は仕事の内容を知る必要はない
- オブジェクト指向言語Ruby
- なぜRubyを作ったか?
- There's More Than One Way To Do It.
- オブジェクト指向スクリプト言語の有用性を実証
- オブジェクト指向言語が作りたかったから
- Ruby開発者の歴史
- 高校 プログラミング言語に関心があった
- 大学 プログラミング言語の研究室に配属された
- 卒研 プログラミング言語の設計をした
- 就職 仕事の合間にRubyの設計を開始した(1993年)
- 転職 Rubyを仕事に流用した
- 転職 Rubyを仕事にした
- Rubyの歴史
- 1993/02 開発開始
- 1995/12 一般公開
- 1996/12 バージョン1.0
- 1997/08 バージョン1.1
- 1998/12 バージョン1.2(安定版)
- 1999/08 バージョン1.4(安定版)
- 2000/08 バージョン1.6(安定版・予定)
- 良いプログラマになるために必要なこと
- コンピュータが好きなこと
- やる気
- 情報収集能力
- 国語力
- 英語力
- 良いプログラマになるために必要ないこと
- 数学能力
- 記憶力
- 情報処理技術者試験2級・1級
- 財産
- 結論
- プログラミングは楽しい
- プログラミングは楽しくあるべき
- Rubyは楽しい
- プログラミングは人間的活動