編集の要約なし
編集の要約なし
 
(同じ利用者による、間の120版が非表示)
1行目: 1行目:
Java とはスマホアプリから大企業インフラまでをも幅広くカバーする万能な言語。[https://ja.wikipedia.org/wiki/%E3%83%93%E3%83%AB%E3%83%BB%E3%82%B8%E3%83%A7%E3%82%A4 ビル・ジョイ] を始め過去の'''ズバ抜けた天才たちの叡智と人生が凝縮'''されている(彼らのエッセンスを自分に取り込む)。その性能や安定性が極めて高いため経済市場でも非常に価値がある。Google3大言語の1つ。
[[ファイル:java_logo.png|thumb|Java|300px]]


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


==基本パッケージ==
ただ、もはや古い。
Javaの世界には非常に沢山(3,500以上)の標準クラスたちが生息しており、約200以上のパッケージ/種族に分けられている。彼らはあなたの仕事を助けるために常に待機している。


* [[java.lang パッケージ]] - Javaプログラミングを支える基本的なクラスたち。インポート不要
* [[Java基本文法]]
* [[java.util パッケージ]] - 一般的な仕事をしてくれるユーティリティクラスたち
* [[Javaメモ]]
* [[java.text パッケージ]] - テキスト処理を担当してくれるクラスたち
* [[標準ライブラリ]]
* [[java.math パッケージ]] - 計算など数学を担当するクラスたち
* [[他ライブラリ]]
* [[java.net パッケージ]] - ネットワーク通信を担当するクラスたち
* [[Favorite]]
* [[java.io パッケージ]] - データ入出力を担当するクラスたち
 
まぁ英語の2,3万に比べたら少ないか・・。


==効率的な学び方==
==効率的な学び方==
効率的なプログラミング言語の習得は、英語の習得と基本的に全く同じプロセスをたどる。'''できるだけ早く以下のプロセスを進む'''
効率的なプログラミング言語の習得は、英語の習得と基本的に全く同じプロセスをたどる。<strong>できるだけ早く以下のプロセスを進む</strong>
# <u>ブラックボックスの解体</u>:<br>その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。
# <u>ブラックボックスの解体</u>:<br>その言語の全体像が分かるまで、コンピュータやインターネットの歴史などを書籍複数やネット記事を使って調査する。業界が大きければそれだけ時間かかる。
# <u>砂場の準備</u>:<br>遊びに没頭できるように生活環境とマシン環境を整える。
# <u>砂場の準備</u>:<br>遊びに没頭できるように生活環境とマシン環境を整える。
# <u>言語の基礎固め</u>:('''←今ココ''') <br>言語の基本機能や言語要素を学び、それらを使った基本的なコードを書きまくって言語の基礎に十分に慣れ親しむ。本屋で立ち読み等も。
# <u>言語の基礎固め</u>:(<strong>←今ココ</strong>) <br>言語の基本機能や基本文法を学び、それらを使った基本的なコードやコマンドラインアプリを書きまくって言語の基礎に十分に慣れ親しむ。本屋で立ち読み等も。
# <u>よく利用される単語/イディオムの把握</u>:<br>標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。OOPを使いこなせるかどうかは、クラスライブラリを使いこなせるかどうか。
# <u>よく利用される単語/イディオムの把握</u>:<br>標準ライブラリは全て半暗記し(知らないなら使えない)、コード内に混在する言語機能と区別できるようになる。OOPを使いこなせるかどうかは、クラスライブラリを使いこなせるかどうか。
# <u>英文を読みまくるのと同じフェーズ</u>:<br>良いコードを読みまくり写経しまくる。Git等でよく利用されるコード表現の30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。
# <u>英文を読みまくるのと同じフェーズ</u>:<br>良いコードを読みまくり写経しまくる。Git等でよく利用されるコード表現の30%に精通しWikiにも整理する。どんなコードでも全て理解できるようになる。
# <u>言語を本格的に使い始める</u>:<br>言語機能と標準ライブラリだけを使って小さなアプリを作りまくる。アプリやゲームをたくさん作る。言語機能と標準ライブラリにとことん慣れ親しむ
# <u>言語を本格的に使い始める</u>:<br>metasploitみたいなCLIアプリを言語機能と標準ライブラリだけで作りまくる。アプリやゲームをたくさん作る。言語機能と標準ライブラリにとことん慣れ親しむ
# <u>応用分野に足を踏み込む</u>:<br>Androidアプリの作り方を学び、他ライブラリやフレームワーク、IDEも使い始める。それらを使ってさらにスマホアプリを作りまくる。
# <u>応用分野に足を踏み込む</u>:<br>Androidアプリの作り方を学び、他ライブラリやフレームワーク、IDEも使い始める。それらを使ってさらにスマホアプリを作りまくる。
# <u>実務経験で成長を加速させる</u>:<br>Webサイトと抱き合わせでスマホアプリを作る自営業を始める。最も価値のある経験が得られるのは仕事の現場。プロトタイプ作ってブログ営業も始める(他者アイディアは無尽蔵なので)。
# <u>実務経験で成長を加速させる</u>:<br>Webサイトと抱き合わせでスマホアプリを作る自営業を始める。最も価値のある経験が得られるのは仕事の現場。プロトタイプ作ってブログ営業も始める(他者アイディアは無尽蔵なので)。
# <u>上級者レベルの門を叩く</u>:<br>この段階では言語をほとんど自在に使えるようになっている。さらに高みへと進むために、難しいアルゴリズム問題を解きまくる。次第に、その言語の上級者であると実感できるようになる。他の候補者が汗だくになるようなコーディング面接も涼しい顔で受けられるようになる。
# <u>上級者レベルに踏み込む</u>:<br>この段階では言語をほとんど自在に使えるようになっている。さらに高みへと進むために、難しいアルゴリズム問題を解きまくる。次第に、その言語の上級者であると実感できるようになる。他の候補者が汗だくになるようなコーディング面接も涼しい顔で受けられるようになる。
 
==基本言語要素==
以下の基本言語要素とその使い方に精通すれば、その言語でプログラミングするための基礎が身についたということになる。
* [[画面への出入力]]
* [[基本的な計算]]
* [[変数への格納]]
* 機能、メソッド、モジュールなどを使ったコードの組織化
* 機能やメソッドの呼び出し
* [[ブール論理の評価]]
* [[条件分岐]](if/else)
* [[ループ]]


==メモ==
==メモ==
===旧) 特殊スキル『OC没頭』を早く手に入れる===
Java は僕の大好きな整理整合やシンプル化を楽しみつつ、天才/マシンレバレッジもフル活用しながら、自分のレベル上げや人生改善に役立つスマホアプリを創作できる。
#基礎知識をしっかりと固めておく(基礎的な必勝セオリーの蓄積)★ 今ここ
1つのシステムはソースコード2万行以内で表現されなければいけない。
#コマンドやサンプル等を大量暗記・潜在表現力の増幅(応用的な必勝セオリーの蓄積)
#街を作りまくる・あとは組み合わせることに慣れるだけ・写経も(英語と同じ)
#人様のためにアプリを作れる状態になる
#何でもいいからアプリ制作(Web制作)を受注して作りまくる
#フリーランス化
 
===Java概要(旧)===
Java では、コマンドたちが(クラス設計図から生成されるインスタンスとして)文字通り擬人化されている。彼らはUnixの天才たちによって生み出された小人みたいな存在。よく使うコマンドたちはもちろん、便利なコマンドたちや彼らができる動きをしっかり把握して自分が構築するシステム内でもたくさん働いてもらえるようにする。
 
つまり、自分の理想を実現するために必要な「優秀な人材」はすべて、Java の中にすでに詰まっている。彼らはずっと PC の中で利用されることを待っている。問題は、自分が彼らのことをキチンと把握し使いこなせるか、ただそれだけ。彼らは喜んでタダ働きしてくれる。素晴らしいレバレッジ。
 
===アプリ開発の指針===
* アプリケーションでどうしても必要という場合以外は新機能を追加するな
* システムが何ではないのかを定義することは、何であるのかを定義するのと同じように重要。あらゆるニーズに答える必要はない。むしろ互換性を維持した状態で拡張可能にしておけ
* 1つでも例を挙げて一般化したほうが、全く例を挙げずに一般化するよりもマシ
* 問題が完全に把握できないときは解決策も提供しないのが最善の方法
* 10%の作業で望みの90%の効果が得られるときには、その解法で十分
* 複雑さは可能な限り管理できる単純な大きさに分割せよ
* ポリシーやルールよりも機構(システム構造)を提供せよ。特にユーザインタフェースはクライアント側に任せておけ

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万行以内で表現されなければいけない。