周知のGo言語、Google社員によって作られた変だけど実用的な言語。と思ってます。公式サイトに十分に情報が乗っているので参考書には困りません。英語が難しいなら日本語訳している情報サイトもあります。プログラミング言語Goの情報サイト
これからちょくちょく勉強して行くつもりです。Go言語はアルゴリズムの記述や速度が必要なWebシステムなんかに持って来いな気がします。因みにgcではC++とリンク不可で、Cのみ可だそうです(gccgoは両方可)。尚、GoからC++に、C++からGoに引っ張るのは”まだ”できないそうです。wktk
主観的に特徴を書くとこんな感じです。
- ステートメントが少ない
- 構文の制約が厳しい(表現の統一)
- ビルトイン型/関数が必要十分
- 動的言語のような柔軟な記述
- 独特で便利な機構
- コンパイルが超高速
- 実行も速い
- 並列処理が簡単
- 豊富な標準パッケージ
正確に知りたい方は他を参照してください。
処理系はgo-windowsもあるけど何かうまい使い方が分からないから今はlinux上のgcで試してみました。
Codeforces #23 A. Youre Given a String…
文字列の中から2回以上出現する部分文字列の最大長を求める。
package main import "fmt" func main() { var s string fmt.Scanln(&s) g := 0 for i := 0; i < len(s); i++ { for j := i+1; j < len(s); j++ { k := 0 for j+k < len(s) && s[i+k] == s[j+k] { k++ } if g < k { g = k } } } fmt.Println(g) }
特に変な機構も使ってないので構文しか分かりませんが。。次に比較用にC++で、
#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int g = 0; for(int i = 0; i < s.size(); ++i) for(int j = i+1; j < s.size(); ++j) { int k = 0; while(j+k < s.size() && s[i+k] == s[j+k]) k++; g = max(g, k); } cout << g << endl; return 0; }
IDEで書けると非常に楽しそうです。特にパースが速いなら快適な補完が利きそう。でもデバッガは難しそうですね。