SlideShare une entreprise Scribd logo
1  sur  19
関数型・オブジェクト指向
宗教戦争に疲れたあなたに送る
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/
お前じゃない
ご清聴ありがとございました。

Contenu connexe

Tendances

イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 

Tendances (20)

マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 

En vedette

Windowsの画面スケーリングを きちんと理解しよう
Windowsの画面スケーリングをきちんと理解しようWindowsの画面スケーリングをきちんと理解しよう
Windowsの画面スケーリングを きちんと理解しよう
Yuya Yamaki
 
Microsoft Azure超超入門_20140412
Microsoft Azure超超入門_20140412Microsoft Azure超超入門_20140412
Microsoft Azure超超入門_20140412
Sayaka Shimada
 

En vedette (20)

Go入門
Go入門Go入門
Go入門
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
私なりのGo言語のご紹介
私なりのGo言語のご紹介私なりのGo言語のご紹介
私なりのGo言語のご紹介
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
 
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうGo初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろう
 
TalknoteとGolang
TalknoteとGolangTalknoteとGolang
TalknoteとGolang
 
20161004 DMM/エウレカ/インテリジェンス合同勉強会
20161004 DMM/エウレカ/インテリジェンス合同勉強会20161004 DMM/エウレカ/インテリジェンス合同勉強会
20161004 DMM/エウレカ/インテリジェンス合同勉強会
 
Talknoteとgolangと私
Talknoteとgolangと私Talknoteとgolangと私
Talknoteとgolangと私
 
[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
 
ごちうさ Advent Calendar
ごちうさ Advent Calendarごちうさ Advent Calendar
ごちうさ Advent Calendar
 
5分でわかる? 関数型 PHP の潮流
5分でわかる? 関数型 PHP の潮流5分でわかる? 関数型 PHP の潮流
5分でわかる? 関数型 PHP の潮流
 
Windowsの画面スケーリングを きちんと理解しよう
Windowsの画面スケーリングをきちんと理解しようWindowsの画面スケーリングをきちんと理解しよう
Windowsの画面スケーリングを きちんと理解しよう
 
Go x Slack API
Go x Slack APIGo x Slack API
Go x Slack API
 
Go で Unit Test をやってみた
Go で Unit Test をやってみたGo で Unit Test をやってみた
Go で Unit Test をやってみた
 
Microsoft Azure超超入門_20140412
Microsoft Azure超超入門_20140412Microsoft Azure超超入門_20140412
Microsoft Azure超超入門_20140412
 
Teratail Study  ~機械学習編#1~
Teratail Study  ~機械学習編#1~Teratail Study  ~機械学習編#1~
Teratail Study  ~機械学習編#1~
 

Plus de Tadahiro Ishisaka

Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日
Tadahiro Ishisaka
 
ビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro orm
Tadahiro Ishisaka
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
Tadahiro Ishisaka
 
静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価
Tadahiro Ishisaka
 

Plus de Tadahiro Ishisaka (20)

Windowsでhaskell
WindowsでhaskellWindowsでhaskell
Windowsでhaskell
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
 
Visual studioとそのライバル
Visual studioとそのライバルVisual studioとそのライバル
Visual studioとそのライバル
 
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
 
Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日
 
クラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドクラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイド
 
Esentのススメ
EsentのススメEsentのススメ
Esentのススメ
 
ビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro orm
 
Jazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうJazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょう
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
 
Sysprep
SysprepSysprep
Sysprep
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ
 
Netduino
NetduinoNetduino
Netduino
 
静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価
 

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

Notes de l'éditeur

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