Webエンジニア susumuis の技術ブログ

このブログの内容は個人の見解であり、所属する組織の公式見解ではありません

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

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

例:
「私が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などはある)
スクリプト言語なのですぐ実行 実行ファイルがつくれない
手軽 バグが見つかりにくい

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

別の面で比べると、JavaJavaだけ学んでも、面白くないということが問題です。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アクションゲームをバンバン作って、ゲーム会社に就職してやるぜ!」というのがサークルのカラーならばそれもいいかもしれません。しかし、「長年それでやってきたから」という保守的な部分が出てしまっているなら、どうなのかな?