by shigemk2

当面は技術的なことしか書かない

Lightweight Language "Go" #llmatsuri

山口能迪 (@ymotongpoo)

The Go Programming Language

LL
インタプリタ
関数オブジェクト
動的型

(スクリプトとそんな変わらない)
実行速度が速いって意味じゃない

単一マシンでも巨大なコードベースをビルド
GCがある
マルチコアのCPUを使い倒す
書きやすい

Go 2009 爆☆誕

コンパイラ必要
強い静的型付け
GCあり
フォーマッティングするツールもある

  • メモリフットプリントが小さい
  • 実装が簡単
  • 文法や機能が最小限
  • インタプリタ

メモリフットプリントが小さい

Mark & Sweep GCが常に走っている
未使用のimportや変数はコンパイル時にエラー

でもLLよりは軽くない。普通。

実装が簡単

実行 (ライブラリ依存関係を自動で解決 静的な実行ファイルを生成)
文法 (C Pythonの中間くらいの文法) 型推論がある クラスシステムはない 実装が最小限
ライブラリ呼び出し(ディレクトリ構造に応じたパッケージ構造 標準パッケージ 外のパッケージを呼びたいときはgithubのURLをそのまま突っ込めばいい)


強い静的型付けなので、インタプリタは、ない

ダウンロード

Downloads - go - The Go Programming Language - Google Project Hosting

export PATH=$PATH:/usr/local/go/bin

サンプル

hello.go

// You can edit this code!
// Click here and start typing.
package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界")
}

実行

go run hello.go

標準ツールがすごい

必要なパッケージをビルドしたり(go build) 必要なパッケージを取得したり(go get)出来る
go installとか。

(インデントはハードタブ)

goはすごいLL

因みに僕は渡辺香津美が居たころのほうが好き(うろ覚え)