タグ

DSLに関するHayatoのブックマーク (7)

  • 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは?:良いコ-ドへの道―普通のプログラマのためのステップアップガイド|gihyo.jp … 技術評論社

    良いコ-ドへの道―普通のプログラマのためのステップアップガイド 第5回メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは? おっす、おらメタプログラマ! 前回まで「良いコードとは?」という観点から、「⁠名前付け」「⁠スコープ」「⁠処理の分割」といったプログラミングで必須の基礎内容を解説してきました。今回は少し趣向を変えてメタプログラミングを取り上げます。メタプログラミングは「プログラミングをプログラムする」と言われますが、なんだかつかみどころがない概念に感じませんか? 実際、「⁠メタプログラミングとは何ですか?」と聞くと、人によって回答がまちまちです。そんなメタプログラミングですが、使いこなすとたいへん強力です。それでは、メタプログラミングについて考えを深めていきましょう。 メタプログラミングの悩み まずは毎回好例、各界の代表者にメタプログラミングについて

    第5回 メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは?:良いコ-ドへの道―普通のプログラマのためのステップアップガイド|gihyo.jp … 技術評論社
  • 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その3 Step2:メタ情報をExcelに移動する | gihyo.jp

    リスト2 Step2:メタ情報をExcelに移動したコード public static void main(String[] args) throws Exception { byte[] bytes = FileUtils.readFileToByteArray( new File("data.txt")); DataTable config = new XlsReader(                ┓ new File("config.xls")).read().getTable(0);  ┛① MessageParser parser = new MessageParser(bytes, config); parser.parse(); } private static class MessageParser { ... private DataTable config; pu

    第5回 メタプログラミング―Excelを使ったDSLを作ろう―その3 Step2:メタ情報をExcelに移動する | gihyo.jp
  • 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その2 Step1:ベタなコードで書いてみる | gihyo.jp

    Step1:ベタなコードで書いてみる まずはDSLなどを使わずにべたにコードを書くとリスト1のようになります。 まず①で固定長電文のファイルを読み込み、バイト配列に変換しています。バイト配列はそのままでは「配列の一部を取り出す操作」などが面倒です。ですので、②③で「ByteArray」という自作ユーティリティクラスを使用して、バイト配列を扱いやすくラップしています。 parseメソッドはデータの読み込み処理です。データがなくなるまで読み込み処理を繰り返します。④でそれぞれのデータ項目のサイズだけ順番にデータを読み込んでいます。同時にDate型への変換(toDate)や両端文字列の除去(trim⁠)⁠、Integer型への変換(toInteger)を行っています。⑤で1件分のデータを標準出力へ出力しています。実際に実行してみると図2の出力が得られます。 リスト1 Step1:ベタなコード p

    第5回 メタプログラミング―Excelを使ったDSLを作ろう―その2 Step1:ベタなコードで書いてみる | gihyo.jp
  • 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その4 Step3:リフレクションAPIで変換ルールを動的に適用する | gihyo.jp

    良いコ-ドへの道―普通のプログラマのためのステップアップガイド 第5回メタプログラミング―Excelを使ったDSLを作ろう―その4 Step3:リフレクションAPIで変換ルールを動的に適用する Step3:リフレクションAPIで変換ルールを動的に適用する Step3ではいよいよ読み取ったデータの変換処理を組み込みます。変換ルールはデータ項目に応じて異なるので、リフレクションAPI(コラム参照)を使用して動的に変換処理を適用する必要がでてきます。 下ごしらえとして、変換ルール用のConverterというインタフェースを用意し、変換ルールごとにConverterを実装するクラスを用意します(リスト3~6⁠)⁠。ここでは、IntegerConverter、DateConverter、TrimConverterの3つのクラスを作成しました。これらはStep1のstaticメソッドtoInteger

    第5回 メタプログラミング―Excelを使ったDSLを作ろう―その4 Step3:リフレクションAPIで変換ルールを動的に適用する | gihyo.jp
  • 連載企画 第1回 Perl で DSL する方法 - tokuhirom's blog

    昨年の YAPC の頃に書こうと思ってたネタを id:cho45 さんのひとことで不意に思いだしたのでここに記す。 まず、DSL とはなにか。この連載企画では↓こういうのを DSL とよぶことにします。 session 'testuser' => run { flow 'log in and out' => check { flow 'log in' => check { get 'http://localhost/'; fill form 'login' => { username => 'testuser', password => 'drowssap', }; content should contain 'log out'; }; flow 'log out' => check { get 'http://localhost/'; click href 'log out'; };

  • Martin Fowler's Bliki in Japanese - 言語ワークベンチ

    以下の文章は、Martin Fowler による 「Language Workbenches: The Killer-App for Domain Specific Languages?」 の日語訳である。 ソフトウェア開発における新しい考えの多くは、実は古い考えの新しい組み合わせ方です。この記事では、その新しい組み合わせ方のひとつ、私が「言語ワークベンチ(Language Workbenches)」と呼んでいるツールについて説明します。これは、現在広まりつつある考え方で、たとえば、Intentional Software、JetBrainsのMeta Programming SystemMicrosoftのSoftware Factoriesなどが例として挙げられます。これらのツールは古い開発スタイルを採用しており、私はこれを「言語指向プログラミング(language oriente

    Hayato
    Hayato 2005/09/04
  • Martin Fowler's Bliki in Japanese - ドメイン特化言語

    http://martinfowler.com/bliki/DomainSpecificLanguage.html ドメイン特化言語(DSL:Domain Specific Language)とは、 ある特定の種類の問題に特化したコンピュータ言語のことです。 様々な問題に対応できる汎用的な言語のことではありません。 ドメイン特化言語についてはこれまでも議論されてきましたし、 コンピュータが使われてきたのと同じくらい長い間使われてきました。 DSLを頻繁に使用しているコミュニティにUnixコミュニティがあります。 そこでは、DSLは「リトル言語」や「ミニ言語」などと呼ばれています (この伝統について、Eric Raymondが素晴らしい議論を提供してくれています)。 最も一般的なUnixスタイルのやり方は、 言語の文法を定義し、コード生成機能を使ってDSLから汎用的な言語を生成する、 あるい

  • 1