近頃、Scheme(Gauche) で DSL を書くお仕事をしています。domain specific language のあれです。先日までは、Gauche で JSON を使って PostgreSQL とやり取りする CGI な API を書くお仕事をしていました。(主に設計面と進捗的なとこでボツりましたけどね。。面目なさ過ぎて涙目 orz) 現在お世話になっている会社にて、「言語は Scheme でも Common Lisp でも、他のなんでも好きなものを使って良いよ。」という素敵なお話で、Scheme を選びました。Lisp が好きな身としてはすごく幸せな環境です。(windows 環境であれば C# を選らんだと思いますが。) というのは、Scheme や Lisp という言語がパワフルかどうかとは関係ないところで困るんです。ユーザーが少な過ぎるんだと思います(他国では違うのか
Javaと同等レベルに高速に実行できるGroovyコードを書く方法が紹介されてます。 Yes, Fibonacci in Groovy can be as fast as Java ! こんなスクリプトです。 @ast.Bytecode int fib(int i) { l0 iload 1 iconst_2 if_icmpge l1 iconst_1 _goto l2 l1 frame SAME aload 0 iload 1 iconst_2 isub invokevirtual '.fib','(I)I' aload 0 iload 1 iconst_1 isub invokevirtual '.fib', '(I)I' iadd l2 frame same1,'I' ireturn } int groovyFib(int i) { i<2?1:groovyFib(i-2)+groo
Transformations availabilityUse of the production Forward API is subject to eligibility. Contact your Account Manager for more information or submit an inquiry to our Business Development team. Configs include a transformations key which specifies where payment method data should be included in outbound forwarding requests. Transformations are applied in the order they appear and may take advantag
ついったーで評判が良かった(?)ので紹介。 日本語DSLです。Scalaのを見て書いてみました。 http://jggugcode.appspot.com/view.groovy?id=2011 Object.metaClass.getの = {delegate} Object.metaClass.getを = {delegate} Object.metaClass.getが = {delegate} Object.metaClass.getする = {delegate} Object.metaClass.getで = {delegate} Object.metaClass.getし = {delegate} Object.metaClass.getかつ = {delegate} Object.metaClass.getならば = {delegate} Object.metaClass.g
LispBuilderというものを作ったのでgithubに公開しておきます。 これは何かというと、GroovyのBuilderとして作ったlisp風のDSLであり、実行もできます。言ってみるとGroovy上に構築したLisp風言語のインタプリタです。実験的なものですが、以下のようなコードが書けます。 フィボナッチ数の計算 def bx = new LispBuilder() assert bx.build{progn ${defun; fib; ${n} ${IF; ${or; ${equal; n; $1}; ${equal; n; $2}} $1 ${add; ${fib; ${add; n; $(-1)}} ${fib; ${add; n; $(-2)}}}}} ${fib; $10} }.eval() == 55 ニュートン法による平方根の計算 def env = new Env(
http://dontmindthelanguage.wordpress.com/2009/02/27/groovy-powerpoint-dsl/ スライドをGroovyのDSLで書くとPPTが生成される。 Groovyを文書のマークアップ言語として使うアプローチだね。 動的に変化する(コンテンツが変化する)PPTを生成したりするのに最適か。見積書とか提案書の自動生成してみたり。
ThoughtWorks アンソロジー を読んでいたら Ruby を使った DSL の話が載っており, 仕事でうっかり Ruby DSL を作ってしまった私は興味深く読んだ. 特段目新しい話じゃないものの, (DSL と言えば聞こえはいいけれど要は設定ファイルですからね.) オレオレ DSL を作る際には "Martin Fowler もやっている" と言えば 説得力もあるってもんだろう. 説得力はさておき, Martin Fowler は私の DSL が抱える問題に答えてくれなかった. 最近の私は Ruby DSL の文書化に困っている. その DSL/設定ファイル はもともと余興にちまちま作っていたもので, 思ったより出来がよくなったため実プロジェクトで使いはじめたところだった. ちゃんと使ってみると案の定ぼろぼろと問題がでて, 後始末のために残業が続いている. まあドッグフードの自業
良いドメイン特化言語 (DSL) とは、プログラマ以外でも読むことができる英語のようなものだと広く言われている。Dave Thomas氏は、DSLは自然言語にできる限り近づくものではない(source)と主張し、そのような考え方に反対する。 さらに、これをDSL設計の指針とすることがむしろ有害であると主張する。また、彼が信じていることがDSL設計では重要であることを強調し、必ずしも英語らしくなくてもうまくいくDSLの例を紹介している。 Dave氏によると、DSLは英語や他の自然言語に近づく必要はない。なぜなら、それは実際に自然言語を話さないドメイン専門家など、かなり特別なカテゴリやユーザを対象にするからだ。 ドメイン専門家 [中略] は業界内の専門用語を話します。それは、彼らが仲間同士で効率的にコミュニケーションするための簡単な表現として発明した特別な言葉です。専門用語は英語を使うかもしれ
Ruby Weekly is a weekly newsletter covering the latest Ruby and Rails news. Castanaut is a Ruby-backed screencasting domain-specific language that allows you to script screencasts in code. When these scripts are run, Castanaut takes control of your Mac and produces the desired effect. It's simply automated, scripted screencasting. The Origin Two weeks ago I was reading a post on 37signals' blog ab
Jay Fields' Thoughts: Implementing an internal DSL in Ruby RubyでのDSLの作り方をexpectationsというtesting frameworkを例にとって説明している。 やっぱassert_equalってオブジェクト指向っぽくなくてカッコ悪いよねwここはDSLでカッコよく書きたいものだ。 彼の言いたいことを日本語で超要約してみる。 まず、どういうふうに書きたいかを決める。こんな感じにしたい。 Expectations do # テストだよというブロック expect :expected do # :expectedが期待される値 :expected # ブロックの評価結果が実際の値 end end これから、これをRubyスクリプトとして実行可能な形式にする。 まず、DSLを読み込んだら(実行したら)、Expectatio
Jay Fields' Thoughts: Designing a Domain Specific Language Jay FieldsはThoughtWorksのプログラマーで専門はDSLだ。 どんなDSLに設計するか。DSLの利用者(≠DSL設計者)にどんな言語にしたいかを尋ねることがミソ。利用者にとって利用しやすい言語は利用者自身が考える。こういう方式はBusiness Natural Languageという形となって成功した。プログラマーにとって利用しやすいだけではダメだ。 利用者の問題領域は利用者自身が知っている。だから、DSLは利用者が設計する。プログラマーはそれを実行可能な形に変換するまでだ。 そんな彼が今までのDSL設計の経験の集大成としてexpectationsという新たなRubyのtesting frameworkを作成した。 http://expectations.
最近はJavaScriptを使っておれおれスクリプト言語の処理系を 実装するのが流行っていますね。 ちょっとその実用性について考えてみたのですが、 限定されたデータに対してだけアクセス可能な、 サンドボックス的なスクリプト言語というのは、Webサービスの プラグイン記述言語(サイト内DSLと呼んでみる。 サイト内とDSが被ってる気がするけど気にしない) としての需要があるきがします。 例えば、次のような特徴を備える言語が考えられます。 Cookie情報にはアクセスできない 指定したDOM Elementの子要素にしかアクセスでいない 指定した種類のElementしか作成できない XmlHttpRequestオブジェクトを作成できない 指定した種類のイベントしかObserveできない どうでしょう。Facebookのようにサードパーティが アプリケーションを追加できるようなプラットフォームを
先日、MozillaでECMAScript(JavaScript)の仕様を作っているJohn Resigさんが来日しました。 その際、1時間ほどのQ&Aの司会と、ライトニングトークでの発表を私させていたただきました。 その際、基調講演をしてくださった、etoさん(http://eto.com/d/PresenForJohnResig.html)のコメント。 こないだのJohn Resigによる講演の後に一緒に飲んだんですけど, その席で聞いた話がすんごく面白かったな. いろいろ面白かったんだけど,特にjquery2が面白かった. http://ejohn.org/apps/jquery2/ このURLなんですけど,コードはこんな感じ. <script src="http://jquery.com/src/latest/"></script> <script src="parse.js"><
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く