ミームの死骸を待ちながら

We are built as gene machines and cultured as meme machines, but we have the power to turn against our creators. We, alone on earth, can rebel against the tyranny of the selfish replicators. - Richard Dawkins "Selfish Gene"

We are built as gene machines and cultured as meme machines, but we have the power to turn against our creators.
We, alone on earth, can rebel against the tyranny of the selfish replicators.
- Richard Dawkins "Selfish Gene"

10倍勉強法に触発されてJavaの基本思想を勉強した

影響の受けやすさと尻の軽さには定評がありますこんにちは。

無理なく続けられる 年収10倍アップ勉強法

無理なく続けられる 年収10倍アップ勉強法

これを読んでいたら次のような一説が出てきた。

p.73
学ぶ対象となる分野の基本思想や基本構造をしっかり理解する、と言うことです。
(...中略...)
それらがわかった上で勉強を始めるのと、そうでないのとでは、勉強の効率も楽しさも、上達の速さも深さも、将来の応用力も、全く異なります


というわけで実践しよう。

学びたい分野は数あれど、今学んでいるのはJava。diouf21におすすめされた

改訂第2版 Java言語プログラミングレッスン (上)

改訂第2版 Java言語プログラミングレッスン (上)

この本を使って勉強してる。
Javaというかプログラミング自体も初心者向けの内容で、めちゃくちゃ詳しく書いてある。むかーしRubyを習ったものの基礎の部分を忘れかけている僕にフィットした。
まだ初歩の初歩だけど、いやだからこそいまのうちに、Javaの基本思想というものを自分なりに解釈してまとめてみた。自分の勉強用なので不正確、論理の飛躍などあるかも


Javaの歴史

誕生

1990年に、サンがC/C++の代わりとなる言語として内部プロジェクトとして立ち上げたのが始まり。もとはOakって名前。文法はC++ににてる。

C++の悪い点は

  • コンピュータ資源を食い過ぎる
  • 複雑なので組み込みシステムには向かない
  • ガベージコレクションがない。
    • プログラマがメモリの管理をしなければならない(???)
  • 移植性が乏しい

これ解決しようとしたけど、あんま広まらんかった。

方向転換


1994にインターネット主体に方向転換。このときの会議にエリック・シュミットがおったっぽい

    • んで同年1.0α公開。
    • 1996に正式1.0公開

最初は「アプレット」で注目を浴びた。これはインターネットを通じて動作するプログラム。

プログラム実行状態をネットワークを通じて簡単にやりとりすることができる。クライアントとかサーバ側とか言ってるのはこれか。
「システムモデリング」の授業で取引システムをJavaで作るのも、この特徴があるからかな。
「簡単に」というのは、何も拡張なしで、という意味か。


オブジェクト指向


Javaの壁の一つ。そういえば情報系の授業にもjavaオブジェクト指向だけを扱ったものがある。
オブジェクト指向はそんなに大事なのか。
僕は「すべてがオブジェクト」というRubyからプログラムに入ったから、じつは自然にやってることがオブジェクト指向特有のものかもしれない。


 オブジェクト指向というキーワードを定義すると、「これから作成(構築)する対象のもの・事柄をすべてモノ(オブジェクト)としてとらえて表現する考え方」ということになります。

 定義などというと構えてしまいますが、よくよく考えてみるとオブジェクト指向とはごく当たり前の考え方なのです。

オブジェクト指向、本当に分かってる? − @IT自分戦略研究所

オブジェクト指向の「概念」の説明読んでも、モノはモノ特有の機能と属性を持つとか抽象的でなんとも。
そこから実際のコードにつながる道がいまひとつぴんと来ないな…
逆にオブジェクト指向じゃないプログラミングってどんなねん。


時間開けて勉強し直そう。

とか書いてたんだけど

実は今回のエントリは下書きを書いたのが二週間くらい前だったりする。下書きを書いてから、授業でオブジェクト指向を習った。そこでなんとなくわかった気になって感動したため先週勢いでエントリを上げた。
ちょっとまて、オブジェクト指向って実はすごいんじゃね? - ミームの死骸を待ちながら
勢いで書いたため見直すと恥ずかしい。


仮想マシン


一度書けば何処でも動く (Write once, run anywhere) のがJavaウリ

仮想マシン用にコンパイル」する。
Java仮想マシンって思ってたよりハード寄り(?)なふんいき
これがあるからいろんなOSに簡単に移植できる。ただJavaバージョン間の互換性は多少問題らしい

Javaで書かれたプログラムは素人でも簡単に移植できるんかな。そこまでは簡単じゃないか?



まぁこんなとこで。もちっと具体的な例ないかなぁ


勉強用ブログ


id:hyukiさんがd:id:syou6162の日記のコメント欄でsyouと会話してたのだが、そこに出てきた日記に触発されて、
ここにJavaの勉強記録を残していくことにした。

Javaの勉強記録 by Hash

まだ「どう記録しようかなー」と試行錯誤中ですが。

複数の言語をやるというのは、理解の助けになっていいかもしれない。Rubyでは当然のようにできてたことがJ
avaでは長い長い指定が必要だったり、putsと同じことをするのにSystem.out.printlnだったり。
まだまだいろいろ学ぶともっと楽しそう。次は統計言語Rとか狙っている。でも授業で必須なJavaを優先してるなう。