プログラムは目的達成のために行うべきことの「計画書」!
/icons/hr.icon
program = 前(pro)+書き物(gram)。公の前で書かれたもの、掲示されたもの、転じて事前の計画書。
大会プログラム、テレビの番組表などを思い浮かべると、それに沿って人やモノが動くイメージができるかも?
で、プログラムを書く、つくることを特にITの世界ではプログラミングという。
コンピュータが(何段階かを経ることはあるけど)解釈できるかたちで、指示計画書を書くことがプログラミング。
コンピュータは、その指示計画書のとおりに動作する。
だから、指示が間違っていたら、コンピュータも間違える!
/icons/hr.icon
書いたとおりにしか動いてくれません(もちろん、コンピュータならでは、言語ならではの癖はあるけど)
だけどいちばん難しいのは、チームの仲間や他のエンジニアがわかりやすいように書くこと。
プログラムは、他のたいていの文書がそうであるように、書かれるより読まれることの方がずっと多くなる。
作文やレポートだって、推敲したり見直すよね?
プログラムを書くときには、そんな状況がとても多くなると思えばOK
たとえば自分が書いたものを別の誰かがチェックしたり
問題があって修正したり、機能を追加したり、よりよくつくりかえたり
別の誰か? 自分が書いたものだって1週間もすればきれいさっぱり忘れるし!
https://gyazo.com/1b90f449580cedbfb8c3e3509e0b764e
指示計画書をつくるためには、指示する内容をよく知る必要がある
/icons/hr.icon
特に専門業務を扱うプログラムをつくる場合には、専門的な知識求められることが多くある。
行政、金融、輸送、医療、通信、安全などなど
またプログラムの世界では、再利用という考え方も進んでいる
/icons/hr.icon
ライブラリ、フレームワーク
あるいは、API(アプリケーションプログラミングインターフェース)
もっとあるいはミドルウェア、OS(オペレーティングシステム)
道具としての使い方を学ぶことで、中身をすべて知らなくても自分のプログラムの一部として使うことができる
人間も、Google検索つかうし、Twitterつかうでしょ? 一緒一緒
あらかじめ用意された構造、体系を利用して作ることで、効率よくプログラムをつくることもできる
物語のお約束とか、コントとか演劇とか
起承転結があるとか、序破急とか聞いたことある?
例がややこしいなと思ったら、どうぞ聞かなかったことに
人間はみんな怠け者なので、ラクをするためには全力を尽くす
全力でプログラミング言語やフレームワークをつくったり
新しいものを学んだり、改善したりに多くの人たちが何百時間もつかってます
・・・あれ?
まぁ、そういうのも含めて、つくったり、それが思うとおりに動く、というのは楽しいもの
プログラミング的思考ってなんだろう?
/icons/hr.icon
考える力
成功、失敗という結果だけでなく、どうしてそうなったかを考えられる
トライ&エラーを、工夫しながらできる
探す力
プログラマーにかぎらず技術者は、ずっと学び続ける人たち
知らないことと、どう付き合っていくかは永遠の課題
知識
知識があると、いろんなことがショートカットできる
ルールブックを見ながら将棋を指すことはできるけど、強くなるためにルールや定石を覚えていく