Advertisement
Advertisement

More Related Content

Slideshows for you(20)

Advertisement

Recently uploaded(20)

Advertisement

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

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

Editor's Notes

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