最近、2つ新しい言語をやりました。正確には、1つはアプリを作ってitunesでも審査を経て公開したので、「やった」といえると思いますが、もう一つはやっている途中です。一つは、Swiftという言語で、もう一つはRubyです。
SwiftはAppleが開発して最近オープンソースにもなった新しい言語です。登場が2014年ですから、まだ2年しかたっていません。でも、2016年の12月の今日現在、既にバージョンは3で、文法もどんどん新しくなってしまっています。もう、ついて行くのが大変です。文法がモダンで書きやすく、Appleのイメージ戦略に乗せられてしまっただけなのかもしれませんが、なぜかファッショナブルに感じます。型指定が厳密で、コンパイルする前から、コンパイラが型の間違いをしてきしてくれるので、実行時にエラーが出にくくなっています。ここが非常に強力で、最近のコンパイラはすごく進化しているなと感じます。
文法もC++なんかに較べるとはるかにわかりやすくて、とっつきやすいです。実際に走らせてみてエラーがでても、C++の時のようにどこが間違っているのかよくわからん、解決不能。。みたいなことがないので、比較的効率よくプログラムを完成することが出来ます。
iPhoneやiPadのアプリを作成するには、他の言語は使えなくて、Swiftを使う必要があります。
もう一つの言語は、Rubyです。RubyはScript系の言語で、一般的なイメージは、簡単に素早くWebアプリが開発できる、軽い、比較的ライト級の言語なので、複雑なプログラムを作るのには向いていない、事前にコンパイルするタイプの言語ではないので遅い、と言う感じでしょうか。
C#やJavaをやって来た人間からすると、言語仕様が斬新で、びっくりすることも多いと思います。””.empty?なんてカッコがなくてクエスチョンマークを直接つけてしまう書き方にはびっくりしてしまいました。
変数の宣言の仕方についても、大文字で始まると定数、小文字はローカル変数と決まっていて、varとかStringとか事前に宣言しないのも不思議な感じがしました。
RubyはRailsというフレームワークが便利で、これのおかけで開発が速くできるようになっています。プログラムの8割はデータベースとのやり取りをする処理の記述だと言われたことがありますが、RailsのActiveRecordと言うデータベースとプログラムを結び付ける仕組み(ORマッピングの仕様)は非常が良くできていると思います。モデル名を決めたコマンドを1行走らせるだけで、ORマッピングの設定ファイルを自動的に作ってくれるのでとても便利です。その他、コントローラーをコマンドライン1行で作るとViewも作ってくれたり、モデルに併せてデータベースを作ってくれたり良くできていると思います(おこがましい)。
なんにせよ、新しいプログラム言語を学ぶのは面白いです。新しいプログラミング言語が出てくるのには理由があるので、それを学ぶという事は新しい分野についての知識も同時についてきます。
例えば、iPhoneやiPadが登場したから、Swiftと言う言語が必要になったと言えます。正確にはObject-Cと言うそれ専用の言語があったのですが、これはメモリー管理の方法など癖がありすぎて、ちょっとiPhoneのアプリを作るプログラマーの参入障壁となってしまっていました。Appleとしては、優れたアプリを開発してくれる人が多い方がiPhoneやiPadが売れるので、アプリ開発は容易な方が良いのですが、Object-Cのメモリー管理や文法の仕組みが時代遅れとなってしまったので、Swiftを新たに出してきたわけです。
Rubyがこれだけ普及しているのも、PHPなどと同じで、Javaでは向いてないことがあるからです。Javaは堅牢でしっかりしているのですが、Webアプリをちょっと作って素早くリリースするようなニーズには、造りがしっかりしている分、開発のスピードが遅くなってしまうので向いていないのだと思います。
プログラミング言語は沢山ありますが、それぞれ動く場所が違います。SwiftがiPhoneを動かすのに必要なように、JavaScriptはブラウザーの上でのみ動きます。
新しい言語を勉強するという事は、今までと違った分野についての知識や肌感覚が身につくと思います。