今自分が使える言語は下にあるとおり。
習熟度順に並べるとこんな感じかな。
- C#, Java
- C++
- Ruby, JavaScript
各言語に特徴があって向き不向きがあると思う。
LL系の言語に分類されるRubyやJavaScriptは、やりたいことをやりたいように素直に書くだけで動いてくれるのがすごくいいと思う。
文字を出したいだけなのに
package hoge; public class Hoge { public static void main(String[] args) { System.out.println("Hello world"); } }
や
using System; namespace Hoge { public class Hoge { public static void Main(string[] args) { Console.WriteLine("Hello world"); } } }
と書くのはめんどくさいよね。
RubyやJavaScriptだと
puts("Hello world")
document.write("Hello world");
だけでいい。
文字を出力したいんだから文字を出力するって書けばいいじゃん?
こう書けるのは好き。
でも、実際JavaやC#を書くときはIDEを使うのでメンドクサイ定型的な部分はIDEががんばって書いてくれる。
なので、実際に自分で入力するのは
System.out.println("Hello world");
や
Console.WriteLine("Hello world");
だけになる。
JavaでEclipse使ってると、sysoutとうってCtrl+SpaceでSystem.out.println();を書いてくれるのでとてもラクチン。
なので実際作業するときには、そんなに差が無いように感じる。
例えばRubyでクラスを定義するときに下のように書ける。
class Person attr_accessor :name, :age; end
これだけでプロパティが作れる!っていうのもEclipseだとgetter, setterの自動生成でフィールドを定義するだけで書けるし、Visual Studioでもコードスニペットで型名と名前だけ入れれば定義することができる。
なので、あんまりLL系の言語のほうがすごくいい!とは思わないのが実情。
なので、上っ面のどうでもいい所(だけど普段プログラム書くときには結構書く所)では、どの言語でも大差ないようなってきたと思う。
IDEが無いとJavaやC#は凄くメンドクサイけど、最近はIDEなしでやるなんてことのほうが珍しいだろう。
ということで、どの言語を主に掘り下げていくかはもう一歩踏み込んだ所の言語ごとの、どの特徴に惚れ込むかにかかってくると思う。
個人的に各言語毎に好きなところを書いてみる。
- C++
- templateが変態的に凄い
- STLが素晴らしい出来
- C#
- Java
- 無難に大体こなせる
- Eclipseのエディタが素晴らしい出来
- 言語使用がシンプル(だった)
- オープンな技術が盛りだくさん
- Ruby
- 日本産
- 柔軟
- 無駄なコードをほとんど書かなくていい
- JavaScript
- すべてがオブジェクト(ハッシュ)
さて、ぜんぜん踏み込んでる気がしないが…
とりあえず個人的には、IDEが無いとプログラムを組むときにストレスを感じちゃう体になってしまってるのでLL系の言語は辛いことになっている。
なので、IDEが充実してるC#かJavaになる。
C#とJavaを比べると、C#3.0の出来が素晴らしいと思ってるので、これからはC#を主軸にしていこうと思います。