タグ

DSLに関するyuguiのブックマーク (14)

  • 言語内 DSL を考える。

    kmizu @kmizu いきなりだけど言語語り。自分の理想とする言語は、ユーザによる抽象化の試みを可能な限り邪魔しないと同時に、「破れにくい」抽象化層を簡単に構築できる言語であって欲しい。 2010-10-23 13:30:41 kmizu @kmizu 「破れにくい」というのはどういうことかというと、いわゆるマクロを持っている言語の多くに共通する話だと思うのだけど、定義されたマクロを間違った、あるいは想定外の使い方をした場合に、その中身、つまり展開結果がユーザに漏れてしまうのは駄目だと思うのだ。 2010-10-23 13:32:16

    言語内 DSL を考える。
    yugui
    yugui 2015/09/20
  • Go言語からmrubyのDSLを読み込んでよしなに使う - ローファイ日記

    Go言語便利だけど、文法をこねくり回して内部DSLを作るとかには向いていないので、ルビー風にDSLを読み込ませて設定と替えさせていただきます、と言うのが少し難しい。 いっそGo内部でRubyを組み込んで実行したい。mrubyならできるんじゃね? と思ってやってみたらそれっぽいのができた。 Vagrant、Packer、Consulなど、DevOps対応界隈でその名を知らない者はいない mitchellh さんの mitchellh/go-mruby · GitHub をつかう。 多分だけど、ハシモト氏も同じようなこと考えてたんじゃないだろうか。結局 hashicorp/hcl · GitHub を使われてるけれど。 完成したそれっぽいの.go package main import ( "fmt" "io/ioutil" "os" "github.com/mitchellh/go-mrub

    Go言語からmrubyのDSLを読み込んでよしなに使う - ローファイ日記
  • Doodle: A New Way To Build and Define Ruby Classes

    Ruby Weekly is a weekly newsletter covering the latest Ruby and Rails news. Doodle is an interesting new Ruby library that adds ActiveRecord-style conventions and relationship building functionality to the process of defining and instantiating (as above) Ruby classes. Instead of manually building the accessors, setters, and relationships between classes, Doodle lets you define these on a single li

  • コードは自然言語に近づくにつれ良くなっていくのか?

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    コードは自然言語に近づくにつれ良くなっていくのか?
    yugui
    yugui 2008/01/22
  • Matzにっき(2007-08-31) ruby->sql converter

    << 2007/08/ 1 1. [言語] 連載:C# 2.0入門 第3回 新しい繰り返しのスタイル − yield return文とForEachメソッド − @IT 2. [Ruby] Shoes, a Tiny Toolkit for Making Browser-like Things 2 1. [OSS] Download Hadoop at OSCON (Yahoo! Developer Network blog) 2. ウェブキャリアでWebエンジニアとしてのキャリアを磨こう 株式会社ウェブキャリア 3. 先達の業界に学ぶプロジェクトマネジメント 第1回 20年は遅れているITプロマネ:ITpro 4. 横浜 3 1. [OSS] 特別講演:「オープンソース・ソフトウェア開発思想とリアルな地域ネットワークの連 2. [Ruby] トークセッション-5:「世界に広がるオブジェク

    yugui
    yugui 2007/09/12
    "ParseTreeを使って構文木を解析して、そこからSQLクエリを生成しているのだった。"; 結局それに行き着くんだよなぁ。
  • 木構造データの妥当性をinstace_evalの黒魔術で検証してみる - sshi.Continual

    タイトルはおおげさすぎ。きっかけは 新しいwhyプロダクト、ShoesはGUIツールキット。 サンプルはこんな感じ。 Shoes.app do button "Press Me" do alert "You pressed me" end end こういうAPIは好みだ。 http://www.rubyist.net/~matz/20070801.html#p02 を見たこと。 「あーinstance_evalはやっぱり便利ですよね」と思ってみてたんだけど*1、この構造って再帰的に使えるよなぁ、と思ったのでコードでメモ。 ポイントは、上のソース中のbuttonというメソッド。buttonメソッドはソースの字面をみると定義なしに突然使われているんだけど、instance_evalの黒魔術を使うとこういうことができる。obj.instance_eval do .. end という構文を使うとブ

    木構造データの妥当性をinstace_evalの黒魔術で検証してみる - sshi.Continual
  • http://softlogger.com/6772/Ruby-on-Rails/sqldsl-a-ruby-way-to-build-sql-queries.aspx

    yugui
    yugui 2007/03/26
    ブロック使った言語内DSL風味なSQL生成系
  • へ〜たのめも:DSL厨は一度は COBOL を学べ - livedoor Blog(ブログ)

    2007年01月04日 DSL厨は一度は COBOL を学べ 今年の言語 @ 2007年01月 @ ratio - rational - irrational @ IDM 初めて聞いたが、「DSL厨は一度はCOBOLを触るべき」というお告げがあるらしい。御意。 結局、金融系のアプリなんて、データを取り出して、四則演算をして、デー タを書き込むだけ。なので、DSL は ファイルやソケットにデータを I/O するためのへのシリアライザ/デシリ アライザ(COPY句)と、透過的なインターフェース。 DB インターフェース(当は(デ)シリアライザに統合されていればいいけれど、 性能への配慮などから生 SQL 埋め込みが一番親しまれている)。 丸め誤差や桁落ちの生じない、整数/固定長精度実数演算。 が提供されていればいい。COBOL はこれを満たしているが、他の言語はど うも今一だ。結局のところ、

    yugui
    yugui 2007/01/04
    やっぱりそういう感じの世界なのか > 金融系システム
  • ヽ( ・∀・)ノくまくまー(2006-12-13) - DRY化チェックリスト

    ● [Rails] DRY化チェックリスト DRYにする方がいいのはわかる。でも実際どういう手順でやるのかに関する情報は意外と見つからない。それは「重複を避ける」という人間の感覚に訴えるものだから詳細は不要、という考え方もありえるが、そのままでは余りに概念的すぎて手が動かず、どう修正するかの方向性(ヒント)さえもない状況はやはり辛い。ということで、DRY化の手順を考えてみた。まだ自分でも探り探りな叩き台なので、意見はウェルカムである。 [DRY化チェックリスト2006冬] 定義は1ヵ所で行なう 無意味を排除する 繰り返しは共通化する 規約と関連付ける 責務を疑う 言語を拡張する 最後のは、手順というより、やるとしても一番最後にやれ、ぐらいの意味で。6番目というより999番目と表記してもいい。 ● 絶対DRY感 私はプログラマは来怠け者であり、自分が楽をするためにコンピュータを駆使する生き

    yugui
    yugui 2006/12/19
    かっこいい。
  • ヽ( ・∀・)ノくまくまー(2006-12-10) - dsl_accessor プラグイン

    ● [Rails] dsl_accessor プラグイン DSL的な getter と setter のハイブリッドなクラスメソッド定義を行うプラグイン。プラグインを作ったり、メタなコーディングを行っていると、クラスにちょっと持たせておきたい変数が頻繁に現れる。それらを簡潔に書くためのもの。 http://wota.jp/svn/rails/plugins/branches/stable/dsl_accessor/ ● class_inheritable_accessor との違い いやいや、ActiveSupport に色々ありますやん!その主張は正しい。実際、class_inheritable_accessor と殆ど同じ機能だったりする。違いは以下の2点だけ。 getter と setter は同じメソッド (引数の有無で挙動を変える) 従って、setter のメソッド名に "="

  • Introduction to Domain Specific Languages

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architects. View an example

    yugui
    yugui 2006/11/03
    Fowler
  • 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

    yugui
    yugui 2006/10/28
  • Martin Fowler's Bliki in Japanese - 内部DSLスタイル

    http://martinfowler.com/bliki/InternalDslStyle.html 2006/10/24 内部DSL(組込みDSLとも呼ばれる)は、ホスト言語内に書かれたドメイン特化言語である。 これは多くのプログラミング言語コミュニティでは一般的な考え方だ――特にLispコミュニティではそうだ。 だが最近では、急速に成長を遂げているRubyコミュニティでのDSLの扱いに、多くの注目が集まっている。 私は、内部DSLには二つのスタイルがあると思っている。 ひとつは、内部ミニ言語。 もうひとつは、言語エンハンスメント(強化)だ。 内部ミニ言語というのは、外部DSLでやるようなことを内部言語で行うことだ。 汎用言語のサブセットを意図的に自分のミニ言語として取り出す。 たとえば、以下のようになる(言語ワークベンチから引用した)。 mapping('SVCL', Service

    yugui
    yugui 2006/10/26
  • Martin Fowler's Bliki in Japanese - DSLの境界線

    http://www.martinfowler.com/bliki/DslBoundary.html 2006/8/1 ドメイン特化言語が表れたときに疑問として挙がったのが、 「DSLは何なのか」そして「DSLは何でないか」だった。 混乱の元はDSLに厳密な定義が存在しないためであり、 DSLとその他とを区別するグレーゾーンが広大だったためである。 私にとっては、「スコープ」と「能力」が限定されている点がDSLの重要な要素である(特定のドメイン向けであり、汎用言語にとって基的な機能が欠けている)。 つまり、良いDSLというのは、小さくてシンプルなものなのだ。 だからこそ「リトル言語」や「ミニ言語」と表現されるのである。 内部DSLではAPIとDSLの境界があいまいである。 基的に両者に違いはない。 内部DSLとは、単なるイイ感じの名前のついたAPIなのだ(「ライブラリ設計は言語設計(l

    yugui
    yugui 2006/08/06
  • 1