wadise

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            22 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks
          江南白衣 10:00:26
          JetBrains opens Meta Programming System for Early Access

          http://www.theserverside.com/news/thread.tss?thread_id=34619
          江南白衣 10:00:46
          JetBrains那個DSL制造器終于放出來溜達(dá)了
          magicgod 10:00:55
          是不是以idea為依靠?
          江南白衣 10:01:09
          an IDE-like language workbench for creating domain-specific languages (DSLs) and programs. It includes a plugin for IntelliJ IDEA which helps to generate Java code from your DSLs.
          ?
          magicgod 10:01:15
          dsl跟rules有什么區(qū)別?
          江南白衣 10:02:39
          Martin Flower最近出來湊熱鬧,寫了一篇關(guān)于Language workbench的blog阿,非常綜合的總結(jié)了面向語言編程,你看他的好了
          http://martinfowler.com/articles/languageWorkbench.html
          江南白衣 10:03:44
          不是說,面向?qū)ο蟮姆庋b不能真的一一映射現(xiàn)實(shí)世界.
          而面向人類語言習(xí)慣的封裝,從邏輯學(xué)上,更能影射人類的思維.
          magicgod 10:04:00
          看了一下,真的有點(diǎn)奇怪
          江南白衣 10:04:43
          他那篇blog,一開始舉的例子太長太無聊了,搞得大家頻頻起身吃零食,去廁所....
          buaawhl 10:04:43
          LOP.
          magicgod 10:05:22
          哈哈,是的
          magicgod 10:05:41
          但我總覺得還是有點(diǎn)隱隱不對勁
          buaawhl 10:06:07
          groovy, beanshell, js, python, ruby 不都是 LOP嗎?
          ?
          江南白衣 10:06:18
          不是吧 ....
          buaawhl 10:06:18
          LOP的一個例子
          magicgod 10:06:20
          這又回到了五六十年代人工智能和專家系統(tǒng)的方向了


          ?
          buaawhl 10:06:43
          Lisp允許自定義 語法規(guī)則
          magicgod 10:06:43
          lisp是恐怖的
          buaawhl 10:06:56
          對。最終的出路就是 人工智能
          magicgod 10:07:02
          學(xué)autocad的時候,真是要暈死了
          magicgod 10:07:24
          不見得是自然的,應(yīng)該有一種類自然語言先出現(xiàn)
          buaawhl 10:07:28
          autocad用Lisp ?
          江南白衣 10:07:28
          Lisp按MF的分類,屬于Internal DSL.用自己來表達(dá)DSL
          而其他的都屬于External DSL,需要轉(zhuǎn)譯器
          magicgod 10:07:40
          我看了ilog的語言,看上去不錯
          江南白衣 10:07:52
          MPS這種是用轉(zhuǎn)譯器的阿,不同LISP.
          江南白衣 10:08:50
          JetBrains的MPS,優(yōu)點(diǎn)在幫你制造語言的同時,制作這種語言的IDE...
          magicgod 10:10:01
          應(yīng)該是為了讓這種語言給用戶或低級實(shí)施人員用吧
          江南白衣 10:11:18
          周末試用一下再說了,這年頭,總是廣告做得好,實(shí)際沒什么用.
          buaawhl 10:11:43
          MPS is a Java Code generator ?
          ?
          magicgod 10:12:16
          是不是這樣的理想:創(chuàng)建一種語言適合客戶直接使用
          buaawhl 10:12:23
          http://www.jetbrains.com/mps/start_mps3.html? look its sample
          magicgod 10:12:29
          那么就相當(dāng)于把域邏輯的功能放給用戶來用
          magicgod 10:12:49
          這個hello world是有點(diǎn)復(fù)雜的,我覺得他舉的例子不對
          buaawhl 10:12:52
          客戶直接使用 自然語言。比如,漢語
          magicgod 10:13:48
          而且更好規(guī)范,適合計算機(jī)來識別
          江南白衣 10:14:25
          舉個例子吧,SQL屬于DSL....你如果不用SQL,也可以用一堆API來進(jìn)行查詢,像hibernate的critexx.....
          但SQL明顯更易讀.

          so,把代碼封裝成語言,在某些情況下比封裝成OO的lib更好.

          ?
          magicgod 10:15:13
          是的,那如果封裝成OO的語言呢?
          magicgod 10:15:56
          一個用戶寫好的DSL代碼,繼承給另一個用戶去使用,豈不是很方便
          buaawhl 10:16:57
          SQL能夠做到的事情很少啊。where = if.?
          江南白衣 10:17:03
          可繼承的語言?這不是我的知識范圍內(nèi)了...
          buaawhl 10:17:08
          if( a = 1) b = 3;
          buaawhl 10:17:25
          select * from A where b = 3
          buaawhl 10:17:43
          難度差不多啊
          ?
          江南白衣 10:17:57
          MF說,DSL就是不是不符合圖靈XXX的語言,不自足的,只能成為程序的某一方面,而主體必須要General Language(like java)完成.
          magicgod 10:18:25
          是的,DSL就是要簡單
          江南白衣 10:18:40
          靠,打字太快,
          MF說,DSL就是不符合圖靈XXX的語言
          ?
          buaawhl 10:18:43
          問題是在于,General Language(like java) 表達(dá) 程序的某一方面(簡單)的時候, 也相當(dāng)簡單。和DSL一樣簡單
          magicgod 10:18:53
          目標(biāo)不是程序員,而是行業(yè)用戶
          江南白衣 10:19:08
          而且,簡單的時候你可以不封裝阿.
          magicgod 10:19:09
          如果要到DSL的程度就可以視為DSL
          buaawhl 10:19:11
          那么,有必要用另一個簡單,來定義 本來就簡單的東西嗎?
          buaawhl 10:19:41
          行業(yè)用戶?:-) for example? what they realy need?
          江南白衣 10:19:41
          不是這個意思啊.
          buaawhl 10:19:58
          前一段時間,看了一下 Rule Engine
          江南白衣 10:20:00
          ilog的規(guī)則語言就可以讓電信的mm自定義收費(fèi)規(guī)則
          magicgod 10:20:26
          是的,就是要夠簡單,這只是一個模糊概念

          ?
          buaawhl 10:21:10
          yes. i know iLog. 怎么說呢.那是商業(yè)的成功.另外也是業(yè)務(wù)模塊的成功.
          magicgod 10:21:54
          而且實(shí)際上DSL應(yīng)該是面向?qū)嶋H人群的,比如:電報碼是一個非常復(fù)雜的編碼,可是仍然有大批的業(yè)務(wù)人員直接操作
          江南白衣 10:22:01
          其實(shí)也不一定直接面對行業(yè)用戶
          只是把某些面向OO的lib ,轉(zhuǎn)為面向語言的封裝,產(chǎn)生更多的藍(lán)領(lǐng).
          但我覺得這個方向還有太多東西要研究,MPS只是一次探索
          buaawhl 10:22:24
          誰能給出一個 具體的 ilog sample ?? MPS可以說是 MDA。
          ?
          buaawhl 10:22:33
          Model Graph -> Code
          buaawhl 10:23:16
          iLog和JRules是同一個產(chǎn)品嗎?
          ?風(fēng)之子 10:23:19
          Ilog是rule->Fuction
          magicgod 10:24:27
          If??? the call destination number is the preferred numberThen???? apply the preferred number rate
          江南白衣 10:24:27
          MPS的內(nèi)涵一定不只Model Graph -> Code ,看他的那篇總領(lǐng)性的文章,不只如此的.
          不過可能第一版只做到這樣.
          magicgod 10:24:41
          If??? the call destination number is the preferred numberThen???? apply the preferred number rate
          magicgod 10:24:44
          If
          ??? the call destination number is the preferred number
          Then????
          ??? apply the preferred number rate
          magicgod 10:24:53
          ilog's bal
          莊表偉 10:25:02
          這是ilog的代碼?
          magicgod 10:25:02
          已經(jīng)比較接近自然語言了
          莊表偉 10:25:08
          讓我想起了cobol
          buaawhl 10:25:10
          yes. i c. 江南白衣(228013) 10:20:00
          ilog的規(guī)則語言就可以讓電信的mm自定義收費(fèi)規(guī)則 。??
          電信的mm寫這個?
          magicgod 10:25:13
          google上抄來的
          buaawhl 10:25:26
          是啊。Pascal, VB 也是這樣
          magicgod 10:25:26
          是的,有點(diǎn)象,所以cobol至今還有生命力
          magicgod 10:25:43
          destination number

          ?
          magicgod 10:29:09
          這應(yīng)該就是DSL的好處,用戶很快搞懂了SQL的基本方法,以后做報表就簡單了
          buaawhl 10:29:15
          可以自定義語言規(guī)則。
          buaawhl 10:29:27
          其實(shí),就是關(guān)鍵字替換了。
          江南白衣 10:29:40
          不會的,ilog的規(guī)則語言也是綁定IDE的,你打個節(jié)字,會出來一個下拉選擇框,只能選節(jié)假日
          phalanger 10:29:50
          自然語言太自然了不是什么好事,到最后還是要一個語言規(guī)則,發(fā)展到最后,其實(shí)還是要小mm掌握一門“電腦語言”
          magicgod 10:30:10
          http://blog.csdn.net/calvinxiu/archive/2005/05/27/382372.aspx
          magicgod 10:30:20
          做了一個比較
          江南白衣 10:30:49
          就像我們用dtd,xsd限制 xml一樣.
          magicgod 10:31:32
          既然用戶需求這么多變,好!干脆開放給你們,自己寫去吧!這總算好了吧
          buaawhl 10:31:41
          對,XML表示邏輯,沒有一點(diǎn)優(yōu)勢。iLog采用的是script方式。好多了。
          buaawhl 10:32:18
          不過,難道iLog要為每一個國家行業(yè)定制一種 解釋引擎/IDE?
          ?
          莊表偉 10:33:03
          看了你的blog,和我的思路,有很多可以相互參照之處
          buaawhl 10:33:13
          iLog能夠流行起來,完全靠的是,行業(yè)經(jīng)驗(yàn)。和 DSL的優(yōu)勢 沒有關(guān)系
          莊表偉 10:33:40
          我現(xiàn)在在寫的對于OO的分析,就是認(rèn)為它事實(shí)上無法準(zhǔn)確的描述真實(shí)世界
          莊表偉 10:33:51
          而要描述需求世界,OO又是不足的
          buaawhl 10:33:54
          假設(shè)我也是iLog公司,我用支持 中文變量的 VB,一樣可以做到這樣的程度
          江南白衣 10:34:14
          ilog但如果不靠DSL ,而是一堆 API,想必大打折扣。
          buaawhl 10:34:22
          只要把業(yè)務(wù)模塊做好了。
          magicgod 10:34:48
          關(guān)鍵在于要讓用戶來寫這個東西最好了
          buaawhl 10:34:53
          是啊,VB 的 function 也可以不帶 ( )

          ?
          莊表偉 10:35:05
          要更好的描述需求世界,應(yīng)該要將真實(shí)經(jīng)驗(yàn)轉(zhuǎn)換為需求世界中的規(guī)范定義,然后需要另外的、特定的、描述需求的語言
          magicgod 10:35:19
          動態(tài)語言更好,這其實(shí)就是向人工智能的發(fā)展
          buaawhl 10:35:26
          用戶用iLog從來就不會定義 function。從來只是調(diào)用 function.
          莊表偉 10:35:27
          這樣的語言,究竟是不是要類似自然語言,我卻有不同的看法
          magicgod 10:35:49
          再下去用戶就會提要求了,能不能搞懂自己的意思啊
          莊表偉 10:35:52
          可能類似于model graph這樣的圖形表示會更加好
          buaawhl 10:35:56
          那么,VB也是一樣。我就給你一本關(guān)鍵字手冊,而不是API手冊。有什么區(qū)別?
          magicgod 10:36:27
          正是如此,DSL就是領(lǐng)域內(nèi)的一種語言啊
          magicgod 10:36:51
          定好語法,函數(shù),然后用戶你去寫吧,最多給你一個IDE可以調(diào)試一把
          buaawhl 10:37:07
          不是一種。而是多種。:-) ilog 一種,jrules一種,drools一種,
          江南白衣 10:37:10
          我還是認(rèn)為語言和API之間的差別是巨大的。
          而且APi還受很多繼承阿,多重繼承阿之類的編程語言本身的限制。

          ?
          莊表偉 10:37:19
          如果我的思路沒錯的話,那么我的那篇文章,最后會自然的接上DSL這樣的語言
          莊表偉 10:37:27
          ?
          magicgod 10:37:33
          是的,聽了阿飛介紹的GP確實(shí)感觸比較大
          magicgod 10:38:04
          就是又回到了原來的世界,語言要定義得簡單,讓客戶能使用,不要設(shè)計包羅萬象的東西
          buaawhl 10:38:07
          江南白衣(228013) 10:37:10
          我還是認(rèn)為語言和API之間的差別是巨大的。
          而且APi還受很多繼承阿,多重繼承阿之類的編程語言本身的限制。

          應(yīng)該說 是? 關(guān)鍵字? 和? API之間的差別吧
          江南白衣 10:38:18
          MF說,LOP== GP,微軟軟件工廠,JetBrains MPS三線發(fā)展...
          magicgod 10:38:23
          甚至對于一個項目就設(shè)計一種語言
          magicgod 10:38:41
          然后實(shí)際上的軟件開發(fā)核心讓用戶來開發(fā),哈哈,完美啊
          莊表偉 10:39:20
          哪有這么簡單,最為困難的部分,就是將真實(shí)世界,抽象、界定為含義清晰的需求世界的工作。

          ?
          buaawhl 10:39:18
          magicgod(2240529) 10:38:23
          甚至對于一個項目就設(shè)計一種語言
          magicgod(2240529) 10:38:41
          然后實(shí)際上的軟件開發(fā)核心讓用戶來開發(fā),哈哈,完美啊?

          LOP文章就是這么鼓吹的。:-)
          magicgod 10:39:25
          把需求變更的事轉(zhuǎn)嫁到用戶上去,干脆我也不用了解業(yè)務(wù)了,你自己玩去吧,
          江南白衣 10:39:26
          to buaawhl:哈哈,得找些語言學(xué)家和你聊聊天了:)
          即使目前是關(guān)鍵字==API,也只是現(xiàn)狀,明天會更好
          magicgod 10:39:53
          在一個小范圍的功能中讓客戶來方便定制,象家電一樣
          莊表偉 10:39:59
          這是需要長期的經(jīng)驗(yàn)積累的
          buaawhl 10:40:15
          :-) 明天,當(dāng)然。我只是力圖破除 商業(yè)概念的 迷信。
          江南白衣 10:40:22
          微軟那個work beach,又有人試了沒有?
          magicgod 10:40:39
          其實(shí)DSL也不是什么先進(jìn)的概念,只是老調(diào)重彈而已
          magicgod 10:41:02
          IT界需要這樣的東西,快被用戶逼瘋了,項目已經(jīng)成為人際關(guān)系的產(chǎn)物
          buaawhl 10:41:02
          不要被誤導(dǎo)了。這些廠家 的成功決不是因?yàn)槭裁碊SL。完全是行業(yè)經(jīng)驗(yàn)的積累。 DSL只是他們炮制出來的壁壘和規(guī)則。
          buaawhl 10:41:34
          用戶的培訓(xùn)也是一大筆費(fèi)用呢
          magicgod 10:41:57
          那是,DSL是幫助廠家來專注到業(yè)務(wù)上的
          江南白衣 10:42:11
          Domain Specific Tools CTP Released for Visual Studio 2005 Beta 2
          http://www.theserverside.net/news/thread.tss?thread_id=34253
          buaawhl 10:42:20
          就說那個電信的例子。不經(jīng)過培訓(xùn),MM怎么懂 DSL?
          magicgod 10:42:28
          用不著再追新技術(shù),到此為止了,框架也不需要了,干脆,咱們上DSL吧,哈哈
          buaawhl 10:42:51
          而且,那些DSL的邏輯語法極其簡單,其實(shí)是起著 數(shù)據(jù)的作用
          magicgod 10:42:51
          只要培訓(xùn)成本與原來持平即可
          江南白衣 10:43:13
          微軟不是傻子,如果別人是學(xué)院派的亂試,微軟的加入至少說明點(diǎn)問題。
          buaawhl 10:43:41
          不可能啊。DSL只有 MS, iLog這樣的大公司才搞得起。那屬于規(guī)則制定啊
          ?
          buaawhl 10:44:02
          小公司 不要想著 定義自己的 DSL
          ?

          ?
          magicgod 10:44:03
          行不行的拉出來溜溜,目前成功的DSL已經(jīng)有了,就看各軟件公司如何制定DSL
          江南白衣 10:44:22
          MS提供的是工具噢.....
          magicgod 10:45:00
          術(shù)語,規(guī)則都可以直接制定,那么支持DSL開發(fā)的廠商顯然是成本更低了
          buaawhl 10:45:08
          白衣再把那個ms dsl發(fā)來,我仔細(xì)看看?
          magicgod 10:45:18
          各行業(yè)應(yīng)該都會干這事的
          buaawhl 10:45:40
          我先詳細(xì)了解一下 MS DSL的用法??
          江南白衣 10:47:05
          那要先裝vs2005b2,我機(jī)上只有vs2003,一直沒試呢。
          江南白衣 10:47:20
          http://www.theserverside.net/news/thread.tss?thread_id=34253
          buaawhl 10:49:11
          這就是剛才那個連接,我還有。我是說,你前幾天發(fā)來的新聞。?? 是啊,我也沒有2005。沒辦法試驗(yàn)。也看不到 demo
          江南白衣 10:49:31
          what新聞?
          江南白衣 10:49:47
          今天另一個比較好的發(fā)布信息是
          Backport175 1.0 released: Annotations for Java 1.3 & 1.4 ,codehaus出的。
          buaawhl 10:50:08
          MS DSL Tool 發(fā)布的新聞。好像有用戶體驗(yàn)
          莊表偉 10:50:10
          有沒有Flash這樣的動態(tài)演示呢?
          江南白衣 10:51:01
          俺那個針對舊項目的ORM,可以用annotation了:)
          之前要包含一個meta class,像groovy那樣。
          buaawhl 10:50:59
          其實(shí),從我內(nèi)心的感覺,DSL Tool = Javacc
          ?
          江南白衣 10:51:28
          是超級加強(qiáng)版的javacc
          buaawhl 10:51:32
          iLog 那套簡單的 if ... then? ....?? 我用javacc也能做出來。
          buaawhl 10:52:05
          當(dāng)然有IDE支持
          ?風(fēng)之子 10:52:10
          iLOG的關(guān)鍵是動作語義
          ?風(fēng)之子 10:52:19
          不是if..then

          ?
          江南白衣 10:52:25
          看hibernate里用antlr翻譯Hql,用EBNF語法慢慢表示,累死了,而且還有很多不如意的地方,他自己注釋起來很多todo...
          ?風(fēng)之子 10:52:48
          Action Semantics
          buaawhl 10:53:03
          但你這里看到,DSL IDE里面,關(guān)鍵字都在下拉框里面。這里的關(guān)鍵字 就相當(dāng)于 數(shù)據(jù)了。
          buaawhl 10:53:09
          Action Semantics?
          江南白衣 10:56:24
          Quality-focused Groovy 1.0 pre-release 2 is out
          http://www.theserverside.com/news/thread.tss?thread_id=34587
          這篇文章的討論很搞笑...大部分人都在講
          i use groovy for
          1. ...
          2. ...
          很像槍手們在旺場
          buaawhl 10:56:42
          ?風(fēng)之子(17256936) 10:52:10
          iLOG的關(guān)鍵是動作語義

          啥叫動作語義?for example??? 我將來的一個主要理想,就是肅清 buzz word的迷信。?
          江南白衣 10:56:54
          不過的確列舉了動態(tài)語言一些可用的地方。
          莊表偉 10:57:01
          是啊是啊,新詞太多,暈
          buaawhl 10:57:10
          http://www.brics.dk/Projects/AS/?? Action Semantics
          Home Page?
          莊表偉 10:57:16
          ?
          buaawhl 11:03:16
          3.2 ILog的BAL(Business Action Language)--最完美的王者?
          ?? 沒有實(shí)際用過,只能看文檔過過癮。從文檔來看,配合Ilog的編輯器,的確就是最完美的規(guī)則語言了。

          If??? the call destination number is the preferred numberThen???? apply the preferred number rate
          ?
          江南白衣 11:05:12
          to buaawhl:
          關(guān)鍵字==API,我覺得你抓得很對,很快抓住了Ilog的本質(zhì).
          但是,抓得太快會忽略了語言的中間過程.
          江南白衣 11:05:28
          請看下面這段:
          ?
          江南白衣 11:06:00
          如果我們有一輛購物車

          并且購物車?yán)锩嬷辽儆袃杉锲?

          并且購物車?yán)锩娴奈锲凡怀^四件

          并且如果購物車?yán)锩娴纳唐穬r值至少是100美元

          并且如果客戶是黃金客戶

          那么就為該客戶打八五折

          并且顯示信息“我們?yōu)槟S金客戶打了八五折”
          ?
          buaawhl 11:06:46
          這是一個? and? 邏輯
          buaawhl 11:07:02
          沒有 or ,? 很簡單。
          江南白衣 11:07:04
          這就是一段規(guī)則語言.
          如果我們先不抓ilog,而是自己也做一次語言分析的練習(xí),那你分析出這門語言有什么要素呢?
          莊表偉 11:07:39
          這樣的規(guī)則語言?
          buaawhl 11:07:47
          要素?what do you mean ????
          莊表偉 11:07:49
          我編一個,你看看算不算:

          ?
          莊表偉 11:07:57
          我們給他100塊
          莊表偉 11:08:10
          如果他覺得夠了,我們就不再給了
          莊表偉 11:08:21
          如果他覺得不夠,我們就再給100
          莊表偉 11:08:33
          如果他覺得夠了,我們就不再給了
          莊表偉 11:08:41
          如果他覺得不夠,我們就再給100?
          femto 11:08:42
          。。。。
          莊表偉 11:08:46
          如果他覺得夠了,我們就不再給了
          ?
          莊表偉 11:08:47
          如果他覺得不夠,我們就再給100??
          femto 11:08:49
          他覺得夠不夠的標(biāo)準(zhǔn)是什么
          femto 11:08:51
          。。。。
          femto 11:08:59
          老莊繞口令阿。。
          莊表偉 11:09:06
          夠不夠是一個用戶輸入呀
          femto 11:09:10
          呵呵
          buaawhl 11:09:19
          condtions to meet = { 我們有一輛購物車

          購物車?yán)锩嬷辽儆袃杉锲?

          購物車?yán)锩娴奈锲凡怀^四件

          如果購物車?yán)锩娴纳唐穬r值至少是100美元
          客戶是黃金客戶
          ?? }


          就為該客戶打八五折
          顯示信息“我們?yōu)槟S金客戶打了八五折”
          ?
          江南白衣 11:09:45
          我的分析上面那段規(guī)則語言的要素有
          if ,then, and ,or
          > ,=,>=,<=, is ,數(shù)值,一些關(guān)鍵字,如黃金客戶, 單位(美金),購物車,物品...
          buaawhl 11:09:58
          where is Or ?
          femto 11:10:03
          以規(guī)則語言為中心的應(yīng)用應(yīng)該是
          femto 11:10:07
          一對邏輯
          江南白衣 11:10:07
          好,這段沒有.
          femto 11:10:14
          一堆邏輯

          ?
          femto 11:10:16
          經(jīng)常修改
          femto 11:10:28
          這樣使用才有必要
          femto 11:10:39
          否則傳統(tǒng)的編程足夠解決了
          莊表偉 11:10:42
          白衣,那我剛才的那段,算不算規(guī)則語言?
          buaawhl 11:11:03
          算,簡單的條件循環(huán)
          phalanger 11:11:19
          可以用數(shù)理邏輯證明一組規(guī)則是否完備,問題是所謂的完備的邏輯系統(tǒng),就是現(xiàn)在目前大多數(shù)語言所擁有的那樣子了
          江南白衣 11:11:47
          so,ilog的語言就是 這些if,then,and ,>,<,is加上一些關(guān)鍵字的支持,這就是ilog的DSL了。
          你可以說它簡單,但他就需要這樣。
          然后,我們還可以分析用這個思路,其他的領(lǐng)域的DSL
          ?
          莊表偉 11:12:04
          還要正常的取款機(jī)邏輯中,還要包括(三次以內(nèi),金額足夠,每次取款限制)
          莊表偉 11:12:41
          要表達(dá)這種“復(fù)雜邏輯”,while語句是很自然需要的
          莊表偉 11:12:46
          ilog里有沒有?
          buaawhl 11:12:51
          是的。我同意,iLog的語法很清楚。:-)
          buaawhl 11:13:40
          我的意思是說,VB等,一樣可以這么清楚
          buaawhl 11:13:51
          或者,我用 Javacc也可以作出這么清楚地。
          phalanger 11:14:09
          很多語言一開始的時候都是很清楚的,慢慢發(fā)展越來越不清楚而已
          magicgod 11:14:30
          我懷疑DSL的走向會不會象普通語言一樣
          buaawhl 11:15:02
          我懷疑DSL有沒有必要。簡單的東西,用什么表達(dá)都是簡單的。
          江南白衣 11:15:14
          不要只抓著ilog不放嘛,從ilog看DSL的整個思路,從java,VB這些通用語言中分離出來,只有自己最關(guān)鍵的關(guān)鍵字,還有行業(yè)特有的關(guān)鍵字.....
          buaawhl 11:15:29
          行業(yè)特有的關(guān)鍵字
          ?
          buaawhl 11:15:42
          對。這才是關(guān)鍵
          莊表偉 11:15:45
          是不是還會有項目特有的關(guān)鍵字?

          ?
          phalanger 11:15:53
          一開始大家都只會有條件,循環(huán),布爾邏輯,基本四則運(yùn)算幾個簡單東西。但慢慢什么函數(shù),子過程什么亂七八糟的東西就會因需求而產(chǎn)生,慢慢就會變得龐大
          buaawhl 11:16:15
          最重要的積累就在這里。一個行業(yè)的業(yè)務(wù)規(guī)則變化很小。
          buaawhl 11:16:41
          iLog的成功,完全是 行業(yè)關(guān)鍵字(行業(yè)API)的積累。
          magicgod 11:17:00
          DSL是要用客戶熟悉的關(guān)鍵字而不是程序員
          buaawhl 11:17:14
          和DSL關(guān)系不大。DSL是用來圈地的。但是,給人一種印象,DSL是成功的關(guān)鍵。
          magicgod 11:17:28
          這就是區(qū)別吧,DSL要讓業(yè)務(wù)專家來設(shè)計的,而不是程序員
          magicgod 11:17:43
          實(shí)現(xiàn)估計還是用傳統(tǒng)程序來實(shí)現(xiàn)
          buaawhl 11:18:31
          magicgod(2240529) 11:17:28
          這就是區(qū)別吧,DSL要讓業(yè)務(wù)專家來設(shè)計的,

          你的意思是說,業(yè)務(wù)專家來定義 業(yè)務(wù)關(guān)鍵字?
          buaawhl 11:18:52
          還是說,業(yè)務(wù)專家 用DSL 輸入那些規(guī)則?
          phalanger 11:19:10
          業(yè)務(wù)專家的思維方式也會慢慢遵循程序員的發(fā)展過程慢慢變化的。例如某天他們會發(fā)現(xiàn)某著業(yè)務(wù)邏輯幾個地方都會用到,于是函數(shù)/子過程的需求就會應(yīng)運(yùn)而生
          magicgod 11:19:16
          是業(yè)務(wù)專家來描述DSL
          magicgod 11:19:28
          所以業(yè)務(wù)專家必須保證純正的業(yè)務(wù)專家
          buaawhl 11:19:40
          你是說,業(yè)務(wù)專家來定義DSL?
          magicgod 11:19:43
          業(yè)務(wù)專家要貼近的是最終用戶而不是程序員
          phalanger 11:19:55
          不能因?yàn)閯e人是業(yè)務(wù)專家就扼殺別人的邏輯能力的
          magicgod 11:19:55
          是的,其實(shí)這就是一種定義業(yè)務(wù)標(biāo)準(zhǔn)的過程
          一劍傾心 11:19:59
          莊表偉,關(guān)于OO的哲學(xué)
          http://canonical.blogdriver.com/canonical/761080.html
          莊表偉 11:20:05
          不懂編程的業(yè)務(wù)專家,也定義不好DSL的吧
          magicgod 11:20:16
          不是的,業(yè)務(wù)專家不應(yīng)該懂編程
          magicgod 11:20:44
          編程是一種附加,業(yè)務(wù)專家就象定義需求一樣,根本不考慮實(shí)現(xiàn)的問題

          ?
          magicgod 11:21:03
          而只提出要什么,并且用什么來描述對行業(yè)內(nèi)某部分客戶是最適合的
          buaawhl 11:21:10
          DSL Tool 就是給 業(yè)務(wù)專家用來定義DSL的?
          phalanger 11:21:19
          例如沒有函數(shù),業(yè)務(wù)專家會發(fā)現(xiàn)有些東西改了,他就會很辛苦的逐個去該每一個邏輯。雖然他不一定會提出“函數(shù)”這么抽象的東西,但實(shí)際上它還是有這樣的需求
          magicgod 11:21:48
          估計還得找人翻譯一把,dsl tool還沒這么強(qiáng)
          buaawhl 11:21:58
          yes. 如果邏輯復(fù)雜到一定程度,那么dsl就失去了用武之地。
          phalanger 11:22:00
          慢慢得當(dāng)函數(shù)不能滿足需求的時候,業(yè)務(wù)專家同樣會提出很多很多類似于程序員需要的東西,慢慢得OO也就會出來了
          magicgod 11:22:08
          實(shí)際上業(yè)務(wù)內(nèi)的邏輯并沒有相象得這么復(fù)雜
          莊表偉 11:22:09
          突然聯(lián)想到Hibernate的數(shù)據(jù)庫冬眠理想,事實(shí)上是,如果不能深刻理解數(shù)據(jù)庫,根本用不好Hibernate
          江南白衣 11:22:12
          我已經(jīng)決定try一把之前先不討論了:)
          magicgod 11:22:25
          DSL的目的就是為了讓邏輯簡單下來
          buaawhl 11:22:41
          而簡單的情況,一般的腳本描述起來也很簡單。? yes. support 白衣' try. thanks.
          ?
          magicgod 11:22:44
          阿飛給我看一下某牛人分析的WEB,其實(shí)是一張大圖,象非常簡單
          一劍傾心 11:22:53
          誰先舉一個現(xiàn)實(shí)的例子出來,認(rèn)為DSL好的人拿出一個實(shí)際的例子
          phalanger 11:23:05
          事務(wù)是會發(fā)展的,java出來的時候也沒有想過后來會這么復(fù)雜
          magicgod 11:23:17
          java出來的時候已經(jīng)是一個復(fù)雜的類庫了
          magicgod 11:23:36
          因?yàn)橛嬎銠C(jī)語言出來大多是解決所有問題的,而不是解決小范圍問題
          magicgod 11:23:50
          現(xiàn)在的DSL就是為了解決小范圍問題,而省去OO,甚至省去函數(shù)
          江南白衣 11:24:02
          DSL現(xiàn)在一直以SQL做例子.....這是對API論最好的打擊?
          buaawhl 11:24:08
          to zhuang : O R 的目的,是為了把 relation db 作為OODB來用。
          magicgod 11:24:23
          程序員以為自己的計算機(jī)語言可以解決所有的問題,但是實(shí)際上僅僅是理論上可以解決

          ?
          buaawhl 11:24:33
          SQL里面還有函數(shù)呢?:-)
          magicgod 11:24:42
          實(shí)際上外部限制太多了,根本無法解決所有問題
          江南白衣 11:24:53
          但它是基于sql語言框架下的函數(shù)
          buaawhl 11:24:56
          decode(),? to_chart()??? sql需要這些API做什么?
          magicgod 11:24:57
          所以DSL提出就解決少數(shù)問題來創(chuàng)建一種語言
          江南白衣 11:25:12
          但它是基于sql語言框架下的函數(shù)?
          magicgod 11:25:18
          實(shí)際上整個SQL定義是非常簡單的,相比于JDK來說
          buaawhl 11:25:20
          ? java function 也是基于 java語言框架下的函數(shù)
          buaawhl 11:25:39
          sql能表達(dá)的東西也很簡單:-)
          magicgod 11:25:39
          我覺得應(yīng)該把SQL與整個JDK相比吧
          magicgod 11:25:51
          是的,就是用簡單的東西來解決簡單的事
          buaawhl 11:26:05
          比較一下功能好了。SQL可以實(shí)現(xiàn) 剛才 白衣給出的 規(guī)則嗎?
          ?
          magicgod 11:26:08
          因?yàn)橛嬎銠C(jī)語言面向所有問題,但是客戶只面向子集
          莊表偉 11:26:10
          亂了,亂了,我們在縷一縷?
          江南白衣 11:26:18
          但java語言本身沒有辦法很直觀的表達(dá) select xxx from的語言。問問你喜歡用hibernate的Critera APi還是用hql?
          magicgod 11:26:21
          我們需要非常方便的子集來面向客戶的子集
          莊表偉 11:26:24
          SQL與JDK是一回事
          莊表偉 11:26:37
          數(shù)據(jù)庫與領(lǐng)域又是另外一回事
          莊表偉 11:26:52
          從概念來說,我支持magicgod的我們需要非常方便的子集來面向客戶的子集
          ?
          magicgod 11:26:55
          DSL并不是什么創(chuàng)新, 其實(shí)很象HTML

          ?
          江南白衣 11:26:58
          數(shù)據(jù)庫查詢就是一個領(lǐng)域阿
          buaawhl 11:27:03
          DSL如何表達(dá)? select ... where ?
          莊表偉 11:27:14
          但是從實(shí)際的語法來說,我認(rèn)為ilog這樣的語法,是cobol的復(fù)辟
          magicgod 11:27:19
          有沒有覺得?HTML是XML的一個子集,用來解決瀏覽的問題
          江南白衣 11:27:36
          SQL語言啊, select where是SQL DSL的關(guān)鍵字和特定語法。
          莊表偉 11:27:37
          吃飯去了
          buaawhl 11:27:50
          filter( collection,? { a = 1;} )
          buaawhl 11:28:18
          這個 STL-like 就是 select ... where
          magicgod 11:28:25
          所以HTML流行了
          江南白衣 11:28:34
          對阿,但是怎么大部分程序員習(xí)慣 where a=1多于
          filter(collection,{a=1})呢
          magicgod 11:28:40
          但后來人們要讓HTML來解決所有問題,所以XML流行了
          magicgod 11:29:15
          感覺還是要從客戶和低水平人員的角度來考慮
          magicgod 11:29:27
          idea會過期?
          江南白衣 11:29:39
          是阿,html,sql, DSL其實(shí)早就無處不在了。
          只是現(xiàn)在明確提出了,制造 DSL的工具。
          buaawhl 11:29:42
          I c your point. 你是說,某個特定領(lǐng)域,就是某種語言才適合
          magicgod 11:30:02
          應(yīng)該是這個意思
          buaawhl 11:30:12
          問題是我說的,那些規(guī)則表達(dá)的領(lǐng)域,DSL并沒有表現(xiàn)出SQL這樣的優(yōu)勢
          buaawhl 11:30:27
          并沒有顯示出來他們特有的 適合度
          buaawhl 11:30:42
          因?yàn)檫@些DSL在表達(dá) if , then, else.
          magicgod 11:30:42
          應(yīng)該說DSL總是適合的

          ?
          magicgod 11:31:13
          因?yàn)镈SL非常狡猾,如果領(lǐng)域擴(kuò)大了,那么DSL就可以擴(kuò)大為某種計算機(jī)語言,比如JAVA
          buaawhl 11:31:12
          比如,VB, pascal 等,優(yōu)勢不是很明顯。
          magicgod 11:31:24
          這也是DSL,只不過用來解決的領(lǐng)域擴(kuò)大了
          buaawhl 11:31:34
          不覺得,DSL 有表達(dá) if, else, then 的優(yōu)勢。
          江南白衣 11:31:32
          有可能, ilog的關(guān)鍵字太少,語法太貼近通用語言,所以優(yōu)勢不明顯:0
          magicgod 11:31:50
          DSL就是貼近用戶來描述啊,讓用戶的學(xué)習(xí)成本下降
          buaawhl 11:32:00
          yes. :-)
          buaawhl 11:32:23
          業(yè)務(wù)用語? 成為 DSL關(guān)鍵字。
          magicgod 11:32:24
          畢竟出發(fā)點(diǎn)不同,所以在細(xì)節(jié)使用方面,DSL就顯示出優(yōu)勢
          magicgod 11:32:37
          更重要的是DSL是業(yè)務(wù)專家來設(shè)計的,而不是計算機(jī)專家
          magicgod 11:32:43
          我希望的是這樣...
          buaawhl 11:32:53
          業(yè)務(wù)用語? 成為 DSL關(guān)鍵字。 這才是 真正的優(yōu)勢。
          ?
          共筑佳話 11:33:04
          業(yè)務(wù)專家來設(shè)計DSL,估計也賊費(fèi)盡
          共筑佳話 11:33:09
          夠嗆
          江南白衣 11:33:14
          但總有語法不貼近通用語言的領(lǐng)域的,SQL是其一,我們平時的領(lǐng)域就更加了。V
          magicgod 11:34:13
          只能由業(yè)務(wù)專家來設(shè)計,因?yàn)轭I(lǐng)域內(nèi)的語言由業(yè)務(wù)專家最熟
          magicgod 11:34:23
          就象SQL是數(shù)據(jù)庫領(lǐng)域內(nèi)一樣
          buaawhl 11:34:27
          yes. 有些理解了。? 同樣,這些領(lǐng)域的特點(diǎn)就是 邏輯足夠簡單。而業(yè)務(wù)用詞足夠特殊
          magicgod 11:34:58
          是的,因?yàn)榫褪且鉀Q特殊的問題,沒必要用解決所有問題的語言啊
          magicgod 11:35:13
          實(shí)際上根本不存在要解決所有問題的客戶

          ?
          magicgod 11:35:36
          其實(shí)客戶是不需要JAVA和JDK,只需要DSL類似描述
          buaawhl 11:36:22
          DSL Tool能夠提供這樣的定義能力?不同領(lǐng)域的用戶,都可以用同一個DSL tool 創(chuàng)建自己的 DSL?
          magicgod 11:36:32
          就是看清楚了這種事,才提交DSL,并且每一個項目來創(chuàng)建一種DSL
          buaawhl 11:36:38
          還是說,每個行業(yè)一套 DSL?
          magicgod 11:37:09
          都可以,看你實(shí)施了
          江南白衣 11:37:09
          DSL Tool,就是GP,JetBrains, MS努力的夢想。
          buaawhl 11:37:24
          每個項目?這太可怕了吧? 學(xué)習(xí)成本再低,也不能這么折騰啊
          magicgod 11:37:28
          而DSL總是業(yè)務(wù)專家這個角色來設(shè)計了
          magicgod 11:37:57
          其實(shí)也是這樣,第一個項目設(shè)計一個DSL,第二個項目改一把就行了
          buaawhl 11:38:19
          DSL Tool的關(guān)鍵還是要深入 各業(yè)務(wù)領(lǐng)域的通用方面。
          江南白衣 11:38:43
          內(nèi)里的實(shí)現(xiàn)還是java,c#的lib
          magicgod 11:38:56
          是的,現(xiàn)在就是將真正的業(yè)務(wù)應(yīng)用上去的時候了
          magicgod 11:39:10
          拋開亂七八糟的框架和平臺,用戶和專家不關(guān)心這些
          magicgod 11:39:36
          誰能直接面向需求,誰就有主動權(quán)
          buaawhl 11:39:38
          用戶和專家本來就不關(guān)心這些 ,:-)
          magicgod 11:39:51
          IBM的隨需而動是有點(diǎn)道理的
          buaawhl 11:40:04
          不用DSL, 他們也從來不關(guān)心這些。:-)
          magicgod 11:40:06
          但是現(xiàn)在程序員限制了用戶和專家,必須來考慮這些問題了
          buaawhl 11:40:27
          用了DSL,他們反而要關(guān)心這些,
          buaawhl 11:40:45
          江南白衣(228013) 11:38:43
          內(nèi)里的實(shí)現(xiàn)還是java,c#的lib

          ?
          magicgod 11:40:55
          不會吧,DSL本來是沒有這些細(xì)節(jié)的
          buaawhl 11:41:12
          如果以前要關(guān)心java, c#,那么現(xiàn)在不僅要關(guān)心java, c#,還要關(guān)心 DSL.
          buaawhl 11:41:41
          那你說,以前業(yè)務(wù)專家為什么要關(guān)系 java, c# ?
          buaawhl 11:42:01
          他們只是做業(yè)務(wù)分析。
          magicgod 11:43:07
          因?yàn)槌绦騿T要關(guān)心
          magicgod 11:43:31
          程序員反饋給業(yè)務(wù)專家說這個java不支持
          magicgod 11:44:00
          而現(xiàn)在DSL希望能完全解決行業(yè)問題吧
          buaawhl 11:44:40
          DSL下面的實(shí)現(xiàn)不還是java嗎?程序員反饋給業(yè)務(wù)專家說這個java不支持

          ?
          江南白衣 11:44:42
          DSL是需要轉(zhuǎn)譯成Java,C# lib的,天上暫時還沒餡餅下來?
          magicgod 11:44:55
          本來也就是這樣的
          magicgod 11:45:17
          就算編譯了,也是要轉(zhuǎn)成硬件代碼的嘛
          buaawhl 11:45:26
          所以,專家定義DSL的同時,還要考慮java是否支持
          江南白衣 11:46:20
          有直接翻譯成機(jī)器碼和翻譯成java,c#的選擇,
          顯然直接翻譯成機(jī)器碼的難度大NN倍。
          magicgod 11:46:36
          估計是假定java全支持了吧
          magicgod 11:46:37
          因?yàn)楫吘笵SL是子集
          buaawhl 11:47:08
          yes. :-)?
          magicgod 11:47:09
          正在試用mps
          buaawhl 11:47:49
          如果DSL Tool考慮了Java支持。那么專家就不用考慮了。
          magicgod 11:48:29
          是的,估計是這樣想的
          magicgod 11:48:53
          DSL是樸素的經(jīng)驗(yàn)主義向理論發(fā)展的產(chǎn)物

          ?
          magicgod 11:49:51
          定義一個DSL真是復(fù)雜啊,非得有人輔助不可啊
          共筑佳話 11:50:12
          專家應(yīng)該知道些什么呢,達(dá)到了什么層次的知識?
          buaawhl 11:50:45
          DSL可以看作是一種數(shù)據(jù)格式,一種配置文件的格式定義。
          magicgod 11:50:47
          這個概念定義跟類定義不是一樣啊?ft
          magicgod 11:51:07
          專家角色應(yīng)該只知道業(yè)務(wù)知識,其他不懂,假定,哈哈
          buaawhl 11:51:35
          一開始,DSL還是擺脫不了 Programm Languange的框子,明天會更好!!!!
          共筑佳話 11:51:51
          什么層次的知識?是元層次?元元層次?
          magicgod 11:52:29
          見鬼了,這東西一定是給程序員用的
          magicgod 11:52:34
          干脆定義類算了
          buaawhl 11:52:46
          一開始,DSL還是擺脫不了 Programm Languange的框子,明天會更好!!!!??
          江南白衣 11:54:27
          另外magic god可以留意一下MPS同時定制IDE方面的功能,這是以前yacc沒有的
          buaawhl 11:55:37
          我們還是要忙著寫API, 到時候,用DSL包裝成關(guān)鍵字 就行了
          江南白衣 11:56:54
          magic god可以上班時間試mps,太爽了
          江南白衣 11:57:02
          一定是PM以上級別:)
          江南白衣 11:57:59
          還有那些11點(diǎn)就喊著去吃飯的.....
          magicgod 12:03:58
          恐怖,這個操作太可怕了
          magicgod 12:05:32
          rubyWeb?
          magicgod 12:08:41
          代碼生成居然有錯?!
          江南白衣 12:15:47
          加油



          magicgod(2240529) 12:49:15
          ?更象一個代碼生成器
          magicgod(2240529) 12:49:46
          還把我的ctrl+space給廢了
          magicgod(2240529) 12:50:19
          這個生成器好象有點(diǎn)太直接了一點(diǎn)
          magicgod(2240529) 12:50:53
          舉的例子實(shí)在不恰當(dāng)啊,這回JETBRAINS有點(diǎn)亂了
          magicgod(2240529) 12:51:49
          BUG也太多了一點(diǎn),需要寫一些行業(yè)例子,這樣就有代表性了

          magicgod(2240529) 12:56:28
          至少比PETSTORE更高一級的案例,然后用這個案例來套各種方案和工具比較好一點(diǎn)
          magicgod(2240529) 12:56:52
          這個HELLOWORLD 最后生成了JAVA代碼,有點(diǎn)恐怖
          posted on 2006-04-19 19:16 wadise 閱讀(665) 評論(0)  編輯  收藏 所屬分類: 軟件工程

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乐昌市| 全南县| 米林县| 三穗县| 周至县| 灵璧县| 图片| 平阳县| 阳江市| 昭苏县| 辛集市| 乌兰浩特市| 曲水县| 东乡| 都安| 定边县| 云阳县| 安丘市| 建宁县| 公主岭市| 东光县| 民勤县| 永福县| 铁岭市| 精河县| 云霄县| 克什克腾旗| 丰顺县| 汉沽区| 开江县| 盘山县| 汶川县| 巴里| 芜湖市| 彩票| 嵊州市| 宜城市| 宜宾县| 南充市| 洪雅县| 西乡县|