Lispに入門した
最初はLispの馴れ初めなのでなんではじめたん?まで飛ばしてもOK
たしかすべてはHow to become a hackerから始まった
私がプログラミングを学び始める前か少し経ったあとかはもう思い出せないがHow to become a hackerという情報をインターネットで目にした。当時の自分は分不相応にもハッカーを目指していたからである。
How to become a hackerで推奨されているおすすめプログラミング言語はC言語, Java言語, Perl, Python, Lispだった。(ちなみに私はこれを見てRubyを始めた。PythonとRubyはできることが似ていると感じたことと日本語情報の多さが決め手になった)
これらの言語の中でLispだけは現実的な推奨理由は書かれていなくただ『それをものにしたときの悟りの体験のためにLispを学びなさい』と書かれていて中二心をくすぐられたが調べてみて無理だと感じた。
それが僕のLispのファーストタッチだった。
動物さんシリーズのRuby入門書を読んだらLispがでてきた
何だこれって感じである。Rubyを学んでいたらLispの話が出てきたのだ。
MatzさんやYuguiさんがLispから影響を受けたことを直接的、あるいは間接的に文章で伝えてくる感じが強くしたのでLispやるかなと思っていたがやはり((((((挫折した))) 読めない) 読みたくない))
なんではじめたん?
5年くらい調べる => 拒絶反応を繰り返した。
そして今になってようやくLispを学び始めた。
始めた理由は仕事でプログラミングをするようになって5年かけて積み上げた自分の技術がなんの役にも立たないくらい低レベルなものだと知ったから。会社にはすごいエンジニアがたくさんいて自分だけの強みが必要だと強く感じたから。みんなオブジェクト指向の達人。ならば僕は関数型プログラミングを極めてやる!くらいの気持ちだった。
Lispというアイデア
これを読んだときに感じたこと
言語自体をプログラミングできる言語。という発想に感動した。(Rubyもその思想を強く受けてるが。)Lispをもっと知りたいと強く思った記事で純粋なLispと言うのは関数5つの基本関数と2種のデータを組み合わせて機能を追加してきたというシンプルの極みなのでできることは無限という発想がすごい。Lispの前に世界初の高級言語FORTRANが18年の歳月を経て作られているがLispは一人の科学者が作ったという点もまじかよって感じがする。ただし当初の高層では(((())))だらけの言語にする気はなかったそうだ。気がついたら()だらけで広まってたそうな。
Lispの出自は人工知能研究所からということなので進化していけるというところが重要だったのかもしれない。何れにせよこのグレートなアイデアに触れて自分の方も進化したいと思った
副作用滅殺計画
手続き型、オブジェクト指向型と学んできた自分には副作用が何かというのはよくわからなかった。なぜなら副作用のない世界を知らなかったので副作用とはごく日常的なものだったから。Lispを始めて衝撃を受けたことは自分の知っていたことが副作用で成り立っていたということだ。衝撃だった。
Lispを学ぶために買った本には副作用はコードにバグを挟み込むものだから抹殺すべき!という話が書かれていてLispという言語は副作用を出させないような実装しかできないようにしようぜ!という感じがプンプンした。ガムのポイ捨てが多いならガムを販売しない!とか不法駐車が多いなら車を買わせない!とか過激なアプローチを想像した。実際には清濁併せて扱える感じで変数への代入も再代入?もできるからそこまで極端じゃない。実装者の強い意志で副作用を減らそうくらいのもの。関数型だから副作用0ってわけじゃないことを忘れないで副作用を減らすコードを書くことにこだわろう。
シンプル故に読みにくい
よく考えたらシンタックスに;とか[]とか{}が無いってすごいシンプルですよね。覚えることって()をいつ使うかだけ(それも小学校で教わる算数で出てくる使い方と同じだから考えなくても良い感じ)
でも()だらけ。だから読みにくい。でもこれって慣れるっぽいです。すでに僕は慣れ始めています。最近のエディタは良く出来てるから()も自動的に差し込んでくれるしね
イライラする
定期的に書かないとイライラしてくる
ネタだと思ってるでしょうけれど、半分ぐらい本当です。
とても形容しがたいんですが、丸括弧だけで囲まれた空間に1つのアルゴリズムを押し込められた時が快感なんです。
中毒性が高い言語かもしれません。
最初は嘘だろ?ネタだろう?冗談だろ?って思っていた。でも実際に書き始めたらこれは真実でとても中毒性の高い言語だった。イライラするというか不安になる?今はそんな感じ
今困っていること
SLIMEという素晴らしいツールが存在するらしい。Emacsにはとても簡単に導入することができるのだが使い方がわからないので困ってます。もっとちゃんと調べないといけない感じか...