「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
Googleの「Go」を試してみた(その2)
昨日に続いて、GoogleのGoを使ってみた印象をレポートします。
Cと微妙に違う文法
GoはCやC++をベースにした言語ですが、文法が微妙に異なります。
例えば、変数の宣言は、以下のように異なります。
C言語
型名 変数名;
Go
var 変数名 型名;
また、if文やfor文では、括弧を使いません。
例えば、「変数xの値が10なら・・・する」というif文は、以下のように書きます。
C言語だと条件の部分を「(x == 10)」と書いていましたが、Goでは括弧を使いません。
if x == 10 { ・・・ }
他にも、C/C++と違うところがいろいろとあります。
C/C++に慣れている方にとって、Goに慣れるまでは頭が混乱するかも知れません。
パッケージ
Goには、「パッケージ」(ライブラリのようなもの)という機能があります。
現時点で、基本的なパッケージがいろいろと用意されています。
とは言え、まだまだパッケージの種類は十分とは言えません。
例えば、データベースアクセス(MySQL等)のパッケージは、今のところはないようです。
今後パッケージが充実することを期待したいです。
LL以上C/C++未満
Goでは、変数の型付けがあったり、ソースをコンパイルして実行形式を出力したりなど、LL(Lightweight Language)のプログラマーから見ると、難しい言語です。
一方、C/C++と比べると、ガベージコレクションがあったり、ポインタの演算がなかったりなど、C/C++の難しさをある程度緩和する仕組みが導入されています。
「LL以上C/C++未満」といった位置づけの言語だと言えるでしょう。
Webアプリケーション開発にも使える?
Goで作ったプログラムをCGIとして動作させれば、Webアプリケーションを作ることもできます。
例えば、以下のプログラムをコンパイルし、出力ファイルのファイル名を「hello.cgi」にして、CGIを実行できるディレクトリに入れるとします。
package main import "fmt" func main() { fmt.Printf("Content-type: text/plain\n\n"); fmt.Printf("Hello, world!"); }
ここで、Webブラウザで「http://コピー先ディレクトリのアドレス/hello.cgi」にアクセスすれば、「Hello, world!」と表示されます。
前述したように、今のところパッケージが少ないので、本格的なWebアプリケーションを作るのは、まだ難しいです。
しかし、今後パッケージが増えてくれば、Webアプリケーション開発にも使いやすくなっていくでしょう。
最近ではWebアプリケーションが巨大化して、PerlやPHP等のインタプリタの言語では、動作が重くなりがちです。
一方、Goならプログラムをコンパイルするので、PerlやPHPよりも高速な動作が期待できます。
今後は、Goで作ったWebアプリケーションも登場すると思われます。