最近のプログラミングブームに便乗し、プログラミング言語について色々調べたので書いておきます。
僕はエンジニアになる気はありませんが新しい技術や研究が好きな科学ファンとして、今まで無頓着だったWeb系の世界を体験したいと思いました。
以下、プログラミング開始までのステップです。
まず僕が最初にやったことは、、、WindowsからMacbook Airに変えたことです。仲の良い友達にプログラミングを始めたことを話すと、Macに変えた方が書きやすいと聞きました。今までパソコンに興味がなかったため家にあったWindowsのパソコンを使っていましたが、貯金を切り崩しMacを買いました。MacはWindowsよりも起動がとても早いため、理由もないのにパソコンを開きたくなり習慣になりました。キーボードも打ちやすいし、画面もきれい。最高です。Macファンになりました。
プログラミングとは何か調べもせずに本屋に行き、本棚の一番真ん中に置いてあったPythonの入門書を買いました。ターミナルを起動し、AtomとPythonをインストール。初めてHello worldや四則演算とかやってると、プログラミングってこんだけ?って感じでした。まあ、段々難しくて意味わからなくなるのですが。関数?オブジェクト指向?意味わからん。ってなりました笑。
結局僕が買った本では基礎はわかっても何もできないことがわかりました。そして、まだプログラミングで何ができるか全くわからないまま基礎を学んでいました。とりあえずパソコンで何かできるんだろくらいな気持ちです。
まともに調べもせずに最初から本を買ったことが、お金の無駄遣いでした。先にネットで調べた方が効率良いです。色々調べた結果、無難ですがProgateやっとけばよかったです。Progateは色々な種類のプログラミング言語の練習ができるサイトです。そもそもたくさんのプログラミング言語があることを全く知らなかった僕にとって、ちょうど良いサイトでした。
僕は1ヶ月だけ有料会員(月額1000円)になりました。PHP以外簡単に触ってみましたが(なぜphpを除いたか理由は特になく、全部試すのが面倒だったため)、一番しっくりきたのがGo言語でした。Goは誕生が2008年ですが、2,3年前から日本で徐々に使われ始めた言語みたいですね。大規模な開発やクラウドサービスと親和性が高いですから、今後需要が増えてくると思います。
Goを選んだ理由は以下2つです。
1.型付けがしっかりしているので、あいまいな表現をしなくて良いこと。
Goは静的型付け言語ですので、型の指定について厳格です。厳格というのはいい意味です。変数の型があいまいのまま実行されないので、コードを打っていてモヤモヤする気がありませんでした。また、GoはPythonよりエラー文が詳細に表示されるのでつまづいた部分がはっきりわかってストレス少なめです。
2.面倒な環境構築をせずに済む。
最初にPythonの環境構築をするときは本当に意味不明でした。理由があります。最近のAIブームから、教材に機械学習の分野があったためです。入門書通りにターミナルに打ち込んでもエラーが出る。例えばpip,numpyを頑張ってインストールする。そして、python3.0をインストールするためにpyenvのインストール。Anacondaの環境設定、、、。Tensorflowどうやって入れるんだ??あーーーガチでわからん。てなりました。たとえwebアプリを作るためにもDjangoをインストールするためにpipだったり、anaconda内のspyderを使って実装すると考えると、めんどい。
結果的にはなんとか環境構築しましたが、そこから始める前にPythonはやめました。
その点、Goは環境構築をしません。僕は簡単なWebアプリが作れば満足するので、標準ライブラリ(Goのインストール時、初期に搭載されているパッケージ)で作れます。最初からこっちを選べばよかったです。サードパーティのパッケージを使うのであれば、GoDocから
go get [パッケージ名]
でインストールできるので楽です。
Goはフレームワークを使うイメージがないですが、ginを使ってこんなこともできます↓。
3.Goで苦戦していること
逆に困ったことはというと、基礎として取り上げられるゴルーチンの使い方がわからないことです。並行処理って何で使うの??となってます。これは僕の理解度の問題なので、調べたり参考書でカバーできます。
僕は流行に乗ってプログラミングを始め、初期は目標がないまま基礎だけやっていました。現在、とりあえず簡単なwebアプリを実装することを目標に頑張ります。公式サイトの以下のサイトを参考にしたり、ネット上に情報が転がっているので資料はそろってます。
本当はjavascriptやRubyなど色々な言語に深く触れた方が良いと思いますが、面倒なので当分はGoだけやって情報発信します。