さった2月15日に名古屋で行われた "ジェネレーティブ・プログラミングの世界" 勉強会に参加してきました。マイナーな?ネタにも関わらず40名ほどの参加者があり、活発な質疑応答で大いに盛り上がりました。 発表内容の詳細は、主宰者である佐野さんのブログが詳しいので、こちらを紹介します。 「第29回IT勉強宴会in名古屋 ジェネレーティブ・プログラミングの世界 - 関西IT勉強宴会のブログです」 ジェネレーティブという思想が目指すもの 以下は私の理解です。多少、妄想めいたものが含まれている可能性がありますが、ご容赦ください。 大規模で、かつ長期にわたって使い続ける業務アプリケーションにこそ、ジェネレーティブつまり自動生成技術をベースとした開発スタイルが望ましい、と考えています。 たとえば Java アプリケーションであれば、フレームワークとして Java EE もしくは Spring が選択され
「DSL は自然言語のように読めることを目指すべきか」について、書籍「ドメイン特化言語」で、マーチンファウラーさんは次のような見解を述べていました。 1つだけ特に注意してほしいことがあります。それは、自然言語のように読める DSL を目指してはいけないということです。汎用言語でも同様の試みが何度となく行われてきました。 AppleScript はもっとも顕著な例です。このような試みはシンタックスシュガーの濫用をまねき、意味を理解しずらくします。DSL がプログラミング言語であることを忘れないで下さい。そのため、DSL を利用するときはプログラミングをしている感覚を持てるようにすべきですし、自然言語に比べてはるかに高い簡潔さと正確さを DSL は備えるべきです。プログラミング言語を自然言語のように見せようとするのは、誤った方向の努力です。プログラムに手を加えるときは、プログラミング言語の環境
試してみるよ。 とりあえず商品をまとめたセット商品についての仕様を書いてみる。 まず商品の定義 module exec/shohin sig Shohin{} pred show{ } run show sigはJavaとかのclassだと思えばだいたいOK。 なんか商品がみっつ出た。 じゃあ、セット商品を定義してみる。 sig SetShohin{ bundle: set Shohin } おー、同じ商品が3つのセットに含まれてしまった。Alloyさんイヤらしいとこついてくる。 ということで、ひとつの商品は多くてもひとつのセットにしか含まれない、っていう制約を加えます。 fact { all s: Shohin | lone bundle.s } 書き下ろすと「すべての商品について、商品をbundleとして持つのはたかだか1つ」になるんですけど、この、フィールドを左に書く書き方は通常のプ
目次 『言語実装パターン』推薦のことば 謝辞 前書き 第I部 さあ、構文解析に取りかかろう 1章 言語アプリケーションのいろは 1.1 全体のあらまし 1.2 パターンを一巡する 1.2.1 入力文の構文解析をする 1.2.2 木を構築する 1.2.3 木の走査をする 1.2.4 入力が意味する内容を見つけ出す 1.2.5 入力文をインタプリタで実行する 1.2.6 ある言語から別の言語へと変換する 1.3 アプリケーションを解体する 1.3.1 バイトコードインタプリタ 1.3.2 Javaバグ検出器 1.3.3 Javaバグ検出器其の弐 1.3.4 Cコンパイラ 1.3.5 Cコンパイラを活用した C++実装 1.4 パターンを選んでアプリケーションを組み上げる 2章 基本的な構文解析パターン 2.1 句の構造を識別する 2.2 再帰的下向き構文解析器を構築する 2.3 文法 DSLを
eBayが、JavaScriptアプリケーションからSQL文のような形式でデータベースへの問い合わせを記述できるDSL(ドメイン固有言語)のql.ioを発表。オープンソースとして公開しました。 現在、多くのWebアプリケーションが、バックエンドとのデータのやりとりにHTTPをベースにしたAPIを用いています。しかし、WebベースのAPIによってデータを取り出すのは、プログラマにとって実は手間のかかることです。 例えば、キーワードを入力すると関連する商品の名前、詳細、購入者の評価をユーザーに表示する、というWebアプリケーションでは、まずキーワードでデータベースを検索して商品IDを取得し、今度はその商品IDをキーにして名前や概要、評価の情報を取得する、といったように、APIを繰り返し呼び出す必要があります。 ql.ioはこうした内容をSQLのように分かりやすい記述で実現するだけでなく、複数の
Sinatraのようなベース言語の構文を使って実現するDSLを 内部DSLといいます 前回僕が書いたChinatraは一見内部DSLにみえるけど ベース言語とは異なる構文を使った外部DSLです でも時代の風は内部DSLに向いています the 0.8 true language 言語ワークベンチ 自分もRubyの構文のユルさとメタプログラミングを使って Sinatraのような内部DSLを書いてみたい そしてRubyistをマインドコントロールしたい.. そんなわけで... Sinatraと別の構文を持った Webフレームワーク「Shynatra」をRubyで書きました:-) ShynatraはRubyで下記のような最小労力で 手早くウェブアプリケーションを作成するためのDSLです # myapp.rb require "shynatra" R/:hello./ { 'Hello world!
Caheo TV - Link trực tiếp bóng đá caheotv, xembd sôi động ca heo tv Caheo TV - Trang trực tiếp bóng đá với hình ảnh và âm thanh chất lượng cao. Caheotv luôn luôn có bình luận viên tiếng việt ở mỗi trận đấu mang đến sự cuốn hút cho người hâm mộ. Caheo tv cung cấp link xem bóng đá trực tuyến nhanh nhất hiện nay với các giải đấu siêu đỉnh tạo trải nghiệm cực hấp dẫn cho người yêu thích môn thể thao v
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く