zowのプログラムな日々

日々のプログラミングとか

C#をやってみて思うこと

今までいろんなスクリプト言語で開発してきた。PHPRubyPython等々。そんな俺がXamarinに出会ってC#を始めた。PHP等のスクリプト言語C#。この2つには大きな違いがある。まぁコンパイルするかしないかってこともそうなんだけど「型付け」について大きく違う。強い型付けとか弱い型付けとか、そういうのだ。今までやってきたのがスクリプト言語ばかりだったので型についてあまり考慮しなくても良い感じだったんだけども、このことについて余り深く考えた事はなかった。ところがC#は違う。キッチリと型を決めてやらなきゃいけない。

多分、スクリプト言語でやってきた人だとここら辺で結構躓くんだと思う。でも俺の場合、使ってて気持ちいいっていうかスッキリする。割と神経質なコードを書く方だと思うので、こういう「強い型付け」の言語と俺との相性は凄い良いみたいだ。おかげでC#なんて今まで触ったことも無い言語だってのに1ヶ月も経ってないのに普通に書けるようになった。正直頭の中をPHPからRubyに移行するよりもC#に移行する方が楽。多分今まで知らなかっただけで、コンパイル型のこういう言語と俺との相性は抜群にいいんだろう。

で、C#で習作をいくつか作っていろいろ試している段階なんだけども、ここでふと思う。このC#って言語はJavaWindowsに載せるかどうかみたいな問題で揉めて、キレたMSがJavaVM対抗で作った.NETって環境で動かす為に作った言語(すげー昔にそんな感じだった出来事があったような記憶がある)だったと思うので、Javaっぽいっていうか、JavaをMS風味にした様な言語っていう風に認識してる。であれば、何度も勉強しては挫折しているJava。これもちゃんと勉強したら実は相性が良くて簡単なんじゃなかろうか?と。

そんな訳で、C#を勉強してる最中だってのにJavaも勉強し始めた。これがなんとも恐ろしい事に、今までと違ってスムーズに勉強できてる。C#っていういたれりつくせりな言語を経験しているからなんだろうか、Javaがなんとなく理解できている。

C#にしてもJavaにしても言語仕様について勉強するのは苦じゃない。どんな言語でも(関数型を除く)変数と配列と一通りの制御公文の書き方さえ知ってしまえばなんとかなる。問題は構文的な物ではなくて、言語特有のしきたりというか、そういうのである。Javaの取っつきにくい所っていうのは、意味不明にながいパッケージ名とかだったんだけども、これもIDEを使うことを前提にすると全然問題ない。ていうか、Javaという言語はIDEが無いと多分書けない。それぐらいIDEが大事だと感じた。とりあえずNetbeansを使ってるんだけども、PHP開発でよく使ってたってのもあってJavaでもすんなり使えている。ホントにもうビックリである。あれだけ相性最悪だと思ってたJavaC#を知ることによって理解できるようになれるとは思わなかった。

まぁJavaの難を挙げるとすれば、古い言語だけあってツール、特にパッケージ管理については後からできた言語の方が充実してる。いや、多分Javaにも便利なツールとかがあるんだろうけども、まだ調べきれてない。つか多すぎるから何が良くて何が悪いのかも判らないし、どういう時にどういうツールを活用すれば良いのかも判らない。多分、俺みたいな初心者レベルの人間が不自由に思う物については解消できるツールがあると思うので、その都度調べていかなきゃいけないのが地味に面倒。

とりあえず、大局的な目的はマルチプラットフォームGUIアプリの開発なので、MonoでもJavaでも実現できるんだけども、とりあえずどちらも使えるようになってから今後の身の振り方を決めたい。どちらの言語も知っておいて損は無いし、はっきり言ってスクリプト言語よりも相性がいい様に思える。

C#Java、両方触ってみた感じだと、今の所はJavaの方が書きやすいかな。C#は楽なんだけど、なんか若干「書かされてる」感があるっていうか、そういう感じ。Javaの方が自由に書ける気がするなぁ。夏が終わる頃にはJavaでなんか書き上げてみたい。