What is it, naokirin?

プログラミング言語の難しさとは(いろんな言語に触れてみてほしいと思って考えてみたこと)

最近友人と話していると思うのは、人によって言語やパラダイムに対しての価値観や捉え方がかなり違っていることです。私はどの言語も使いこなせるほどの能力はないですし、ちょっとしたプログラムを書いたことしかないような言語もたくさんあります。 ただ自…

lablglut + Windows でちょっとハマったのでメモ

ハマったと言っても大してハマったわけではないので、あとでlablglutの記事を書いてそちらに統合したいと思ってます。 Windows上でOCaml + lablglutで遊んでみていたのですが、どうもリンクが上手く言ってない模様でした。 > ocamlopt -I +lablGL lablglut.c…

pa_monadで遊んでみた

OCamlのモナド拡張、pa_monadで遊んでみました。今回はリスト内の値を長さとする棒を組み合わせて三角形ができる場合に、その周長が最大になるものをpa_monadを使ってListモナドで求めてみました。 open List (* Listモナド *) module ListM = struct let re…

JavaFXに触れてみた Part2

この前の記事でJavaFXの簡単な紹介をしました。 JavaFXに触れてみた今回はその続きでもう少しどのように使うかを書いていこうと思います。 前回はJavaFXのトップレベルのコンテナ(基本的にはウィンドウレベルの情報を保持している)とウィンドウ内の表示領域…

JavaFXに触れてみた

最近GroovyとかClojureとかを触ってた影響で、Javaのライブラリとかフレームワークを使うことが増えてきました。その中で、今回はJavaFX2.0に触れてみたのでちょっとだけ使い方を書いておきます。 まあ、Web上に既にかなりの量の情報が上がっているので、誰…

Clojureでテストを書く (with TDD)

Clojureでテストを書く、というのはclojure.testというものを用いることで簡単に達成できます。今回はTDDを進めていく体で、テストの書き方を紹介していこうと思います。 お題は簡単に行うためにFizzBuzz*1です。FizzBuzzについてはWeb上に多く紹介があると…

JSONファイルを処理するコードをClojureで書いてみよう

タイトルで「JSONファイルを処理するコードをClojureで書いてみよう」などと言っていますが、ほとんどすることはありません。基本的にはclojure.contrib.jsonを使って、JSON形式の文字列(およびJSONファイル)とClojureのマップの相互変換してもらえばいいだ…

Clojureでコマンドラインオプションを処理してみよう

Clojureでコマンドラインのオプションを処理するための便利なマクロがあります。それがclojure.contrib.command-lineです。早速ですが使い方を見てみます。 (ns sample.core (:use [clojure.contrib.command-line :only (with-command-line)]) (:use [clojur…

Clojureで簡易DSLを書いてみよう

今回は本当に簡単なDSL(もどきですが…)を書くということを行ってみます。 (defdsl :foo "foo" :bar "bar" :num 3 :data ["a" "b" "c"]) のようにファイルに書かれたDSLを読みこんで処理することを想定します。 (もちろんこれはClojureのコードになっています…

leiningenでClojureをビルドしよう

独りAdvent Calendar 第2弾として、Clojureについて書いていこうと思います。Clojureは私自身最近始めたばかりの言語で、1ヶ月ほど合間を見ながら少しずつやってきた言語です。 そのため、あまりよいコードになっていなかったり、Clojureっぽくない書き方に…

Clojureの"->"(arrow)マクロ

いろいろClojureを調べていたところ出くわした"->"というマクロが気になったのでリファレンスを見てなんとなく理解した気がするので書いておきます。 アロー(->)なマクロさん 現代的にしようという意図はありつつも、Lisp道をひた走るClojureさん。 連鎖的な…

boost::optional と boost::logic::tribool の違い

boost::optionalの説明でも書かれていますが、一応メモ。 boost::triboolは3値論理と言われるものを表現するための型です。 一般の論理値、true, falseに加えて、indeterminate(不定)というものが加わっています。 これはboost::optionalに非常によく似てい…

Clojureの引数や関数の戻り値にキャストの情報を与える

Clojureは動的型付け言語です。つまり、変数や関数の戻り値、引数の型宣言はありません。 (defn hoge [s] (.toUpperCase s)) でも、結局のところ、引数に渡すオブジェクトや関数の戻り値で使っているのはJavaのクラスのオブジェクトだったりするわけです。さ…

ClojureでFizzBuzzを書いてみた with テストコード

ClojureでFizzBuzzをテスト付きで書いてみました。Clojure自体がなかなかつかめなくて、さすがにTDDできるほど余裕がなかったです… ; 名前空間の定義と ; test用の関数を使うために:useでclojure.testをロード (ns fizzbuzz (:use clojure.test)) ; 実際のFi…

佐賀Groovy勉強会を開催しました

9/18(日)に佐賀Groovy勉強会を開催しました。元々Groovyの勉強会が開催されている地域がかなり限定されていることもあって妙に注目してもらっていたようです。私自身はそこまで注目されるとは思っていなかったのですが…ただUstreamを流す予定が、どうしても…

佐賀Groovy勉強会 演習のお題

佐賀Groovy勉強会で今回行う予定のお題です。 1. 小町算 小町算を行い、その結果を表示するプログラムを作成し、それをGParsを用いて並列計算することで高速化を図ってください。 まずはwithPoolを使ってみることをお勧めします。 小町算は1×2×3×4+5+6+7×…

佐賀Groovy勉強会を開催します

よく考えてみると、この話をブログに書いてなかったですね…9/18(日)に佐賀でGroovyの勉強会を開催します。 募集ページは http://partake.in/events/1b7c7076-7a05-48e8-bd0e-c436b8c2c8c7ちなみにUstreamの生放送もする予定です。 初の勉強会開催ですし、発…

neocomplcacheの設定が上手くいかない…(解決しました)

neocomplcacheの補完機能がいいらしいという噂を聞きつけてやってみようとしたものの…"std::"と打った時は補完されるのですが、"boost::"では補完が効かない。 clangを直接たたいた時は"boost::"でも補完が効くので困ってたり。追記:一応動くようにできまし…

GParsのデータ並列のハロワ的コードを書いてみた

GPars大きいですね…データ並列の部分で書くだけでこんな量になるとは。しかも機能が他にもいろいろあって、全然終わらない。これは腰を据えてやっていかないと全容把握は難しいかも。今回はGroovy 1.8.1とGPars 0.12を使いました。 GParsPool import groovyx…

きのこ本 感想 Part15

いくらなんでも間が空き過ぎているので、久しぶりにページをめくってみることにしました。 43 プログラミング言語は複数習得すべき(ラッセル・ワインダー, Russel Winder) プログラミング言語は複数習得すべき、というのはいろんなところで聞くことですが、…

他の人におすすめしたい、私の蔵書(プログラミング)

id:pocketberserkerさんとお話している時に「ブログで良書まとめ的なものをやってみたい」といった話が出たので、さっそくやってみることに。 とはいえ、良書くらいならそのあたりにいくらでもあるし、私の百数十冊の本のうち読んだもののほとんどは私の知識…

Groovy初心者がGriffonを試してみた

どうも、先日Ruby合宿に行ってきたのに、早速Groovyやってるnaokirinです。前々からやってみたいと思っていたGriffonを触ってみたので、ブログに書き残しておこうと思います。 まずはGriffonのプロジェクトを作る もちろん、Griffonのインストールは済んでる…

Ruby合宿 2011に参加してきました!

(今回は本のような形で書いていきます。理由?そうした方が楽しそうだから。) まえがき 参加してきましたよ。「Ruby?スクリプト言語?RubyってRuby on Railsでよく使う言語でしょ?Webアプリケーション作る気ないし、今はやらないかなー」という発言をした…

Qt @福岡 第4回勉強会に参加(&発表)してきました

今回はQt @福岡 第4回勉強会に参加(&発表)してきました。Qt @福岡 勉強会への参加は今回で2回目で、毎回あまり発表上手でない私が発表をさせてもらっています。本当にいつも発表させてもらってありがたいです。今回は発表される方が多いということで、前…

テスト駆動開発の練習(18) -Groovy&SpockでFizzBuzz-

練習でGroovy&SpockでFizzBuzzを書いてみました。FizzBuzzSpec.groovy import spock.lang.*; class FizzBuzzSpec extends Specification { def fizzbuzz def setup(){ fizzbuzz = new FizzBuzz() } def '3の倍数を受け取るとFizzを返す'(){ expect: fizzbuzz…

GroovyServが起動できない@Windows

GroovyServがWindowsでなかなか起動しない、ということがあってました。環境としてはGroovyServ 0.7および0.8 、Groovy 1.8 、Windows 7(x86)です。困っていたところをid:nobeansさんに .bbpBox91513736354992128 {background:url(http://a1.twimg.com/image…

きのこ本 感想 Part14

きのこ本感想です。このままの調子で感想書いていくと冬になってしまいそうで怖い・・・ 40 プロセス間通信とアプリケーション応答時間の関係 (ランディ・スタッフォード, Randy Stafford) プロセス間通信による遅延がアプリケーション全体の応答時間に影響…