近況報告
テックキャンプを卒業し,ついに就職活動です。前の記事で述べた通り,
・個人アプリの修正及び機能付与
・カリキュラムのドリル
・新しいことへのチャレンジ(dockerとGo言語)
・就職活動
を軸に勉強を進めています。個人アプリの大まかな修正は順調に進んでいます。ドリルに関しては,先輩曰く,スクールの料金の半分の価値があるとのことなので,進めています。正規表現など穴がわかるので助かります。dockerは意義を理解してインストールし,起動まで進みました。環境構築はまだ解読が進んでいません。Golangは後述。就活は今週面接があるのですが,ラフな気持ちで行こうと思います。
今回のお話
Golangの勉強を始めた経緯
いまなにしてる
気づきメモ(rubyでは出会わなかった話メイン)
Golangの勉強を始めた経緯
勢いのある言語のため
golangは2009年にオープンソースとして発表された言語であり,機能性,高速という面で脚光を浴びた言語です。最近のエンジニアが学びたい言語としても上位に位置し,近年はアプリケーションの一部をGoに変えることで処理速度をあげる試みなどされているみたいですね。人気に比例しGolangの需要は年々増加しているもののGolangを扱えるエンジニアが少ないことから言語ごとの給料でも上位に位置するとか(あくまでも企業が求めているのはGolangを実践レベルで使える人だが)。
学習コストが低いため
某雑食系Youtuberもいうように学習コストが低いとされています。従来あった継承などの要素を削ぎ落とし,シンプルさを求めた結果生じた言語であるため,学習量はCやPythonなどと比べて少ないと考えています。また,私はRubyをある程度扱っていたので,類似点を探しつつ勉強できるのでかなり手をつけやすいと考えています。別の言語を知ることで,今よりもっと広いみかたでコーディングできることも期待しています。
活用範囲
Go単品でアプリケーションを作成することは可能です。ただアプリケーションの一部をGolangに変えて運用するというのがメルカリとかのように増えているらしく,もともとGolangを使っていなかったが起動性,高速処理の利点から用いるようになる企業が他の言語より多いと考えました。ポートフォリオに関してもrubyでメインを組み立てて一部をGoにしてアピールできるのでアリだなと考えました。
たしかにPythonも興味はあるのですが,同じような言語としてRubyを選択している以上用途が被っていては二兎追うものは一兎を得ずになりかねないので,就職して必要になった時に覚えようと思います。
あくまでもサブの領域の言語であり,メインはRubyまたは企業で用いる言語というスタンスは変わりません。
いまなにしてる
・Goのインストール(公式より)
・vsコードでGoを扱えるように準備
・公式のガイドをみてHello,Worldを出力
気づきメモ
hello world
package main
import "fmt"
func main() {
fmt.Println("hello, world!")
}
Go言語はシンプルな構文と厳格なルールで成り立っており,ルールを破ると実行を行ってくれません(エラー箇所はしっかり示してくれます)。
packageについておおよその理解
printlnはI(アイ)ではなくL(エル)
print Line の略
数値型
Golangでシンプルな文法による駆動を可能としているのは厳格なルールがあるからです。変数の定義には予め変数の型を宣言しなければいけません。その中でも数値型はRubyになかった表現があって厄介でした。
ビット,浮動小数点,符号あり整数
なにそれ。。。本当は止まらずテキストを駆け抜けたいのですが,根本の要素なので止まります!
簡単に整理します。
●浮動小数点 (ex)var i float = .0001e+4
少数の表示方法。0.001なら,1.010-3(10の−3乗)。なんか高校で見たことある表現w
●符号あり(なし)整数
-とか+とかの概念がない数列。2進数は0,1,10,11,,,のように符号を必要としない。
●ビット unit8 unit16
そもそもパソコンは0と1(onとoff)の区別の集合によって動いている。その組み合わせ1つで1ビット
unit8なら単体8ビット,つまり,符号なし二進数8桁
unit16なら符号なし二進数16桁
桁数が多い方が多くの数字を操れる。
追記 関数遅延 9/5/2020
~省略~
func main {
処理A
処理B
defer 関数C
処理D
~省略~
このような処理があったとして,deferで指定された処理は全体の処理が終わった後に行われる。
❌上から処理して終わった後に処理が行われる
⭕️全ての処理が終了した時に最後に実行される
⇨defer定義なし,処理Bでエラーが生じたとして処理Dにファイルを閉じる処理があったとしたら,エラー後,処理が行われてファイルが開いたままプログラミングが終了してしまう(実行前の状態に戻らない)。deferでファイルを閉じる処理を定義しておけば,エラーが生じても閉じる処理をしてくれる。
随時更新していきます