Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今更始めるGo言語 / techcamp04

今更始めるGo言語 / techcamp04

第4回開発合宿(2017/01/24)

Yuichi Goto

January 24, 2018
Tweet

More Decks by Yuichi Goto

Other Decks in Programming

Transcript

  1. 背景2: 自身のスキル開発 • クライアントサイド: React, React Native(第3回) • サーバーサイド •

    爆速モノリシック: Ruby on Rails • BFF: Node.js • マイクロサービス: ? 6 ここに当てはまる言語・フレーム ワークを抑えたい
  2. サンプル: Hello, World! package main import ( "fmt" ) func

    main() { fmt.Println("Hello, World!") } 10 $ go run main.go Hello, World!
  3. 仕組み • goreとだいたい同じ 1. 入力された式を評価して標準出力に表示する
 一時的なソースコードを生成する 2. 1を go run

    で実行して得られた結果を返す 3. 1-2をユーザーが中断するまで繰り返し 15 ここが難しいところで、具体的には AST周りをわかっていないとダメ
  4. 良かったところ • 言語の手触り: 21世紀のC言語 or Better C • 言語仕様が小さくキャッチアップがしやすい •

    ↑とgofmtにより誰が書いても同じ感じになる • IDEなどの周辺環境: ポータブル • 標準ツールが充実しており、エディタを選ばない 17
  5. 苦しかったところ • 言語仕様の小ささや引き算の負の側面 • 例1: 例外がないので、 foo, err = …;

    if err != nil のようなコードを至るところで書くことになる • 例2: mapのような高階関数がないのでfor文を
 使うしかなく、愚直なコードになりがち ※ 始めたばかりなので慣れてきたらまた変わるかも 18