SlideShare a Scribd company logo
関数型・オブジェクト指向
宗教戦争に疲れたあなたに送る
Go言語のススメ
石坂忠広
http://opcdiary.net
自己紹介
• プロフィールは適当にWindows GitとかVisual Studio Gitで検索してく
ださい。トップに出てきません。
• 富士山の方から来ました。
• オブジェクト指向スキーなSEです。
• 純粋関数型なんてわかりませんと思っていたら、純粋関数型の人も
あんまりわかってなかったみたいな感じで何なんだったんだこの一ヶ
月みたいな感じです。ま、傍観者ですが。
• ま、あと、オブジェクト指向も流派が分かれるので一緒にするな。
疲れました。。。
• 総称性の議論とか
• クラス、オブジェクト、そもそもJavaScriptのあれはとか
• 副作用?副作用?
• 圏論?はぁ?それがお前の言う圏論の議論なの?
• 別に関数型とオブジェクト指向とか相反しないし
• OCamlとF#に謝れとか
• まぁ、原理主義者相手にしてると疲れますよね
そんな疲れたアナタに朗報です
Go言語でリフレッシュしましょう!
Go言語には議論を呼ぶ
以下のものがありません
• クラス、オブジェクト、継承、オーバーライド
• Generics(総称性)構文
• 関数型原理主義者の嫌う、擬似関数型現機能、ラムダ式
• While/Do While/Foreach
• モナド?圏論?とか面倒くさいこと言う厨二
争いの起きる余地なし!!
Go言語の特徴
• 手続き型の高級言語
• ロブ・パイク、ケン・トンプソンが開発に関わっている
• ALGOL, Pascal, Cのような構文
• コン��イル言語
• クロスコンパイルが得意(Linux/Darwin(Mac)/BSD/Solaris/Windows/Plan 9)
• 実行動作ランタイムなどない!
• メモリ管理はGCに一任
• 連想配列を持つ
• 型の継承、ジェネリックプログラミング、アサーション、オーバーロードと
いった機能は無いが、インターフェイスによるポリモーフィズムはある(そ
れなんてVB)
• 並行動作の支援機能
Hello World
package main
import "fmt“
func main() {
fmt.Printf("Hello, World¥n")
}
;(セミコロン)がない!!!
• 中括弧言語のくせにセミコロンがない!
• 無いのではなく、コンパイラが構文解釈して適宜挿入するの
で省略できている。(文末解析出れば人が入れること無い
じゃん)
• 以下のような場合は必要。
• for i := 0; i < 10; i++ {} (for文のイニシャライザ)
• 1行に複数の文を記述したい場合
;以外もC/C#/Java違うところが多いよ
• 代入演算子が :=
• for, if にカッコを付けない
• 変数の型指定が変数の後
• var n int
• var err os.Error
• Asはいらない
• while / do whileが無い。ロブ・パイク大先生もforで十分だと。
• ポインタがある。
• C++プログラマ向けGo講座を見よ
ま、ゆるふわな言語です。
実践Go言語
Go言語を勉強したくなったらこのサイトを見よう
はじめかた
• http://golang-jp.org/ から始めましょう
• ここのトップページのDownload Goをクリック
• Linux/BSD/OS X/WindowsはこれでOK
• リンク先ページ書きの注意書きを読みましょう
• Solarisの人はパッケージがあるはず
• チュートリアル
• A Tour of Goでひと通りの構文を学習できます。
• WEBで完結しているので何かをインストールする必要なし
• http://go-tour-jp.appspot.com/#1
開発環境
• CLI主義
• コンソールウインドウを黒い画面とか言うゆとりはPHPでも使ってろ!!
• コード整形
• コンパイラがその機能を内蔵 go fmt <ソースコードファイル>
• 複数のコーディングスタイル��か許してやんない→議論の余地なし
• エディタ
• Vim, Emacs, Atom等でGo用に構文のハイライトや、コード整形、コード補完の
機能を提供するプラグインがあるよ
• IDE
• LiteIDEが優秀
• InteliJ IDEAもがんばっているっぽい
何に向いているか?
• Goole App Engine(GAE)でのアプリケーション展開
• WEBアプリケーション
• UNIXwayなコマンドラインツール、且つクロス環境で動作して欲しい場合
• クロスコンパイル機能が非常に優秀で、実行ファイルがあればライブラリのポート
とかも必要ない。Linux上でMac用、Windows用のバイナリも作成可
• 個人的におすすめ
• GUIはあんまり得意じゃない
何より
• Gopherが可愛い(*´∀`)
https://golang.org/doc/gopher/
お前じゃない
ご清聴ありがとございました。

More Related Content

関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門

Editor's Notes

  1. ロブ パイクはUNIX/Plan 9の開発者でプログラミング作法の共著者 もう一人はカーニハン。 ケン・トンプソンはUNIX、C言語の揮発者。 あと、お前らの大好きなUTF-8を作ったのがこの二人だ。