9行目: | 9行目: | ||
# <u>ブラックボックスの解体</u>:<br>その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。 | # <u>ブラックボックスの解体</u>:<br>その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。 | ||
# <u>砂場の準備</u>:<br>遊びに没頭できるように生活環境とマシン環境を整える。 | # <u>砂場の準備</u>:<br>遊びに没頭できるように生活環境とマシン環境を整える。 | ||
# <u>言語の基礎固め</u>:('''←今ココ''') <br> | # <u>言語の基礎固め</u>:('''←今ココ''') <br>言語の基本機能や言語要素を学び、それらを使った基本的なコードを書きまくって言語の基礎に十分に慣れ親しむ。本屋で立ち読み等も | ||
# <u>よく利用される単語/イディオムの把握</u>:<br>標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。 | # <u>よく利用される単語/イディオムの把握</u>:<br>標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。 | ||
# <u>英文を読みまくるのと同じフェーズ</u>:<br>良いコードを読みまくり写経しまくる。Git等でよく利用される30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。 | # <u>英文を読みまくるのと同じフェーズ</u>:<br>良いコードを読みまくり写経しまくる。Git等でよく利用される30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。 |
2019年5月23日 (木) 13:35時点における版
Java とはスマホアプリから大企業インフラまでをカバーできるとても汎用性が高い言語。経済市場でも非常に高価な言語。開発には200億円もの爆財と、ビル・ジョイを始め天才たちの叡智が詰め込まれている。不動の将来性と安定性を誇る言語で、Google3大言語の1つでもある。
効率的な学び方
効率的なプログラミング言語の習得は、英語の習得と基本的に全く同じプロセスをたどる。できるだけ早く以下のプロセスを進む。
- ブラックボックスの解体:
その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。 - 砂場の準備:
遊びに没頭できるように生活環境とマシン環境を整える。 - 言語の基礎固め:(←今ココ)
言語の基本機能や言語要素を学び、それらを使った基本的なコードを書きまくって言語の基礎に十分に慣れ親しむ。本屋で立ち読み等も - よく利用される単語/イディオムの把握:
標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。 - 英文を読みまくるのと同じフェーズ:
良いコードを読みまくり写経しまくる。Git等でよく利用される30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。 - 言語を本格的に使い始める:
言語機能と標準ライブラリだけを使って小さなアプリを作りまくる。アプリやゲームをたくさん作る。言語機能と標準ライブラリにとことん慣れる。 - 応用分野に足を踏み込む:
Androidアプリの作り方を学び、他ライブラリやフレームワーク、IDEも使い始める。それらを使ってさらにスマホアプリを作りまくる。 - 実務経験で成長を加速させる:
Webサイトと抱き合わせでスマホアプリを作る自営業を始める。最も価値のある経験が得られるのは仕事の現場。ブランドブログも始める。サーブレットもここで学ぶ? - 上級者レベルの門を叩く:
この段階では言語をほとんど自在に使えるようになっている。さらに高みへと進むために、難しいアルゴリズム問題を解きまくる。次第に、その言語の上級者であると実感できるようになる。他の候補者が汗だくになるようなコーディング面接も涼しい顔で受けられるようになる。
基本言語要素
以下の基本言語要素とその使い方に精通すれば、その言語でプログラミングするための基礎が身についたということになる。
基本パッケージ
Javaにはおよそ200以上のパッケージ、3,500以上のクラスが用意されている。英語の2,3万に比べたら少なくて助かる。つまり2年くらいやってればクラスは全て把握できる。
- java.lang パッケージ - 最もよく利用される基本クラスたち
- java.util パッケージ - 便利なユーティリティクラスたち
- java.math パッケージ - 計算など数学を担当するクラスたち
- java.net パッケージ - ネットワーク通信を担当するクラスたち
- java.io パッケージ - データ処理を担当するクラスたち
メモ
旧) 特殊スキル『OC没頭』を早く手に入れる
- 基礎知識をしっかりと固めておく(基礎的な必勝セオリーの蓄積)★ 今ここ
- コマンドやサンプル等を大量暗記・潜在表現力の増幅(応用的な必勝セオリーの蓄積)
- 街を作りまくる・あとは組み合わせることに慣れるだけ・写経も(英語と同じ)
- 人様のためにアプリを作れる状態になる
- 何でもいいからアプリ制作(Web制作)を受注して作りまくる
- フリーランス化
Java概要
Java では、コマンドたちが(クラス設計図から生成されるインスタンスとして)文字通り擬人化されている。彼らはUnixの天才たちによって生み出された小人みたいな存在。よく使うコマンドたちはもちろん、便利なコマンドたちや彼らができる動きをしっかり把握して自分が構築するシステム内でもたくさん働いてもらえるようにする。
つまり、自分の理想を実現するために必要な「優秀な人材」はすべて、Java の中にすでに詰まっている。彼らはずっと PC の中で利用されることを待っている。問題は、自分が彼らのことをキチンと把握し使いこなせるか、ただそれだけ。彼らは喜んでタダ働きしてくれる。素晴らしいレバレッジ。
アプリ開発の指針
- アプリケーションでどうしても必要という場合以外は新機能を追加するな
- システムが何ではないのかを定義することは、何であるのかを定義するのと同じように重要。あらゆるニーズに答える必要はない。むしろ互換性を維持した状態で拡張可能にしておけ
- 1つでも例を挙げて一般化したほうが、全く例を挙げずに一般化するよりもマシ
- 問題が完全に把握できないときは解決策も提供しないのが最善の方法
- 10%の作業で望みの90%の効果が得られるときには、その解法で十分
- 複雑さは可能な限り管理できる単純な大きさに分割せよ
- ポリシーやルールよりも機構(システム構造)を提供せよ。特にユーザインタフェースはクライアント側に任せておけ