﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Anders小明的Blog-最新评论</title><link>http://www.blogjava.net/AndersLin/CommentsRSS.aspx</link><description /><language>zh-cn</language><pubDate>Fri, 01 Jul 2011 08:10:02 GMT</pubDate><lastBuildDate>Fri, 01 Jul 2011 08:10:02 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: 浅谈领域驱动设计</title><link>http://www.blogjava.net/AndersLin/archive/2011/04/20/269496.html#348638</link><dc:creator>magicdetective</dc:creator><author>magicdetective</author><pubDate>Wed, 20 Apr 2011 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2011/04/20/269496.html#348638</guid><description><![CDATA[看了博主的文章终于对领域驱动设计与传统设计之间的异同有了深刻的了解。支持。<img src ="http://www.blogjava.net/AndersLin/aggbug/348638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">magicdetective</a> 2011-04-20 16:36 <a href="http://www.blogjava.net/AndersLin/archive/2011/04/20/269496.html#348638#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 如何定义和建立架构</title><link>http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336736</link><dc:creator>Anders小明</dc:creator><author>Anders小明</author><pubDate>Mon, 01 Nov 2010 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336736</guid><description><![CDATA[@lcong<br>从这个链接下载<br><a href="http://www.blogjava.net/Files/AndersLin/Attribute%20Based%20Architectural%20Evaluation.7z" target="_new">http://www.blogjava.net/Files/AndersLin/Attribute%20Based%20Architectural%20Evaluation.7z</a><img src ="http://www.blogjava.net/AndersLin/aggbug/336736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">Anders小明</a> 2010-11-01 22:52 <a href="http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336736#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 如何定义和建立架构</title><link>http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336715</link><dc:creator>lcong</dc:creator><author>lcong</author><pubDate>Mon, 01 Nov 2010 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336715</guid><description><![CDATA[nice post, where can I find the &quot;Attribute Based Architectural Evaluation&quot; you mentioned about?<img src ="http://www.blogjava.net/AndersLin/aggbug/336715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">lcong</a> 2010-11-01 17:56 <a href="http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336715#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 如何定义和建立架构[未登录]</title><link>http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336655</link><dc:creator>lveyo</dc:creator><author>lveyo</author><pubDate>Mon, 01 Nov 2010 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336655</guid><description><![CDATA[ctrlV拼凑起来的<img src ="http://www.blogjava.net/AndersLin/aggbug/336655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">lveyo</a> 2010-11-01 11:20 <a href="http://www.blogjava.net/AndersLin/archive/2010/11/01/336599.html#336655#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 如何定义和建立架构</title><link>http://www.blogjava.net/AndersLin/archive/2010/10/31/336599.html#336635</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Sun, 31 Oct 2010 15:02:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/10/31/336599.html#336635</guid><description><![CDATA[不错，先转载了哦 <img src ="http://www.blogjava.net/AndersLin/aggbug/336635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">@joe</a> 2010-10-31 23:02 <a href="http://www.blogjava.net/AndersLin/archive/2010/10/31/336599.html#336635#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: JVM，反射与动态代理[未登录]</title><link>http://www.blogjava.net/AndersLin/archive/2010/09/10/51997.html#331675</link><dc:creator>p</dc:creator><author>p</author><pubDate>Fri, 10 Sep 2010 07:54:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/09/10/51997.html#331675</guid><description><![CDATA[您好，您用的什么反编译工具？<br>我用的jd-gui.exe反编译出现下面的情况<br><br>// ERROR //<br>  public final java.lang.String toString()<br>    throws <br>  {<br>    // Byte code:<br>    //   0: aload_0<br>    //   1: getfield 16	java/lang/reflect/Proxy:h	Ljava/lang/reflect/InvocationHandler;<br>    //   4: aload_0<br>    //   5: getstatic 42	TempProxy:m2	Ljava/lang/reflect/Method;<br>    //   8: aconst_null<br>    //   9: invokeinterface 26 4 0<br>    //   14: checkcast 44	java/lang/String<br>    //   17: areturn<br>    //   18: athrow<br>    //   19: astore_1<br>    //   20: new 34	java/lang/reflect/UndeclaredThrowableException<br>    //   23: dup<br>    //   24: aload_1<br>    //   25: invokespecial 37	java/lang/reflect/UndeclaredThrowableException:&lt;init&gt;	(Ljava/lang/Throwable;)V<br>    //   28: athrow<br>    //<br>    // Exception table:<br>    //   from	to	target	type<br>    //   0	18	18	java/lang/RuntimeException<br>    //   0	18	18	java/lang/Error<br>    //   0	18	19	java/lang/Throwable<br>  }<br><br>  // ERROR //<br>  public final int hashCode()<br>    throws <br>  {<br>    // Byte code:<br>    //   0: aload_0<br>    //   1: getfield 16	java/lang/reflect/Proxy:h	Ljava/lang/reflect/InvocationHandler;<br>    //   4: aload_0<br>    //   5: getstatic 49	TempProxy:m0	Ljava/lang/reflect/Method;<br>    //   8: aconst_null<br>    //   9: invokeinterface 26 4 0<br>    //   14: checkcast 51	java/lang/Integer<br>    //   17: invokevirtual 54	java/lang/Integer:intValue	()I<br>    //   20: ireturn<br>    //   21: athrow<br>    //   22: astore_1<br>    //   23: new 34	java/lang/reflect/UndeclaredThrowableException<br>    //   26: dup<br>    //   27: aload_1<br>    //   28: invokespecial 37	java/lang/reflect/UndeclaredThrowableException:&lt;init&gt;	(Ljava/lang/Throwable;)V<br>    //   31: athrow<br>    //<br>    // Exception table:<br>    //   from	to	target	type<br>    //   0	21	21	java/lang/RuntimeException<br>    //   0	21	21	java/lang/Error<br>    //   0	21	22	java/lang/Throwable<br>  }<br><br>  // ERROR //<br><img src ="http://www.blogjava.net/AndersLin/aggbug/331675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">p</a> 2010-09-10 15:54 <a href="http://www.blogjava.net/AndersLin/archive/2010/09/10/51997.html#331675#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: JVM，反射与动态代理</title><link>http://www.blogjava.net/AndersLin/archive/2010/09/06/51997.html#331245</link><dc:creator>anderslin</dc:creator><author>anderslin</author><pubDate>Mon, 06 Sep 2010 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/09/06/51997.html#331245</guid><description><![CDATA[@p<br>ok<img src ="http://www.blogjava.net/AndersLin/aggbug/331245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">anderslin</a> 2010-09-06 20:18 <a href="http://www.blogjava.net/AndersLin/archive/2010/09/06/51997.html#331245#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: JVM，反射与动态代理[未登录]</title><link>http://www.blogjava.net/AndersLin/archive/2010/09/06/51997.html#331243</link><dc:creator>p</dc:creator><author>p</author><pubDate>Mon, 06 Sep 2010 12:11:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2010/09/06/51997.html#331243</guid><description><![CDATA[可以转吗，我附上源<img src ="http://www.blogjava.net/AndersLin/aggbug/331243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">p</a> 2010-09-06 20:11 <a href="http://www.blogjava.net/AndersLin/archive/2010/09/06/51997.html#331243#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 浅谈基础平台</title><link>http://www.blogjava.net/AndersLin/archive/2009/09/08/269136.html#294277</link><dc:creator>xkyue23</dc:creator><author>xkyue23</author><pubDate>Tue, 08 Sep 2009 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2009/09/08/269136.html#294277</guid><description><![CDATA[通俗易懂，很具体。springside手册有这样好就更好了，那个有点乱，更不上开发进度，还不提供下载手册。<img src ="http://www.blogjava.net/AndersLin/aggbug/294277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">xkyue23</a> 2009-09-08 12:16 <a href="http://www.blogjava.net/AndersLin/archive/2009/09/08/269136.html#294277#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 浅谈领域驱动设计</title><link>http://www.blogjava.net/AndersLin/archive/2009/08/06/269496.html#290126</link><dc:creator>forrestju </dc:creator><author>forrestju </author><pubDate>Thu, 06 Aug 2009 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/AndersLin/archive/2009/08/06/269496.html#290126</guid><description><![CDATA[理想的编程语言  鞠文广<br><br>以下纯粹是个人观点, 不代表任何组织或社团.<br><br>现在流行的编程语言如Java和C#, 大多是面向对象的, 程序的各部分是通过方法调用连在一起, 其编程范式是命令编程, 即使支持其他范式也包装得很难理解和使用. <br><br>面向对象实际上只适合实现抽象数据类型, 让它去完成除此之外的任务确实是勉为其难, 即便能完成也给人不伦不类的感觉, 既不像面向对象编程, 也不像它的前任(过程编程). 这些语言中的对象与物质世界的物质(或对象)很不一致, 它使用方法调用的方式与其他对象进行相互作用, 而这与物质之间的(通过通信或媒介)相互作用是截然不同的, 因此用面向对象无法很确切地模拟现实世界(面向对象思想的初衷), 更不用说准确地为现实世界建立模型. <br><br>这几年流行的web服务和SOA虽使程序间交互更方便, 但它从本质上说还是使用”面向对象+命令编程+方法调用”的思路, 在编程方法论上并没有实质的进步.<br><br>用现在流行的语言实现的完成复杂功能的程序逻辑不清晰, 原因在于”命令编程+方法调用”的设计机制. 这使程序很难模块化, 副作用无所不在, 因此很难正确实现复杂功能. <br><br>现实世界的发展变化是通过事物间的相互作用实现的, 而这种相互作用用计算机科学的语言来说就是并发(concurrency). 软件的本质是什么? 我觉得:软件总是完成某种功能的,归根到底是对现实世界的事物间相互作用进行建模. 因此软件的组成部分间自然就是并发的关系, 而不是过程调用的关系. 用通信进程来对现实世界的事物间相互作用进行建模是比较合理的. 所以进程应该作为语言的基础成分, 是软件的基本组成部分, 而不是只为了提高效率才采用的. <br><br>为了使程序能准确地为现实世界建立模型, 从而正确性更高, 结构更合理, 模块化程度更高, 因此在几种编程思想或语言的基础上(见references), 我提出一种新的编程方法论: 面向进程+函数编程+进程间通信+逻辑编程+约束编程+其他合理的范式(命令编程除外)和一门编程语言ProcessLog (全称process logic).<br><br>ProcessLog只支持一种并发:通信进程. 它就是计算机科学家在上世纪70年代为了克服现在的Java中仍采用的那种并发方式的缺点而提出的. 它是经过充分研究得到的一种理想并发方式, 看了并发理论(concurrency)和进程代数(Process algebra), 就会明白这种并发方式可解决实际中的各种并发问题, 用它足够了. <br><br>这里的进程是进程代数的进程,不是过程,也不是Java中的线程. 看看jcsp或Hoare的CSP(<a href="http://www.usingcsp.com/" target="_new" rel="nofollow">http://www.usingcsp.com/</a>)就明白了.推荐网址:<br><a href="http://www.cs.kent.ac.uk/projects/ofa/jcsp/" target="_new" rel="nofollow">http://www.cs.kent.ac.uk/projects/ofa/jcsp/</a>,<br>其中有两个ppt说得很明白:<br>&quot;Process Oriented Design for Java: Concurrency for All&quot;, <br>&quot;Communicating Processes, Components and Scaleable Systems&quot;.<br><br>ProcessLog的语法概要如下:<br><br>1 运算符 <br>(1)  ?  输入;  c ? x 从输入端口c或通道c上接收输入值放到变量x中<br>(2)  !  输出;  c ! v 把v的值从输出端口或通道c上输出<br>(3)  -&gt;  顺序进行的事件的先后关系<br>(4)  | b : s  分支<br>(5)  ||  进程并行<br>(6)  //  附属进程<br>(7)  and, or, not 逻辑运算符<br>(8)  算术运算符和关系运算符  与Java中相同 <br><br>2 程序的组成成分<br>(1)  Unit 程序单元<br>(2)  Process  进程<br>(3)  Function  函数<br>(4)  Predicate 谓词<br>(5)  Channel 通道, 有两个端口: in 输入端口, out 输出端口<br>(6)  OutPort  输出端口<br>(7)  InPort  输入端口<br><br>3 数据结构 <br>(1) List (函数编程中的List类型, 对List的操作函数与函数编程中相同);<br>(2) Tuple 元组, 同Clean.<br>(3) Set 集合<br>没有数组<br><br>4 进程的定义	<br>Process p1 (OutPort pt1, InPort pt2 ){<br>     pt2?x  -&gt;	pt1! compute(x)  -&gt; p1<br>}<br><br>5 进程间相互作用<br>(1)  进程并行 process1( c1.out, c2.in)|| process2(c1.in, c2.out)<br>(2)  附属进程  (getE: getElements || getR: getReleasedVersion) // X.(in?method -&gt; getE ! method ? elems -&gt; getR ! em ? rem-&gt; … -&gt;X)<br><br>6 函数<br>[Function] compute(double x)=<br>         | x&lt;=0: x*x+3<br> 	| x&gt;0:  compute(x-5)* compute(x-3)  <br>函数只能以事件的方式在进程中使用或在其他函数中使用, 不能独立使用.<br><br>7 谓词<br>/* 建图 */<br>Predicate createGraph(t, graph):-<br>	addNode(t, null, ({},{}), graph1),<br>	getDS(t, graph1.ns, tlist),<br>	addList(tlist, t, graph1, graph).<br>/* 加节点 */<br>Predicate addNode(t, null, (ns, es), (ns1, es):-<br>	merge(ns, {t}, ns1).<br>Predicate addNode(t, upper, (ns, es), (ns1, es1)):-<br>	merge(ns, {t}, ns1),<br>	merge(es, {(upper, t)}, es1).<br><br>8 把谓词转换为函数<br>create(t)= graph<br>	where createGraph(t, graph)	<br><br>谓词不能独立使用也不能在进程中直接使用, 要在进程中使用需要先转换为函数.<br><br>9  程序单元: 包含进程和数据类型<br>Unit PmethodDAO;<br>interface<br>	Tuple Method;<br>	Process getLastVersion(OutPort pt1 , InPort pt2);<br>	…<br>implementation<br>	Method=(String id, String name, String version);<br>	Process getLastVersion(OutPort pt1 , InPort pt2){<br>		…<br>	}<br><br>指导原则: 程序是由通过通道通信的进程组成的. 数据处理和算法用函数编程实现, 如果函数编程不适用于要处理的问题, 就使用逻辑编程或约束编程.<br><br>ProcessLog语言限制了编程的随意性, 要求只能用进程代数+函数编程+逻辑编程的方式编程, 不允许用Java或c#的命令方式编程.<br><br>ProcessLog 现在还没有在机器上实现. 我用该语言重写了实际项目中的一些复杂代码(原是Java代码), 证实用它写的程序确实简单清晰, 有类似数学的简洁美. &quot;7 谓词&quot;就是其中一部分代码.<br><br>我的想法是: 应先在纸面上规定它的语法与语义, 再通过使用它编写一些应用程序来发现它的不足,再进而改进它, 再实践, 再改进, 直到它基本完善再在机器上实现. 另外, 大家不要把语言分为中国人提出的还是外国人提出的, 科学无国界, 这里不存在狭隘的爱国主义. 我不是那种技术高手, 但我自信我是一个能将理论很好地联系实践的研究者.<br><br>希望有识之士和我一起共同发展这种编程方法论和这门语言.<br>juwenguang2000@yahoo.com.cn<br><br>References<br>1. CSP  <a href="http://www.usingcsp.com/" target="_new" rel="nofollow">http://www.usingcsp.com/</a><br>2. JCSP  <a href="http://www.cs.kent.ac.uk/projects/ofa/jcsp/" target="_new" rel="nofollow">http://www.cs.kent.ac.uk/projects/ofa/jcsp/</a><br>3. Clean  <a href="http://clean.cs.ru.nl/" target="_new" rel="nofollow">http://clean.cs.ru.nl/</a><br>4. Prolog<br>5. Delphi<br><br>注: 转载时请注明作者.<br><img src ="http://www.blogjava.net/AndersLin/aggbug/290126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/AndersLin/" target="_blank">forrestju </a> 2009-08-06 17:27 <a href="http://www.blogjava.net/AndersLin/archive/2009/08/06/269496.html#290126#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>