プログラミング言語の選び方は美しさ or 実用性の2通りある

2015年2月18日に投稿 → に更新 技術

a0055_000496

プログラミング言語を選ぶのはプログラミングの「考え方」を選ぶのと同義です。

人は言葉を使って思考をします。プログラムロジックを考える際に使う言葉がプログラミング言語です。

  • 手続き型言語ならば、手続きの積み重ねとしてロジックを考えます。
  • オブジェクト指向言語ならば、オブジェクト間でメッセージをやりとりするイメージでロジックを考えます。

簡潔で美しい構文を持つ言語を使ってる人は、ロジックを考える時も簡潔で美しいロジックが浮かびます。
冗長で煩雑な構文を持つ言語を使ってる人は、冗長で煩雑な思考をしてしまいがちです。

だからといって、必ずしも構文が美しい言語を選べばいいわけではありません。
構文がいくら美しくても、実用性の低い言語が存在します。
構文が煩雑で言語として美しくなくても実用性が高い言語もまた存在します。

そこで今回は、プログラミング言語の2通りの選び方(美しさ or 実用性)を紹介します。

美しい言語を選ぶべき理由

美しいプログラミング言語というと何を思い浮かべますか?

私の場合Rubyが浮かびました。

Rubyは構文に無駄がなくソースコードが美しいですし、さくさく書けて書いていて楽しいですが、Windowsだとうまく動かないケースが多いという欠点があります。Rubyが標準で持ってるFTPの機能がWindowsではうまく動かなかったことがあります。それとShift_JISのファイルを読んでString#subで比較したら文字コードエラーが起こりました。ソースコードの文字コードとファイルを読む時に指定する文字コードも合わせて読み込んだファイルも確かにShift_JISであることを確認したのですが解決しませんでした。

同じ処理をPHPで書き直したら何の問題もなく動きました。

じゃあPHPを使った方が良いかというとそうとも言い切れません。

使う言語によって学べる考え方が異なる

Rubyで配列の中から3の倍数の要素を収集する場合以下のように書けます。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
results = numbers.select {|item| item % 3 == 0 }

同様の処理をPHPで書くと

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
foreach ($number as $numbers) {
	if ($number % 3 == 0)
		$results[] = $number;
}

となります。Rubyは高階関数を使った簡潔な書き方が出来ますが、PHPだとべたにfor文で繰り返し処理を書きます。といってもPHPもバージョン5.3からは高階関数をサポートするようになったので現在はRubyと同じような書き方が出来ます。

とはいえRubyはとうの昔から高階関数をサポートしていたので、Rubyプログラマーの方がPHPプログラマーよりも洗練された表現でロジックを書くことが出来ました。

これはC#とJavaの関係も同じです。C#もまたRubyのように早い段階で高階関数をサポートしていました。Javaが高階関数をサポートしたのはJava8(2014年)なので、それまでの間Javaプログラマーは高階関数を使ったロジックの組み方が出来なかったんです。これを揶揄してJavaプログラマーをforおじさんと蔑む呼び名がネットで流行っています。

前述したとおり、使っている言語によって思考は影響を受けます。RubyやC#を使っていた方がPHPやJavaを使っているよりもスマートな思考をしやすくなるんです。

これが美しい言語を選ぶべき理由です。

実用性の高い言語を選ぶべき理由

動作しなければ意味がない

前述したとおりRubyで書いてうまく動かなかったプログラムをPHPで書き直したら動いたということがありました。

RubyはもともとUnix/Linux上で動くことを設計されたものなので、Windowsでの動作は不安定なようです。

どんなに美しい構文を持つ言語でもプログラムが動作しなければ使えません。

実用性と求人数

Rubyプログラマーの求人よりもPHPプログラマーの求人の方が圧倒的にたくさんあります。

実用性の高い言語の方が求人数は多くなります。

もちろんRubyプログラマーの求人も少なくない、かつ、Rubyプログラマー数がPHPプログラマー数に比べてずっと少ないので需給バランスで考えると就職は十分可能ですけどね。

美しい言語と実用性の高い言語をバランスよく使おう!

仕事ではPHPを使うけど、趣味ではRubyを使うといったように、どちらか一方にならず両方使うことで、両方の良い所を学ぶことが出来ます。

もし今自分が使っている言語がどちらか一方の言語に偏っている場合は、利用言語のポートフォリオを見直してみると良いかもしれません。

プログラミング初心者におすすめのサービス
1. 教室で学びたい派なら

プログラマカレッジは20代限定で、無料で受講できて、修了後、就職支援もしてくれるプログラミングスクールです。最高過ぎですよ、これ!!企業からの協賛金によって運営されいているため無料で受講できるんだそうです。すばらしいシステムだと思います!

30代の方には

プログラマカレッジは20代限定なので30代の方にはゼロスクがおすすめです。35歳以下なら無料で受講できます。教室も札幌、仙台、東京、大阪、神戸、福岡と全国展開しているので地方の方でも利用できます。

2. 自宅で学びたい派なら

Udemyという動画講座がおすすめです。時々特別セールがあって驚くほどの低価格で受講できるので、是非チェックしてみてください。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. エンジニア未経験の人でも利用できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。お給料をもらいながら社内研修でプログラミングを学べる会社が狙い目です。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!