🏄♂️
Go言語の特徴
Go言語が生まれた背景
Googleでは、処理速度を求める機能では、C++を採用していた。C++は高い処理速度を出せる反面、コンパイルに時間がかかる、記述難易度が高いなどの課題があった。この課題を解決するために、処理速度を維持しつつ、コンパイルが速く、シンプルに記述できるGo言語が生まれた。
Go言語の特徴
コンパイラ言語
Go言語は、コンパイル言語なのでソースコードを丸ごと一括で機械語へ翻訳する。実行する際は、機械語として実行されるため、1行ずつ変換して実行するインタプリタ言語(Python,PHP,JavaScriptなど)と比較して高速で実行することが可能になる。
仮想マシンを介さない
Go言語は各OSで実行できる形でコンパイルを実行してくれる。そのため、JavaやC#などのように各プラットフォームの差を吸収するための「仮想マシン(実行環境)」が必要ない。
並行処理
Go言語は、並行処理のために ゴルーチン(Goroutine) という仕組みを提供している。ゴルーチンは、OSのスレッドよりも軽量で、Go言語独自の実行単位として動作する。他の多くの言語では、並行処理をOSのスレッド単位で行うため、スレッドごとにメモリ消費が大きく、作成コストも高くなりがち。
ガベージコレクターをサポートしている
ガベージコレクター(プログラムで使っていないメモリを解放する機能)をサポートしている。これにより、メモリ解放漏れによりメモリの空き領域がなくなるメモリーリークや、バッファオーバーフローが発生しない。
Go言語が適しているプロジェクト
Go言語は、高速処理や並行処理に強みがあるため、大規模なユーザー数を誇るサービスの開発に適している。また、シンプルな構文で記述できるため、複数人のエンジニアが参加するプロジェクトで保守性を高めるために有用な手段となる。
参考文献
Discussion