お久しぶりです。積分定数です。
今日は、現役エンジニアである僕がプログラミングのあれこれについて書いていこうと思います。
Rubyは日本発の言語ということもあり、国内スタートアップベンチャーはほとんどがRubyを採用している印象があります。そして何よりRubyのwebフレームワークであるRuby on Railsがあまりにも強力です。Railsと言うだけあって、レールに沿った開発が超得意です。レールから逸れると地獄らしいですが、逸れたことがないのでよくわかりません。
よくいろんな記事で「Rubyは終わった」などと見かけますが、終わりません。終わったと言われ続けてもう何年経つでしょうか。きっと来年もオワコン呼ばわりされて生き残ります。Railsが有る限り不滅の言語と言っても良いかもしれません。webフレームワークにおいてRailsに勝るものは僕の知る限りではないです。
そんなRailsを学びたい方はぜひRailsチュートリアルをやってみてください。Railsを使って実際にTwitterのようなサービスが作れます。HTMLとCSSも学べます。書いてあることをコピペすれば必ずできるのですが、意外とつまづきます。ぶっちゃけ難易度めちゃ高いです。ですが、もしこれを完遂できればRailsエンジニアとして一生食っていけます(知らんけど)。あと当然日本語文献が多いのもメリットです。
昨今のAI人気により人気沸騰中の言語。「AIといえばPython、PythonといえばAI!」と言わんばかりの人気ですな。別にAIってPythonの専売特許ではないんですけどね?
まあでも確かにめっちゃ便利なんです。文法も簡単だし、数値計算ライブラリの豊富さも段違いです。試しに大学入試数学をPythonで解いてみましたがちゃんとできましたね。グラフの描画もできちゃうのでびっくりです。
ちなみにPythonにもDjango(ジャンゴ)っていうwebフレームワークがあります。機械学習でPython使うからバックエンドもPythonにしよー的なノリだと思いますが、「機械学習のためだけにRailsの開発効率を捨てるってどうなんだろう?機械学習の結果をAPI経由でRailsに渡せばよくね?」って思ってしまいます。Pythonしか使ったことがない(でもPythonめちゃできる)人とか、日本語読めないって人ならわかりますけどね。正直Pythonって数値計算以外であんまり取り柄ないですからね(数値計算は間違いなく最強)。
今時のwebサービスにおいて、JSが使われてないものはないでしょう。React.js、Vue.js、Angular.jsと言ったイマドキのフロント開発にも使われている言語です。そしてなんとReactNativeを使えばスマホアプリも作れちゃいます!(ちょっと癖あるけど)
そんでnode.jsの登場によってバックエンドもJSで書けるようになりました。あまり流行ってるとは言い難いですが、JSだけでフロントもバックエンドもできるのは良いですね。
Railsが日本で普及するまではweb開発といえばPHPって感じだったのかな?2000年代のweb系企業(Yahoo!とかオープンワークとか)がPHPを採用している印象が強いです。ですが、周りにペチパー(PHPエンジニアのこと)がいないためか、PHPについての良い噂を聞いたことがなく、昔読んだ記事では「最悪の言語」とか「補助輪のない三輪車」とかボロクソに書かれていました。
そんなPHPですが、Laravelという非常に優秀なフレームワークが存在します。Stack Overflowの質問数でも他のPHPのwebフレームワークがシェアを落とす中、Laravelはシェアを上げているというほど人気なようです。
先に紹介したRails、Django、Laravelと合わせて3大webフレームワークと言われおり、Githubのスター数では3つの中で一番多いようです。
何やら可愛らしい名前の言語が出てきましたね。しかしこのJulia、可愛らしい名前からは想像もつかないほどスゲー言語なのです。
Juliaは2012年にリリースされた比較的新しい言語です。開発者は欲深いおじさんです。このおじさん、本当に欲張りなことに「C言語並みに速く、Rubyのように動的で、Pythonのように汎用的に...etc」とか言い出したんです。基本的にこういった機能はトレードオフです。実行速度が早いけど冗長なコード、動的だけどバグが起きやすい、数値計算は得意だけど実行速度が遅いって感じですね。
この、言語特有の一長一短な機能を全部盛り込んじゃったのがJuliaなのです。汎用的にも使えるし、高度な数値計算もできるし、動的に扱える…スゲー!!実際に使ってみましたが凄い!エンジニアの言葉にならない不満を見事に解決してくれたような言語です!
これから少しずついろんな分野でシェアを獲得していくんじゃね?って思わせられるような言語でした。
プログラミング初学者にとって一番の難関かもしれません。どうやって勉強するのかわからん。で、エンジニアに聞くと「本読め」とか「ネットで調べろ」って言われて心折れますよね。
なので僕からは競技プログラミングをお勧めしたいと思います。いろんな競プロがありますがAtCoderがオヌヌメです。で、AtCoderでもいろんなコンテストが開催されていますが、最初はAtCoder Beginner Contest(ABC)をやれば良いと思います。問題もA, B, C, D, E, Fにランク分けされており、A, Bは比較的簡単なのですがCから急に難易度が上がります。
さらに実際にコンテストに参加すると、ユーザーのレベルに応じて色が振られます。一番下が灰色で、一番上は赤です。自己紹介で「赤コーダーです」と言えばみんな土下座をして命乞いしてきます。ちなみに青コーダーあたりからつよつよエンジニア認定されがちです(僕は水色です…)。
問題形式だと楽しくプログラミングと向き合えるので初学者の方には取り掛かりやすいと思います。わからない問題に出会ったら本を読むかネットで調べてください!