記事一覧
プログラミングの独学は天才にしかできない?それは本当なのか?
575, 2022-10-25
所長:はい今回はプログラミングの独学は天才にしかできないのかってところをちょっと考えてみたいと思いますが
所長:天才の定義によるということですね
所長:独学ができた人を結果として天才と呼ぶならそうであると言えるかもしれませんね
所長:だから凡人にもプログラミングの独学は可能であると
所長:ブラックボックス化された独学方法とは何かで独学の敵とは才能がないという出口
所長:凡人が心がけるべきことは
所長:プログラミング世界の天才たちを紹介しておりたいと思いますが
所長:天才の定義はってことですね
所長:プログラミングの独学ができる人を天才と呼ぶのか
所長:そうすると独学ができない人は皆凡人かってことですね
所長:プログラミングの独学が結果としてできた人をさしてそれを天才と呼ぶ場合ですね
所長:その場合はまあ彼らは確かに天才と言えるのかもしれません
所長:まあそうすると独学ができない人は皆凡人になってしまうのかってところですね
所長:プログラミングの独学一人でできて
所長:まあできない人とできる人がいてできる人を天才できない人を凡人と呼ぶという
所長:まあこの分類ですね
所長:まあこれを天才の定義によればまあ確かに独学ができる人は天才と呼んでもいいかもしれませんね
所長:独学ができた人を結果として天才と呼ぶならまあそうであると言えるということですね
所長:まあ独学できる人が天才でできない人は凡人だということですね
所長:だから凡人にもプログラミングの独学が可能であると言えると私は思いますね
所長:なぜ凡人にもプログラミングの独学が可能なのかってところですが凡人の多くは独学の方法を知らないんですね
所長:で独学の方法がブラックボックスかつまり見えなくなってるということですね
所長:あのブラックボックス見えなくなってるということですね
所長:でブラックボックスを解き明かせば凡人も武器を手に入れることができるということですね
所長:まあ凡人はですねなぜその独学で挫折してしまうのかって言いますと
所長:まあ独学の方法を知らないまああるいは知ってても挫折してしまう人もいるかなと思いますがまあそういう人は仕方ないんですが
所長:まあほどんどの人は独学の方法をよく把握してないんですね
所長:なのでまあ
所長:それで独学がちょっと難しく感じてしまってですねうまくいかないということですね
所長:まあ独学の方法があんまり広く知られていないので
所長:まあ自分でそれ調べるわけなんですがそれ調べてもですねよくわかんないと
所長:よくわかんないままで独学をすると自分流で独学してくんですが
所長:まあ自分流で独学してもですね
所長:まあ
所長:あんまりうまくいかないということですね
所長:まあこのブラックボックスになっている独学の方法を解き明かしていけば凡人も
所長:その独学に関して武器を手に入れることができるとでまあ
所長:その武器がない状態で戦ってるようなものなんですね
所長:なので知識っていうのは武器になるんですがその武器がない状態でプログラミングの独学という戦いに明け暮れても
所長:あんまり効率は良くないということですね
所長:なので武器を知ってるか知ってないかっていうのが大きな違いであるということですね
所長:ブラックボックス化された独学方法とは何かってとこですが独学の方法はいたってシンプルで
所長:それは3つの方法で行うと
所長:独学の3つの方法とは何かって言いますと
所長:情報収集、反復学習、質問ですね
所長:まあこの3つのサイクルを繰り返すことで独学すると
所長:情報収集についてですね
所長:独学に関する情報収集する工程ですね
所長:例えば
所長:google
所長:検索を使った情報収集(教材等)の収集ですね
所長:あるいは
所長:youtube
所長:を使った情報(教材等)の収集ということですね
所長:この独学に関する情報収集するっていうのが結構大事な工程でしてね
所長:例えば教材を集める時も無料でやりたい場合は無料の教材を集めるわけなんですが
所長:そうしますと
所長:google
所長:検索あるいは
所長:youtube
所長:検索を活用して教材を集める必要があるということですね
所長:でまあその
所長:google
所長:検索使った教材の収集とはまあ例えば簡単なんですが例えば
所長:google
所長:検索にですね
所長:Python入門とか入力するとで検索ボタンを押すということですね
所長:そうしますとPython入門に関する関連する記事が検索結果に出てきますので
所長:その記事を見てまあ独学するということですね
所長:まあそういった無料の記事を自分でストックしておいて独学に役立てると
所長:youtube
所長:使った情報収集の場合も同じでしてね
所長:検索バーにPython入門を打ち込めばPythonまあプログラミング言語のPythonですが
所長:それに関する動画が出てくるということですね
所長:こういう感じで情報収集していくということですね
所長:まああるいは公式ドキュメントとか参照したい場合は
所長:google
所長:検索ならPython
所長:docとかで検索すると公式ドキュメントが出てきますね
所長:まあこういう感じであとはyoutube
所長:だったら入門の他にはチュートリアルっていうワードも結構ヒットしますね
所長:まあこれで検索するという感じですね
所長:はい
所長:まあこういう感じで情報収集していくというのが大事だとあと反復学習ですね
所長:教材を使って反復学習をする工程で定期的に反復することで脳と体に覚えさせると
所長:凡人はこの反復学習が武器になるということですね
所長:独学が筋トレに近い性質を持っているどれぐらい反復すればいいかってところですね
所長:まあ教材を使って反復学習をする工程先ほど調べたまあ教材を使ってですね
所長:その教材の内容何度も何度も繰り返し反復して学習するということですね
所長:でこういった定期的な1日2日とか1時間置きとかでもいいですがそういった定期的な反復をすることで脳と体に
所長:まあ覚え込ませるということですね学習したこと
所長:脳と体に覚え込ませるっていうのが非常に大事でこの
所長:覚え込ませるのはですね反復することでしかできないということですねこれ天才になるとですね
所長:少ない反復回数で覚えさせることができるんですが凡人はですね
所長:凡人は少ない回数じゃなくて結構多い回数で
所長:反復して覚えさせなきゃいけないということですね
所長:で凡人はこの反復学習が武器になるということですがまあ
所長:いいかいれば凡人は反復学習ができれば凡人でも学習ができる可能になるということですね
所長:なのでこの反復学習ができるかできないかっていうのが
所長:大きな分かれ道になるということですね
所長:どれだけ反復して学習学べるかモチベーション保って
所長:反復学習してるかあるいはモチベーションがなくなってもモチベーションがまた復活したら反復できるかって
所長:ところですね
所長:私はC言語を学んだ時は2回ぐらい挫折してるんですが1回目の挫折で確か3か月ぐらい間が開きましたよね間が開いて
所長:3か月後にまた反復してやり直したんですが
所長:まあそういうのを結構繰り返してですね学習した記憶がありますね
所長:独学はまあ筋トレイ近い性質を持つってことはそういうことですねまあ筋トレイみたいなもんなんですね
所長:独学っていうのは最初筋肉が全くない状態でガリガリなんですがだんだん反復してですね
所長:タスクをこなしていくとだんだん筋肉がついてきてそれでマッチョになっていくと
所長:いうことを言えるとの思いますね
所長:どれぐらい反復すればいいかってところですが
所長:まあ何か新しいことを覚えようとする場合はですね
所長:7回から10回ぐらいは反復した方がいいかもしれませんね
所長:7回から10回
所長:まあそうですねそれぐらいは反復した方がいいと思いますね例えばコードを書くにも
所長:まあそれぐらいコードを何度も書いて体と脳に覚え込ませるとかですね
所長:手癖にするぐらいまで書いてもいいと思いますね
所長:それぐらい反復しちゃっても全然問題ないと反復したことによる平和っていうのは
所長:多分ないと思いますがまあ反復できるなら反復やるやれるだけやってもいいということですね
所長:はい
所長:で質問ですが質問をすると学習でわからなかったことを質問サイトで質問する工程ですね
所長:で質問は低姿勢で丁寧に行うということですね
所長:まあ変な回答者に出会っても無視するのが吉であると
所長:学習でわからなかったこと質問サイトで質問するんですね例えばエラーがエラーやバグが解けなかったらですね
所長:自分で考えても解けなかったら質問サイトでこれわかんないんですって質問するということですね
所長:まあその時は質問は低姿勢で行って変な回答者に出会ったら無視すると
所長:いうのが吉かなと思いますねまあ質問するということですね
所長:この
所長:情報収集、反復学習、質問の独学の工程を繰り返しを行うようにすると
所長:このサイクルを回して独学していくという感じですね
所長:これはプログラミングに限らず学校の勉強などでも使えると思います
所長:結構普遍的な方法ですね
所長:独学の敵とは何なのかって言いますとエラーバグが解決できないことへのストレスですね
所長:あと他人との比較も敵ですねエラーバグが解決できないことのストレス
所長:エラーバグ最初初心者の方はですねスキルがないので解決できないことが多いと
所長:エラーバグって解決できると達成感あるんですが解決できないとストレスだけになっちゃうんですね
所長:そうしたストレスでモチベーションが下がってしまうということがあると思いますが
所長:これはですね初心者の方は最初はこれ解決できないのは普通のことなので気にする必要はないですね
所長:解決できなくても普通だと思う考えていただいてOKだと思います
所長:もちろん解決できないからといって解決できることを諦めるというわけじゃなくて
所長:そのエラーバグを解決する姿勢は常に持ち続けなきゃいけないということですね
所長:そういったトライアンドエラーを繰り返すことでだんだんとスキルが溜まっていってですね
所長:エラーバグもそのうち解決できるようになるということですね
所長:あと他人との比較ですが例えばSNSとかで他に学習している人がいると思いますが
所長:そういう人たちがですね自分より先に進んでしまうとまあそれがストレスになるということですね
所長:他人との比較っていうのはですね結構ストレスになりますのでこの辺は注意したいところですね
所長:あまり他人と比較するのは意味がないのでまあ自分のペースで自分の
所長:その真直に合わせてやっていくというのが大事だということですね
所長:あと才能がないという出口ですが自分には才能がないというのは最終出口であると
所長:何かを辞める時の最強カードがこれであるということですね
所長:本当に独学が辛くなった時だけ使おうということですね
所長:マゾになって学習しようと
所長:まあ自分には才能がないというのはですねこれは本当に最強カードでこれ使っちゃうとですね
所長:何でも辞めることができるということですね
所長:まあこれ自分には才能がないって言ってですね辞めるっていうのはもうその
所長:物事と自分を決別したい時に使うカードがこれですね
所長:なのでこれ使うのは別に悪くないんですがまあ使うタイミングですね
所長:まあちょっともうちょっと頑張ってみようかなって思えるうちはですねこれは使わない方がいいかなと思いますね
所長:まあカードとして取っておくということですね
所長:で凡人が心がけるべきことはですねとにかく反復することですね
所長:時間を置いてもいいから反復することエラーバグが解けなくても気にしないことですね
所長:まあ凡人ができることといえばやはりあの具直にですね反復することなんですね
所長:これが凡人の武器であるということなんですがまあそういった時間を置いてもいいので反復を繰り返すということですね
所長:それが大事だということですねまあエラーバグが解けなくてもですね最初のうちは気にしないでおこうと
所長:まあでも解決する一種は持ち続けようということですね
所長:まあこの反復すること自体をあのあれですね天才だと表現する場合もあると思います例えば反復できる人は天才だと表現することもありますが
所長:まあそうなってしまうとですねそれは確かに天才の所業かと思いますので
所長:まあそこらへんは天才の定義によるんですがそこらへんは定義によっては仕方ないところもあるかもあるかもしれませんね
所長:プログラミング世界の天才たちを最後に紹介したいと思いますが
所長:ケントンプソンですね
所長:UNIX,
所長:Go言語の開発などで知られると
所長:でリナストーバルズLinux,
所長:Gitの開発で知られると
所長:でリチャード・M・ストールマン
所長:ハッカー文化の旗手で
所長:GNUプロジェクトで知られるということですね
所長:はい
所長:でまあここに紹介した天才たちは本当に本当の天才で
所長:天才の中でも天才の部類ですねこの人たちはねなのでまあこの人たちはかなり
所長:偉人に属する天才たちなんですが
所長:まあプログラミング世界ではこういうとんでもない天才たちが存在するということですね
所長:まあ確かにこれらの方たちとまあ比べるとですね自分は凡人じゃないかなってね
所長:ほとんどの人は凡人になるかと思いますが
所長:まあ要は比較対象ですね何を比較するかってことですが比較対象によっては自分は
所長:凡人になってしまうということですね
所長:で比較対象にあったら自分は天才にもなれるということですね
所長:まあその辺は何と比較するかっていうのは大事なところかなと思いますはい
所長:今回はプログラミングの独額が天才にしかできないのかってところですが結論としましては
所長:凡人でもプログラミングの独額が可能であると
所長:ただし天才の定義によっては天才にしかできないことは確かであるということですね
所長:今回以上になりましたご視聴ありがとうございました
プログラミングの抽象化、その方法を語る
574, 2022-10-24
所長:はい、今回はプログラミングの抽象化とは何なのかってところをちょっと解説したいと思いますが
所長:プログラミングの抽象化とは詳細なコードを抽象的なコードにすることですね
所長:でまあ具体的な内容を抽象的に扱うことということですね
所長:で、一連の処理に名前をつけることも抽象化の一つですね
所長:で、抽象化によって何がもとらされるか
所長:でいうところなんですが、生産性の向上ですね
所長:それからメンテナンス性の向上がもとらされるということですね
所長:抽象化を行うとですね、詳細なコードを抽象的なコードにするってことなので
所長:この具体的な内容を抽象的にするってことですね
所長:詳細なコードってのは例えば数値計算のコードとかですね
所長:何行にもわたって書かれている数値計算のコードを一行の関数にまとめるとか
所長:そういうのが抽象化の一つですね
所長:こういった抽象化を行うとですね
所長:まあそういった何行も書かれているコードを一行にまとめるってことなので
所長:それによって生産性が向上するということですね
所長:でまあそれと同時にですね
所長:そういった雑談なコードが抽象的にまとめられるので
所長:メンテナンス性も向上するということですね
所長:抽象化の注意事項としては抽象化失敗することがあるということですね
所長:抽象化はですねまあ何でもかんでも抽象化しようって思って抽象化することがあるんですが
所長:そうすると応援して失敗することがよくあります
所長:これ理由はですね色々あるんですが
所長:抽象化を行う際はですね
所長:抽象化は失敗することがあるということを覚えておいた方がいいかもしれませんね
所長:抽象化に失敗すると何が起こるかって言いますと
所長:生産性の低下それからコードの複雑性の増加ですね
所長:生産性の低下はですね
所長:抽象的なコードを具体的なコードを抽象的にするっていう抽象化を行うわけなんですが
所長:それは失敗しますとね変に抽象化されちゃうんですね
所長:具体的なコードが変に抽象化されて
所長:まあ取り扱いが結構面倒くさくなったりもするということですね
所長:抽象的にすることで
所長:まあそういった抽象化はまあ抽象化に失敗している例なんですが
所長:そういった失敗をするとですね生産性を逆に抽象化で上がるはずだった生産性が逆に低下してしまうということですね
所長:それからまあそのコードの複雑性の増加ですね
所長:抽象化に失敗しているコードっていうのはですね
所長:普通は抽象化を行うとコードがシンプルになるんですが
所長:まあ失敗するとですね逆にコードが複雑になってしまうということですね
所長:なのでまあ抽象化の失敗っていうのは結構よくあることなんですが
所長:まあ失敗するとこういったデメリットがあるということですね
所長:抽象化に失敗しないコツはどういうものかって言いますと
所長:まあ抽象化を行う前にコードをよく観察することですね
所長:それから抽象化できそうなコードが見つかるまで無理に抽象化しないこと
所長:あと抽象化の方針を立てることですね
所長:抽象化を行う前にテストを書くことということですね
所長:まあ抽象化を行う前にコードをよく観察することというのはですね
所長:まあその抽象化をやるぞって最初から生き込んでですね
所長:何でもコードを書く前にコードを書きながら片端に抽象化するっていうのは
所長:あんまり私は経験速としてあんまりいい結果が出たことがないんですね
所長:なのでまあ抽象化を行う朝は一回抽象化のことは無視してコードを書いてですね
所長:でそれからそのベタ書きしたコードを見ながら
所長:コードをよく観察して抽象化できそうなところを探すというのが
所長:まあ結構抽象化が成功するパターンとしては結構よくあるパターンかなと思いますね
所長:でまあ抽象化できそうなコードが見つかるまで無理に抽象化しないことですね
所長:抽象化しようとするとですね
所長:何でもかんでも抽象化すれば生産性上がるから
所長:何でもかんでも抽象化しちまえって感じで抽象化しようとするんですが
所長:それはですねあの抽象化できそうじゃないコードは無理やに抽象化するっていうのは
所長:あんまりいい方針じゃないですね
所長:まあ抽象化できそうなコードっていうのは観察してればですね抽象化できそうだなぁっていうのがだんだん見えてくるんですね
所長:でそういった抽象化できそうだなっていうのが見えてくるまでは無理に抽象化しない方がいいということですね
所長:この無理に抽象化するっていうのは結構コストがリスクがあることで
所長:無理にコード抽象化しなくてもいいコードを無理に抽象化してしまうと
所長:それは結構複雑性を持ってですね抽象化に失敗してしまうということもありますので注意が必要だと
所長:あと抽象化の方針を立てることですね抽象化の方針っていうのはつまりどういった感じで抽象化しようかっていう設計を行うってことですね
所長:抽象化コードを抜き出してそのコードを抽象化するっていう行為はある種設計に似ているところがあります
所長:新しい乾燥を作るとか新しいクラスを作るとかそういった抽象化ですよね
所長:まあそういうのは設計も入ってくるのでまあその方針を立てることですね
所長:あと抽象化を行う前にテストを書くことっていうのはですね抽象化っていうのはリファクタリングの性質も持ってますので
所長:まあコードをですねその振る舞を変えずにですね抽象化してコードを整理するということなので
所長:まあそうしますとですねそのどっかでミスタイプとかが発生してあの出力結果は異なってしまうことがあると
所長:出力結果は異なってしまうとですね困ることになりますので
所長:まあその前に抽象化を行う前にテストを書いて出力結果を検証できるようにしておくというのが大事かなと思いますね
所長:抽象化の思考方法はということですがまあ共通部分を見つけるということですね
所長:で共通部分を抽象的にできないか考えるで編数を観察し各編数に関連性がないか考えると
所長:で関連性のある編数は構造体クラスにまとめることができると
所長:で構造体クラスに編数をまとめると次はメソッドをかけるようになるということですね
所長:まあ共通部分を見つけるっていうのは抽象化の第一段階的なところですね
所長:まあそのコードが散らばってですねそのコードで各部分で共通部分が見つかるという場合ですね
所長:まあ共通化して抽象的にコードを抽象的にするという
所長:特化がになるということですね
所長:でまあ共通部分を抽象的にできないか考えるってのはそういうことですね
所長:編数を観察して各編数に関連性がないか考えるというのは
所長:編数ってのは一見すると関連性がないように見えるんですが編数の頭にですね
所長:名前をつけてみるとその編数はこのカテゴリーの編数なんだなってことがわかるということですね
所長:このカテゴリーですねカテゴリーっていうのが見えてくると抽象化やりやすいんですが
所長:まあ編数があってその編数のカテゴリーを意識してその編数がどのカテゴリーに属しているかってのを
所長:観察するとですね編数を共通化できない共通化できそうな編数が見えてくるということですね
所長:関連性のある編数が構造体クラスにまとめることができるというのはまあそういうことですね
所長:構造体に編数とかクラス編数とかをまとめて構造体とかクラスに編数をまとめて
所長:でそれを共通して取り扱うということですね
所長:構造体クラスに編数をまとめるとメソッタがかけるようになると
所長:編数を共通化しますとその編数に関連するメソッドをですねクラスにかけることができると
所長:いうことなのでそのメソッドによってさらに抽象化レベルが上がって生産性が上がるということですね
所長:今回は以上になりました
所長:抽象化っていうのは結構慣れるまではちょっと難しいところはあるんですが
所長:慣れてしまうとですね結構いろんなものを抽象化できるようになってきますので
所長:慣れるがミヤコ慣れるがミヤコじゃないな
所長:慣れるがホトケでもないな
所長:まあそんな感じですね
所長:今回以上になりますご視聴ありがとうございました
プログラミングの能力を鍛えるには?問題解決能力、設計力、美意識を鍛える方法
573, 2022-10-24
プログラミングの能力を鍛える方法
プログラミングの能力を鍛えるには
問題解決能力はエラーやバグで鍛えよう
設計力は既存のパターンを勉強しよう
美意識は変数名などを意識しよう
の3つが大事です。
エラーやバグは課題だと思って取り組み、設計は既存のパターンを勉強します。
そして美意識は変数名などを意識して磨きましょう。
(省略されました)
プログラミングで使うnumの意味は?実はこれは〇〇なんです
572, 2022-10-20
プログラミングの「num」の意味は?
「num」は「number」の略です。
num ... number
「number」は「数字、番号」という意味があります。
「num」の発音は「ナム」です。
見慣れない単語ですよね、「num」って。
(省略されました)
プログラミングができない!辛い!そんな時は……
571, 2022-10-17
プログラミングができなくて辛い
プログラミングができない! 辛い!
……というみなさん、こんにちは。
筆者も初心者の頃はプログラミングは辛かったです。
なぜプログラミングが辛いのか?
(省略されました)