「Go言語」の言語的特徴として、「シンプル言語」「コンパイル言語」「型階層がないオブジェクト指向言語」「パッケージ管理システム」「高速処理」「安全性」「平行処理スレッドモデル goroutine」「例外処理」「非搭載機能」について紹介。

「Go言語」の言語的特徴

「Go言語」の言語的特徴として、「シンプル言語」「コンパイル言語」「型階層がないオブジェクト指向言語」「パッケージ管理システム」「高速処理」「安全性」「平行処理スレッドモデル goroutine」「例外処理」「非搭載機能」について紹介。

■関連する比較ページ

「Go言語」の言語的特徴

■シンプル言語

Go言語は、合理性/実用性/生産性について徹底的にフォーカスしている言語で、シンプルに開発できるように設計されています。

Go言語の開発環境としては、Go言語本体のみで「ビルド」「テスト」「ドキュメント化」などのさまざまな要素をサポートしています。コマンドラインツールだけを利用して軽快に開発することもできます。エディタやIDEとの連携も行えます。

シンプルに開発でき、なおかつ、「C言語の処理速度」と「Pythonの開発生産性」の両立が意図されています。

■コンパイル言語

概要

Go言語は、C言語やJava言語のように動作するコンパイル言語です。

エラー検出

コンパイル時にすべてのエラー部分が洗い出されます。

実際に実行してみないとエラーがあるかどうか分からないスクリプト言語に比べて、確実性が増すなどのメリットがあります。

実行形式バイナリファイルを作成

プログラムソースをコンパイルすると、ネイティブマシンコードにコンパイルされます。

その後、ビルドを実行すると、1つの実行形式バイナリファイルが作成されます。

デプロイが容易

実行環境として「JVM」や「インタープリタ」などを必要とせず、実行形式バイナリファイル単体で動作します。

そのため、実行形式バイナリファイルを1つ配置するだけで、デプロイを完了できます。

クロスコンパイル開発

クロスコンパイル開発を簡単に行なえます。

Macの開発環境から、Linux/Windows用実行形式バイナリファイルを作成できます。

■型階層がないオブジェクト指向言語

Go言語には「型」と「メソッド」があり、オブジェクト指向プログラミングが可能です。

Go言語は、強い静的型付け言語ですが、「型」には階層がないため、代替として「インターフェース」という概念を利用します。

オブジェクト

Go言語におけるオブジェクトは、値型によって実装されており、値型を定義することでオブジェクトの振る舞いを定義できます。

また、型階層がなく、型間の関係を定義するための時間がかからないため、Go言語のオブジェクトはC++やJavaなどの言語よりも軽量になります。

メソッド

メソッドは、任意の種類のデータに対して定義できます。「プレーンなボックス化されていない整数」などの組み込み型でも定義できます。

■パッケージ管理システム

Go言語は、充実したパッケージが用意されています。

→The Go Programming Language →Packages

パッケージインポート機能

Go言語にはパッケージインポート機能がビルトインされており、外部のGoパッケージをWeb経由でダウンロードして利用できます。

例えば、「import github.com/user/project」と記述するだけで、対象のパッケージを即座に利用できます。

■高速処理

Go言語は、高速処理も特徴です。

高速コンパイル

C++と比較してコンパイルが速く、1台のコンピュータで大規模なGoプログラムを数秒でコンパイルできます。

実行時パフォーマンス

Python/Rubyなどと比較して、高い実行時パフォーマンスを出せます。

処理速度が必要なプログラムを最低限の手間で作るような局面にマッチしています。

■安全性

Go言語は、各種安全性機能を提供します。

型安全性

妥当で現実的なレベルの型安全性を提供します。

ガーベージコレクション

完全なガベージコレクトを行い、メモリ安全性をサポートします。

依存関係分析が容易

Cスタイルのインクルードファイルやライブラリのオーバーヘッドを回避するソフトウェア構築モデルを提供します。

■平行処理スレッドモデル「goroutine」

Go言語は「同期並行処理を容易に実現できる」という大きな特徴があります。

言語標準として、平行処理スレッドモデル「goroutine」の使用が推奨されており、非常に簡潔な記述で同期並行処理を実行できます。

■例外処理

「Try-Catch-Finally」は未採用

Go言語は「Try-Catch-Finally」例外処理を採用していません。

コントロール構造に例外を組み合わせることによりコードが複雑になることを回避するためであり、一般的な例外については、あくまで戻り値を使用する設計思想です。

代替機能「panic-recover」例外処理

「Try-Catch-Finally」例外処理の代替機能として、明示的に例外を発生させる「panic」と、回復処理用の「recover」を用いた例外処理機能を提供しています。

■非搭載機能

Go言語は、プログラミング言語自体をシンプルに保つために、他の言語では使用できる機能をあえて搭載していません。

言語デザインとして正しく使うのが難しく、乱用するとプログラムを無意味に複雑にしてしまう機能が排除されています。

搭載していない主な機能

・型の継承
・ジェネリックプログラミング
・アサーション
・オーバーロード
・イベントモデルによる並行処理
・「Try-Catch-Finally」例外処理 など

Go言語最新TOPICS

【OSS】Google製オープンソースシステムプログラミング言語「Go言語」(2019年02月04日 10:21)

Googleが開発したオープンソースプログラミング言語「Go言語」について紹介。 Go言語とは Go言語(Golang)は、2009年にGoogleで作成されたオープンソースプログラミング言語。 「表現力豊かな型システム」「高速コンパイル機能」「優れたパフォーマンス」「並行処理を単純化する組み込...

Go言語最新CLOSEUPコラム

イベント情報

セミナー講演資料

無料資料プレゼント

2021/03/04 セキュリティDAYS Keyspider資料

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



セミナー講演資料公開中

ローコード/ノーコードのツール比較と内製化 ~ユーザー企業は、ノーコード/ローコードで内製化できるのか?~

SIer企業の「リスキリング」実現ロードマップを解説 〜開発現場で必要なスキルを実践しながら学べる学習プラットフォーム〜

CI/CDが開発ガバナンスの弱体化を招く?回避する方法とは ~複数ツールの組み合わせで生じる問題を、統合プラットフォーム「GitLab」で解決~

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter