ほとんどの人のプログラミング学習の旅は、深夜に行う一回のGoogle検索から始まります。
たいていは「______を学ぶ」といったものです。
しかし、どの言語を検索するかはどうやって決めるのでしょうか?
「シリコンバレーでは、いつも Java のジョークが言われている。私もそれを学ぶべきかな。」
あるいは:
「Haskell。今、すごくホットだ。 Haskell。」
または:
「あの Go のゴーファーは本当に可愛い。」
そして、残りの私たちです。
おそらく「最初に学ぶべきプログラミング言語は何か?」と検索するでしょう。
これほど頻繁に尋ねられる質問は少なく、そのため完全なインフォグラフィックが作成されることもあります。しかし、これはその一つです:
最初のプログラミング言語を決めるのは楽しいプロセスです。まるで「あなたはどのクエンティン・タランティーノのキャラクターですか?」という性格診断のように。
しかし、子供の頃にプレイドーで遊んで楽しかったからといって Ruby を学びに行く前に思い出してください。ここにはかなりのリスクがあります。
最初のプログラミング言語において、ある程度の能力を身につけるためには何百時間もの練習が必要です。
そのため、以下の要因を考慮すべきです:
- その言語の雇用市場
- その言語の長期的な見通し
- その言語の学びやすさ
- 学習中に構築できるプロジェクト(友達と共有できてモチベーションを維持できるもの)
毎年新しいプログラミング言語が登場し、それに伴い新しい学術論文やウェブコミックも増えています。
本当に。先月のこの素晴らしい作品をチェックしてみてください:
最初のプログラミング言語を選ぶ際に選択肢が不足することはありません。少し絞り込むために、過去12年間におけるプログラミング学習に関連する最も一般的なGoogle検索を以下に示します:
Java は浮き沈みがありました。
Python は徐々に最も人気のある選択肢となってきました。
しかし、その下に隠れているのが、ここ数年で人気がじわじわと上昇している JavaScript という小さなエンジンです。
これらのプログラミング言語について話す前に明確にしておきます:
- 私はどの言語が他の言語よりも客観的に優れているとは主張していません
- 開発者は最終的には一つ以上の言語を学ぶべきだと同意します
- まずは一つの言語をしっかり学ぶべきだと主張しています。そして、私の見出しにある逆さまのテキストからも推測できるように、その言語は JavaScript であるべきです。
それでは、現在の学校におけるプログラミング教育の方法を探ってみましょう。
コンピュータサイエンス101
大学は伝統的にプログラミングをコンピュータサイエンスの一環として教えており、これは数学の延長と見なされたり、電気工学の学位に関連付けられることがよくあります。
もちろん、あなたが今までに聞いたことがあるかもしれませんが:
「コンピュータサイエンス教育は、ブラシと顔料を学ぶことが誰かを専門的な画家にする以上のことはできない。」— エリック・S・レイモンド
多くの大学は、プログラミングをコンピュータサイエンスとして、コンピュータサイエンスを数学として扱っています。
その結果、多くの入門プログラミングコースは C のような低水準の抽象度の言語や、数学に焦点を当てた MATLAB のような言語に集中しています。
そして、学科の長が一般的に方向性を維持し、毎年のプログラミング言語のリーダーボードを指摘します。例えば TIOBEインデックス や、こちらの IEEE のものです:
これらのリーダーボードのほとんどは、10年前とほぼ同じように見えます。
しかし、変化は確かに起こります。学術の世界でも。
2014年、PythonはJavaを追い越して、アメリカのトップのコンピュータサイエンスプログラムにおける最も人気のある教育言語となりました。
そして、また別の変化が…最終的には…起こるに違いありません。
実際に労働力で使用されている言語を見てみると、全く異なる状況が描かれます:
JavaScriptは、Stack Overflowの調査に回答した49,397人の開発者が使用している中で、圧倒的に最も人気のある言語です。
すべての開発者の半数以上がJavaScriptを使用しています。これはフロントエンドのウェブ開発に不可欠であり、バックエンド開発にもますます関連性を持っています。また、ゲーム開発やモノのインターネットなどの分野にも急速に拡大しています。
求人情報でも、Java以外のプログラミング言語よりもJavaScriptが多く言及されています:
世界最大の求人情報集約サイト[Indeed.com]のデータ
私たちがオープンソースコミュニティのカリキュラムをJavaScriptに基づいて構築したのは偶然ではありません。過去2年間で、5,000人以上がFree Code Campを利用して初めての開発者の仕事を得ています。
私はJavaScriptを教えているから推奨しているわけではありません。初めての開発者の仕事を得るための確実な道だからJavaScriptを教えているのです。
しかし、JavaScriptはあなたに合っていますか?初めてのプログラミング言語として価値がありますか?先ほど述べた要因を探ってみましょう。
要因 #1: 労働市場
もしプログラミングを純粋に知的好奇心から学んでいるのであれば、この要因はスキップしても構いません。しかし、プログラミングを学ぼうとしている大多数の人々のように、このスキルを使って仕事を得たいのであれば、これは重要な考慮事項です。
先ほど述べたように、Javaは他のプログラミング言語よりも多くの求人情報で言及されています。JavaScriptはそれに次ぐ人気です。
しかし、JavaScriptについて知っておくべきことは、20年間存在しているにもかかわらず、最近になってようやくNetflix、Walmart、PayPalのような企業が全体のアプリケーションを構築するための真剣なツールとなったということです。
その結果、多くの企業がJavaScript開発者を雇っていますが、求人市場にはそれほど多くの開発者がいません。
[Indeed.com]のデータ
Javaのポジションごとに2.7人のJava開発者が競い合っています。PHPやiOSの仕事の競争も同様に熾烈です。
しかし、JavaScriptのポジションごとにはわずか0.6人のJavaScript開発者しかいません。JavaScriptスキルを持つ開発者にとっては、非常に売り手市場です。
要因 #2: 長期的な展望
平均的なJavaScriptプロジェクトは、平均的なJava、Python、またはRubyプロジェクトの2倍のプルリクエストを受け取ります。その上、JavaScriptは他の人気のある言語よりも早く成長しています。
GitHubプロジェクトで最も広く使用されているプログラミング言語は、全体の言語人気の良い指標です。
JavaScriptのエコシステムは、Google、Microsoft、Facebook、Netflixのような企業からの多大な資金とエンジニアリングの才能の投資によっても恩恵を受けています。
例えば、TypeScript(JavaScriptの静的型付けスーパーセット)は、100人以上のオープンソースの貢献者がいます。その多くはMicrosoftやGoogleの従業員で、彼らはこのプロジェクトに取り組むための報酬を受け取っています。
この種の企業間協力はJavaでは見つけるのが難しいです。Oracleは、Sun Microsystemsを買収したことで実質的にJavaを所有しており、Javaを拡張しようとする企業を頻繁に訴えています。
要因 #3: 学習の難しさ
これは[XKCDコミック]のパロディです。
ほとんどのプログラマーは、高水準のスクリプト言語は比較的学びやすいことに同意するでしょう。JavaScriptは、PythonやRubyと同様にこのカテゴリに入ります。
大学では依然としてJavaやC++のような言語が第一言語として教えられていますが、これらは学ぶのがかなり難しいです。
要因 #4: それを使って構築できるプロジェクト
ここがJavaScriptが本当に輝くところです。JavaScriptはブラウザを持つ任意のデバイス上で動作し、ブラウザ内で実行されます。JavaScriptを使って基本的に何でも構築でき、どこでも共有できます。
JavaScriptの普及に伴い、Stack Overflowの共同創設者であるJeff Atwoodは、彼の今や有名な法則を提唱しました:
「JavaScriptで書けるアプリケーションは、最終的にはJavaScriptで書かれる。」
そして、月日が経つにつれて、Atwoodの法則は依然として強固です。
Javaもまた、どこでも動作することを約束していました。あなたはJava Appletsを覚えているかもしれません。Oracleは今年初めにそれらを公式に廃止しました。
Pythonも同様の問題を抱えています:
「私が作ったこのゲームを友人にどうやって渡せるのでしょうか?さらに良いことに、彼らがインストールすることなく、学校で子供たちに見せるために、これを私の電話に入れる方法はありますか?うーん。」 — James HagueによるRetiring Python as a Teaching Language
対照的に、こちらは私たちのオープンソースコミュニティのメンバーがCodePenのブラウザ上で作成したアプリです。これをクリックして、ブラウザ内で直接使用できます:
スター・ウォーズテーマのウィキペディア検索
一つの言語をしっかり学び、その後に二つ目を学びましょう。
言語を次々と飛び移っていると、あまり進展しません。
基本を超えるためには、最初の言語をしっかり学ぶ必要があります。そうすれば、二つ目の言語はずっと簡単になります。
そこからさらに、さまざまな言語を学ぶことで、より幅広いスキルを持った開発者になることができます:
- Cは、メモリ管理の観点からコンピュータが実際にどのように動作するかを学ぶのに最適であり、高性能コンピューティングにも役立ちます。
- C++はゲーム開発に非常に適しています。
- Pythonは科学や統計に素晴らしいです。
- Javaは大手テクノロジー企業で働きたいなら重要です。
しかし、まずJavaScriptを学びましょう。
さて、私は不可能に挑戦しようとしています — コメントセクションからの反論を予測しようとしています。
反論 #1: でもJavaScriptは遅くないですか?
JavaScriptは — 実用的な目的においては — 高性能言語と同じくらい速いです。
JavaScript(Node.js)はPython、Ruby、PHPよりもはるかに速いです。
また、C++、Java、Goなどの高性能言語とほぼ同じくらいの速さです。
以下は、最近の包括的なクロスランゲージベンチマークの結果です:
反論 #2: でもJavaScriptは静的型付けではないです。
PythonやRubyと同様に、JavaScriptは動的型付けであり、便利です。しかし、トラブルに巻き込まれることもあります。ここではexampleArray
を配列として扱います。値を設定し、その長さを確認します — つまり、含まれる要素の数を意味します。
exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2
しかし、その後、うっかり文字列に割り当ててしまいました。
exampleArray = “text”
-> “text”
exampleArray.length
-> 4
このようなエラーは動的型付けの言語では頻繁に発生します。ほとんどの開発者は、エラーを防ぐためにチェックを行い、それに応じたテストを書きます。
最初のプログラミング言語に静的型付けがどうしても必要な場合でも、まずJavaScriptを学ぶことをお勧めします。その後、TypeScriptをすぐに習得できます。
「TypeScriptは学習曲線がありますが、すでにJavaScriptを知っているなら、スムーズに学べるでしょう。」 — Alex EwerlöfによるTypeScriptについて
反論 #3: でも私は本当にモバイルアプリを作りたいのです。
やはり、まずJavaScriptを学ぶことをお勧めします。
- JavaScriptには、ネイティブモバイルアプリを作成するためのさまざまなツールがあり、例えば Angular Cordova や React Native があります。
- モバイルアプリが実際に興味深いことを行うためには、適切なバックエンドが必要で、これを構築するには Node.js + Express.js などの適切なウェブ開発フレームワークを使用することをお勧めします。
また、モバイルアプリ開発の最も良い時代は過去のものかもしれないことも指摘しておく価値があります。
まず、モバイルアプリがどれほど使われているかに関わらず、開発者の仕事のほぼ半分はウェブ開発で占められています。これに対し、モバイルアプリ開発に関連する仕事はわずか8%です。
2023年のStack Overflow調査による職業別開発者の分布。この質問には76,872件の開発者からの回答があり、非常に代表的です。
新しいアプリのダウンロードをやめてしまったのです。
もちろん、彼らはまだアプリを使用しています。主に Facebook、Google Maps、その他少数のアプリです。そのため、モバイルアプリ開発者に対する需要の多くは、数社の大手雇用主に集中しています。
モバイル開発職の展望は予測が難しいです。モバイルアプリの開発、維持、配布に関する多くの側面は、JavaScriptで行う方が容易です。このため、FacebookやGoogleのような企業は、JavaScriptを使用してこれを構築するためのより良いツールに多額の投資をしています。
ほぼすべての開発はウェブ開発です。すべてが「ウェブ」という大きなプラットフォームに関わっています。そして、あなたの家の周りで話しかけるデバイスや、子供を学校から迎えに行く車など、次なる波のデバイスもすべてウェブを通じて接続されるでしょう。
つまり、それは JavaScript を意味します。
反論 #4: JavaScriptは10日間で書かれたおもちゃのような言語ではないか?
JavaScriptには奇妙な歴史があります。
あなたは間違いなく、人々がそれを揶揄するのを耳にするでしょう。
実際、C++も多くの人に嫌われています。しかし、JavaScriptと同様に、C++もこの嫌悪感にもかかわらず成功し、今やほぼどこにでも存在しています。
したがって、もし誰かがエリートな言語の代わりにJavaScriptを学ぶことであなたを非難するようなことがあれば、C++を作った人物の有名な言葉を思い出してください:
「プログラミング言語には2種類しかない:人々が常に文句を言うものと、誰も使わないもの。」 — Bjarne Stroustrup
私はプログラミングとテクノロジーについてのみ書いています。もしあなたが 私をTwitterでフォローしてくれれば あなたの時間を無駄にすることはありません。?
この記事の内容は原文から翻訳されました。