プログラミング言語の習得難易度を分類してみた

      2016/12/29

本を読む女の子

「プログラミング言語ってたくさんありすぎて、どれ学んだらいいか選べない…」
「出来れば習得が簡単な言語が良い…」
「就職・転職で評価される言語が良い…」

どのプログラミング言語を学ぼうか考えるのって楽しいですよね?
私もこれまでC/C++, JavaScript/node.js, VB, Java, PHP, Ruby, C#と様々な言語を使ってきました。

ちょびっと触った言語としてPerl, COBOL, PL/SQL, Python, Scala等があります。

Haskell, F#, LISP, Lua, Go等のように入門書は読んだけど、実際使うには至らなかったなんて言語もたくさんあります。

そんな経験を踏まえて、今回はプログラミング言語の習得難易度を分類してみたいと思います。

難易度S(全くものにならず)

Haskell, F#, Lispです。つまりは関数型言語ですね。

入門書を読んで文法を頭に入れてみたものの、これらの言語を使って何か作ろうという気に全くなれませんでした。

というか、どうプログラムを組むかの発想が全く浮かばなかったんです。つまり修得できてないということなんでしょう。

「関数型言語を使ってこういうものを作りたい」っていう具体的な目的がなく、勉強のための勉強になっていたというのもありますが、手続き型やオブジェクト指向のパラダイムに慣れすぎていて、そこから関数型言語の考え方にシフトするのって難しいなと感じています。

難易度A(難しいけど、頑張れば使えた)

C/C++です。低水準な言語という意味での難しさがあります。

私は18歳の時に専門学校に入学してプログラミングを始めたのですが、その時に習ったのがC/C++でした。

「今思えば難しい言語だな」と思います。特にC言語は用意されてる関数が簡素な機能しかなくて、原始的なロジックを自分で組む練習になりました。

JavaやPHPなど、C言語より高水準な言語をたくさん使ってきた今、C言語でコードを書くのはきついなぁと思います。char配列を直接ごにょごにょ扱うロジック書きたくないですからねぇ。

あと、よく言われてる「ポインターが難しい」って話ですが、ポインターってざっくり説明すると他の言語で言う「参照」のことです。

参照ってオブジェクトのアドレスですよね。ポインターもアドレスなんですけど、ポインターの場合、アドレスに加算減算などをして指し示す先を移動させることが出来ます。違いはそれだけなので、知識として理解するのはそこまで難しくありません。

ただ、知識として分かっていても複雑なポインタ演算を使ったコードは「書いた本人以外よく分からん」ってことはよくあります。

難易度B(簡単に見えてしんどい)

JavaScript/node.jsです。意外ですかね?

メジャーな言語の多くは同期IOを基本にしているのに対してJavaScript/node.jsは基本的に非同期IOなので、コールバック関数でIOの結果を受け取る書き方をしなければならない所が厄介です。脳に負荷のかかる言語だと思います。まぁ、修行になっていいかもしれませんけどね。

あとはオブジェクトを定義するのがクラスではなく、プロトタイプによって行う所も特殊です。

メジャーなオブジェクト指向言語はクラス型オブジェクト指向なのに対して、JavaScriptはプロトタイプ型オブジェクト指向なので、他の言語の考え方をそのまま使うことが出来ず、これまた脳に負荷がかかって修行になります。

node.jsをしばらくやった後、PHPやRubyに戻ると、「なんて楽なんだー!同期IOさいこー!クラスさいこー!」って思えたほどです。

難易度C(普通に使える)

Java, C#, PHP, Perl, Python, Rubyです。(その他大抵のメジャー言語もこのランク

「えっ?PHPの方がJavaより簡単でしょ?」って思われたかもしれませんが、大きなくくりとしてPHPとJavaの難易度は変わりません。

これらの言語はクラス型のオブジェクト指向言語ですし、命令型言語です。基本はみんないっしょなので、文法の差異を覚えればすぐ使えるようになります。

命令型言語は

  1. 逐次実行
  2. 分岐
  3. 繰り返し

の3つの要素で出来ているので、これら3つを抑えればどの言語を使えます。

もちろん、その言語らしい書き方が出来るようになるにはそれなりに時間を要しますが、それでも、関数型言語のようなパラダイムの違う言語を覚えるよりはずっと簡単です。

「PHPは簡単、PHPしか使えないプログラマーはバカ」とか言ってる人はPHPを使ったことがないんじゃないかと思います。使ってみれば、言語として持っている機能はほとんど一緒だということが分かるはずだからです。

PHPの標準関数の引数の並び方のポリシーがバラバラだったりするイライラはありますけど、それは言語としての設計の美しさの問題であり、言語の習得難易度とは別の問題です。

ですから「関数型言語を使えないプログラマーはバカ」って言うのなら分かるんですけど、関数型言語を使いこなせるくらい賢い人は、他のプログラマーをバカにする必要がないので、こういう発言はしないのでしょう。

言語を学ぶには仕事で使うのが一番

自分自身を振り返ってみると使えるようになった言語は仕事で使った言語です。

関数型言語のような難しい言語であっても、仕事で使うとなれば、仕事に没頭してるうちに自然と使いこなせるようになるはずです。

なので、もし「この言語学びたいけど、仕事で使う機会がない」という場合はその言語が使える企業に転職するのもいいと思います。

「そんな理由で転職していいの?」って思うかもしれませんが、全然アリだしエンジニアとしてイケてます。

私もC#を使いたくてUnityを独学で覚えてゲームエンジニアに転職したことがあります。毎日が新鮮で仕事が楽しくなりました!使いたい技術を使える仕事をした方が絶対楽しいですし、スキルもぐんぐん上がるので、ぜひチャレンジしてみてください。

転職はやってみると思ってたより簡単!

私自身3回ほど転職してるんですが、思ってたより簡単で、転職エージェントを使ったらあっという間でした。

エージェントが応募先候補の選出から、面接の日程調整までやってくれるので、こちらから動かなくても半分くらい自動的に進む感じで楽でした。しかも今は好景気で売り手市場なので転職するのにちょうど良い時期です。

レバテックキャリアっていうエージェントがおすすめです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

なので、レバテックキャリアのホームページ見てみてください。「ホントだ、美人じゃん♪」ってきっと思うはずです笑

地方在住や、エンジニア未経験の人にも使える転職エージェントがある!

レバテックキャリアは東京・大阪近郊のエンジニア経験者向けサービスなので、地方在住の方や、エンジニアの仕事が未経験の方には、DODAがおすすめです。

未経験の人はサポート対象外のエージェントが多いんですけど、DODAは未経験者の転職も支援してくれます。以前エンジニア未経験の友達にDODAを教えてあげた所、ちゃんと登録できて未経験可の求人を紹介してもらえました。未経験の人こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいくと思います。

DODAは全国に拠点があるので地方在住の方もご利用いただけます。

人脈がなくてもフリーランスになれる!

フリーランスになりたい方にはギークスジョブがおすすめです。人脈がなくてもギークスジョブに登録するだけで案件を紹介してもらえます。案件の希望(どんな技術を使っているか、残業が少ないこと)等も聞いてくれるので、やりたい仕事が出来ます。対象地域は東京・大阪・名古屋・福岡近郊です。

「派遣社員」なら正社員とフリーランスのいいどこ取り!

フリーランスになりたいけど、確定申告とかめんどくさいなという方には派遣社員がおすすめです。派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員ならやりたい仕事を選べて、給料も悪くないですし、確定申告や年金、健康保険も派遣会社が入ってくれるのでいいと思います。私の先輩でフリーランスになった後、派遣社員になった人がいるんですが「自由かつ煩わしい手続きがなくて最高」って言ってました!パーソルテクノロジースタッフに登録するだけで簡単に派遣社員になれます。

私(やまろう)への相談メールも募集中

転職や仕事術、勉強法等について質問や相談がありましたら、以下のメールフォームからぜひご連絡ください。
経験者から見れば簡単に解決できる相談って多いのでお気軽にどうぞ!こう書いてもなかなかメールくれる人って少ないのでホント気軽にメールしてくれると嬉しいです。

メールアドレス (必須)

相談内容

たまに間違ったメールアドレスを入力されていて返信できない場合があります。一週間経っても返信がない場合、メールアドレスを確認の上、再度送信をお願いします。

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはDODAというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『DODA』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

フリーランスになりたい人には『ギークスジョブ』

フリーランスエンジニアになるには人脈が必要と思われがちですが、ギークスジョブに登録して希望条件を伝えれば、自分に合った案件を紹介してもらえるんですよ!思ってるより全然簡単にフリーランスってなれるもんなんです。

東京・大阪・名古屋・福岡の案件を紹介してもらえます。

 - 技術 , ,