Go言語は難しい?スキルチェンジしたエンジニアに聞いてみた
19/02/17 22:36:20 19/05/21 16:18:22
Go言語が特別難しいという声は聞きませんが、やはりプログラミング言語はそれぞれ特徴があります。Go言語に対して利便性を感じている人もいれば、逆にデメリットを多く感じている人もいます。
そこでこのページでは、Javaなど他の言語経験者がGo言語を経験した場合の感想などをまとめていきます。
目次
Go言語はコンパイルがスムーズ
たとえばJavaはいったん中間言語を挟んで機械語にコンパイルされますが、Go言語の場合直接機械語にコンパイルされます。OSに依存しませんが、仮想マシンがあるわけでもありません。
各OS上で流動的に対応するので、中間言語がないだけでなくエンジニアの手間も少ないです。
シンプルで選択肢が少ない
Go言語はシンプルで、ソースコードの可読性が高いです。コードを複雑にできない仕様になっているので、誰が書いたコードでもパッと見でわかりやすいケースが多いでしょう。ただし可読性が高い仕様である分コードの選択肢は少ないです。
繰り返しのコードはfor文しかないなど他のプログラミング言語に比べると明らかにコードの種類が少ないです。せめてwhile文くらいは使いたいという声が当然出てくるので、賛否両論あるということです。
この例だとfor文に統一される分属人性を排除して可読性を上げることができますが、明らかにwhile文を使った方が効率的なロジックであってもfor文で非効率なコードを書くことになります。
Go言語は上で説明した通り仕様がシンプルです。そのため基本的なロジックを作るのは比較的簡単なのですが、必要なコードが足りていないのである意味難しくなる場合があります。
他のプログラミング言語ならこの実装をするけれど、Go言語にはそれに対応するコードがない、といったことも起こります。Go言語のプログラミングが他のプログラミング言語に比べて簡単なのか難しいのかは一概に言えませんが、ソースコードがシンプルという意味合いでは簡単です。
逆にいろいろなコードがあってロジックを作りやすいかどうかということでは、コードの種類が少ないので作りにくいということになります。
メモリの使い方が効率的
Go言語は不要になったメモリ領域の解放、並行処理の実現、といった点で優れています。
それぞれガベージコレクション、Goroutine、といった名称で呼ばれますが、特にガベージコレクションについてはなんとなく聞き覚えはあるかもしれません。
静的型付け言語に慣れない人は扱いにくい
Go言語は静的型付け言語ですが、動的型付け言語の経験しかない方にとっては特にオブジェクト生成で扱いにくさを感じるかもしれません。静的型付け言語と動的型付け言語の違いを簡単に説明すると、まず静的型付け言語はコンパイル時にソースコードが正しいかどうかを精査します。
逆に動的型付け言語はプログラムの実行時にソースコードが正しいかどうかを精査します。具体的な言語としては、Java、C、C#、VB.netなどは静的型付け言語です。逆にJavaScript、Python、Rubyなどは動的型付け言語です。
静的型付け言語と動的型付け言語では内部の動きがまったく異なりますが、プログラマーから見るとそこまで大きな違いはありません。大きな違いがあるとすればオブジェクトの宣言時で、静的言語は内部の型まで言及して宣言する必要があります。
静的型付け言語と動的型付け言語の違いを細かく考える必要はないのですが、このような違いがあるということでした。
標準パッケージが多い
Go言語は上で解説した通りコードがシンプルで、一長一短です。コードが少ないしでコードが遠回りになってしまうこともあるでしょう。それを補うかのように、標準パッケージが充実しています。
エディタやツールを拡張できるプラグインも充実していますが、多すぎてどれをどう使えば良いかわからない、といった難しさを感じる人もいるかもしれません。コードは種類が少ない分迷うことが他のプログラミング言語よりも少ないですが、逆にパッケージについては他の言語より多い分どれをどう使うか迷うことがあるかもしれません。
継承がない
Go言語には継承の概念がありません。なので、同じ静的型付け言語であるJavaなどになれている人でも扱いにくさを感じる可能性があります。Javaだと継承は基本概念で頻出のものですが、これを使えないというのはさすがに必要機能を削除しすぎているように思えます。
こういった点から、Go言語はプログラミング言語に必要な機能を満たしていない、と言う人もいます。
例外処理もない
継承同様、Go言語には例外処理の機能もありません。エラー処理に近い実装を行うことも可能ですが、他のプログラミング言語のように各コードに当然のように含まれているわけではありません。
さすがに例外処理は必要だと考えるプログラマーもいるはずで、例外処理の実装機能を削る必要はあるのか、という疑問が残ります。
需要は右肩上がり
2018年にビズリーチが公表したデータではGo言語は全プログラミング言語中平均年収が第一位で、案件数も右肩上がりに伸びています。そして今後も継続的に需要が増加すると予測されています。
これまで紹介してきた通りGo言語は一長一短なのですが、日本国内でもかなりのニーズがあるということです。Go言語のメリット・デメリットは複数あるものの、簡単にまとめるとシンプルさがGo言語最大のメリットで、逆に機能がなくなりすぎていることが最大のデメリットでしょう。
そして結果的にGo言語の需要は伸びているので、時代がシンプルさを求めていることがわかります。プログラミング言語に限らずエコ、手軽、無駄がない、といったことが求められる時代なので、Go言語はある意味時代に合ったプログラミング言語なのかもしれません。
Go言語はGoogleが開発した言語ですが、検索エンジンから膨大なデータを得ているだけあってユーザーニーズを捉えた言語仕様になっているのかもしれませんね。他のプログラミング言語には当然備わっている必要な機能までカットするのはかなり大胆な仕様ですが、コーディングの量を最小限にするという目的も含まれているのかもしれません。
昔と比べるとライブラリやツールもどんどん充実していて、プログラミングのAI化が進めばますます人間がコーディングする部分は少なくなります。Go言語はべた書きに必要な最小限のコードを残して、後はライブラリやツールに任せる、という意図も含まれているのかもしれません。
Go言語の扱い方
以上Go言語について解説してきました。Go言語はシンプルイズベストな言語で、複雑な作りこみを行う際にはべた書きするのではなくライブラリやツールを最大限活用するのがおすすめです。
そうすることによって、シンプルなコードで高度な機能を作ることができます。今後もGo言語の需要は増加すると考えられ、周辺ツールを使いこなすという考え方はより重要になるでしょう。
他の言語から移行だとGo言語は簡単なような難しいような感じですが、コードだけでなくツールの使いこなしを意識すると良いと思います。AI化が進めば人間が手書きするソースコードの量はどんどん減っていくので、コードを書くスキルよりも情報収集とツールの使いこなしが重要な時代になっていくと考えられます。
案件量が豊富なアルマサーチ
最後に、アルマサーチのご紹介!
アルマサーチはフリーランス向けに案件をご紹介することに特化したエージェントサービスです。豊富な案件量から、安定して継続的な案件のご紹介を実現しており、口コミから登録エンジニアが急増中です。
アルマサーチが選ばれる理由
- 豊富な案件量。週3〜4日の案件や在宅リモート案件も。
- 優秀なコンサルタント陣。
- 案件に参画後もしっかりサポート。
豊富な案件量
フリーランス向けに特化し、業界屈指の案件量を誇ります!週3〜4日の案件や、在宅リモート案件もありますし、その他あらゆる希望をしっかりお伝えください。最適な案件のご紹介をさせていただきます。
優秀なコンサルタント陣
技術に疎く、開発の希望を伝えても響かないエージェント・・・嫌ですよね。アルマサーチにはそのような者は一切おりません!さらに独立にまつわる税金や保険関係に詳しいスタッフが徹底的にサポートさせていただきます。
案件に参画後もしっかりサポート
常駐先が決まった瞬間に、一度も連絡が取れなくなるエージェント・・・いますよね?アルマサーチでは、そのようなことは一切ありません!常に電話やメールは即対応しますし、月に1度のランチミーティングなどから現場の状況を細かくヒアリングし、就業環境改善に尽力いたします。
▼Go言語関連の記事
1, 【Go言語の求人・案件情報】特徴やメリット、採用している会社やエンジニア開発単価まで
2, 【Go言語入門】Go言語を初めて学ぶ人がチェックしたい学習サイト5選
3, Go言語の特徴とできることを、現役プログラマに聞いてみた
4, Go言語のフレームワークをそれぞれ比較してみました
5, 未経験者におすすめのGo言語の書籍5選
6, Go言語でjsonを使う時に気をつけておきたい4つのこと
7, Go言語の開発環境をWindowsで構築する方法まとめ
8, なぜPythonからGo言語にスキルチェンジする人が多いのか?
9, Go言語の実行速度は速いのか?他の言語と比べてみました
10, (この記事)Go言語は難しい?スキルチェンジしたエンジニアに聞いてみた
人気記事