软件从某种意义上说,就是以各种程序设计语言记载、并运行在遍布全球的计算基础设施上的人类思想。人类社会文明程度越高,对软件的依赖越大。人类的思想异化为软件,但我们自身却迷失在软件所营造的异度空间中。
软件的逻辑就是以言行事的逻辑,软件程序操控着人造世界,我们就生活在其中。从语言学视角对软件进行分析,有助于我们脱离细节的牵绊,从纯理论看待这个极其复杂的怪物。我们可以借用语言学的语法、语义和语用,把这三个因素表征为三维的坐标系。
(1)语义维度
我们可以把各类计算模型安排在语义维度上,数学家和计算机科学家已经构造出五花八门的计算理论,比如自动机、图灵机、冯诺曼机、函数式模型、逻辑式模型、并发模型、项重写等等。有许多模型是图灵等价的。
(2)语法维度
驱动着语法进展的是抽象的力量,抽象带来的语法糖虽然并没有增加计算模型的能力,但它大大提高了描述程序的效率、安全性和可读性。计算模型中控制、数据都可以进行抽象。抽象的基本手段是命名和参数化。历史上的结构化程序设计、面向对象程序设计是两次巨大的抽象语法维度的进展。
(3)语用维度
计算机语言语用一方面是语义、语法在计算机上实现范畴。另一方面就是软件以言行事的范畴,通过I/O操控外部世界。计算理论认为I/O是非本质的副作用的东西,但这却是人类为什么需要软件的原因。
一、程序设计语言中的概念构造,可以比喻为这个理论三维空间中的点。
例如类型构造,一般被认为是语法维度的东西。但是通过类型理论中curry-howard同态,却揭示出类型与逻辑的联系,由此丰富了语义模型。为了支持类型,语用维度必须在纯代码的基础上添加元语言信息。
例如纯函数程序语言,以lambda演算作为语义模型。人们在函数程序语言中引入了continuation、monad等概念。这些构造有语法的形态,但也有语用上的内涵——I/O副作用,由此为函数程序操控世界打开了一扇门。
二、底层的元语言编程行为,可以比喻为这个理论三维空间中的变换。
传统的过程式程序设计的编译、解释,高级语言和低级语言的语义模型是一样的,主要属于语法维度的变换。但是函数程序语言、逻辑程序语言的处理,除了语法维度的变换,还多了语义模型的变换。由此导致在语用维度上,函数程序和逻辑程序的运行时间系统比过程式语言复杂,运行效率也有下降。
程序员封装函数库的API设计,某种意义就是语言的设计。而极端者如DSL领域专用语言,就是从外部领域的语用内容直接向语法-语义平面的投射。
lisp之所以被称为可编程的程序设计语言,在于在语法维度上增加对理论三维空间变换的变换,使其元语言编程能力极为强大。lisp的宏用作DSL设计,就是on lisp中鼓吹的自底向上的编程方式。
分享到:
相关推荐
MATLAB(Matrix Laboratory)是一种强大的数值计算和可视化软件,广泛应用于科学计算、工程分析以及教学研究等多个领域。在语音信号处理方面,MATLAB提供了丰富的工具箱和函数,使得语音信号的分析、处理和合成变得...
陈硕的经验分享为我们提供了一条清晰的学习路径,从理论基础到实际案例分析,再到高级技巧的掌握,每一步都充满了挑战和机遇。网络编程的学习之旅是一场持久战,但掌握了正确的方向和方法,你将能够在这片广阔的领域...
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
wrf转mp4播放器1.1.1
内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。
国网台区终端最新规范
《基于YOLOv8的智慧农业水肥一体化控制系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
GSDML-V2.33-LEUZE-AMS3048i-20170622.xml
微信小程序项目课程设计,包含LW+ppt
微信小程序项目课程设计,包含LW+ppt
终端运行进度条脚本
幼儿园预防肺结核教育培训课件资料
python,python相关资源
《基于YOLOv8的智慧校园电动车充电桩状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
deepseek 临床之理性软肋.pdf
SM2258XT量产工具(包含16种程序),固态硬盘量产工具使用
RecyclerView.zip
水务大脑让水务运营更智能(23页)
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
大众捷达轿车前轮制动器设计