始めに
こんにちは〜まんじです!
今回はPythonとJavaScriptどっちをやるべきか理論みたいなのを書きたいと思います。
結論から書いてしまうと、「何をしたいか」によるものの、、、
人によって見解はちょっと違いそうですけど、大体こんな感じの結論になるかと思います。
- フロントエンドエンジニアをしたい: JavaScript
- バックエンドエンジニアをしたい: どっちでもOK
- フルスタックエンジニアになりたい: JavaScript1個でOK
- ↑JavaScriptから入門してTypeScriptをやることにはなりがち
- データサイエンティストをしたい: Python
- 機械学習をしたい: Python
- プログラミング入門: どっちでもOK(Pythonのが分かりやすいけど)
すっごくざっくりと書くなら、JavaScriptとPythonだけの比較に限って言うと、、、
- データ系とか機械学習系とかバックエンドメイン ⇒ Python
- ウェブ系でフロントエンドメイン ⇒ JavaScript
- フルスタック系 ⇒ JavaScript
- プログラミング入門 ⇒ どっちでもOK
って選び方がいいんじゃね?とぼくは思ってます。
そんなわけで今回はPythonとJavaScriptをいろいろ比較やらもしつつ書いてみたいと思います。
データか機械学習系(AI)とかじゃないなら個人的にはJavaScriptでいいんじゃないかなとは思うところです。
Pythonのほうが入門はしやすいですけど、ウェブ開発のバックエンドもフロントエンドもできるってなると、JavaScriptが勝つる。
「向いていること」で比較
Pythonが向いていること
こんな感じのやつらがPythonには向いてます。
- プログラミング入門
- バックエンドの開発
- APIや、データベース周り
- スクレイピング
- データ分析(データサイエンティスト)
- 機械学習(AI)
データ系とかバックエンドメインでやりたい場合にはJavaScriptよりもPythonのが良いカナーって思ってます。
バックエンドはJavaScriptでも書けるんですけど、データサイエンスとか機械学習系に関してはPython1択です。
あと個人的にはプログラミング入門とスクレイピングはPythonがJavaScriptよりもやりやすいと思ってます。
PythonのほうがJavaScriptよりもデータ操作系の処理が文法的にも楽ですし、非同期処理(Promise)とかも入って来なかったりするので、Pythonのが入門しやすいしスクレイピングとかも楽。特に最初ゎ楽。
JavaScriptで該当するconstとかletとかの変数スコープもPythonのがゆるいので、入門の時は楽に書いていけます。
JavaScriptが向いていること
- プログラミング入門…?(Pythonより少し難しい気がする)
- フロントエンドの開発(JSのメインはフロントエンド)
- バックエンドの開発
主にフロントエンド開発で使われるのでフロントエンドをメインにやっていきたい人はJavaScriptをメインにやると良いんじゃないかなって思ってます。
ただ、JavaScriptはNode.jsって言うやつ(JavaScriptの文法)でバックエンド開発もできるのでウェブ開発メインでやっていきたいならJavaScriptのほうがPythonよりもいろいろとコスパはいい気がします。
Pythonでウェブアプリケーションも作れるんですけど、どっちみちフロントエンドにはJavaScriptが登場してきます。
フロントエンドはhtmlとcssだけでもいけなくはないんですが、ちょっとした動的な動きとか(ボタンをクリックしたら上にスクロールされるなど)にはJavaScriptが必須です。
あと最近だとJavaScriptをそのまんま書くよりも、Reactとかを使ってJavaScriptを書くケースが多いです。
ぼくはフリーランスでJavaScript(TypeScript)をメインの言語としてフロントエンドをReact、バックエンドをTypeScriptでやっていますが、ウェブアプリ系ならJavaScriptだけに集中するのはコスパが良いと思ってます。
というのも、JavaScriptできればバックエンドもフロントエンドもいけるからです。
(JavaScriptがある程度書ければPythonを書くのはわりと簡単です。)
ちなみにTypeScriptはJavaScriptに型がついてる言語で、イマドキはJavaScriptをやる=TypeScriptをやるって感じになります。
一応JavaScriptとTypeScriptの比較も記事にしてるのでよければ..🙄
学習コストの違い
言語自体の学習コスト
正直どっちも変わらない(入門の学習コストは低い)気がしますが、Pythonのほうが入門はしやすいです。
JavaScriptの場合、非同期処理とコールバック関数と関数型の処理らへんがデフォルトで出てくるのが、そこが入門時は若干つらいです。
- 関数型の処理の具体例(JavaScript)
someArray.filter(s => !!s)
someArray.map(s => s.name)
someArray.every(s => !!s.isDeleted)
- Promiseの具体例(JavaScript)
- そのまんまコピペしても動かないよ!
const promiseProcess = async () => {~~~}
await promiseProcess();
- コールバック関数
const func = (callback) => {callback();}
func(() => console.log("call callback"))
こういうちょっとだけ最初は複雑に感じる書き方がJavaScriptだとすぐ出てきます。
一方でPythonとかだと、そういうちょっと理解するのに時間がかかるような文法が出現せずに同じような処理ができます。
でも、、、そこまで大きな違いはないかなって印象です。
ちなみに関数型の書き方(mapとか無名関数のlambdaみたいなやつ)はPythonにもあります。
中級者以降ぐらい(歴1~2年のエンジニアレベル?)になると、文法とかはほぼ同じように見えてきます。
本当に上級者になると違く見えるのかもしれませんけど。。。
ただ、JavaScriptよりもPythonのほうがノリで動かせるので入門には楽ですし、自分もPythonから始めてます。
トータルの学習コストで見ると、言語自体ではどっちもそこまで大きくは変わらないと思いますが、、、。
フレームワークなど含めた場合の学習コスト
フロントエンドとバックエンド両方やるのか、それともバックエンドだけなのかなどによってケースバイケースです。
バックエンドだけの場合でもJavaScriptよりもPythonのほうが多少学習コストは低めな気もしますけど、ぶっちゃけ誤差かなとは思います。
JavaScript使ってフロントエンドもバックエンドもやる場合は当然JavaScriptのが学習コストは高くなります。
(Pythonでフロントエンドはほぼないので必然的にバックエンドメインになる。)
年収の違い(?)
プログラミング言語別の年収が比較されてグラフで表示されることも多いんですが、あれは正直当てにならなくて、PythonとJavaScriptに関して言うと違いはほとんどないカナーって印象です。
ちなみに年収が言語ごとに結構違うカラクリとしては、その言語を使ってる会社の特性のようなものが大きいと思います。
例えば、Pythonが一般的に高い給与みたく言われているのは、単純にPythonを使うような会社の給料が高い傾向にある(Pythonはイマドキだから)ってだけでPythonの言語を選んでやったからって理由にはほぼなりません。
たまに「Pythonをやったら〜とか、Goをやったら〜とか」をネットで見ますが、どの言語をやるかでは年収は変わらなくて、どういう会社でどういうことをするかとかのが年収を上げる場合においては重要です。
もちろん、VBAとかは除きます。
単純にウェブアプリケーションのサーバーサイド開発みたいなくくりであれば、JavaでSpringしててもPythonでDjangoでもTypeScript(JavaScript)でExpressやNest.jsでも変わらないって感じです。
なので、年収とかはどっちの言語選んだからって変わりません。
特にPythonとJavaScriptだとどっちもモダンなので、なお変わらないです。
フリーランス案件的な側面
(3ヶ月ではなれない)
フリーランスの案件に関しては、PythonはバックエンドだけなのとそもそもPythonを使ってる会社がJavaScriptに比べると案件自体が少なめです。
JavaScriptに関してはReactなどのフロントエンドフレームワーク(厳密にはライブラリ)とセットになりますけど、言語だけでみるとバックエンドもフロントエンドも案件があるので案件数が多いです。
厳密にはReact*TypeScript(JavaScriptに型がついた言語)か、サーバーサイドをJavaScriptで書く仕事のどっちかになるんですけど、その両方がJavaScriptだとあるので案件数が多いって感じ。
あと最近だとどの会社もフロントエンドは分けていて、JavaScript(TypeScript)はフロントエンドでほぼ必ず使われてます。
なので、JavaScriptをメインにやるほうがフリーランス案件は見つかりやすいです。
年収というか案件の単価とかはほぼ同じで、言語による違いとかはほぼない。
主観: Python VS JavaScript
Python VS JavaScriptの個人的な主観も書いてみたいと思います。
プログラミング未経験からフロントエンドメインのアプリケーションレイヤーのフリーランスエンジニアをしているので、あまりにも的外れなことは言ってないと思います。
Pythonを選んだほうがいい人
- プログラミング入門者(JavaScriptでもいいけど…)
- データサイエンスやる人
- 機械学習やる人
- バックエンドエンジニア(インフラ含む)をメインにやりたい人
- スクレイピングに使いたい人
JavaScriptを選んだ方がいい人
- ウェブエンジニアのフロントエンドメインにやりたい人
- フルスタックエンジニアっぽい感じを目指す人
- アプリケーションサイドのウェブエンジニアをやろうと思ってる人
- フロントエンドとバックエンドメインなタイプ
- 個人開発で稼ぎたい人(個人開発したい人)
- フロントエンドもバックエンドもいけるので
ワイが歩んだルート
Pythonでスクレイピングとかポートフォリオっぽいウェブアプリ作って、実務入ってからはJavaScriptメインになってそこからずっとJavaScript(TypeScript)だけ使ってます。
Pythonは使えるけれど、特に必要ないので全部TypeScriptで書いてます。
スクレイピングしまくってた時とかにはPythonを登場させましたけど、それ以外はPythonは使ってないです。
ただ、、、コーディング試験はPythonが便利というか書きやすいので、Pythonで書いてました。
普段はTypeScriptばかり使っていますが、スクレイピングとかコーディング試験とかのゴリゴリにデータ操作が必要な時はPythonのほうが楽ダナーって印象です。
まとめ
データサイエンスとか機械学習とかバックエンドメインの人はPythonでOKで、ウェブ系のフロントエンドメインかフルスタックにやりたいならJavaScriptでOKカナーって思います。
正直どっちでもいいというよりかは、どっちも良いと思います。
自分はPythonでプログラミング入門してポートフォリオ作ってからは、結局TypeScript(JavaScriptに型がついてるやつ)で仕事とか開発系はほぼ全部やっています。
JavaScriptはフロントエンドもバックエンドも書けるので、シンプルに便利だし、ほとんどの会社で使われてるしなんていうか1個やっちゃえばすごい便利な言語です。
Pythonはとにかくノリで動くし、最初から難しい文法とか概念がないので、とにかく入門しやすいという感じです。
ってことで終わりなので、よければ他もぜひ!