情報科学概論
2001.4.17



  1. 本日の作業内容

  2. プログラミングとは?

    • コンピュータに仕事の手順を教え込む
    • コンピュータに仕事を肩代わりさせる
    • 仕事を定式化する
    • 人間が楽をする
    • 究極のパズル

  3. なぜプログラミングするか

    • 無精(楽したいから)
    • 短気(繰り返しは嫌い)
    • 傲慢(人間は知的な活動に従事するべき)

    • 勤勉(労働(プログラミング)の喜び)
    • 忍耐(バグとの戦いに耐え忍ぶ)
    • 謙遜(人々の問題を解決したい)

  4. プログラミングしたいっ

    • 野球中継が延びて録画がずれた
    • 夜中にエアコンを制御したい
    • レポート用に必要なデータを抽出・計算したい
    • おもしろいパズルを解きたい

  5. プログラミングの実例

    課題

    100個あるばらばらの名前の付いたファイルを、あるファイルに記録してある一覧の順番に番号を付ける。

    • 創世記 001_創世記
    • 出エジプト記 002_出エジプト記
    • レビ記 003_レビ記 ・・・

  6. 解答1

    手でやる。100回繰り返すのに10分くらいか
    • ファイルが1000個だったら?
    • ファイルが10000個だったら?
    • ファイルが100000個だったら?

  7. 解答2

    手分けしてやる。10人なら数分で済む
    • ファイルが1000個だったら?
    • ファイルが10000個だったら?
    • ファイルが100000個だったら?

  8. 解答3

    プログラムしてコンピュータにやらせる
    i = 1
    IO::foreach("./list") do |f|
      f.chomp!
      File::rename(f, format("%03d_%s", i, f))
      i += 1
    end
    
    ファイルが100000個でも待つだけ

  9. 人はなぜプログラミングするか

    • 仕事だから
    • 課題だから
    • 楽したいから
    • 楽しいから

  10. 仕事や課題のプログラミング

    • お金が欲しい
    • 単位が欲しい
    • 食べていかなきゃ
    • 家族を養わなきゃ

  11. 楽するためのプログラミング

    • 人間がやりたくない仕事
    • 人間がやるのは大変な仕事
    • 人間がやるのは現実的でない仕事
    • 人間がやるのは不可能な仕事

  12. 楽しむためのプログラミング

    上記の全ての動機に加えて
    • 現実世界を捉え直す
    • 人間の性質を理解する
    • 頭脳を活躍させる
    • 達成感
    • 名誉

  13. 楽しいプログラミング

    プログラミングは本質的に楽しめる
    しかし、なぜ楽しくないのか?
    • 思ったことが直接記述できない
    • 欲しい機能がない
    • 面倒な約束ごとが多い
    • 手間がかかる
    などの理由で楽しくない場合もある

  14. 楽しいプログラミング言語

    上記の障害を軽減するプログラミング言語が欲しい
    • やりたいことがすっきり書ける(簡単なことは簡単に、難しいことも可能に)
    • お約束が少ない(寛容な文法、良く使う物は簡単に)
    • 一貫性がある
    • その気でないのに分かりにくいプログラムにならない
    • オブジェクト指向プログラミングを簡単に実践できる
    • やらなくても良いことはやらなくても良い

  15. 楽しいプログラミング言語Ruby

    • やりたいことがすっきり書ける(高機能のクラスライブラリ)
    • お約束が少ない(寛容な文法)
    • 一貫性がある(オブジェクト指向という統一した原則)
    • その気でないのに分かりにくいプログラムにならない(オブジェクト指向、変数スコープ)
    • やらなくても良いことはやらなくても良い(メモリ管理、例外処理)

  16. オブジェクト指向プログラミング

    プログラムを作るときの考え方
    • 「責任者」に依頼する

      string.size

    • 責任者は自分の仕事を知っている
    • 依頼する人は仕事の内容を知る必要はない

  17. オブジェクト指向言語Ruby

    • 全部のデータがオブジェクト
      • 整数
      • 文字列
      • 正規表現
    • 全部の手続きがメソッド
      • print
      • gets
    • 変数・式に型はない

      依頼を受けた人が自分の仕事を知っている(ので不要)

  18. なぜRubyを作ったか?

    • There's More Than One Way To Do It.
    • オブジェクト指向スクリプト言語の有用性を実証
    • オブジェクト指向言語が作りたかったから

  19. Ruby開発者の歴史

    • 高校 プログラミング言語に関心があった
    • 大学 プログラミング言語の研究室に配属された
    • 卒研 プログラミング言語の設計をした
    • 就職 仕事の合間にRubyの設計を開始した(1993年)
    • 転職 Rubyを仕事に流用した
    • 転職 Rubyを仕事にした

  20. 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(安定版・予定)

  21. 良いプログラマになるために必要なこと

    • コンピュータが好きなこと
    • やる気
    • 情報収集能力
    • 国語力
    • 英語力

  22. 良いプログラマになるために必要ないこと

    • 数学能力
    • 記憶力
    • 情報処理技術者試験2級・1級
    • 財産

  23. 結論

    • プログラミングは楽しい
    • プログラミングは楽しくあるべき
    • Rubyは楽しい
    • プログラミングは人間的活動

目次ページに戻る