`
canonical
  • 浏览: 367200 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于通用语言能力的一些澄清

阅读更多
    我在前面的文章中列举了大量物理学相关的例子来试图说明采用物理视角的必要性,但是可能因为物理事实大家不熟悉,结果直接被无视了. 在本文中我想有必要举一个软件领域的例子。只是在实际思考的过程中,我主要还是基于物理概念进行推理.
   
    首先我所谓“现在的通用语言”,它并不意指“现在至未来所有通用语言之合集”,而是指“目前正在被使用的某一种通用语言”,这种差别便体现了我所强调的不同的价值观和不同的视角。不是一种覆盖一切的全称判断,而是在特定物理约束下的物理实体。
   
    现在无论我们设计什么大型系统,一般总是要优先考虑微内核设计。但是很显然,如果我们的编程控制能力极强(强大到不现实的地步),我们可以把所有的代码实现为一个大的整体。一个整体的好处是勿用质疑的,否则Linux Torvalds就不会有信心和Tanenbaum PK。但即使是Linux, 随着系统越来越庞大,在内核中也补充了很多模块管理策略。我并不把这种情况看作是一种现在技术能力不到位所造成的结果,而是把它看作是在现实的物理约束下所促成的一种必然的选择。
   
    按照类似的逻辑,我认为在通用语言层面不应该导入越来越多的特征,实际上也不可能把所有可能的结构方式都内置在语言中(这种不可能不是数学意义上的不可能)。这会破坏一种语言的纯洁性,使得它极难维护和发展。为了扩大通用语言的有效应用范围,一种显然的方式是在语言中定义一些支持结构再次抽象的机制,通过可插拔的方式实现与domain相关的知识的融合。ruby这样的语言提供了大量的元编程机制, Witrix平台中tpl模板语言也发展了一系列编译期结构构造技术, 但是显然它们都不能说是结构抽象技术的终极形态. 目前我对所有通用语言所提供的结构抽象和结构组装能力都是不满意的,因此在Witrix中发展了一些领域特定的结构融合手段.例如根据"继承"关系的结构诠释(继承可以看作是两个一维集合之间的覆盖关系), 我们扩展了extends的结构操作方式, 定义了广义的extends算子. 这些特定的结构关系目前在领域特定的BizFlow语言中体现, 它们在通用语言中是难以想象的, 而把它们放置在通用的语言中也是不合适的(这种复杂的结构融合操作如果不能结合领域知识进行直观的理解, 必将导向一种思维的混乱). 这就是我所谓"现在的通用语言无法有效承载Domain Specific Structure"的含义. 这种说法其实类似于"集合论是无法包容所有数学结构的". 我们在集合论中只研究最普遍的关系,而特定的结构在特定的学科中研究.
   
    关于ErLang的例子, 我的原意是用来说明结构问题是独立的,它是和具体语言无关的.即基于消息传递发生数据关联的超轻量级进程模型这一结构不是和ErLang语言绑定的. 为此我特意加了一段说明:"这里不是要证明某种语言中无法描述这些结构,而是说结构是客观存在的,它并不是要在基础语言层面得到充分解决的". 即使在语言层面我们并不解决这个结构问题, 它仍然客观存在着,我们仍然可以用其他的技术手段去定义,去解决. 解决了这个结构问题就必然会带给我们价值,而无论我们使用何种实现语言.

    "什么原因,什么样的约束条件,导致了现在的通用语言是无法有效承载消息传递发生数据关联的超轻量级进程模型". 这一命题并不是我原文中论点的合理推论.我并不是要说某一种特定的领域结构无法在一种特定的通用语言中得到支持.而是说如果我们认为一种通用语言是比较稳定的,则它一般选择只内置一些通用的不带有领域特定含义的概念. 而缺乏领域知识,或者说因为通用语言故意的摒弃领域依赖, 它在处理领域相关的问题的时候并不是有效的.这种有效性不是数学含义上的,而是可以进行物理度量的. 现在也有很多人认为ErLang并不是真正的通用语言,它是针对通信领域进行了特定结构调整的, 是内置了领域特定结构的. 而目前在ErLang上建立GUI的努力也并不算是成功.
   
    在前文中我举了一个例子试图说明:"在限定的物理约束下,我们的选择范围会大大缩小". "比如说我现在有无穷多种方式从北京跑到上海,但是如果限定只允许用1升汽油,那么我们的选择就近乎于0". 这里并不是要说明加上物理约束之后,我们便没有任何选择了.而是说物理约束对无穷多的可能方式起了限定选择的作用, 它最终造成我们在具体的物理场景下可能只有非常有限的选择. 例如现在允许用100升汽油, 有多少种运输方式可以满足我们的要求? 如果允许1000升呢? 但是如果不考虑所有物理约束, 我们是否能够证明说: 飞机和拖拉机的运输能力是完全一致的, 因为它们都能从北京开到上海.

    我的观点是结构问题是独立存在的,它具有自身的价值, 研究它也需要建立特定的价值观. 一个结构可以体现为语言上的某种语法特征, 也可以通过框架等实现, 或者表现为某种设计模式,某种编程技巧. 我们在思考结构问题的时候并不是从特定语言的机制出发的, 当语言不直接支持的时候我们可以发展特定的实现技术支持它. 在未来的日子里某个结构可能被证明具有普适的价值,它会被吸收到某个通用语言中成为所有程序的支撑结构, 但是更多的结构永远都不会进入通用语言, 而是居留在某个特定的领域. 通用语言的发展并不是完全基于抽象的数学分析而进行的, 它可以从更加丰富的物理世界中吸取营养. 当一种结构进入通用语言的时候, 它所带来的绝对不只是一组数量关系,而是同时带来一系列经过实践检验的物理诠释.

    我所谓的领域并不是指业务领域, 而是结构领域, 一个可以定义特定结构的物理场景. 一个特定的结构仍然可以支撑着任意多的具体应用. 例如CRUD操作可以作为数据管理模型. BizFlow作为界面和单实体的交互模型.

    函数式语言为我们提供了一种具体的技术工具, 但是在现实的开发中, 为了有效的处理结构问题, 显然我们需要多种视角的组合, 而不是把所有可想见的图景都纯化为函数. 我们对世界的体验是多样化的. 这就是我所谓"世界比函数的集合要复杂"的含义.
分享到:
评论

相关推荐

    GPT-4能否点亮通用人工智能?

    GPT-4发布后,微软人工智能研究人员发表了一篇论文,称OpenAI语言模型展示了通用人工智能(AGI)的“火花”。 GPT-4是OpenAI最新的大型语言模型(LLM),在对其公开发布进行微调之前,研究人员可以访问其不受限制的...

    合理低价通用本合同模板协议表格模板.doc

    同时,还包括投标费用、保密、语言文字、计量单位、踏勘现场、投标预备会、分包以及招标文件的组成、澄清、修改或补充等内容,这些都构成了完整的招标流程。 7. **投标文件组成**:投标文件一般包括技术标、商务标...

    C++语言及编程技巧.

    C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持程序化编程、面向对象编程和泛型编程的多功能编程语言。它最初由Bjarne Stroustrup在贝尔实验室工作时开发,作为对C语言的一种扩展而诞生。自1983年...

    ChatGPT与教育的未来

    需要澄清的是,目前我们试用的ChatGPT是被限制了实时更新数据能力的,而且显然还封印了很多可回答问题的领域和规模。大家对它的很多批评,比如不准确、数学差、没主见,甚至经常是一本正经地胡说八道,在更大规模...

    ChatGPT技术如何提高对话理解的准确性.docx

    这个阶段的目标是培养模型的通用语言理解能力。微调阶段,模型针对特定的对话理解任务进行有监督学习,进一步优化性能。强化学习可以在此过程中发挥重要作用,通过模拟用户交互来提升模型的回答质量。 此外,与用户...

    小学语文部编版5年级(下册)第6单元核心考点清单.pdf

    根据您提供的文件信息,以下是关于小学语文部编版5年级(下册)第*单元核心考点的详细知识点。 首先需要澄清的是,文档内容提供的是一系列看似无意义的字符和符号,这可能是OCR技术对文本扫描后的错误结果。由于...

    CUDA_C_Programming_Guide

    CUDA C编程指南7.5版本是在2015年9月发布的,它为开发者提供了关于如何使用CUDA C进行通用并行计算的详细信息,以及如何在NVIDIA GPU上有效地利用计算能力。以下是从标题、描述和部分内容中提炼出的关键知识点。 ...

    北京市七年级语文上学期12月月考试题(无答案) 新人教版(通用).doc

    题目要求为划线字注音,涉及的汉字有“酝酿”、“抖擞”、“应和”、“洗漱”、“贮蓄”、“沿溯”、“澄清”、“黄晕”、“芊芊细草”、“秋波澹澹”。这些词汇均来自日常语言和古诗词,考察学生的普通话发音和对古...

    一种面向多机器人对抗博弈的求解算法.pdf

    LGDL+是一种用于策略表示和推理的模态逻辑语言,已经被广泛地应用在通用对弈游戏领域中。 DOAN 算法 DOAN 算法是一种用于解决多机器人对抗博弈问题的算法,以 Stackelberg 安全博弈为例求取均衡解。 状态迁移 ...

    应对就业面试的思考.pdf

    不过,我可以根据标题和描述中的信息生成一些关于“应对就业面试”的一般性知识。以下内容将围绕面试准备、面试技巧、面试常见问题和应对策略等方面展开。 1. 面试前的准备 在就业面试前的准备工作至关重要,这是...

    PPAP生产件批准程序流程及分析.pptx

    主要的修订内容包括与QS-9000标准保持一致的语言和格式,对流程进行重组以适应实际生产过程,将"初期过程能力要求"改为"初期过程研究",并明确了当客户要求或通知时的审查条件。此外,还增加了针对卡车制造商的特定...

    单词密码纯中文日常高频词根.docx

    【英语词根】是英语词汇学习中的重要组成部分,它帮助...结合这些词根,我们可以更好地理解和记忆英语单词,提高词汇量和语言表达能力。通过搭配不同的前缀和后缀,词根可以形成各种各样的单词,丰富了英语的表达层次。

    高一英语上学期十月月考试题.doc

    不过,我们可以从中学教案的角度,提炼出一些教育和学习方法上的通用知识点: 1. **听力训练**:英语学习中的听力理解是关键技能之一,这涉及到对语言的即时理解和反应。教师可以通过播放对话或短文,让学生在限定...

    c++性能分析

    本书首先澄清了广泛流传的关于C++性能问题的误解,展示了如何在对性能有高要求的应用场景下有效地运用C++。 ### C++与高性能计算 对于那些可以负担得起使用C语言进行开发的应用程序,通过合理使用C++的特性,同样...

    C++标准2003C++标准2003

    C++是一种强大的、通用的编程语言,以其面向对象特性、模板功能和性能而闻名。2003年发布的C++标准,正式称为ISO/IEC 14882:2003,是C++语言发展的一个重要里程碑。这个标准在C++98的基础上进行了一些修订和改进,为...

    (完整word版)数据结构习题与答案.doc

    算法可以通过自然语言、程序设计语言、流程图和伪代码来描述,其中伪代码是一种通用的算法表示方式,它类似于编程语言但更注重算法逻辑。 算法的时间复杂度用来衡量算法运行时间与问题规模的关系。用大 O 记号表示...

    akka Essentials

    这一点对于读者来说可能会有一点混淆,需要澄清Akka的原生语言是Scala,而其核心概念和API在两种语言中都是通用的。 书中对于信息准确性的声明,以及对出版社版权的保护,暗示了这是一本正式的技术图书,内容经过...

    精品资料(2021-2022年收藏)泰安市实验学校校园安保、保洁服务项目.doc

    不过,我们可以从标签和部分内容中提炼出一些与IT行业相关或者可以类比的知识点: 1. **采购流程管理**:在IT行业中,类似的流程可能是指软件开发或硬件采购。比如,企业可能会通过竞标或协商来选择合适的供应商...

    驾驶台资源管理通信与沟通优秀文档.ppt

    - **工作语言障碍**:使用通用航海术语和多语种理解能力的培养。 - **噪音干扰**:寻找安静的沟通环境或使用降噪设备。 - **精力分散**:合理安排工作和休息,保持专注。 - **设备故障**:定期维护和测试通信...

Global site tag (gtag.js) - Google Analytics