■ はじめに
シリコンバレーで流行っているプログラミング言語とは
https://www.youtube.com/watch?v=bro2Y22QiHs&t=252s
で、Python だけでなく、Go言語も流行ってるらしいので どんな言語なのか、かーるく以下のサイトから勉強してみる。 (Go I だけが無料で、Go II - IVは有料だった。。。)
https://prog-8.com/languages/go
2020/04/16追記。 YouTube もあった。
https://www.youtube.com/watch?v=jJqH_CVcHKM&list=PLVk26HcHqpz3Ts5uteLPTAVcINxFKJw05&index=2
目次
【1】Go言語 (Golang) 【2】特徴 / メリット 1)サポートOS 【3】他言語との比較(個人的なメモ) 1)class に当たる構文がない 2)平行プログラミング 【4】Hello World 例1:コンソールアプリ 例2:Webアプリ(標準ライブラリ豊富さ) 【5】開発環境
【1】Go言語 (Golang)
* 2009年 Googleが開発したオープンソースのプログラミング言語 * コンパイル言語 => 個人的な印象としては、「現代版・C言語」(構造体/アドレスもあるし)
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. reliable : 信頼できる、efficient : 効率的な(要するに「早い」)
【2】特徴 / メリット
以下の動画を(飛ばしながら)見るといいかも。
https://www.youtube.com/watch?v=SjfYHqS7eo4
[1] 学習コストが(比較的)少ない => 文法がシンプル (whileすらない。 それをカバーする標準ライブラリが豊富! 以下の「例2」を参照) [2] チーム開発に向いている ★結構、これ大きいかも★ => 標準で文法チェック機能(gofmt, goimports etc)があり、豊富 [3] 処理が高速 => コンパイル言語。 ポインタもある [4] クロスプラットフォーム対応 => 以下の「1)サポートOS」からもわかる通り、 主要OS全てサポートされている(Javaよりも優れている)
1)サポートOS
* Linux * Mac OS * Windows (From ver1.0, 2013-03) * Android * iOS
【3】他言語との比較(個人的なメモ)
1)class に当たる構文がない
⇒ ただし、構造体やインターフェイスはあるので、 オブジェクト指向でコードを構築することは可能
https://qiita.com/kitoko552/items/a6698c68379a8cd8b999
2)平行プログラミング
⇒ 「ゴールーチン」「チャネル」などの概念があり、標準でサポート ⇒ 平行(Concurrency)と並列(Parallelism)は別の概念という考え方 ・平行:同時に質の異なるタスクを扱う ・並列:同時に質の同じタスクを扱う
【4】Hello World
例1:コンソールアプリ
package main func main() { // 変数messageを定義し、「Hello, world」を代入 var message string = "Hello, world /* 以下でもいいが、関数内でしか使えない message := "Hello, world" */ // 変数messageの値を出力 println(message) }
例2:Webアプリ(標準ライブラリ豊富さ)
package main import ( "fmt" "net/http" ) // Goはm前に出力を前に書いて、後ろに入力を書く習慣らしい func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello world!!") } func main() { // ハンドラを登録 http.HandleFunc("/", handler) // サーバの起動 http.ListenAndServe(":18080", nil) }
実行について
実行後に、ブラウザで以下のURLにアクセスしたら、 「Hello world!!」が表示される(localhostだと表示されんかった)
http://http://127.0.0.1:18080/
【5】開発環境
色々あるらしいが、VS Codeでできるらしい 以下の関連記事を参照のこと。
Golang ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/03/000000
関連記事
Golang ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/03/000000
Golang ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/05/000000
Golang ~ 基本編 / 関数 ~
https://dk521123.hatenablog.com/entry/2021/05/03/000000
Golang ~ 基本編 / 構造体 ~
https://dk521123.hatenablog.com/entry/2021/05/01/000000
Golang ~ 基本編 / ポインタ/アドレス ~
https://dk521123.hatenablog.com/entry/2021/05/02/000000
Golang ~ 基本編 / インターフェイス ~
https://dk521123.hatenablog.com/entry/2021/05/04/000000
Golang ~ 並列プログラミング(Goルーチン/チャネル) ~
https://dk521123.hatenablog.com/entry/2021/05/05/000000
IT技術の学習サイト
https://dk521123.hatenablog.com/entry/2020/02/29/003619