软件这个领域中传统上占优势的是自vonNeumann以降的数学视角,计算问题是其思想内核,而函数式语言无疑是其比较贴切的表现。但是仅有数学,我们对于世界的认识是不充分的。有这样一个笑话。烧一壶水的完整步骤如下:1.向空壶中注满水 2.放到火炉上 3.烧到冒泡。现在有半壶水,求解烧水的步骤。数学家的回答是直接把半壶水倒掉,然后宣称问题已经解决,因为它已经被归结为第一个问题。实际上数学的视角直接限制了某些命题进入研究者的领域。现在业界占主流的面向对象技术,并不像是理论界的自然创造,它的思想来源更像是来自于开发窗口系统的工程实践。
http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html.
面向对象技术的核心是描述问题,它试图实现业务概念和业务关系在程序中的直接表达,所谓更贴近人的思维方式。但是从面向对象的实际操作过程我们即可得知,这里所谓的贴近只是贴近人们的常识而已。常识是有意义的,但也是浅薄的。当程序功能变得愈加复杂,程序的结构不再那么直观的时候,我们从面向对象理论得到的支持并不如最初它宣称的那样的巨大。早期面向对象技术所提出的枚举系统中所有名词和动词的设计方法现在看起来无疑是非常的幼稚。如何确定一个系统中到底需要定义多少个对象,以及如何确定它们之间错综复杂的交互关系,这些并不是通过我们的业务常识能够确定的。
在具体的,特定的常识与抽象的数学之间,存在着所谓的物理学。常识总是和一定的“有意义”的场景绑定着,可以直观的理解。而数学则蒸馏出一些纯粹的符号,试图与所有预置的意义划清界线。物理学是折衷主义的,或者说是非常狡诈的。它选择了只在需要的时候诠释。在物理学的推导中,大量的中间过程都是数学性的,难以寻找到明确的物理含义的,但是我们无视它,只对某个最终结论加以解释。事实就是公式千千万,但是我们却只对其中的某些说:嗯,这里面有物理。与此对应,在软件开发中,将直观的业务需求映射到通用的程序语言实现时并不是那么直接的,在这之间可以存在着超过一般人想象的与特定业务无关的厚重的技术层。在这个层面中可以定义出非常复杂的交互模式,并在不同的特定场景下将其诠释为不同的业务应用。这也正是平台技术赖以生存的基础。
丰富的物理学的根基在于丰富的物质结构,它的核心是动力学。实际上单量子体系并不如想象中那样难以研究,这个领域充斥着粗鲁的线性近似,而它们的预测精度却都难以想象的高。真正的复杂性来自于简单元素所构成的复合结构,以及这些结构之间的相互作用。随着ROR这样的动态语言框架的流行,很多人把它们的成功归结为语言特性的增强,这在我看来并不是富有成果的方向。诚然,更多的语法糖(syntax sugar),更多的动态性可以降低我们构建某些复杂结构的代价,但是这种降低最多是减少一两倍代码录入量,而绝不可能是数量级上的影响。对于程序开发可以起到决定性作用的是那些复杂的大范围结构,而不是通用语言本身所提供的那些抽象的简单的局部结构本身。当然,一般人大概很少有能力做出超过一定难度的创造,一般都只是依赖现有的语言,现有的框架以直白的方式实现功能,因此很难想象可以在语法特征更少的java中轻易实现超过ROR的开发便捷性。
通用语言的发展必然是有极限的, 也必然是贫瘠的, 因为它无法利用有限场景下的信息. 而DSL(Domain Specific Language)将注意力集中在某个特定的领域(domain)中,便可以名正言顺的引入非常复杂的语法结构. 这些结构旨在本领域中具有意义,而不用担心超出应用范围后遭到"冗余设计"的诟病. 我无法想像在一种通用程序语言中会规定Witrix平台中BizFlow这样的结构设计,但是作为一种domain相关的语言结构,它的表述却无疑是非常高效的。我相信,随着我们对于程序结构的认识的不断深化, 在DSL所构建的复杂结构空间中可以发展出一些真正有趣的技术.
对于DSL存在着两个常见的误解.一是DSL是存在于特定领域的,因此它是一种受限制的语言,应该在计算能力上弱于图灵机.但其实DSL的核心在于高效的表达,在于直接存在的高阶结构,与它的形式计算能力并无关系.正如物理中Lagrange表述和Hamilton表述在数学上是等价的一样,我们的选择只在于某种情况下某种描述方式会更加方便。这里所玩的游戏更像是概念空间中的拓扑变换。
关于DSL的另一个误解是DSL的表述形式应该接近自然语言.但事实上数学符号和化学公式都是高效的DSL,它们的表达形式甚至内在逻辑都和我们的自然语言相去甚远.我们是否已经完全解决了程序问题,而只是要把这种能力向无知的客户转授?目前在程序编码的过程中我们仍然面临着大量未决的问题,程序员应该是DSL的直接受益者.此外,西人对于语言的认知是偏狭的,因为他们眼中的language只有拉丁语系和日耳曼语系,而不知道这个世界上还存在着不符合西文语法的汉语。按照朱光潜的诗论,西人长时间认为诗是不宜于写景状物的,因为语言是串行的,因而只适于按照步骤叙事,却不了解汉语的自由组合形式和丰富的单字表现力可以轻易捕获微妙的瞬间.
分享到:
相关推荐
在不同的架构设计方法中出现的软件... 图1 区分物理视角与逻辑视角同样,在软件架构设计过程中,也可以通过区分软件的逻辑架构和物理架构,分别从不同的角度设计和描述软件架构。所谓软件架构视图,是指设计和看待
通过整合教学,可以加深学生对物理概念的理解,并培养其运用物理视角分析问题的能力。例如,物理教学可以与体育学科相结合,利用学生熟悉的运动动作来解释物理现象,如通过投篮动作讲解抛物线运动,从而让学生在实际...
1. 培养学生具备物理视角,使他们在日常生活中能主动发现和研究物理现象,积累知识,拓宽视野,形成积极的探索精神。 2. 通过提供信息资源和创设情境,使学生理解物理与生活、科技的紧密联系,增强他们的实践意识和...
在知识与技能层面,学生将学会用物理视角审视周围环境,积累知识,拓宽视野,并培养实事求是的探索精神。教师队伍也将借此机会提升教学和科研能力,共同推动学校课程改革的发展。 在过程与方法上,教材设计了丰富的...
物理观念是指学生对物理现象和规律的综合理解,它不仅涉及对物理定义的记忆,更包括用物理视角解决问题和认知事物的方法。例如,在讲解“物质的三态”时,教师可以通过提问引导学生从生活实例中理解和区分固态、液态...
最后,试卷还涉及了能源和信息这一现代社会的热点话题,通过物理知识来理解能源的分类和利用,以及信息传递的基本原理,让学生能够用物理视角分析现实问题。 总之,备战2020中考物理全真模拟试卷01,不仅是一套练习...
本文将对互联网视角下高中物理课堂教学多元化策略进行探讨。 首先,高中物理课本中的知识比较复杂和抽象,传统教学难以满足学生的学习需求,导致学生对物理产生畏惧心理。网络技术的应用能够让学生通过丰富多彩的...
汪昭义撰写的研究论文《平面电磁波传播的物理分析》(以下简称《分析》)以物理视角深入探讨了电磁波在自由空间中的传播特性,对于教育和研究具有不可忽视的指导意义。 电磁波的本质是变化的电场和磁场的相互作用与...
深度学习视角的物理习题教学策略研究.pdf
这种方式不仅为读者提供了一种全新的学习视角,也为非物理专业的学生在理解量子物理概念时提供了便利。本书在介绍量子物理的基本概念时,不仅限于原子物理的传统内容,还扩展到包括量子共振、势垒隧穿、能带理论、...
深度学习视角下的物理教学策略,强调的是透过现象看本质,通过一系列教学设计引导学生深入理解物理知识,培养其解决问题的能力,并最终达到知识内化和能力提升的目的。 设计体验活动是实现深度学习的有效手段之一。...
张春华教授的论文在这一点上给出了创新的推导,为广义相对论中的角动量守恒提供了新的数学工具和物理视角。 除了角动量守恒定律,张春华教授还首次推导出了更为广泛的广义守恒定律。广义守恒定律是一个涵盖更广泛...
"基于信息化视角下初中物理实验教学开展策略探究" 本文探究基于信息化视角下初中物理实验教学的开展策略。随着网络信息技术的不断发展,对教育的影响也日益加深。如何将信息技术与初中物理实验教学有机整合,提高...
Maggiore提出了对准正规模的新解释,为研究黑洞的量子性质提供了一个新的物理视角。本文利用这种新解释,结合玻尔-索末菲量子化条件和绝热不变量,对三维和五维大AdS黑洞的面积谱和熵谱进行了计算。玻尔-索末菲量子...
【高三物理复习教学的有效性探究——深度学习的视角】 高三物理复习阶段,教学效率的提升是教师关注的重点。本文从深度学习的角度出发,探讨如何优化复习策略,促进学生深度参与和高效学习,以提高复习效率。复习课...
这体现了网络设计的双重视角——物理视角与功能视角。 #### 协议的概念 协议规定了通信实体间消息的格式与顺序,以及在传输、接收或其他事件中的行为规范。这是确保网络通信有序进行的基础。 #### 面向连接服务...
#### 四、伊辛模型的统一物理视角 近年来,伊辛模型的模拟不仅展示了统计物理的基本原理,还揭示了物理学各个领域之间的内在联系。通过对伊辛模型的研究,可以更好地理解不同物理现象背后的共同机制。例如,通过...
视角模型通常包括功能视角、逻辑视角、物理视角等,它们有助于设计者和开发者全面理解系统的设计、实现和运行,为系统集成提供了强大的工具。不同视角下的描述,有助于发现和解决潜在问题,优化系统设计。 综上所述...