Category Archives: Java

プログラミング入門に向くのはどの言語か

釣りのようなタイトルで申し訳ありません。
この話題、人によってそれぞれの意見をもっていると思うので、議論が収束しなくなりがちです。

例:
「私がJavaScriptを初心者用の言語として選んだわけ」(404 Blog Not Found)
http://blog.livedoor.jp/dankogai/archives/51005691.html

僕自身の経験に言わせれば、僕がプログラミングに入ったのは、Delphi2.0でした。言語がPascalということで、敬遠されがちの面もありましたが、塚越一雄さんの本が高品質であったため、快適に学習することができました。

ある程度アルゴリズムっぽいものを学ぶ段階で、僕は10進BASICに触れました。ちょっとしたグラフをプロットする機能もあったので、色々なグラフを書いて遊びましたし、一連のソートのアルゴリズムを試したりもしました。自分で乱数を実装したりもしました。

今の時代となっては、どちらの開発環境も入門に使用するのは一般的ではないかもしれません。が、両者の特長を述べますと

Delphi

×
便利な開発環境 有料
型安全 めんどくさい
実行ファイルが作れる コンパイルしなければならない

10-BASIC

×
無料 開発環境が簡素
インタープリタですぐ実行 実行ファイルがつくれない
手軽 バグが見つかりにくい

この構図を無理矢理現代の言語に持ち込むと

Java

×
便利な開発環境(Eclipse) 起動が遅い
型安全 めんどくさい
速い コンパイルしなければならない

JavaScript

×
ブラウザがあれば開発できる 開発環境が統合されていない(Firebugなどはある)
スクリプト言語なのですぐ実行 実行ファイルがつくれない
手軽 バグが見つかりにくい

ということで、僕は両方同時に覚えることをオススメします。複数の言語がコンガラがって混乱するとかいうのはアマいです。プログラマーをやっていると、ひとつの言語だけで何かができるなんて、絶対ありませんから!

別の面で比べると、JavaはJavaだけ学んでも、面白くないということが問題です。Webアプリを作りにはTomcatや、Servletを覚えなければなりません。一方のJavaScriptは、これを覚えるためにはHTMLやDOMの知識が不可欠です。とはいえ、今の時代、Webというプラットフォームを利用しない手はないので、いずれ、HTMLやDOMはマスターする必要があります。ならばいっそ、これらを効率的に学べる土壌があれば良いと思います。ということを考えていたら、絶好の答があることに気づきました。

Google App Engine for Java

です。既存のプログラマーにはBigTableが敬遠され、本番で使うにはSpin upががが…と色々言われていますが、これから入門する人にとっては、SQLを覚えるよりもデータストアのLowLevelAPIはシンプルですし、「制約はバグを作ってサーバを全部ダウン」という事件を起こさないということで、素晴らしいのではないでしょうか!

ということで、探してみたのですが
http://www.google.co.jp/search?aq=f&sourceid=chrome&ie=UTF-8&q=Google+app+engine+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80

その手の入門書、ありませんね……。なんで!?

「Java言語のひと通りの文法を理解していること」「HTML、Webの基本を理解していること」そんなことすら要求せずに、appengineを使ってそれらを学んでしまおうという試みがあっても良いじゃないかと思います。プログラミング入門にappengine(Java)を使うメリットを列挙すると:

  1. 無料ですぐ始められる
  2. 開発環境がある(賛否両論ありますが、開発環境が立ち上がるとプログラミングモードになるという僕の感覚として)
  3. SQLを学ばなくて良い
  4. JSPを学ばなくて良い(後述)
  5. プログラムを暴走させて事件を起こすキケンが少ない
  6. みんなに公開できる

ほら、入門にグッドじゃないですか!

Twitterで、ハッシュタグ#appengineを見ていると、レベルの高い方々が多いです。が、これからプログラミングをはじめようというような初心者の人がいません。ともすれば、日本のappengineコミュニティは難しいものになってしまいはしないか?多少端折ってもいいから気楽に楽しくappengineでプログラミングを覚えましょうよ!

という試み、誰か、試してみませんか?お前がやれ?うん、時間があればやってみてもいいかも。僕自身appengine初心者で、未だにSlim3のGlobal Transactionが必要になるレベルのアプリすら作ったことがないのですが、自分が学習する意味も込めて、やってみようかなあ。
とかいって、何ヶ月も放置されるかもしれませんが。目下、iPhone SDKの勉強に注力していますので……。

このことを考えたきっかけは、先日に大学時代に所属していたサークルに遊びに行ったら、未だにCで入門していたことを聞いたことでした。1年かけてCをやって、黒い画面にhello, worldとか書きながら多くの新入部員が挫折してしまう……それに、これからはHTML5の時代だというのに、クラウドとかあるというのに、、Canvasとかあるというのに、それらを使っている人が全然いない!!Cを半年かけて、それからWinAPIを半年かけて、さらにDirectX……そんなことしなくても、JSでいきなりCanvasがあるじゃないですか!

まあ、「Cをバリバリにやって、3Dアクションゲームをバンバン作って、ゲーム会社に就職してやるぜ!」というのがサークルのカラーならばそれもいいかもしれません。しかし、「長年それでやってきたから」という保守的な部分が出てしまっているなら、どうなのかな?

未来を案じられるJavaに対してこっそりつぶやく

http://togetter.com/li/78184 より爆弾発言

ひがさん: Javaに未来はない

一方、Javaでサービス作って運用してて、Javaでなければ大変な目に遭っていた、Javaマンセーな日々な僕がいます。ああ、そうか。Javaに「現在」はあるってことかと思いました。

考えてみると、DIもAOPもユニットテストも、ブレイクしてから、自分が会社の製品で実際に導入するまで2〜3年遅れてやってきて、それでも困っていないというのが実感です。ここまで来ると、ブログとか書籍とか情報が十分蓄積されているのでハマらない……というはずが、実はハマるというのが実感なので、先を行っている人たちはさらに茨の道だったのだろうと。僕の立ち位置だと、例えば、S2Containerのソースコードを読むと解決するとかそういうレベルです。

ということは、アバウトな見積もりだと、僕はきっと、あと2,3年後に「Javaは終わった」と言うんでしょうね。きっと。思えておきます。

いいなあ、「未来」を語れる人達は……。

追記

試しにgoogleで「Java 未来」で検索してみると
http://www.google.co.jp/search?hl=ja&q=Java%E3%80%80%E6%9C%AA%E6%9D%A5&aq=f&aqi=&aql=&oq=&gs_rfai=
こんな感じで、時期が、2009年、2003年、2001年ってバラバラでしたw

節目節目で、未来を案じられる言語なのですね。なんか、感慨を覚えます。

ついでに、「C 未来」「PHP 未来」「.NET 未来」と比較しようと思ったのですが、これらはSEO的にナンセンス(Cは短すぎ、PHPはPHP研究所とかぶる、.NETはNETで検索されてしまう)なので、比較にならなかったのが残念です。

追々記

Togetterをよく読めばわかりますが、ひがさんの発言の趣旨は、サーバーサイドJavaはありだけど、ハイリスクハイリターンに挑戦したいからサーバーサイドJSをやるってことのようです。ひがさんらしいです。2,3年後に、その轍を踏む想定で、まじめに注目します!

新人が入るから入門書をピックアップしてと言われ

した。Amazonのリンクを1ページに集約して印刷するいい方法がわからないので、アフィリエイトを使った。ついでだから貼っとくw

まあ、結城さんの本で難しいと感じたら、やさしいJavaを併読して、ついでに本屋でhead firstが性に合うと思ったらhead firstでもいいかもしれない。JSP/Servletは適当に選んだw

読んだことあるの、結城さんの本で、しかも初版しかない僕ですがなにか?











上記のレベルをひと通りマスターしたら(やさしいで入ったなら、結城さん本か、独習Javaでも読んで欲しいですが)、下記の記事の下の方で僕が紹介した本(しかし古くてJava5以降に対応していないのがあるのが残念ですが)を読めばいいんだと思いますね。
http://d.hatena.ne.jp/s-ishigami/20101127/1290821875

追記

某nayuta先生から、他の言語を経験しているなら、プログラミング言語Javaが良いと言われ、そういうことなら、Javaチュートリアルも持ってるのでセットですね!っていうか、読んだことないので(チュートリアルは持ってるのに!)、実際どうなんでしょうね!じゃーついでに言語仕様とVM仕様も買っちゃう?









というか買ってくださいという感じなのですが、まあ、それほど必要ないかとも思う。まあ、買って欲しいけどそれほど急でもなく会社に申請するまでもないってな本なら、他にも沢山ありますけどね。少ない小遣いでは手が届きません。

この記事は自分のためのカタログ作るためですので、けっしてアフィリエイトで小遣い稼ごうなんて魂胆はありません。www
お目汚しならゴメンナサイ。