日々の記録簿

日々のできごとの記録

日記

Rを勉強するためにいろいろ寄り道をしていた

投稿日:

Rをもっと勉強したいなと思って、『R言語徹底解説』を買ってみました。・・・が、ちんぷんかんぷん。クラスとか、オブジェクト指向とか、遅延評価とか、さっぱりわかりません。

これはいかんと思い、ここ2ヶ月ほど、プログラムを基礎から勉強していました。以下、手をだした言語と、役に立った書籍です。他にもいろいろ買ったのですが、自分の中で「これいい!」と思ったものだけ挙げています。

まずC言語から

最初は、『新・明解C言語入門』をひたすら書き写しました。1冊終わった次点では、これが何の役に立つんだろう?と思っていましたが、このあとC++に進んだときに、「基本は一緒だ」と気づいたので理解が一気に進みました。

他にも何冊か手をだしましたが、結局、これが一番分かりやすかったと思います。

ここまで1ヶ月くらい。

C++に手をだす

まず『やさしいC++』をやりました。例が淡白すぎて、あまり面白くはなかったのですが、Cから入ったためか中盤くらいまではすぐに理解できました。

次に手をだしたのが、”beginning c++ game programming”。英語ですが、「なぜこうするのか」「なぜクラスが必要なのか」といったあたりをコードで丁寧に説明してくれていて分かりやすかったように思います。

このとき、手元に『基礎からしっかり学ぶC++の教科書』を置いて、よくわからないところを補完していました。

この辺から、だんだんRのコードの書き方が変わってきました。うまく言えないのですが、「同じことを繰り返さない」「その言語っぽさを意識して書く」ということができるようになってきた気がします。

ここで勉強をはじめて2ヶ月くらい経っていました。

pythonを復習してみる

ここで久しぶりに『みんなのpython』を手に取ってみました。

で、読み始めた瞬間に「なにこれめっちゃわかりやすい!」「pythonすげー」って感動している自分がいました。前に読んだときは「オブジェクト指向とかクラスとか何言ってんだ?」って感じだったのに。

「初心者にはpython」という方もいますが、私はC++を勉強しないとpythonの良さがわからなかったので、人によるのだろうと思います。

ふたたびR言語・・・の前にhaskell

ここで再び『R言語徹底解説』を読んでみると、だいぶわかるようになっていました。クラスとか、オブジェクト指向とか出てきてもビビらない程度には・・・ですが。

ただ「遅延評価」「すべてが関数」といったあたりがイマイチわかりません。これはたぶん関数型言語も勉強しなければならないのでしょうね。

というわけで今はhaskellです。

正直、かなり難しくて、ぜんぜん進みません。ただ、haskellはおもしろい。C言語やpythonとはぜんぜん違った哲学があるように感じます。歩みは非常にゆっくりですが、もう少し勉強してみたいところです。

結論

他の言語を勉強したことで、Rのコードの書き方が変わった気がします(グローバル変数が怖いなんて前はぜんぜん考えていませんでした)。それと、これまで意味がわからなかったRの書籍の表現(クラスとか遅延評価とか)が何となくわかるようになりました。

正直、もっと若いうちに勉強しておくべきだったと思うのですが、後悔しても仕方がありませんよね。コツコツこれからも勉強していきます。

追記

私はふだんからLinuxを使っているので、環境構築はかなり楽でした。apt-getやyumで必要なものがあっさり揃うのは便利です。文字コードもあまり悩まなくていいですし。

Windowsではどうやるんだろう?と思って調べてみると、いろいろ面倒くさそうだったので、プログラムを勉強するときはLinuxのほうがいいような気がします。

スポンサーリンク

スポンサーリンク

-日記

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ThinkPad X250 のトラックポイントが使いにくい!

X250を1ヶ月ほど使っていますが、最近いまいち旧機種に比べて使いにくいと思うようになりました。 で、気づいたのが、X250はトラックポイントの反応が鈍いということ。旧機種に比べて、操作に力が要ります …

サイトをSSLに移行してみた!(その2)

SSLに移行したのはいいのですが、いくつか問題発見。修正した記録です。 awstatsのログが出力されない awstatsのログが出力されなくなっている。調べてみると、httpd-ssl.confによ …

surveyで相関係数を計算する

survey packageに相関係数を算出するコマンドがなかったのでメモ。こちらのサイトが参考になった。 library(survey) data(api) dstrat <- svydesi …

Thinkpad X250を購入した!

物欲に負けて、Thinkpad X250を購入してしまいました・・・。 さっそく、Linuxをインストールしたのですが、いくつか設定が必要なことがあったので、そのメモです。 トラックポイント/タッチパ …

i3wm + xfce にしてみた!

興味がありつつも敷居が高そうで試してなかったタイル型ウィンドウマネジャーを試してみました。xmonadにいったん挫折したあと、i3wm + Xfce 4を試してみたら、イイ感じだったので、導入方法の記 …