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

歩いたら休め

If the implementation is easy to explain, it may be a good idea.

【R】(☞ ´。ω゜)☞ 全てのRプログラマーはLispを学ぶべきである!

R

Lispを使って、関数型言語の機能を過不足なく勉強できそうな本が発売されていました。

この本に「Lisp関数型プログラミングの学習用言語として勧める理由」として以下のことが書かれています。Lispのプログラミングとしての特徴・利点をよく表しています。

  1. Lispは覚えることが少ない
  2. Lispインタプリタ―完成していなくても作った部分だけで、すぐに実行できる
  3. Lispに呪文は不要
  4. Lispには歴史がある
  5. Lisp動的言語である

RはLisp(Scheme)の影響を強く受けた言語であり、上のようなLispの特徴はRにも共通している部分が多いと思います。 また、Lispを勉強することによって、副作用のないきれいなコードを書けるようになったり、Rで学んだプログラミングテクニックを他の言語で活かせるようになるはずです。

そのため、今まで私は同期のRプログラマーにLAND OF LISPという本を薦めて(押し付けて)いたのですが、軽い本ではなく、彼自身、時系列予測の勉強に忙しくて手が回らないようです。彼はR言語でならapplyやdo.callなどの機能を使いこなせるのですが、同じようなことをブロックで実現しているRubyでのプログラミングには苦戦してしまっていました。

それは、R言語での知識を一般的な関数型の考え方と結び付けられていないから、すなわちLispに触れていないからだと思います。

kiito.hatenablog.com

私は以前はRに苦手意識を持っており、Rの強力な集計機能を使いこなせず、データ分析の作業もPythonで行っていました。

それが、Lispに触れることで、Rに特有のように見えていた機能(関数も変数に代入する形で宣言するところだとかapply系の関数だとか)はLisp(Scheme)に由来しており、それが普遍的なプログラミングのテクニックだということに気づき、使いこなせるようになりました。