- 浏览: 366385 次
- 性别:
- 来自: 北京
最新评论
-
litongke:
类比的方式总是能帮助我们快速的理解一个晦涩的理念。楼主的很厉害 ...
从面向对象到面向切面 -
snowflate_summer:
这是从数学上来论证面向对象和面向切面吗?很深奥
从面向对象到面向切面 -
奥义之舞:
我好像更迷茫了。、、、
从面向对象到面向切面 -
canonical:
很遗憾,从现在已知的物理学来看,所谓能量也只是一种偏移量而已。 ...
逆元:不存在的真实存在 -
suifeng:
关于最后一段:我也有类似的思考信息是能量的动态呈现, 也就相当 ...
逆元:不存在的真实存在
一种技术思想如果确实能够简化编程,有效降低系统构造的复杂性,那么它必然具有某种内在的数学解释。反之,无论一种技术机制显得如何华丽高深,如果它没有清晰的数学图象,那么就很难证明自身存在的价值。对于模型驱动架构(MDA),我长期以来一直都持有一种批判态度。(Physical Model Driven http://canonical.iteye.com/blog/29412
)。原因就在于“由工具自动实现从平台无关模型(PIM)向平台相关模型(PSM)的转换”这一图景似乎只是想把系统从实现的泥沼中拯救出来,遮蔽特定语言,特定平台中的偶然的限制条件,并没有触及到系统复杂性这一核心问题。而所谓的可视化建模充其量不过是说明人类超强的视觉模式识别能力使得我们可以迅速识别系统全景图中隐含的整体结构,更快的实现对系统结构的理解,并没有证明系统复杂性有任何本质性的降低。不过如果我们换一个视角, 不把模型局限为某种可视化的结构图,而将它定义为某种高度浓缩的领域描述, 则模型驱动基本上等价于根据领域描述自动推导得到最终的应用程序。沿着这一思路,Witrix平台中的很多设计实际上可以被解释为模型定义,模型推导以及模型嵌入等方面的探索。这些具体技术的背后需要的是比一般MDA思想更加精致的设计原理作为支撑。我们可以进行如下抽象分析。(Witrix架构分析 http://canonical.iteye.com/blog/126467
)
1. 问题复杂?线性切分是削减问题规模(从而降低问题复杂性)的通用手段,例如模块(Module)。(软件中的分析学 http://canonical.iteye.com/blog/33885
)
App = M1 + M2 + M3 + ...
2. 分块过多?同态映射是系统约化的一般化策略,例如多态(polymorphism)。(同构与同态:认识同一性 http://canonical.iteye.com/admin/blogs/340704
)
(abc,abb,ade,...) -> [a], (bbb, bcd,bab,...) -> [b]
3. 递归使用以上两种方法,将分分合合的游戏进行到底,推向极致。
4. 以少控多的终极形态?如果存在,则构成输入与输出之间的非线性变换(输入中局部微小变化将导致输出中大范围明显的变化)。
App = F(M)
5. 变换函数F可以被诠释为解释器(Interpreter)或者翻译机,例如工作流引擎将工作流描述信息翻译为一步步的具体操作,工作流描述可以看作是由底层引擎支撑的,在更高的抽象层面上运行的领域模型。但是在这种观点下,变换函数F似乎是针对某种特定模型构造的,引擎内部信息传导的途径是确定的,关注的重点始终在模型上,那么解释器自身应该如何被构造出来呢?
App ~ M
6. 另外一种更加开放的观点是将变换函数F看作是生成器(Generator)或者推理机。F将根据输入的信息,结合其他知识,推理生成一系列新的命题和断言。模型的力量源于推导。变换函数F本身在系统构造过程中处于核心地位,M仅仅是触发其推理过程的信息源而已。F将榨干M的最后一点剩余价值,所有根据M能够确定的事实将被自动实现,而大量单靠M自身的信息无法判定的命题也可以结合F内在的知识作出判断。生成器自身的构造过程非常简单--只要不断向推理系统中增加新的推理规则即可。语言内置的模板机制(template)及元编程技术(meta programming),或者跨越语言边界的代码生成工具都可以看作是生成器的具体实例。(关于代码生成和DSL http://canonical.iteye.com/blog/275015 )
App = G<M>
7. 生成器G之所以可以被独立实现,是因为我们可以实现相对知识与绝对知识的分离, 这也正是面向对象技术的本质所在。(面向对象之形式系统 http://canonical.iteye.com/blog/37064 )
G<M> ==> G = {m => m.x(a,b,c);m.y(); ... }
8. 现实世界的不完美,就在于现实决不按照我们为其指定的理想路线前进。具体场景中总是存在着大量我们无法预知的“噪声”,它们使得任何在“过去”确立的方程都无法在“未来”保持持久的平衡。传统模型驱动架构的困境就在于此。我们可以选择将模型M和生成器G不断复杂化,容纳越来越多的偶然性,直至失去对模型整体结构的控制力。另外一种选择是模型在不断膨胀,不断提高覆盖能力的过程中,不断的空洞化,产生大量可插入(plugin)的接入点,最终丧失模型的推理能力,退化成为一种编码规范。Witrix平台中采用的是第三种选择:模型嵌入--模型中的多余信息被不断清洗掉,模型通过精炼化来突出自身存在的合理性,成为更广泛的运行环境中的支撑骨架。(结构的自足性 http://canonical.iteye.com/blog/482620 )
App != G0<M0> , App != G0<M1>, App = G1<M1>
9. 现在的问题是:如何基于一个已经被完美解决的重大问题,来更有效率的搞定不断出现但又不是重复出现的小问题。现在我们所需要的不是沿着某个维度进行均匀的切分,而必须是某种有效的降维手段。如果我们可以定义一种投影算子P, 将待解决的问题投射到已经被解决的问题域中,则剩下的补集往往可以被简化。(主从分解而不是正交分解 http://canonical.iteye.com/blog/196826 )
dA = App - P[App] = App - G0<M0>
10. 要实现以上微扰分析策略,前提条件是可以定义逆元,并且需要定义一种精细的粘结操作,可以将分散的扰动量极为精确的应用到基础系统的各处。Witrix平台的具体实现类似于某种AOP(面向切面编程)技术。(逆元:不存在的真实存在 http://canonical.iteye.com/blog/325051 )
App = A + D + B = (A + B + C) - C + D = App0 + (-C + D) = G0<M0> + dA
11. 模型驱动并不意味着一个应用只能由唯一的一个模型来驱动,但是如果引入多个不同形式的模型,则必须为如下推理提供具体的技术路径:
A. 将多个模型变换到共同的描述域
B. 实现多个模型的加和
C. 处理模型之间的冲突并填补模型之间的空白
在Witrix平台中模型嵌入/组合主要依赖于文本化及编译期运行等机制。(文本化 http://canonical.iteye.com/blog/309395
)
App = Ga<Ma> + Gb<Mb> + dA
12. 系统的开发时刻t0和实施时刻t1一般是明确分离的,因此如果我们要建立一个包含开发与实施时刻信息的模型,则这一模型必须是含时的,多阶段的。关于时间,我们所知道的最重要的事实之一是“未来是不可预知的”。在t0时刻建立的模型如果要涵盖t1时刻的所有变化,则必须做出大量猜测,而且t1时刻距离t0时刻越远,猜测的量越大,“猜测有效”这一集合的测度越小,直至为0。延迟选择是实现含时系统控制的不二法门。
在Witrix平台中,所有功能特性的实现都包含某种元数据描述或者定制模板,因此结合配置机制以及动态编译技术既可实现多阶段模型。例如对于一个在未来才能确定的常量数组,我们可以定义一个Excel文件来允许实施人员录入具体的值,然后通过动态编译技术在编译期解析Excel文件,并完成一系列数值映射运算,最终将其转化为编译期存在的一个常量。这一过程不会引入任何额外的运行成本,也不要求任何特定的缓存机制,最终的运行结构与在未来当所有信息都在位之后再手写代码没有任何区别。(D语言与tpl之编译期动作 http://canonical.iteye.com/blog/57244
)
App(t1) = G(t0,t1)<M(t0,t1)> + dA(t0,t1)
13. 级列理论提供了一个演化框架,它指出孤立的模型必须被放在模型级列中被定义,被解释。(关于级列设计理论 http://canonical.iteye.com/blog/33824 )
M[n] = G<M[n-1]> + dM[n]
14. 推理的链条会因为任何局部反例的出现而中断。在任意时空点上,我们能够断言的事实有哪些?信息越少,我们能够确定的事实越少,能够做出的推论也就越少。现在流行的很多设计实质上是在破坏系统的对称性,破坏系统大范围的结构。比如明明ORM容器已经实现所有数据对象的统一管理,非要将其拆分为每个业务表一个的DAO接口。很多对灵活性的追求完全没有搞清楚信息是对不确定性的消除,而不确定性的减少意味着限制的增加,约束的增加。(From Local To Global http://canonical.iteye.com/blog/42874
)
组件/构件技术的宣言是生产即组装,但是组装有成本,有后遗症(例如需要额外的胶水或者螺钉)。软件的本质并不是物质,而是信息,而信息的本质是抽象的规律。在抽象世界中最有效的生产方式是抽象的运算,运算即生产。组件式开发意味着服从现有规律,熟练应用,而原理性生产则意味着不断创造新的规律。功能模块越多,维护的成本越高,是负担,而推理机制越多,生产的成本越低,是财富。只有恢复软件的抽象性,明确把握软件构造过程内在的数学原理,才能真正释放软件研发的生产力。(从编写代码到制造代码 http://canonical.iteye.com/blog/333167
)
注解1:很多设计原则其实是在强调软件由人构造由人理解,软件开发本质上是人类工程学,需要关注人类的理解力与协作能力。例如共同的建模语言减少交互成本,基于模型减少设计与实现的分离,易读的代码比高性能的代码更重要,做一件事只有唯一的一种方式等。
注解2:生成系统的演绎远比我们想象的要深刻与复杂得多。例如生命的成长可以被看作是在外界反馈下不断调整的生成过程。
注解3:领域描述是更紧致但却未必是更本质的表达。人类的DNA如果表达为ATGC序列完全可以拷贝到U盘中带走,只要对DNA做少量增删,就可以实现老鼠到人类的变换(人类和老鼠都有大约30000条基因,其中约有80%的基因是“完全一样的”,大约共享有99%的类似基因),但是很难认为人类所有智慧的本质都体现在DNA中,DNA看起来更像是某种序列化保存形式而已。
注解4:模型转换这一提法似乎是在强调模型之间的同构对应,转换似乎总是可以双向进行的,仅仅是实现难度限制了反向转换而已。但是大量有用的模型变换却是单向的,变换过程要求不断补充新的信息。
注解5:模型驱动在很多人看来就是数据库模型或者对象模型驱动系统界面运行,但实际上模型可以意指任意抽象知识。虽然在目前业内广泛流行的对象范式下,所有知识都可以表达为对象之间的关联,但是对象关系(名词之间的关联关系)对运算结构的揭示是远远不够充分的。很多时候所谓的领域模型仅仅是表明概念之间具有相关性,但是如果不补充一大段文字说明,我们对于系统如何运作仍然一知半解。数学分析其实是将领域内在的意义抽空,仅余下通用的形式化符号。
注解6:模型本身如果体现的是抽象的规律,则我们有可能只需要在少量简化的场景下验证模型,然后即可将其推广应用到更加复杂的场景中,这样会本质上降低测试的难度。
发表评论
-
从面向对象到面向切面
2011-05-08 12:01 18091. C语言抽象出了软件所在的领域(domain): 由变量v ... -
业务架构平台的自举问题
2011-02-11 14:00 1504业务架构平台的设 ... -
结构的稳定性
2009-12-06 12:17 2649结构的稳定性,直 ... -
结构的自足性
2009-10-07 16:59 2413说到软件建模,一 ... -
行为聚集
2009-07-11 21:34 1270软件开发技术的技术本质在于对代码结构的有效控制. 我们 ... -
信道构建
2009-03-22 21:05 1414分层是最常见的软 ... -
同构与同态:认识同一性
2009-02-28 16:52 3206现代数学是建立在等价类这一概念的基础之上的。同构是对等 ... -
类型化:形而上学的信仰
2009-02-21 19:38 1584有一个心理 ... -
从编写代码到制造代码
2009-02-15 18:15 3115软件开发作为一种 ... -
逆元:不存在的真实存在
2009-02-07 22:12 4284负数没有直接 ... -
文本化
2009-01-04 00:51 2036软件技术的发展是 ... -
关于代码生成和DSL
2008-11-23 11:52 5731代码生成(Code Ge ... -
软件不同于建筑
2008-09-01 23:26 1355软件系统的构建之所以与建筑工程不同,无法达到建筑工程的精 ... -
AOP on XML Tag
2008-07-07 00:09 1676AOP(Apsect Oriented Programm ... -
主从分解而不是正交分解
2008-05-26 00:36 2422说到分解,很多人心中的意象大概只有正交分解。正交分解无疑是 ... -
不完全的计算
2008-03-16 15:20 1634在与一些年岁较大的C程序员接触的过程中,可以比较明显的感 ... -
WebMVC之前世.今生
2008-02-18 22:23 1876所谓WebMVC即Model2模型是目前Web开发领域的主 ... -
关系模型与ORM
2008-01-06 19:20 2009关系数据库模型在理论上主要解决的是消除数据冗余的问题。 ... -
代码之外的结构
2007-12-15 19:49 1766我在各种场合一直都在强调结构问题是独立的,在程序语言之 ... -
结构的独立性
2007-12-11 00:00 2308设计考虑的是最终 ...
相关推荐
本篇文档的标题是“深度学习基础及数学原理”,其描述和内容涉及深度学习的核心概念和数学基础。 一、引言部分 引言部分提出图像分类问题是计算机视觉的核心任务之一,而图像分类的准确性和效率是计算机视觉领域的...
这些工具通常基于组合数学原理来确保覆盖所有可能的输入组合。 3. **组合测试生成技术**: 这是一种关键的技术,它允许测试人员用相对较少的测试用例实现对输入域的广泛覆盖。这种技术特别适用于具有多个参数或输入的...
为了研究电力活塞式电动机电磁驱动系统电磁转换特性,基于电磁场相关理论,采用磁路分析法,建立了电磁驱动系统的数学模型;对活塞、电磁驱动系统进行了运动学和动力学分析,基于 MATLAB/simulink...
1. **基本概念**:介绍数学建模的基本原理,包括模型的类型(如理论模型、数据驱动模型)、建模步骤(问题识别、假设制定、模型构建、模型求解、模型验证)以及常用建模工具。 2. **模型选择与建立**:讲解如何根据...
本主题主要关注PMSM的数学模型建立与仿真过程,这对于理解电机的工作原理、设计优化及控制系统开发至关重要。 首先,我们需要了解PMSM的基本工作原理。PMSM由定子绕组和永磁体转子组成,通过电磁相互作用实现能量...
在给出的内容中,尽管文档结构混乱并且包含大量专业符号与数学公式,我们仍可以从中提炼出与AGV差速驱动模型相关的关键知识点。 1. AGV差速驱动原理: 差速驱动(Differential Drive)是一种驱动方式,它通过分别...
本资源是基于Matlab 2016a版本的Simulink环境构建的步进电机驱动仿真模型,其主要目标是帮助用户理解步进电机的工作原理以及如何通过Simulink进行驱动控制设计。在该模型中,步进电机被驱动器控制,驱动器根据上位机...
通过深入学习《环境系统数学模型》这本书,我们可以掌握这些模型的原理和应用方法,进一步提升在资源环境领域的科研和实践能力。书中可能涵盖了模型构建步骤、实例分析、模型评价等内容,是了解和掌握环境数学模型的...
在MATLAB环境中,开发仿真数学模型是一项常见的任务,特别是在电气工程和控制系统领域。标题提到的“matlab开发-仿真数学模型”着重于使用Simulink工具进行建模和仿真。Simulink是MATLAB的一个扩展,它提供了一个...
《强化学习的数学原理》是西湖大学赵世钰教授撰写的一本英文专著,旨在从数学的角度深入浅出地解析强化学习的核心概念和原理。全书涵盖了强化学习的基础概念、状态值与贝尔曼方程、最优状态值与贝尔曼最优方程、值...
总结来说,本研究利用大数据技术和算法,建立和完善了板材辊式矫直机的驱动扭矩数学模型,并通过实验手段获取了实际扭矩分布,为矫直机的优化设计和智能化控制提供了理论基础和实践指导。未来,随着大数据技术的不断...
本课件主要探讨了这种变换的数学原理。 首先,直流电机的数学模型相对简单,因为其电枢磁动势的轴线固定在q轴,主磁通沿着d轴,两者独立,使得控制相对直观。而交流电机的磁动势是旋转的,分析起来更加复杂。为了使...
可变频变压器(Variable Frequency ...尽管VFT还处于发展阶段,相关文献资料相对有限,但对VFT数学模型的分析和仿真研究有助于我们更深入地理解其工作原理和运行特性,为未来VFT的开发、应用和优化提供了理论基础。
总之,语言大模型如ChatGPT的工作原理涉及词向量表示单词,Transformer架构处理上下文信息,以及大量数据驱动的训练来优化预测能力。尽管内部机制深奥,但通过这些基础知识,我们可以对这些模型的理解有所增进。随着...
本文将深入探讨标题和描述中提到的“梯形反电势换相”BLDC电机的数学模型,以及与之相关的maxon BLDC电机。 首先,我们需要理解BLDC电机的基本工作原理。它主要由定子绕组、转子磁铁和位置传感器组成。在运行时,...
硬盘驱动模型是研究和理解硬盘存储设备内部结构、工作原理以及性能优化的一个重要领域。随着信息技术的迅速发展,硬盘驱动器(HDD)作为计算机系统中负责数据存储的主要硬件之一,对于其性能的优化需求日益迫切。...
### 永磁同步电动机的数学模型与矢量控制:深入解析 #### 一、永磁同步电动机概述 永磁同步电动机(Permanent Magnet Synchronous Motor, PMSM)是一种利用永磁体产生磁场的电机,由于永磁材料性能的不断提升,...
总的来说,MATLAB中的PMSM动态数学模型是电机设计和控制研究的重要工具,它能帮助我们深入理解电机工作原理,并为实际应用提供理论依据。对于电机控制、电力电子、自动化等相关领域的研究者和工程师来说,掌握这种...