「コーディングを支える技術」技術書筋トレ₍₍(ง˘ω˘)ว⁾⁾:1本目
どうも、キッチンです。
さて自分は2021年の春からWeb系の企業に就職が決まったのですが、働き始めると通信やアーキテクチャなどの基礎知識をつけようとしてもなかなか時間が取れなくなるでしょう。
そこで自由に学ぶ時間が取れる大学生のうちに体系立った基礎的な知識を学ぼうということで一ヶ月ごとに1冊の技術書を読む「技術書筋トレ₍₍(ง˘ω˘)ว⁾⁾」を始めることにしました。
ところでこの顔文字って筋トレしてる感あっていいですよね₍₍(ง˘ω˘)ว⁾⁾
この記事は技術書ノックの1本目になります。
今月の技術書
この本を選んだ理由
1本目ということで、「プログラミング言語ってなに?」というところから学びに行きます。
そこで前に読んで分かりやすかった「Webを支える技術」のシリーズからちょうど良さそうな本が出ていたので選んでみました。
この本の対象読者
一つの言語を習得していて自らなんらかのアウトプットを出したことがあるレベルの人を対象にしています。
本を読んで得られたこと
要素技術に対する言語ごとの考え方の違い
例えば『ファイルを開いた後に閉じる』といったような、対になる処理を正確に実行するための取り組みは結構おもしろかったです。
Finnaly
この問題に対しての取り組みは複数あって、この中の一つとしてMicrosoftがとった取り組みがFinallyでした。Finallyは例えばPythonでは以下のように書くことができ、これによって例えばFinallyで囲われた部分にファイルを閉じる処理を書けば途中でエラーが出てもファイルは無事閉じられることになります。
じゃあFinallyが無い言語ではどうしているのか?
C++にはFinallyがありません。
C++ではFinallyの代わりにコンストラクタ/デストラクタが使われています。対象を扱うためのクラスを用意し、スコープの寿命を利用することで必ずデストラクタを呼び出して対の処理を呼び出すようになっています。
次に読む本
次はソフトウェアのアーキテクチャについて学びたいです。
春休みごろにどうせまたWebサービスでも作りたくなるだろうと思うので、その時には「今回のサービスで使うのに良さそうなアーキテクチャはAとBがあってそれぞれにはこういった長所があるけれど、今回のアプリは今後の拡張性を考えてBでいこう」みたいなアーキテクチャの評価と選定のプロセスを踏めるようにしておきたいんですよね。
これによって実装中に迷った時に同じアーキテクチャの実装例ではその問題にどう対処したかなどを参考にすることができるようになることを期待しています。