編集の要約なし
 
(同じ利用者による、間の261版が非表示)
1行目: 1行目:
'''Java''' とはスマホアプリから大企業インフラまでをカバーできるとても汎用性が高い言語。経済市場でも非常に高価な言語。開発には200億円もの爆財と、ビル・ジョイを始め天才たちの叡智が詰め込まれている。
[[ファイル:java_logo.png|thumb|Java|300px]]


不動の将来性と安定性を誇る言語で、Google3大言語の1つでもある。
'''Java''' とはマシンを知り尽くした [[Bill Joy|ビル・ジョイ]] の主導によって設計開発されたプログラミング言語の最高傑作。様々な特技をもつ大勢のクラスたちと協力しながら1つのアプリを作っていく。<strong>純粋なオブジェクト指向</strong>なのでコードの重複排除/再利用を徹底したり、階層を使って役割を整理整合したりできる。<br>
Oracle所有になったけど、JavaコミュニティやJava制作物群が巨大すぎるのでOracleも変に現状から動かせないレベル。故に、最初に学ぶプログラミング言語としては間違いなく正解だと言える。


==効率的なプログラミング言語の学び方==
ただ、もはや古い。
効率的なプログラミング言語の習得は、英語などの習得と基本的に全く同じプロセスをたどる。'''できるだけ早く以下のプロセスを進める'''。
# ブラックボックス解体のため、その言語の全体像が分かるまで書籍複数やネット記事を調査する
# 「Hello World」を表示(ビルド、実行)できるように基本ツールや環境を整える
# (→) 言語の基礎や'''基本言語要素'''を学び、それを使った実際に利用しそうなコードを書いてそれらに十分精通する
# 標準ライブラリーを学び、コード内に混在する言語機能と区別できるようにする
# 良いコードを熟読し写経しまくる。コードの全ての動きを理解する。よく利用される20%を把握(英文を読みまくるのと同じフェーズ)
# どんな行が出てきても読めて、何をしているか理解できるようになる
# <u>本格的に言語を使い始める</u>
# 言語機能と標準ライブラリーだけを使う小さなアプリを作りまくる。提案されているやつ
# それから、Androidアプリの作り方やフレームワークについて学ぶ。それらを使ってさらにアプリを作りまくる
# Webサイトと抱き合わせでスマホアプリを作る自営業を始める
# 言語をほとんど自在に使えるようになっているので、難しいアルゴリズム問題を解きまくる
# そのプログラミング言語をほぼマスターし卓越した力を持てたと実感できるようになる
# 少し練習すれば、他の候補者が汗だくになるようなコーディング面接も涼しい顔で受けられるようになる


===基本言語要素===
* [[Java基本文法]]
以下の基本言語要素とその使い方に精通すれば、その言語でプログラミングするための基礎が身についたということになる。
* [[Javaメモ]]
* [[画面への出入力]]
* [[標準ライブラリ]]
* [[基本的な計算]]
* [[他ライブラリ]]
* [[変数への格納]]
* [[Favorite]]
* 関数、メソッド、モジュールなどを使ったコードの組織化
* 関数やメソッドの呼び出し
* [[ブール論理の評価]]
* [[条件分岐]](if/else)
* [[ループ]]


==基本パッケージ==
==効率的な学び方==
* [[java.lang パッケージ]] - Javaプログラミング言語を設計するための基本的なクラス群
効率的なプログラミング言語の習得は、英語の習得と基本的に全く同じプロセスをたどる。<strong>できるだけ早く以下のプロセスを進む</strong>。
* [[java.util パッケージ]] - Javaプログラミングのユーティリティクラス群
# <u>ブラックボックスの解体</u>:<br>その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。
 
# <u>砂場の準備</u>:<br>遊びに没頭できるように生活環境とマシン環境を整える。
==特殊スキル『OC没頭』を早く手に入れる==
# <u>言語の基礎固め</u>:(<strong>←今ココ</strong>) <br>言語の基本機能や基本文法を学び、それらを使った基本的なコードやコマンドラインアプリを書きまくって言語の基礎に十分に慣れ親しむ。本屋で立ち読み等も。
#基礎知識をしっかりと固めておく(基礎的な必勝セオリーの蓄積)★ 今ここ
# <u>よく利用される単語/イディオムの把握</u>:<br>標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。OOPを使いこなせるかどうかは、クラスライブラリを使いこなせるかどうか。
#コマンドやサンプル等を大量暗記・潜在表現力の増幅(応用的な必勝セオリーの蓄積)
# <u>英文を読みまくるのと同じフェーズ</u>:<br>良いコードを読みまくり写経しまくる。Git等でよく利用されるコード表現の30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。
#街を作りまくる・あとは組み合わせることに慣れるだけ・写経も(英語と同じ)
# <u>言語を本格的に使い始める</u>:<br>metasploitみたいなCLIアプリを言語機能と標準ライブラリだけで作りまくる。アプリやゲームをたくさん作る。言語機能と標準ライブラリにとことん慣れ親しむ
#人様のためにアプリを作れる状態になる
# <u>応用分野に足を踏み込む</u>:<br>Androidアプリの作り方を学び、他ライブラリやフレームワーク、IDEも使い始める。それらを使ってさらにスマホアプリを作りまくる。
#何でもいいからアプリ制作(Web制作)を受注して作りまくる
# <u>実務経験で成長を加速させる</u>:<br>Webサイトと抱き合わせでスマホアプリを作る自営業を始める。最も価値のある経験が得られるのは仕事の現場。プロトタイプ作ってブログ営業も始める(他者アイディアは無尽蔵なので)。
#フリーランス化
# <u>上級者レベルに踏み込む</u>:<br>この段階では言語をほとんど自在に使えるようになっている。さらに高みへと進むために、難しいアルゴリズム問題を解きまくる。次第に、その言語の上級者であると実感できるようになる。他の候補者が汗だくになるようなコーディング面接も涼しい顔で受けられるようになる。
 
==アプリ開発の指針==
* アプリケーションでどうしても必要という場合以外は新機能を追加するな
* システムが何ではないのかを定義することは、何であるのかを定義するのと同じように重要。あらゆるニーズに答える必要はない。むしろ互換性を維持した状態で拡張可能にしておけ
* 1つでも例を挙げて一般化したほうが、全く例を挙げずに一般化するよりもマシ
* 問題が完全に把握できないときは解決策も提供しないのが最善の方法
* 10%の作業で望みの90%の効果が得られるときには、その解法で十分
* 複雑さは可能な限り管理できる単純な大きさに分割せよ
* ポリシーやルールよりも機構(システム構造)を提供せよ。特にユーザインタフェースはクライアント側に任せておけ


==メモ==
==メモ==
Java では、コマンドたちが(クラス設計図から生成されるインスタンスとして)文字通り擬人化されている。彼らはUnixの天才たちによって生み出された小人みたいな存在。よく使うコマンドたちはもちろん、便利なコマンドたちや彼らができる動きをしっかり把握して自分が構築するシステム内でもたくさん働いてもらえるようにする。
Java は僕の大好きな整理整合やシンプル化を楽しみつつ、天才/マシンレバレッジもフル活用しながら、自分のレベル上げや人生改善に役立つスマホアプリを創作できる。
 
1つのシステムはソースコード2万行以内で表現されなければいけない。
つまり、自分の理想を実現するために必要な「優秀な人材」はすべて、Java の中にすでに詰まっている。彼らはずっと PC の中で利用されることを待っている。問題は、自分が彼らのことをキチンと把握し使いこなせるか、ただそれだけ。彼らは喜んでタダ働きしてくれる。素晴らしいレバレッジ。

2025年4月10日 (木) 22:21時点における最新版

Java

Java とはマシンを知り尽くした ビル・ジョイ の主導によって設計開発されたプログラミング言語の最高傑作。様々な特技をもつ大勢のクラスたちと協力しながら1つのアプリを作っていく。純粋なオブジェクト指向なのでコードの重複排除/再利用を徹底したり、階層を使って役割を整理整合したりできる。
Oracle所有になったけど、JavaコミュニティやJava制作物群が巨大すぎるのでOracleも変に現状から動かせないレベル。故に、最初に学ぶプログラミング言語としては間違いなく正解だと言える。

ただ、もはや古い。

効率的な学び方

効率的なプログラミング言語の習得は、英語の習得と基本的に全く同じプロセスをたどる。できるだけ早く以下のプロセスを進む

  1. ブラックボックスの解体
    その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。
  2. 砂場の準備
    遊びに没頭できるように生活環境とマシン環境を整える。
  3. 言語の基礎固め:(←今ココ
    言語の基本機能や基本文法を学び、それらを使った基本的なコードやコマンドラインアプリを書きまくって言語の基礎に十分に慣れ親しむ。本屋で立ち読み等も。
  4. よく利用される単語/イディオムの把握
    標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。OOPを使いこなせるかどうかは、クラスライブラリを使いこなせるかどうか。
  5. 英文を読みまくるのと同じフェーズ
    良いコードを読みまくり写経しまくる。Git等でよく利用されるコード表現の30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。
  6. 言語を本格的に使い始める
    metasploitみたいなCLIアプリを言語機能と標準ライブラリだけで作りまくる。アプリやゲームをたくさん作る。言語機能と標準ライブラリにとことん慣れ親しむ
  7. 応用分野に足を踏み込む
    Androidアプリの作り方を学び、他ライブラリやフレームワーク、IDEも使い始める。それらを使ってさらにスマホアプリを作りまくる。
  8. 実務経験で成長を加速させる
    Webサイトと抱き合わせでスマホアプリを作る自営業を始める。最も価値のある経験が得られるのは仕事の現場。プロトタイプ作ってブログ営業も始める(他者アイディアは無尽蔵なので)。
  9. 上級者レベルに踏み込む
    この段階では言語をほとんど自在に使えるようになっている。さらに高みへと進むために、難しいアルゴリズム問題を解きまくる。次第に、その言語の上級者であると実感できるようになる。他の候補者が汗だくになるようなコーディング面接も涼しい顔で受けられるようになる。

メモ

Java は僕の大好きな整理整合やシンプル化を楽しみつつ、天才/マシンレバレッジもフル活用しながら、自分のレベル上げや人生改善に役立つスマホアプリを創作できる。 1つのシステムはソースコード2万行以内で表現されなければいけない。