09102011 Scala
先日東京出張の際にパラっとめくってヨサゲだったのだけど、思ったよりでかくて重かったので、改めてAmazonで注文した。
最近Scalaを触っていて、型で躓くことが多いです。あとエラーの内容がナニを意味してるのかよく分からなくてイラッとさせられることが多いんですが、まぁ踏ん張りどころということで。
今日はScalaプログラミング入門のDwemthyを写経したんだけどエラーが出まくって凹んだ。
09102011 Scala
先日東京出張の際にパラっとめくってヨサゲだったのだけど、思ったよりでかくて重かったので、改めてAmazonで注文した。
最近Scalaを触っていて、型で躓くことが多いです。あとエラーの内容がナニを意味してるのかよく分からなくてイラッとさせられることが多いんですが、まぁ踏ん張りどころということで。
今日はScalaプログラミング入門のDwemthyを写経したんだけどエラーが出まくって凹んだ。
09102011 life
仕事のやり方の大切さを説く。
内容に斬新さは感じられられないが、大切なことが当たり前のことのように書いてあるので、 良書だとは思う。
中古が安いので読み物としては費用対効果が高い。
インフラ系じゃないけど、色々勉強になるので、イイですよね。
Jenkinsの話は面白かった、GitHubのコードをテストしてくれるのは素敵だ。
Pythonだとbuildbotがあるけど、どっち使ったらいいんだろうかね。
ちなみに私はSphinxの紹介をしてきました。Sphinx便利ですよね。
それから静岡にもPythonのユーザーグループ欲しいよねっていうことになって、[三島|富士|静岡].pyでも作るかねって話になってます。A君メソッド的には飲み会(#0)から始めるんだろうけど、丁度明日つくる会があるので、興味があったら遊びに来るといいと思います。
05102011 Scala
最近ちょっとScala度が上がっています。螺旋を表すScalaのロゴはDNAのらせん構造をも意味するわけです(超訳)
ここ数年はずっとPythonをメインに使っていて、大抵のことはサクサクかけて便利だし、コード読みやすいしFlaskは楽しいしと、特に不便を感じることはなく使っていたのだけど最近幾つかの要因が重なって心境の変化があった。
devquizでPythonの高速化がめんどくさかった(というか出来なかった)こと。PyPyは手元のmacbookでは動かなかったので仕方ないとして、Cythonがクラスにしちゃうとよくわからんよねーと。だったら最初からC/C++で書けばいいんじゃないのかなぁと。
というわけで、Pythonの他に実行速度の速い言語も覚えておきたいなぁと思った(でも、LLっぽくお手軽に書きたいよね)。
Haskellは面白いがなかなか身につかない。プログラミングHaskellからReal World Haskellを順調に読み終えて、じゃぁ実際に使うかと思っても、意外なとこで躓くことが多かった。あと、RWHの次に読む本がないというのも独学なヒトにはつらいとこでなかろうか。
もう一つは、仕事で使う用のライブラリとかバインディングが揃ってなくて、職場で使う機会があまりなかったっていうのも大きいかもしれない。
でも関数型プログラミングは楽しいので使いたい。
そろそろ、新しい言語を身につけたいよねーと。出来れば関数型で。
最初、Scalaを触ったときは、REPLの起動が遅いし型の定義とかめんどくさそうだし、javaはあまり好きじゃないし、自分は使わないわなぁと投げ出していたのだけど、RWH読み終えて型の素敵さに目覚めた上で再度Scalaを触ったらイイかもと思い始めた。javaのライブラリも使えるので仕事用のコードも書ける。
素数のリストだってHaskell風味に書けるし、Maybeに似た感じのOptionっていう型だったある。
def sieve(s: Stream[Int]): Stream[Int] = Stream.cons(s.head, sieve(s.tail filter (_ % s.head != 0))) val ps = sieve(Stream.from(2))
というわけで、ちょっとScalaで書こうかなと思っている。
プログラミングHaskellは名著。問題も含めて一度は読むべき
Real World Haskellは型の素晴らしさを学んだ。と共にHaskell難しいのうと感じた。そしてちょっと挫折した。
Scalaプログラミング入門は楽しい。でも色々端折ってて疑問点が出まくりなのでコップ本は必須かな。
バイブルになるか?
ScalaってベターJavaなのかなぁ? Perl,Python,RubyとかのLLのヒトが関数型プログラミング+静的な型付けを求めて入るほうが自然な気がするんだけどなぁと、自分がそうなのでそう思うだけなのかなぁと。
04102011 Scala
S-99を解く。
素因数分解
class IntWrapper(n:scala.Int) { def isPrime(n:Int): Boolean = (n != 1) && (List.range(2,math.sqrt(n).toInt+1) forall (i => n % i != 0)) def sieve(s: Stream[Int]): Stream[Int] = Stream.cons(s.head, sieve(s.tail filter (_ % s.head != 0))) val ps = sieve(Stream.from(2)) def primeFactors: List[Int] = { def primeFactorsR(n: Int, ps: Stream[Int]): List[Int] = if (isPrime(n)) List(n) else if (n % ps.head == 0) ps.head :: primeFactorsR(n / ps.head, ps) else primeFactorsR(n, ps.tail) primeFactorsR(n, ps) } } implicit def int2IntWrapper(n:scala.Int) = new IntWrapper(n) println("s35: " + 315.primeFactors)
エラトステネスの篩はここを参考にした。
Streamを使うと
def sieve(s: Stream[Int]): Stream[Int] = Stream.cons(s.head, sieve(s.tail filter (_ % s.head != 0))) val ps = sieve(Stream.from(2))
とHaskellのように書ける
03102011 御殿場
同期の送別会と称して、前から気になっていたyakittoria inahoさんへ行ってきた。
気になっているといいつつ、大人の事情で一人だけノンアルコールという屈辱。次の日早朝から会議がなければよかったのにと。まぁ、ノンアルコールも充実しているので良し。

メニューが窓に。野菜が美味い

魚は真鯛だそうです。そして、自家製ジンジャーエールに移行。


焼き鳥は全部で10種で結構なボリューム。塩梅はちょっと気になったけど、酒飲んでたら このくらいのがちょうどいいんだろうなぁと、隣で金明とか白隠正宗をうまそうに飲んでいる 同僚を見ながら思った。

抹茶ティラミスで締めた。

満足の夜だった(日本酒を飲めなかったのを除いては)
まぁ、同期は研究離れちゃったけど、新しいとこで頑張ってくださいと。
03102011 music drum'n'bass
03102011 Scala
GUIアプリを作るのにSwingを使ってみる

結構簡単そう。
import scala.swing._ object FirstSwingApp extends SimpleSwingApplication { def top = new MainFrame { title = "First Swing App" contents = new Button { text = "Click me" } } }
02102011 家庭菜園
ニンニクを植えつけたのと、ほうれん草の種をまいた。もう少し葉物を植えてもいいかもしれない。
人参の目が出てきたけど、人参って発芽率が低いよね。

浅葱は去年植えたのが増えたので、今年は結構取れそう。去年は畝に植えて、春に他のものを植えられなくて困ったたので、今回は畑の端の方にうつしておいた。

先々週に植えたスティックセニョール。育て方がよくわからん。

01102011 drum'n'bass sake