周知の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で書けると非常に楽しそうです。特にパースが速いなら快適な補完が利きそう。でもデバッガは難しそうですね。