エンジニアの仕事をしていると、エンジニア以外の友達から自分もプログラミングの勉強をしてみたい、どの言語を勉強するのがおすすめ?と非常によく聞かれます。
そこで先日は私が初心者におすすめするプログラミング言語についてのブログ記事を書きました。
この記事では初心者向けに言語の特徴などを書きましたが、
ではその言語を選んだ根拠は何なのか、もう少しエンジニア視点で初心者のプログラミングスキル習得について考えてみたいと思います。
おすすめする言語の数
上記の記事を書く上で、まず最初に私が思ったこと、
それは巷の「おすすめプログラミング言語」記事は書いてある数が多すぎる!ということです。
ちょっと「おすすめ プログラミング言語」で検索してもすぐに
今話題のプログラミング言語TOP10! 初心者にオススメのプログラミン言語9選!
とか出てきます。
プログラミング言語を全く知らない人が、あれこれプログラミング言語について比べて選ぶことができるでしょうか??
私は正直、おすすめするなら、その人の背景や目的を踏まえて、はっきり1つをすすめるのがベストだと思います。
その理由をいくつか述べます。
結局始める言語は関係ない
プログラミングの勉強を進めて行けばそれぞれの言語の違いとか、使われている分野とかがあるので、玄人は色々語りたくもなりますが、
もし将来プログラミングに興味を持ち、仕事にしたいと思ったならば、そのうち別の言語も勉強することになります。
一つの言語しかできないプログラマーが仕事にありつけるでしょうか??
アセンブリしかできない人がWebデザイナーになれますか?その逆は?
職業としてソフトウェアエンジニアなどを目指そうとすれば、複数の言語を習得することは避けられません。
そもそも、プログラミング言語って様々な概念やタイプはあれど、根本は同じではありませんか?
プログラミング言語のレベルによって、ライブラリが豊富とか、メモリが触れるとか、ビット演算子がとか色々ありますが、でもそういうオプション的な要素を抜けば、やることは同じ、If文やFor文とか、配列とか、そういうことが理解できれば後はそれをどれ組み合わせてどのように目的を実現するか、だけです。
その基礎さえあればどの言語からどの言語でも極端な違いがなければ移行することは簡単です。
プログラミングの勉強で一番大変なのは、一つ目の言語、次が二つ目の言語を習得する時、でもその後は何個覚えようが数十分文法を学べば書けるようになるでしょう。
つまり、プログラミングをこれから始めたい人にとって大切なのは、一つ目の言語ができるようになることです。
だから最初から需要の高いプログラミング言語を学習したり、プログラミングの肝を深く理解する必要はなく、一つ目の学習を完了できるかどうかがポイントです。
だからこれとこれとこれを勉強すると将来の役にたつとか、そんな情報は初心者に不要です。結局何でもいいんだから、自分が好きな中で、一番簡単な言語を一つだけ、紹介すべきです。
初心者が選ぶ言語に必要なこと
初心者のプログラミング言語を習得の実現に大切なことはこの二つだと思います。
簡単に始められる
- 準備が簡単 – 初期投資、インストールするものがどれだけあるか
- 教材が豊富 – 無料の教材があるか、動画や本などがすぐ見つかるか
- 難易度が低い – 難しい概念なしで何を作れるか
続けられる
- モチベーションが保てる – 身近なところで使われているか、話題性があるか
- 需要がある、仕事が見つかる – 習得した後就活などで使えるか
- 開発ストレスが少ない – エラーにどれだけ寛容か、スクリプト型かコンパイル型か
私が書いた記事ではWebプログラミング、特にHTML、CSS、JavaScriptを初心者に勧めました。
上記の三つだけでは今時スキルとしては弱いです。フロントエンジニアでもPHP, SQL, jQuery, Ajax, Webセキュリティ, 通信プロトコル基礎 この辺を理解している必要があるでしょう。
でもエンジニアのあなたにおすすめを聞いている友人達は、そこまで求めているのでしょうか?
そもそも何を目的にしているのか?
これもポイントです。私達エンジニアはつい、将来きちんと身につくプログラミング教育を!と思い、メモリの概念が理解できるC系がいいとかつい熱くなってしまいますが、
おすすめを聞いて今から勉強しようとしている友達が、目的にしていることは、プログラミング体験程度ではないでしょうか。
プログラミングを本当の意味で理解しようとしたら、きちんとフルタイムで、学校に通って勉強するのが一番です。
でもおそらくエンジニアの友達にプログラミングができるようになりたい、おすすめって何?って聞いている人は、全くの初心者で、おそらく今から仕事をやめて大学に行って情報工学を勉強しよう!という人ではないと思います。
そんな人にC系とか勉強させる意味がありますか??
確かに、情報工学科でみっちりコンピューターについて勉強するならば、例えば4年間とか勉強を続けることが約束されているわけですから、時間がかかってもCから始めて…っていうのもいいと思います。
でも初心者は嫌になったらいつでも勉強をやめられるのです!
コンパイル型の方がスクリプト型より処理が速いとかいっても、その差を気にするレベルになるまでその人の勉強は続くほどのモチベーションありますか?
私は初めて勉強する言語は、本当に何でもよくて、ほとんどの人の場合仕事に直結する必要もなくて、とにかくプログラミングができた!という体験に到達するまでの時間が短いものが正解だと思います。
その点では、プログラミングそのものの理解が深くはできなくても、私はWeb系が一番だと思います。
とにかく今すぐ始められる、どのパソコンにも必要なものが入っている、
<html>Hello World</html>
これだけでもメモ帳で書いたコードを、ブラウザで見られるだけで初めてプログラミングする人は感動します。ここまで到達時間一分くらいじゃないですか??
この感動がモチベーションとなり、HTMLからJavaScript、そしてPHPやあるいはPython、もしかしてC++など様々な言語へ広がっていくのではないでしょうか。
だから本当の初心者で、学校に通うほどの情熱をまだ持っていない、プログラミングに興味がある段階の人に、言語の特徴をあーだこーだ言って選ばせるのは無理です。
しかもWebプログラミング言語はエラーに非常に寛容です。エラーがあってもとりあえず何かが表示されます。実行できない、ということが基本的にありません。
その分エラーの発見が難しく、クオリティは他の言語に劣るかもしれません。しかし初心者はクオリティとかパフォーマンスとかは問題にしないのです。
まとめ
とにかく大事なのは
プログラミングをした、という体験とそこまでの到達時間
だと私は思います。
なのですすめるなら絶対にC系は論外、断然Web系です、それもまずHTMLです。
しかもWeb系はその容易さの割に、実際の仕事で使える可能性がないわけではありません。
今時ちょっとメディア系の仕事でHTMLが分かればプラス、なんて求人はたくさんあります。
そういう点でも学習の労力と、結果のバランスが良いのがWeb系だと思います。
プログラミング言語のおすすめを聞いてくる人は、どうやったら凄腕エンジニアになれるかを聞いているわけではない、ということです!
素直に超簡単な言語をオススメしましょう。