けいチームWordProgress2009/12/2突然登場した新しいプログラミング言語「Go」。-2009年10月末にグーグルが発表した、新プログラミング言語Go(またはgolang)は、速くて軽量な言語である。「速さ」と「軽量」の意味合いには、少しだけ特殊な意味合いが込められている。第一に、Goの「速さ」とは、コンパイルの速さという意味合いが強い。Goの「軽量」とは、並列処理に対応した言語でありつつも言語仕様が軽いといった意味合いがある。コンパイルが速く、並列処理の記述が容易で、言語仕様が軽量だという、Goのうたい文句に引き付けられた人は多いだろう。何より、世界最大規模のWebサービスを提供しているグーグルが、錚々(そうそう)たるメンバーの名の下に、自社のシステム基盤に近いレイヤを記述するための新言語としてGoを世に送り出したという点から、Goは数多くのプログラマの注目を集めている。Goでドメイン特化言語も作成可能!?だが、実際にGoを試して見た人々からは、戸惑いの声も上がっている。影響を受けたとされているC/C++はもちろんのこと、PHPやPythonやRubyなど既存のメジャー言語のいずれとも少なからぬ相違がある。Goの変数宣言は以下のいずれかの方法で行う。(2)(1)においては、varが変数宣言であることを明記し、その次に変数名aとその型uint64が記述されている(Goは、C/C++と同じく静的型付け言語である)。イコールの後に初期値1が代入されている。(2)は、(1)の表記の略記法(シンタクス・シュガー)であり、名称aは、その後の:=という宣言によって、型uint64と初期値1と結び付けられる。Goに注目している人にとって、こうした記法自体を理解することは難しくないだろう。変数の代入という、ごく基本的なところから新たに覚えなければならないことが生じている。Goのifやforなどの制御構造、関数の機能を見ていくと、困惑が広がるかもしれない。Goの制御構造は、互いに競い合い進化した主要言語に比べるとむしろ後退しているかのように思える点がある。Fx)は以下のように書かなければならない。入力値iが正の整数の場合iの2乗が、iが0以下の整数の場合0が返される現状のGoでは、if文内に複数のreturnを書くことができない。そのため、関数宣言時にあらかじめ返り値を明示するなど、既存の言語より「一手間かかってしまう感」がある(*1)。Fx)は以下のように書くことができる。Goでは、関数内に複数のreturnを書くことができない」との記述を行いましたが、こちらは、「現状のGoでは、if文内に複数のreturnを書くことができない」の誤りでした。申し訳ございませんでした(ご指摘いただいた方、ありがとうございました)いまどきのプログラミング言語では、プログラマの負担を減らすため、処理系にとって自明のことは省略してもよい推論機能を持つことが多くなっている。Goでは、こうした推論機能は充実しておらず、むしろプログラマに構文要素を「明示すること(explicit)」を求める。Goは登場したばかりの言語であり、Google自身も、「実験的(experimental)」と位置付けている言語である。そのため、将来的には、言語機能が充実すると共に、よりこなれた記述法が許されるようになっていくことは期待できる。いまどきのプログラミング言語のトレンドからいささか外れたように思える言語を、Googleがこのタイミングでリリースしたことへの疑問は残る。Engineで用いられているスクリプト言語であるPythonなどにもっと近い文法を持つプログラミング言語が登場して欲しかったといった声も上がっている。コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。関数型言語に分類されるHaskell。Lispの一種であるScheme。World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。(2017/7/6)日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。Excel」で使えるVBAを紹介する。