2018.04.10

最近朝型に戻した。夜は運動もしている。twadaさんの話を聞いて勉強中心の生活に戻すと決めたのだ。勉強中心の生活は大学院のときにしていた。あれを社会人生活に当てはめるのだ。というわけで朝早く起きて勉強したりコードを書く。会社には10時頃行って19時前には退社し、飯を食ったら運動をする。風呂に入ったらストレッチをしながらアニメを見て22時にはベッドに入って本を開いて眠気を感じたらすぐに寝る。日記は朝書くことにした。夜に一日を振り返るのはしんどいと思った。夜の日記は鬱にも繋がるとニーチェも言っている。この生活を1週間は続けたいな…飲み会で直ぐに崩壊するのが欠点だ。

昨日は朝はMake a lispのstep2まで実装した。空いてる時間に取り掛かっていたんだけどstep1が2週間くらいかかったのに対し、step2は20分で実装できた。step1が実装言語によっては最も難しいところだとガイドにも書いてあったから、「俺はなんて手が遅いんだ〜」とかは思わない方が良いのかな。こんなものでしょう。

step11まであるんだけど、step2まででもプログラミング言語ってこうやって作るんだ!というアハ体験はある。面白い。

仕事は新規サービスのデータモデルのレビューをもらったのを反映したのと、社内システムの自動化していたら18時だった。昨日勤怠記録のシステムがリニューアルされたんだけど、改悪されていて使い勝手が良くなかったのでselemiumとheadless chromeで自動化してしまった。hyなら爆速で書ける。Lispは直感的だよね。

変数束縛時にさ、aを加工してbに束縛したいってとき、aに事前条件があったらb=aの前にそれをチェックするじゃん。 例えばaは0でないことを条件に、bに束縛する、みたいなやつ、Pythonだとこう書くよね。

if a == 0:
    raise ValueError
b = a

でもLispだと

(setv b (if (!= a 0) a (raise ValueError)))

って書ける。ifも式だから。何が良いかっていうと「bに何かを束縛する」っていう本質的にやりたいことに集中したコードになる。そのためにaをチェックしているんだねというのがパッと見てわかる。Pythonのコードだと、aのチェックがいつ効いてくるのか明示的では無い。

ってのことを書いてて思ったよ。

今日はstep3をやろう。仕事は今日は研修です。パフォーマンス研修。