软件开发反思-第一章、小故事大问题-1.3、编程语言,真的是语言吗?

  通常情况下,人类的语言是一种对现实世界认知的描述并用于相互沟通。而编程语言套用了“语言”一词,可这真的是语言吗?


  我们来看一个例子:在人类的语言中:“马车”先出现,“汽车”后出现。“拉”这个动词应该比马车出现得更早一些。100年前我们可以说:“马车拉马车”,现在我们能说:“马车拉汽车”,但这个表达如果要用计算机语言来实现,你会发现,计算机语言在表达能力上是如此的糟糕。因为“拉”这个动作在设计时,根本不会知道今后能用于拉汽车。

  也许马车和汽车都从车这个类继承,再搞个“拉”的接口这些基于OO的想法也许能接近这个表达,但是这个表达仍是如此的无力,因为马车还能拉别的东西,这这个东西与马车的父类是两回事。


  问题在哪呢?


  从语法来看,动词“拉”是一个致命伤,这对操作系统或用户开发的系统来说“拉”是一个具体API或函数(也可能是一个抽象方法或接口),但它总是确定的(有参数,有类型)。但在人类的语言中,语言和实现是完全分离的。

  能否有一种标准的通用语言呢?它不基于任何操作系统,但操作系统能识别它,就像HTML, 也可像某些动态语言,执行时才确定。

  但同时,我们至少知道,大部分所谓的编程语言,并不是我们真正意义上的语言,而是一种基于具体系统API的表达。


  其它:

   1、“马车拉马车”或“马车拉汽车”我想表达的是A故障了,B来拉它。许不是很好的例子。

  2、不能具体化,就无法编译,计算机也不知道如何执行。这也许是一个说法,我不想深入所谓强类型或弱类型语言的讨论中,我想表达的是:中立标准语言对程序员来说具有莫大的价值,因为它的学习成本最低。而动态语言具有更灵活的表达。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值