かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

どれにしようか

今自分が使える言語は下にあるとおり。

習熟度順に並べるとこんな感じかな。

  1. C#, Java
  2. C++
  3. Ruby, JavaScript

各言語に特徴があって向き不向きがあると思う。
LL系の言語に分類されるRubyJavaScriptは、やりたいことをやりたいように素直に書くだけで動いてくれるのがすごくいいと思う。
文字を出したいだけなのに

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");
    }
  }
}

と書くのはめんどくさいよね。
RubyJavaScriptだと

puts("Hello world")
document.write("Hello world");

だけでいい。

文字を出力したいんだから文字を出力するって書けばいいじゃん?
こう書けるのは好き。


でも、実際JavaC#を書くときはIDEを使うのでメンドクサイ定型的な部分はIDEががんばって書いてくれる。
なので、実際に自分で入力するのは

System.out.println("Hello world");

Console.WriteLine("Hello world");

だけになる。

JavaEclipse使ってると、sysoutとうってCtrl+SpaceでSystem.out.println();を書いてくれるのでとてもラクチン。
なので実際作業するときには、そんなに差が無いように感じる。


例えばRubyでクラスを定義するときに下のように書ける。

class Person
  attr_accessor :name, :age;
end

これだけでプロパティが作れる!っていうのもEclipseだとgetter, setterの自動生成でフィールドを定義するだけで書けるし、Visual Studioでもコードスニペットで型名と名前だけ入れれば定義することができる。

なので、あんまりLL系の言語のほうがすごくいい!とは思わないのが実情。


なので、上っ面のどうでもいい所(だけど普段プログラム書くときには結構書く所)では、どの言語でも大差ないようなってきたと思う。
IDEが無いとJavaC#は凄くメンドクサイけど、最近はIDEなしでやるなんてことのほうが珍しいだろう。


ということで、どの言語を主に掘り下げていくかはもう一歩踏み込んだ所の言語ごとの、どの特徴に惚れ込むかにかかってくると思う。
個人的に各言語毎に好きなところを書いてみる。

  • C++
    • templateが変態的に凄い
    • STLが素晴らしい出来
  • C#
    • Javaみたい
    • 新版が出ると同時に完成度の高いIDEが提供される
    • C#3.0でLL言語チックに書けるようになってる
    • LINQが素晴らしい出来
  • Java
    • 無難に大体こなせる
    • Eclipseのエディタが素晴らしい出来
    • 言語使用がシンプル(だった)
    • オープンな技術が盛りだくさん
  • Ruby
    • 日本産
    • 柔軟
    • 無駄なコードをほとんど書かなくていい
  • JavaScript
    • すべてがオブジェクト(ハッシュ)


さて、ぜんぜん踏み込んでる気がしないが…
とりあえず個人的には、IDEが無いとプログラムを組むときにストレスを感じちゃう体になってしまってるのでLL系の言語は辛いことになっている。
なので、IDEが充実してるC#Javaになる。
C#Javaを比べると、C#3.0の出来が素晴らしいと思ってるので、これからはC#を主軸にしていこうと思います。