This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
http://martinfowler.com/bliki/RubyAnnotations.html Rubyで人気のある機能のひとつにメタプログラミングのサポートがある。 メタプログラミングとは言語自身を変えてしまうように動作する機能のことだ。 たとえば、新しい予約語を導入するみたいな、ね。 主流の「中かっこ」言語族はメタプログラミングをほとんどサポートしてないが、メタプログラミングの有用な応用として「注記」をあげることができる。 「注記」は内部DSLスタイルで言語を拡張するにあたって重要な役割を果たす。 一見すると、Rubyは注記をサポートしていないように見えるが、頭をひねってみればそれが見えてくるはずだ。 注記を使って、言語要素(クラス、メソッド、フィールド等)をマーカーでタグ付けする。 とりわけ、その要素のメタデータをね。 そうすると、そのメタデータを実行時ないしコンパイル時に利用
http://www.martinfowler.com/bliki/DslBoundary.html 2006/8/1 ドメイン特化言語が表れたときに疑問として挙がったのが、 「DSLは何なのか」そして「DSLは何でないか」だった。 混乱の元はDSLに厳密な定義が存在しないためであり、 DSLとその他とを区別するグレーゾーンが広大だったためである。 私にとっては、「スコープ」と「能力」が限定されている点がDSLの重要な要素である(特定のドメイン向けであり、汎用言語にとって基本的な機能が欠けている)。 つまり、良いDSLというのは、小さくてシンプルなものなのだ。 だからこそ「リトル言語」や「ミニ言語」と表現されるのである。 内部DSLではAPIとDSLの境界があいまいである。 基本的に両者に違いはない。 内部DSLとは、単なるイイ感じの名前のついたAPIなのだ(「ライブラリ設計は言語設計(l
http://martinfowler.com/bliki/InternalDslStyle.html 2006/10/24 内部DSL(組込みDSLとも呼ばれる)は、ホスト言語内に書かれたドメイン特化言語である。 これは多くのプログラミング言語コミュニティでは一般的な考え方だ――特にLispコミュニティではそうだ。 だが最近では、急速に成長を遂げているRubyコミュニティでのDSLの扱いに、多くの注目が集まっている。 私は、内部DSLには二つのスタイルがあると思っている。 ひとつは、内部ミニ言語。 もうひとつは、言語エンハンスメント(強化)だ。 内部ミニ言語というのは、外部DSLでやるようなことを内部言語で行うことだ。 汎用言語のサブセットを意図的に自分のミニ言語として取り出す。 たとえば、以下のようになる(言語ワークベンチから引用した)。 mapping('SVCL', Service
Rake is a build language, similar in purpose to make and ant. Like make and ant it's a Domain Specific Language, unlike those two it's an internal DSL programmed in the Ruby language. In this article I introduce rake and describe some interesting things that came out of my use of rake to build this web site: dependency models, synthesized tasks, custom build routines and debugging the build script
■この記事で取り上げているトピックハイライト■ なぜ、メタオブジェクトを自分自身で使いこなせるようになると、日常のプログラミング生産性が大きく向上するのか? なぜ、メタオブジェクト技術を使うと、分散オブジェクト、Rails、DI、ORマッピング、Webサービスなどの、大きく生産性を向上させる仕組み自体を自分でつくれるのか? C#のどのメタオブジェクト機能をどのように使えば、簡単に「C# on Rails」を作れるのか? なぜ「Ruby on Rails」は陳腐化してしまう運命にあるのか? 「Ruby on Rails」を陳腐化させるアーキテクチャとはどのようなものなのか? ■構成■ まず、Ruby on Railsと同様のフレームワークを、C#で作ったとしたら、どのようになるのかという例題を通して、メタオブジェクト機能、つまり、リフレクション、カスタム属性、CodeDOM、パーサジェネレー
Haske 入門への In oduc on 木戸崇裕 aka shelarcy AutrijusTang said:“What’s as fast as C++, as concise as Perl, as regular as Python, as flexible as Ruby, as typeful as Java, and has absolutely nothing in common with PHP? It’s Haskell”. Haskell を何で知ったの? • ICFP (International Conference on Functional Programming) のコンテスト • LL (Lightweight Language) • IBM developerWorks の HaXML の記事 • Pugs, RType • Darcs, M
<< 2005/12/ 1 1. 壮行会 2 1. Firefox 1.5 3 1. [OSS] ITmedia エンタープライズ:FSF、GPLライセンス改定計画を発表 4 1. [教会]米子 2. 一族集結 5 1. 低レベル 2. [Ruby] Why Ruby is an acceptable LISP 6 1. [教会] Drinking Problem 2. 『わたしたちの田村くん』 7 1. Perl format string integer wrap vulnerability 2. ゾープ・ジャパン、Zope 3のトレーニングコースを実施 8 1. テーマ変更 9 1. W-Zero3 10 1. [Ruby] 名前重要 (Range編) 2. 待合室で無線LAN 11 1. [教会] 松江 12 1. W-ZERO3ふたたび 13 1. 雪 2. [Ruby] Rub
Java(Tiger)、C#、ActionScripot3などで採用されるアノテーション(メタデータ)について、Rubyにも欲しいので実現方法をちょっと考えてみる。 アノテーションの定義方法はこんなものだろうか… コメントをパースして、@module/@classなどのキーワードをベースにパースする。 @Foo = Class.new{} のように'@'と大文字で始まるものをアノテーションとする。 Rubyを拡張して@module/@classなどのキーワードを加える。 次に、アノテーションの利用方法はこんな感じ… @Foo @Foo("foo") または @Foo["foo"] @Foo(:key=>"foo") @Foo[ @SubFoo(:key=>"foo1"), @SubFoo(:key=>"foo2"), ... ] 本来は、プログラムに影響を与えない方法がいいが、Rubyで実
Domain-Specific Languages: An Annotated Bibliography1 Arie van Deursen - Paul Klint - Joost Visser CWI, P.O. Box 94079, 1090 GB Amsterdam, The Netherlands http://www.cwi.nl/ arie,paulk,jvisser/ 0.0.0.1 Abstract We survey the literature available on the topic of domain-specific languages as used for the construction and maintenance of software systems. We list a selection of 75 key publications
ソース・コードの自動生成は失敗の歴史である。しかし「DSL(Domain Specific Language:ドメイン特化言語)」の登場で、再び自動生成に関心が集まっている。開発すべきシステムを機能や目的によって分け、それぞれの設計情報を作成。そこからコードを自動生成する考え方だ。 本記事は日経コンピュータ3月20日号からの抜粋です。そのため図や表が一部割愛されていることをあらかじめご了承ください。本「特集2」の全文をお読みいただける【無料】サンプル版を差し上げます。お申込みはこちらでお受けしています。なお本号のご購入はバックナンバーをご利用ください。 設計情報から自動的にソース・コードを生成する。それができれば、プログラミング工程が不要になり、設計情報をソース・コードに変換する際に生じるバグもなくなるので、結果としてシステムの品質が上がる――。この考えに基づき、ソース・コードを自動生成す
There's a whole world of language features that we sometimes miss out on as Rubyists, such as pattern matching, S-expressions, and external domain-specific languages. But the good news is that we can have them, too, as long as we're not afraid to steal a few things first. Theft #1: Pattern Matching Pattern matching is a relatively rare language feature found in Standard ML, OCaml0, Haskell, Common
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く