あなたはなぜプログラミングやITが理解できないのか
そもそも最初から理解する必要などありません
プログラミングもITも、「使うための道具」であって、必ずしも原理を理解する必要はない
どうしても理解したい人向けの情報
コンピューターサイエンス(計算機科学)という学問があるのでそれを学ぶと理解できる
大学の学部レベル(4年間かけて学ぶこと)です
計算機科学で使われる教科書
計算機プログラムの構造と解釈
コンピュータの構成と設計
コンピュータシステムの理論と実装
一応言っていくと、これらの本は既にプログラミングできる上級者がより良くプログラミングできるようになるための本であって、これらを読んだところで、初心者がプログラミングできるようにはならないと思いますyuiseki.icon
以下のような初心者向けの書籍もあるけど、読んだところで絶対にプログラミングできるようにはならないと保証します
コンピュータはなぜ動くのか
プログラムはなぜ動くのか
ネットワークはなぜつながるのか
「細かい原理など理解しなくても使える、作れるようになっている」これは事実です
例えば自転車
車輪が回転するのはペダルが歯車とチェーンで力を車輪に伝えているから
倒れずに走れるのは慣性のおかげ
ほとんどの人はそんなことを理解し意識しながら乗っていない
自転車に乗れない人に、たとえ「慣性があるから倒れないから大丈夫だよ」と言っても乗れるようにはならない
練習するしかない
日常的な空間の利用と料理とプログラミングを、以下のように比較してみてください
空間の利用
建築士が設計して建てた建物を基礎とする
家具や家電などを買ってきて置いてカスタマイズする
家具や家電の使い心地が悪かったらちょっと自分なりに設定を変えたりアレンジしたりする
建築士が設計した建物がどうしても気に食わなかったらリフォームする
いきなり建物を設計したり家電や家具を自分で作ろうとするのはアタオカ
理解したり知る必要すらない
あなたは自分の住んでいる建物の構造計算を知っていますか?
あなたは自分の使っている家具の耐荷重設計を知っていますか?
そんなこと知らなくても部屋に住んで家具を配置して生活できる
料理
包丁、まないた、フライパン、鍋、ザル、ボウル、菜箸など調理器具を揃える
本やネットに載っているレシピを基礎とする
スーパーで調味料や食材を買ってくる
ほんだし(だしの素)やコンソメや味覇を使う
レシピどおりの味が気に食わなかったら、調味料などを加えてちょっとアレンジする
いきなりレシピや食材や調味料を自分で作ろうとするのはアタオカ
理解したり知る必要すらない
あなたは醤油やみりんやコンソメの製造工程を知っていますか?
https://www.soysauce.or.jp/knowledge/process
約6~8ヶ月
長い長い一日と、金のコンソメ。2015.9.17 スープラボ・レポート
約13時間
あなたは牛の育て方や屠殺して食肉に加工する工程を知っていますか?
そもそもキッチンにシンクとコンロが近くに並んでいる、コンロの上には換気扇がある、建物の設計がなぜそうなっているのか、システムキッチンが生まれた歴史的経緯を知っていますか?
https://ja.wikipedia.org/wiki/台所
そんなこと知らなくても道具と材料を揃えてレシピの手順どおりやったら料理ができる
使っている道具や材料の起源や原理をすべて調べていたら一生料理はできあがらない
順番が逆
レシピどおり作れるようになってからアレンジしたり自分なりのレシピを作る
メチャクチャこだわるならいずれ自分で出汁を取るようになるかもしれない
ド素人がいきなり市販のだしの素よりも良い出汁を取れると思うのは傲慢
プログラミング
CPUやOSやプログラミング言語やアプリケーションフレームワークを基礎とする
ライブラリやAPIなどを組み合わせてカスタマイズする
ライブラリやAPIの使い心地が悪かったらForkしたり修正Pull Requestを送ったりする
フレームワークがどうしても気に食わなかったら……いや、それはやめておいたほうがいい
オレオレフレームワーク
計算機科学を熟知した人が作ったものよりも良いものには成り得ない
いきなりCPUやOSやプログラミング言語やフレームワークやライブラリやAPIを自分で作ろうとするのはアタオカ
理解したり知る必要すらない
そんなこと知らなくてもプログラミング言語とフレームワークとライブラリやAPIを組み合わせてアプリケーションを作れる
ところでなんで空間のビジネスより計算機のビジネスのほうが夢があるのか
空間の性能は増えない
空間は勝手に膨らんだりしない
モノや人間のサイズは変わらない
一定の空間に収められる人間とモノの量は変わらない
空間の費用対効果は変わらない
計算機の性能は増え続ける
デナード則およびムーアの法則によって「同じ体積・同じ電力で可能な計算は線形に増え続ける」
すなわち
一度プログラムを書いたら
自分が何もしなくてもそれはどんどん高効率的に動くようになり
計算機で動くソフトウェアの費用対効果はどんどん増していく
あなたはなぜプログラミングできるようにならないのか
そもそもあなたは本当に計算機を使いたいんですか?計算機を使って解けるかつ解きたい課題や問題を持っていますか?
もしそれがないのなら
いま住んでる部屋で広さは十分なのにさらに別の部屋を借りようとしている状態
もっとモノをたくさん持ったり、同居人が増えたりしないと部屋を広くする意味はない
もっと計算機を使いまくるような発想に切り替えないといけない
PCだけ残してスマホを捨てるのが一番オススメです、スマホはカスyuiseki.icon
CPUやOSやプログラミング言語やフレームワークは、建築士が設計した建物です
それはもうそういうものとして、それをどう使いこなすか
Windows, macOS, Android, iOSなどは絶対にリフォーム不可能な部屋みたいなもん
しかも使える家具(ライブラリ)もブランドが限定されていたりする感じ
その部屋でどうにかしてうまく住む方法を考えたほうがいい
ライブラリやAPIを、日々家具や家電のように生活に取り込んで使い込んで自分なりにアレンジしないと手になじまない
スマホは、ライブラリやAPIを組み合わせたプログラミングができないカスのような計算機モドキなので、捨てましょう(二回目)yuiseki.icon
自分が作ったプログラムを毎日使うくらいじゃないとプログラミングできるようにならない
毎日発言するSlack botとかLINE botを作ってみるのが比較的オススメ
あるいは
Twitterの気になる人の画像を毎日ダウンロードする
YouTubeの気になる人の動画を毎日ダウンロードする
Instagramの気になる人の画像を毎日ダウンロードする
面白いゲームを思いついたのでそれを作る
みたいなプログラミングをして
毎日実際に使ってみてバグったらメンテナンスする
結局これしかない