読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

2015年の振り返りと2016年の抱負

まず今年までについて。

Twitterで少しだけ書いたけど、自分はずっとプログラミングに対してワナビーだった。長々と書くのはやめておくけど、Perl/Pythonで書かれたCGIを書き換えて設置したりとか、awkwgetsedでなんか落としたりとか、あとはJavaで簡単なゲーム作ったりとか(もう覚えてない)その程度。

転機が訪れたのは2013年頃、このままフリーターだとまずいので何か本当に技術を身につけよう、と思ってHTML/CSS/JavaScriptを触り始めた。いろいろあって最初から独立することになり、教育機関や他のプロの元で学んだことがないのがマズイなとかなり焦りだした。そこでプログラミングいろいろ学んでいこうと思い、デキるプログラマはブログを書く!みたいな記事に影響されてこの日記を、ついでにTwitterアカウントを開設したりしたのが2014年の12月。

2014/12

「すごいHaskellたのしく学ぼう」を読み終わったとこで始めたみたいだ。いい本だった。その後前々から作ってみたいと思ってた「プログラミング言語」に挑戦し、再帰下降構文解析頭が大騒ぎになってた。というかこの頃めちゃくちゃ忙しかったはずなのにモチベーション高いな。あと年末に一度Pharoを触っている。

2015/01

「初めての人のためのLISP」を読んですっかりLISPに取り込まれている。Common Lispを勉強してて、なんとか活かそうとParenScript触ってた。結局諦めたけど。

そして初めてLISP処理系を作った。嬉しかったのでまだGithub置いてある

たしかクロージャの実装で苦しんでるところにTwitterえせはらさんからURLを紹介してもらい、孤独なアカウントだったので光を感じたのを覚えている。

2015/02

引き続きLISPを触りつつ、ワナビーだった頃から何故か惹かれていたForth、のモダンな進化なFactorを触っていた。

MVCがよくわからないので何か作ってるけど、本当にわかってないので何を言ってるのかわからない。ちょっと笑ってしまった。Smalltalkやったおかげで今は多分わかりました。

2015/03

Factorを引き続き触りつつ、「プログラミングClojure 第2版」を読み始めて読み終わった。未完っぽくなってるけど「少しだけClojure 9」は下書きにまだある。。最後の章はその時の自分にあんまり必要無いと判断した記憶がある。

Clojureは本当に出会えて良かった。

2015/04

挑戦が始まる。

月始めはClojureでその時書いてたシステムを置き換えられないかなといろいろ調べていた。

その次にClojureローグライクに挑戦したんだけど、できるだけ参照を書き換えないようにしようとしてかなりめちゃくちゃになった。今でもどういう設計が良いのか知りたいと思ってる。

この経験もあって「全てがオブジェクト」に興味が出て、一旦Smalltalk触って、そしてForthを作るのにハマりだした。

今見るとウーンこれは……ウーム、なんだけど、勢いがある。オブジェクトの中に入るというアイディア、Concatenativeでプロトタイプベースな……というアイディアは、今これを書いてる時点ではSmalltalkの方がシンプルでいいなと思う。この頃はSmalltalkやそのクラス機構が根底から複雑なものなのだと思っていた。

2015/05

Clojureの美しさに未練を感じてどうにか作れないか試行錯誤していた。あとPAIPを読んでいたが、途中で飽きてしまった。

2015/06

ついにForthらしいForthを書き始める。

最初はJavaScriptで、字句だけのインタプリタじゃなくてForthのVMらしいVM?を作った。Redditに投稿してドキドキしながらコメント読んだのを覚えている。

ワナビー期間の中に何度かプログラミングにハマれたときがあったんだけど、その中でも一番印象に残ってるのがLinuxザウルスにJonesForthを移植しようとしたとき。結局完全には移植できなくてバグが取れずに諦めたんだけど、「自分が何やってるかわからない」というプログラミングの印象が薄らいでかなり熱中した。で、その時のリベンジとしてx86-64に移植し始めた。

アセンブリを触ったらなんかコンピュータ理解できる気がしてきたので並行してCも勉強し始めた。GCとか勉強してますね。

2015/07

Forthの移植が完了し、いろいろライブラリを作る。

Forth完全に理解したわ!!となり、自分の道具箱に入ったのを実感する。

そしてForthの解説を書き始める。毎日何かを続けたいと思い立って、Githubの毎日コミットと共に習慣とした。結局9月の終わりまで毎日書き続けた。

あと結構ちょこちょこSqueak触ったりしてる。Lispも。手を広げまくってる。

2015/08

HeadFirstCを読み終えてCがだいぶん書ける気がしてきた。

ForthでOOPできないかといろいろ考えてた記憶がある。日記にメモしておけば振り返りやすかったんだけどな。

2015/09

Thinking Forthを読んで目が覚めたのを覚えている。Clojureなどの美しさにちょっと偏りすぎていた考えをガツンと叩かれて、だいぶんバランスを取れた(と思っていた)。

引き続きForthが楽しいのでForthを触りまくり、サブルーチンスレッディングの処理系を作ったりもした。

Mark&Sweep GC書いたり、Cとのバインディング作ったりなど。

2015/10

S式→JSトランスレータのjasjを作った。

あとJavaScriptLisp処理系を書いたり。

ループに取り掛かる前にSmalltalkに興味が移ってしまった。

2015/11

PDF版をうまく読めるデバイスがなかったので結局あんまり読んでなかった「自由自在Squeakプログラミング」を、中古で買って読み始めて読み終わった。

ここでSmalltalkの真価に気づい(た気になっ)てウオオっとなり、一ヶ月Smalltalk漬けになる。

2015/12

今年、一つはアドベントカレンダーに記事を投稿しようと思っていたので、Smalltalkのサンプルを作り投稿した。

それからもう二つぐらいSmalltalkの記事を書こうかと思って、「進捗・どう・です・か」のやつをいろいろやったり

www.youtube.com

ローグライクを作ってたりしたんだけど

youtu.be

ちょっと忙しすぎて記事を書く時間がない。のでここで供養しておく。

振り返って

学習するとか決意したわりにあんまり学習できてないな、と思ってたんだけど、振り返ってみると忙しかった割にそこそこいろいろな事を学べた気になった。記録大事だ。

特に良かったことは

  • いつか作れるようになりたいと思ってたことに取り組んでみたら意外とできた
  • 毎日続けるコツが少しわかった

ことで、これは来年も継続して意識したい。

それからずっと薄々思ってたけど、振り返ってみると自分は

  • 手段にこだわる(ように見える)人に憧れるが、手段ではなく目的を意識した時だけ何かできる
  • 「○○するべき」みたいな言葉に極端に弱く、刷り込まれて自分の意見のように錯覚するけど、ただ負担になって焦るだけ

ということがわかった。例えばプログラミング言語なんかは前者の最たる例で、「この言語でやっていく」と思いたがり、またどれにこだわるべきか延々と悩んでいたりしていた。一年中彷徨っていた気がする。今年やったことは殆どプログラミング「言語」の勉強、というのも気になる。

なので2016年は、手段にこだわる事を意識して止め、「やるべきこと」みたいな言説にも距離を置いて、ひたすらプログラムを組んでいきたい。時にはわざと不格好に組むぐらいの気持ちで居たほうが良さそうだ。

あと20代最後なので、十分楽しんでおこう。

広告を非表示にする