tag:crieit.net,2005:https://crieit.net/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E6%95%99%E8%82%B2/feed 「プログラミング教育」の記事 - Crieit Crieitでタグ「プログラミング教育」に投稿された最近の記事 2018-11-27T17:00:21+09:00 https://crieit.net/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E6%95%99%E8%82%B2/feed tag:crieit.net,2005:PublicArticle/14612 2018-11-27T17:00:21+09:00 2018-11-27T17:00:21+09:00 https://crieit.net/posts/658967b6f9adc8c3bd4b32225b6d378c 我々は、常に万物から学び続けなければいけない(自戒をこめて) <h1 id="至極当然の事を言うけれど"><a href="#%E8%87%B3%E6%A5%B5%E5%BD%93%E7%84%B6%E3%81%AE%E4%BA%8B%E3%82%92%E8%A8%80%E3%81%86%E3%81%91%E3%82%8C%E3%81%A9">至極当然の事を言うけれど</a></h1> <p>私達は、万物から常に学び続ければいけない。<br /> そう思った。</p> <h1 id="こんな話もある"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E8%A9%B1%E3%82%82%E3%81%82%E3%82%8B">こんな話もある</a></h1> <h2 id="10年経っても色褪せることは無いだろう記事"><a href="#10%E5%B9%B4%E7%B5%8C%E3%81%A3%E3%81%A6%E3%82%82%E8%89%B2%E8%A4%AA%E3%81%9B%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E7%84%A1%E3%81%84%E3%81%A0%E3%82%8D%E3%81%86%E8%A8%98%E4%BA%8B">10年経っても色褪せることは無いだろう記事</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="http://www.geekpage.jp/blog/?id=2008/1/29">人生の全てはTCP/IPに学んだ:Geekなぺーじ</a></li> </ul> <h2 id="たまたまQiitaのタイムラインを眺めてたら見かけた"><a href="#%E3%81%9F%E3%81%BE%E3%81%9F%E3%81%BEQiita%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%E7%9C%BA%E3%82%81%E3%81%A6%E3%81%9F%E3%82%89%E8%A6%8B%E3%81%8B%E3%81%91%E3%81%9F">たまたまQiitaのタイムラインを眺めてたら見かけた</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/techpoem/items/b2e670114216384e7a50">年をとって考えるのをやめるエンジニア - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/wakaba_bbq/items/2cc790639eacf28b8da4#comment-d2ccabc10f3f06429bb5">田舎のエンジニア事情 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/timtam95/items/ee0c24ed03001e16258f">プログラミングについて語るときに僕の語ること - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/techpoem/items/ac732ae8a0ac44190df1">子供たちへのプログラミング教育のこと - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/tomotomospot/items/4f35d7afb3698d7ce96a">プログラミングを子供に教えていて感じたちょっとした時代ギャップ - Qiita</a></li> </ul> <hr /> <p>後は「情熱プログラマー/Chad Fowler」や「ハッカーと画家/Paul Graham」とか、それと「ライフロング・キンダーガーテン/ミッチェル・レズニック他」読めば、この記事は <strong>TL;DR</strong> だ。</p> <h1 id="TL;DR"><a href="#TL%3BDR">TL;DR</a></h1> <p>おや? 書いてあることは大体察しがつくだろうに、読むのかね。そうか。</p> <h2 id="若い(幼い)と吸収は爆速"><a href="#%E8%8B%A5%E3%81%84%EF%BC%88%E5%B9%BC%E3%81%84%EF%BC%89%E3%81%A8%E5%90%B8%E5%8F%8E%E3%81%AF%E7%88%86%E9%80%9F">若い(幼い)と吸収は爆速</a></h2> <p>悲しいことかもしれないが、これはおそらく事実だ。<br /> 若いとなんでも吸収できる。大人が褒めてくれることでも咎めることでも、その子にとって楽しければなおさらだ。</p> <p>なので27歳の僕なんかは、純粋に物事を楽しめなくなってしまったので、学ぶ対象への興味がなかったら、本当に何も学ぶことができない。</p> <h2 id="歳を取ると「おきかえ」ができる"><a href="#%E6%AD%B3%E3%82%92%E5%8F%96%E3%82%8B%E3%81%A8%E3%80%8C%E3%81%8A%E3%81%8D%E3%81%8B%E3%81%88%E3%80%8D%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B">歳を取ると「おきかえ」ができる</a></h2> <p>だからといって絶望することはない。大人は大人の強みがある。</p> <p>「おきかえ」「たとえ」<br /> こういったものが頭の中で容易にできる(やりにくい人もいるが、それは個性だ。そういう人は確実に学ぶ対象の事をはっきりと理解できるだろう)</p> <p>「人生の全てはTCP/IPに学んだ」はまさにそういう話ではなかろうか。<br /> 「人とのコミュニケーションはTCP/IPそっくりだ。むしろTCP/IPが人とのコミュニケーションを参考に作ったのでは」<br /> そんな発想から来たからこそ、あの記事が書けたのではと、私は勝手に思う。</p> <h2 id="だからなんやねん"><a href="#%E3%81%A0%E3%81%8B%E3%82%89%E3%81%AA%E3%82%93%E3%82%84%E3%81%AD%E3%82%93">だからなんやねん</a></h2> <p>学ぶことを、諦めては行けない。<br /> 学ぶことを、止めては行けない。<br /> 学ぶことは、楽しければなお良い。</p> <p>学ぶことで知識の広がりと、共通の概念がおぼろげに見えてくる。<br /> (特にコンピューターサイエンスの世界はそうかもしれない)</p> <p>知識・教養はその人の個性にもなりうる。<br /> どうせならその知識や教養で自分という人間の振る舞いを学び、変え、彩っていってはどうだろうか。</p> <h2 id="ジェネレーションギャップも飛び越えられる"><a href="#%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%AE%E3%83%A3%E3%83%83%E3%83%97%E3%82%82%E9%A3%9B%E3%81%B3%E8%B6%8A%E3%81%88%E3%82%89%E3%82%8C%E3%82%8B">ジェネレーションギャップも飛び越えられる</a></h2> <p>深くて広い知識と教養を得れば、若い人の考えにもついていけるはずだ。<br /> しかし気をつけなければいけないのは、<br /> 「過去に学んだ事に執着しすぎること」<br /> だろうか。</p> <p>クラスありきのオブジェクト指向でカチカチになった頭で、リアクティブプログラミングを学ぶのは難しいと、私は思う。</p> <p>固い頭は、理解を妨げる。<br /> 固い頭は、ものを尋ねられなくなる。<br /> 固い頭は、恥を忍べなくなる。</p> <p>と思う。</p> <hr /> <p>そんなことを、自戒をこめて書いてみただけ。</p> まんじゅ(´ん`) tag:crieit.net,2005:PublicArticle/14605 2018-11-19T11:24:02+09:00 2018-11-19T11:53:02+09:00 https://crieit.net/posts/Python-Python プログラミングは初めて? じゃあPythonからやりましょう -Pythonと鉛筆画の共通点- <h1 id="ご注意"><a href="#%E3%81%94%E6%B3%A8%E6%84%8F">ご注意</a></h1> <p>この記事の筆者は高校生の頃(執筆時点で10年前?)にUbuntuとPythonに初めて触れて、それ以降使い続けております。かなりバイアスかかってますよ?</p> <h1 id="プロローグ"><a href="#%E3%83%97%E3%83%AD%E3%83%AD%E3%83%BC%E3%82%B0">プロローグ</a></h1> <p>新しいパラダイムを学ぶときは、苦労します。<br /> 私自身、去年Haskellに手を出してはその理解に苦しみましたし、未だに使いこなせる気がしません。<br /> その前にRustをやりましたが、全くできません。</p> <p>極端な事を言えば、仕事はGoを使っていますが全くできませんし、Nimも興味があるだけ。<br /> 更に言うと、VB.netやC#も大分忘れましたし、Javaは冗長すぎて読む気が失せてしまう程です。<br /> JavaScript, PHP, Smalltalk, Scheme, 仕事であるなし関係なく、色々な言語を触りましたが、どれもいまいちです。</p> <p>しかし、Pythonは書いたり読んだりする気力が起きます。<br /> なぜでしょう?</p> <h1 id="素描"><a href="#%E7%B4%A0%E6%8F%8F">素描</a></h1> <p>「ハッカーと画家」で「プログラミングはスケッチみたいなものだ」<br /> というワードがあった気がします。</p> <p>久々にPythonでコードを書いて、<br /> 「確かにこれは似ている」<br /> と思いました。</p> <p>ましてやPython3になり、typingモジュールが導入されてから、その気持ちは顕著になった気がします。</p> <p>まるで4Bの鉛筆でクロッキーを描いている感覚なのです。<br /> 頭の中のものを書き出すのが容易なのです。</p> <p>道具を持ち替えることもなく、色の表現に制限があるものの、紙にひたすら自分の表現を塗っていくように。<br /> Pythonという言語で、実行速度や、他の言語と比べると制限されることはあるものの、テキストエディタの画面にひたすら自分のコードを打っていく。</p> <h1 id="ディティール"><a href="#%E3%83%87%E3%82%A3%E3%83%86%E3%82%A3%E3%83%BC%E3%83%AB">ディティール</a></h1> <p>私は輪郭のはっきりしないイラストを描きがちではあります。<br /> Pythonだって、ましてや初学者のうちは特にそうかもしれません。</p> <p>オブジェクト指向なんて存在は知らず、ひたすらコンピューターにさせたいことを書き連ねる。<br /> 条件分岐や反復処理がわかると、早速使い、<br /> ちょっとデータの扱い方のコツがわかったところで、リスト型や辞書型を使う。<br /> ここでリスト形式のデータを効率よく扱いたくなるので、関数化・メソッド化を知るかもしれません。<br /> 更に分かってくると、クラスを使い始めます。</p> <p>そんな頃に自分の目に入ったのは「内包表記」。<br /> これは最初は難解でした。でも後から考えると、一つの「関数型パラダイム」なのかもしれません。</p> <p>そしてその後Pythonの型管理で悶々としていた頃に、タイプ・ヒンティングが導入されました。</p> <p>これを絵画で例えると、<br /> おそらくシルエットを力強いタッチで描いていきます。<br /> しかし、鉛筆は力を抜いて紙にこすりつけると、薄い色が表現できるではありませんか。そうして影を表現します。<br /> そして奥行きをつけるために、塗る方向を光の入る方向に対して変えてみたり、<br /> そこから更に影を力強くつけてディティールをはっきりさせてゆく。</p> <p>自分はそんな具合で絵を覚えた気がします。</p> <h1 id="今日の動的型付け言語のマルチパラダイムの良さ"><a href="#%E4%BB%8A%E6%97%A5%E3%81%AE%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91%E8%A8%80%E8%AA%9E%E3%81%AE%E3%83%9E%E3%83%AB%E3%83%81%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%81%AE%E8%89%AF%E3%81%95">今日の動的型付け言語のマルチパラダイムの良さ</a></h1> <p>実のところを言うと、この様な学習体験はRuby, Julia, Perl, Lua, Javascriptでも行えると思います。<br /> ましてやPythonはC言語ライクではありません。</p> <p>おそらく今日の動的型付け言語であれば、強力な型推論や関数型パラダイム・オブジェクト指向を取り込んで、簡素なコードが書けます。</p> <p>とはいえ、初めから関数型パラダイムやオブジェクト指向を学ぶのは少々難しいです。<br /> 抽象化された概念を認識することがまだ難しい方にはなおさらだと思います。</p> <p>ですので、もしこの記事を見ている「プログラミングに興味を持っている方」は、まずは <strong>スクリプト言語</strong> と言われるジャンルの言語から取り組むことをおすすめします。</p> <p>そして、知識や体験を蓄積し、更に速い計算処理を求めるのならば、C, C++, Rust, Go, Nim, Haskell, OCaml, Java, Kotlin etc... などの言語に取り組んでも遅くはないでしょう。</p> <h1 id="それでもなぜPythonが良いのか"><a href="#%E3%81%9D%E3%82%8C%E3%81%A7%E3%82%82%E3%81%AA%E3%81%9CPython%E3%81%8C%E8%89%AF%E3%81%84%E3%81%AE%E3%81%8B">それでもなぜPythonが良いのか</a></h1> <p>Pythonはテキトーなコード(良く言われる「汚いコード」「異臭のするコード」)は書きにくくなるように、<br /> 言語設計レベルが作られています。</p> <p>自然と、読む際の情報量が制限されるわけです。</p> <p>コードは書く時間よりも、読む時間のほうが長いことが多いです(自分自身が書いたコードも含めて)<br /> その際に、視界に入ってくる情報量が少ないほうが、処理や計算方法に集中できると思います。</p> <p>乱暴な言い方ですが、鉛筆画もそうです。<br /> モノクロだからこそ見せたいものに集中できる。私はそう思います。</p> <p>Pythonは、それが容易な言語です。</p> <h1 id="Pythonは鉛筆に近い言語"><a href="#Python%E3%81%AF%E9%89%9B%E7%AD%86%E3%81%AB%E8%BF%91%E3%81%84%E8%A8%80%E8%AA%9E">Pythonは鉛筆に近い言語</a></h1> <p><em>適度な自由度と制約</em></p> <p>鉛筆画とPythonによるプログラミングの共通点は、そういうところではないかと私は感じました。</p> <p>シンプルではあるものの、その表現力は高い。しかし、いくらかの制約はある。</p> <p>だからこそ、Pythonは初めてのプログラミングには最適な言語かもしれない。と思うのです。</p> <hr /> <p>多分5年後〜10年後も、私に、<br /> 「プログラミングを教えて」<br /> と尋ねる人がいるなら、きっと私はこう言います。<br /> 「プログラミングは初めて? じゃあPythonからやりましょう」<br /> ってね。</p> <h1 id="追記"><a href="#%E8%BF%BD%E8%A8%98">追記</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://postd.cc/why-is-python-so-slow/">なぜPythonはこんなにも遅いのか? | POSTD</a><br /> この記事ではPythonに対する誤解を解きつつも、Pythonの実行(演算)速度の遅さに対するいくつかの提案をしています。</p> まんじゅ(´ん`)