狠狠撸

狠狠撸Share a Scribd company logo
プログラミングとは?
料理を例にしてプログラミングの世界観を理解しよう!




              株式会社パソナテック?キャリアサポート部?
                             小山田?浩




                      Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
はじめに

? プログラミングの世界観と料理の世界観には比
 較的共通する所があるように思えるので、それ
 ぞれを対比しながら、プログラミングとは何か
 を理解してもらおうと思います




              Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
まずは歴史をふりかえる

? プログラミング言語と料理の両方の歴史を振り
 返ると一定の系統が存在するようにみえる

        料理          プログラミング言語
 小麦文化
             お米文化
                    C言語                  Visual Basic


                                                         Haskell




                     ※プログラミング言語の系統は別資料参照


                    Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
系统から読み取れそうなこと

       料理          プログラミング言語
小麦文化        お米文化
                           C言語
                                                   Visual Basic




それぞれの文化(流儀)の違いを超えるのは大変!

                   Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.

                                                                haskell
料理での比較の例




  焼く/煮る      調理方法          煮る/蒸す/茹でる

オリーブ油/ハーブ    調味料             出汁/醤油/味噌

肉/小麦(パン、麺)            魚/米(ご飯、フォー)
              食材
    /野菜                  /乾物/野菜

                    Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
グループワーク:腕前(レベル)について

    ?   料理の世界で考えた場合、レシピを考える人と実際に作る人のどちら
        が凄いでしょうか?参加者を3等分して、それぞれの意見を支持する
        グループに分かれて、支持する意見のメリット/デメリットを考えてく
        ださい

         A.レシピを考える人が凄いと思うグループ
         B.実際に作る人が凄いと思うグループ
         C.比較できないと思うグループ

参考:料理の流れのイメージ


   食材などの準備         下準備          調理開始                            仕上げへ

 誰かが考案したレシピ                   レシピを参照してイ                出来上がった料理をレ
                調理法に沿って食材を
 に従って必要な材料の                  メージ通りの味に仕上                シピのイメージにあう
                   加工する
    準備を行う                     がるように調理開始                  ように盛り付け



                                  Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
グループワークの回答例


? 回答:比較できない
? 根拠:レシピは机上の理論的なもので実際にそ
 のイメージ通り作れるかどうかが一番大切。ま
 た上手なレシピがないと、いい腕も活かせない




              Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
システム開発における上流vs下流の腕前(レベ
ル)について

?   料理の世界同様にシステム開発の現場でも同じことが該当する

     料理でレシピを考える人=システムの設計フェーズの人

     実際に料理を作る人=プログラマー

?   システム設計の人同士や、プログラマー同士の比較なら意味がある

     システム設計の場合:どの程度設計手法に精通しているか?業界/
     業務知識をどの程度有しているか?

     プログラマーの場合:後述のスライドへ!




                        Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
技术の深さ惫蝉手軽さのポジショニングマップ
               深い



     C++
           C             Visual Basic
               C# Java
敷居                                                                 手軽
高い
                              Perl Java
                              PHP Script
                                            VBA


               浅い
                    Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
技术の深さ惫蝉手軽さのポジショニングマップ 続き

?   プログラミング言語それぞれに習得する際の手軽さと、奥深さが異な
    る

     左側の言語が出来る人でレベルが高ければWindowsやLinuxの開
     発も行うことができるレベル

?   基幹系システム開発で利用されるプログラミング言語についてはプロ
    グラミングの書き方に一定のルールが多い(堅い)ため、個々のプロ
    グラマーのレベルの差が生じづらい

     Perl、PHP、Ruby、JavaScriptといったLightweight
     Languageと呼ばれる言語は同じことを実現するのに色々な書き
     方が出来るので、レベルの差がとても出やすい




                            Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
Javaプログラマーのレベル感を料理人に例えた場
 合にはどのような感じ?
難易度
                                                 出来合いのモノ は使わ
                                                なくても自分が作りたい
                                                料理を素早く上手に出来
                                                    るレベル
      料理の世界における 出来合いのモノ という
      のがプログラミングの世界でいうライブラ
                              この上に位置するレベルの人
          リと呼ばれるものに相当
                              は世の中にもそれほど大勢は
                                いないくらい凄い!

                   出来合いのモノ は使わなくても自分
                    が作りたい料理が出来るレベル


             出来合いのモノ を組み合わせ
             て幅広く料理が出来るレベル


   出来合いのモノ を使って決
  まった料理しか作れないレベル
                                                       習得に要する期間
                                Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
まとめ

?   プログラミングの世界には一定の系統が存在する

     系統を超えて技術習得するのは大変

?   料理に例えたがレシピを考える人(システムの設計をする人)と実際
    に調理をする人(プログラミングをする人)を比較するのは意味がな
    い

     比較をするならばシステム設計に関わる人同士や、プログラミング
     に関わる人同士を比較するのは意味がある

?   プログラミング言語には、それぞれに技術の奥深さと習得の容易さが
    存在

     Lightweight Languageと呼ばれる言語は同じことを実現するの
     に色々な書き方が出来るのでレベルの差がとても出やすい
                           Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.

More Related Content

ProgrammingLanguage

  • 1. プログラミングとは? 料理を例にしてプログラミングの世界観を理解しよう! 株式会社パソナテック?キャリアサポート部? 小山田?浩 Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 2. はじめに ? プログラミングの世界観と料理の世界観には比 較的共通する所があるように思えるので、それ ぞれを対比しながら、プログラミングとは何か を理解してもらおうと思います Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 3. まずは歴史をふりかえる ? プログラミング言語と料理の両方の歴史を振り 返ると一定の系統が存在するようにみえる 料理 プログラミング言語 小麦文化 お米文化 C言語 Visual Basic Haskell ※プログラミング言語の系統は別資料参照 Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 4. 系统から読み取れそうなこと 料理 プログラミング言語 小麦文化 お米文化 C言語 Visual Basic それぞれの文化(流儀)の違いを超えるのは大変! Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved. haskell
  • 5. 料理での比較の例 焼く/煮る 調理方法 煮る/蒸す/茹でる オリーブ油/ハーブ 調味料 出汁/醤油/味噌 肉/小麦(パン、麺) 魚/米(ご飯、フォー) 食材 /野菜 /乾物/野菜 Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 6. グループワーク:腕前(レベル)について ? 料理の世界で考えた場合、レシピを考える人と実際に作る人のどちら が凄いでしょうか?参加者を3等分して、それぞれの意見を支持する グループに分かれて、支持する意見のメリット/デメリットを考えてく ださい A.レシピを考える人が凄いと思うグループ B.実際に作る人が凄いと思うグループ C.比較できないと思うグループ 参考:料理の流れのイメージ 食材などの準備 下準備 調理開始 仕上げへ 誰かが考案したレシピ レシピを参照してイ 出来上がった料理をレ 調理法に沿って食材を に従って必要な材料の メージ通りの味に仕上 シピのイメージにあう 加工する 準備を行う がるように調理開始 ように盛り付け Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 7. グループワークの回答例 ? 回答:比較できない ? 根拠:レシピは机上の理論的なもので実際にそ のイメージ通り作れるかどうかが一番大切。ま た上手なレシピがないと、いい腕も活かせない Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 8. システム開発における上流vs下流の腕前(レベ ル)について ? 料理の世界同様にシステム開発の現場でも同じことが該当する 料理でレシピを考える人=システムの設計フェーズの人 実際に料理を作る人=プログラマー ? システム設計の人同士や、プログラマー同士の比較なら意味がある システム設計の場合:どの程度設計手法に精通しているか?業界/ 業務知識をどの程度有しているか? プログラマーの場合:後述のスライドへ! Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 9. 技术の深さ惫蝉手軽さのポジショニングマップ 深い C++ C Visual Basic C# Java 敷居 手軽 高い Perl Java PHP Script VBA 浅い Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 10. 技术の深さ惫蝉手軽さのポジショニングマップ 続き ? プログラミング言語それぞれに習得する際の手軽さと、奥深さが異な る 左側の言語が出来る人でレベルが高ければWindowsやLinuxの開 発も行うことができるレベル ? 基幹系システム開発で利用されるプログラミング言語についてはプロ グラミングの書き方に一定のルールが多い(堅い)ため、個々のプロ グラマーのレベルの差が生じづらい Perl、PHP、Ruby、JavaScriptといったLightweight Languageと呼ばれる言語は同じことを実現するのに色々な書き 方が出来るので、レベルの差がとても出やすい Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 11. Javaプログラマーのレベル感を料理人に例えた場 合にはどのような感じ? 難易度 出来合いのモノ は使わ なくても自分が作りたい 料理を素早く上手に出来 るレベル 料理の世界における 出来合いのモノ という のがプログラミングの世界でいうライブラ この上に位置するレベルの人 リと呼ばれるものに相当 は世の中にもそれほど大勢は いないくらい凄い! 出来合いのモノ は使わなくても自分 が作りたい料理が出来るレベル 出来合いのモノ を組み合わせ て幅広く料理が出来るレベル 出来合いのモノ を使って決 まった料理しか作れないレベル 習得に要する期間 Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.
  • 12. まとめ ? プログラミングの世界には一定の系統が存在する 系統を超えて技術習得するのは大変 ? 料理に例えたがレシピを考える人(システムの設計をする人)と実際 に調理をする人(プログラミングをする人)を比較するのは意味がな い 比較をするならばシステム設計に関わる人同士や、プログラミング に関わる人同士を比較するのは意味がある ? プログラミング言語には、それぞれに技術の奥深さと習得の容易さが 存在 Lightweight Languageと呼ばれる言語は同じことを実現するの に色々な書き方が出来るのでレベルの差がとても出やすい Copyright (C) 2007 Pasona Tech Inc. All Rights Reserved.