Goにさわる機会があったので、ちょっと特徴についてまとめてみた。
ちなみにPHPしか知らない。
目次
Goの特徴
静的型付け
- PHPと違い、型宣言する必要がある。
例)int num;
string str;
コンパイラ言語
- コンパイラ言語とは 全てのコードを機械後に翻訳してから一気に実行する言語。
・・・Java、Python、C
ちなみにインタプリタ言語とは コードを実行する際に1行ずつ機械語に翻訳していく言語。
・・・PHP、JavaScript、Ruby
メモリ安全性
ガーベージコレクション
- プログラムが動的に確保した目盛り領域のうち、不要になった領域を自動的に開放する機能。
構造的型付け
- 宣言名や場所、ファイル名などで特性が決まること。例えば、 「_test.go」で終わるファイルはテストファイルと認識される。
CSPスタイルの並行性
- Communicating Sequenial Processes
- CSPとは並行性に関するプロセス計算の理論の一つであり、Goではプログラムを並行して実行することができる。ちなみにGo言語のプログラムで並行に実行されるものをgoroutine(ゴルーチン)という。
Pythonのようなプログラミングの容易性
- Pythonの特徴としてコードがシンプルで扱いやすく設計されているらしく、少ないコード行数で書くことができ、Goでも同様らしい。
マスコットキャラはGopher
- ホリネズミ
GoとPHPの違い
GoはPHPより実行速度が速い
- コンパイル言語は実行する際にすでに機械語に変換されているため、実行する際に変換しているインタプリタ言語より実行速度が速い。
Goはバグが見つけやすい
- コンパイル言語は機械語へコンパイル(変換)時にエラーが検出される。
また、govetというコマンドでコンパイル時には、検出できないロジック上の問題もある程度検出することができる。
Goはデフォルトでユニットテスト機能がある
- PHPではPHPUnitというフレームワークを使用することが主流となっているが、PHPUnitは導入する必要がある。
Goは型が厳格、PHPはゆるい
- PHPは動的型付けで自動的に変数の型を検知して割り当てる。型が変わるが、Goは静的型付けを採用していて、変数が必ず特定の型を持ち、変更できない。これのおかげでバグが起こりにくかったりする 。
Goは並行処理ができる
- PHPでもできなくはないが、難しいらしい
以上がよく見る、よく聞く特徴だと思います。
実際に触ってみた感じは、PHPしか知らない自分にとってはコンパイル時にエラーを教えてくれるのは便利だと思えた。
ある程度プログラミングの知識、もっと言えばコンパイル言語の知識があれば、簡単にプログラミングできるような言語ではないでしょうか。
また、知識があまりない人でも、go fmt
でコードは統一できたり、GolangCI-Lint(少し記事読んだだけ)を利用することである程度の品質を保ちながらコーディングできたりするようです。