Go言語 【golang】
概要
Go言語(golang)とは、米グーグル(Google)社が開発・公開しているプログラミング言語の一つ。従来のC++言語の用途の一部を置き換えることを想定し、コードの記述の簡潔さや理解しやすさと、プログラム実行の高速性やリソース利用の効率性の両立を目指している。主要な処理系はオープンソースとして公開されている。基本的な文法や記法はC言語やJavaに近く、大規模開発にも適用しやすいよう静的型付けとなっているが、スクリプト言語のように短い記述で目的を達するよう配慮されている。Cのようなメモリ破壊やメモリリークが起きないよう言語レベルでメモリの安全性が確保され、実行時にはガーベジコレクションが行われる。
標準の言語処理系はコンパイラで、オペレーティングシステム(OS)上で直接実行できるネイティブコードに変換してから実行する。実行環境に仮想マシンなどをあらかじめ用意する必要はない。コンパイル速度を重視しており、Goコンパイラは一般的なC/C++コンパイラよりはるかに高速である。開発効率と実行速度の高いレベルの両立を目指している。
「Goroutine」(ゴルーチン)という並行処理のための仕組みが整備されており、実行時に極めて軽量なスレッド(プログラム実行の流れ)を生成し、複数のCPUコアをフル活用して効率的に並行処理ができるようになっている。強力なコンピュータで動作するサーバソフトウェアを開発する場合などに有用である。
標準ライブラリの機能を充実させ開発者が自前で記述しなければならないコードを極力減らす一方、現代的なプログラミング言語の多くに共通する機能の一部をあえて採用しない方針を取っている。これには例外処理、継承、ジェネリクス、アサーション、オーバーロード、暗黙の型変換などが含まれる。
Go言語はネットワークシステムやWebアプリケーションなどのサーバ側プログラム、システム上で直に動作するコマンドラインツールや常駐プログラム(デーモン)などの開発に適しているが、デスクトップアプリケーションやモバイルアプリを開発するためのパッケージなども公開されており様々な用途に使用することができる。
2007年頃からGoogle社内のソフトウェア開発を効率化するために設計が始められ、2009年に正式発表、2012年に標準処理系の初版が公開された。著名なソフトウェア開発者のロバート・グリーズマー(Robert Griesemer)、ロブ・パイク(Robert C. Pike)、ケン・トンプソン(Kenneth L. Thompson)の三氏が仕様策定を主導している。Linux、macOS、Windows、各種BSD系OSなどに対応しており、処理系はBSDライセンスに基づいてオープンソースとして公開されている。