句法糖与特征

Din*_*nah 12 language-agnostic syntax syntactic-sugar

在C#(和Java)中,字符串只是一个具有存储长度的char数组,并且添加了一些方法.同样地,(参考与值之外的东西除外)对象只不过是带有继承和接口的美化结构.

在一个层面上,这些新增功能感觉就像是清晰的功能和增强功能.在另一个层面上,他们觉得从"语法糖"状态的边缘升级.

为了进一步考虑这个想法,请考虑(我可能有一些细节错误,但重点仍然是):

transistor
elementary logic gate
compound gate
  |         |
 ALU    flip-flop
   |    |       |
   | register  RAM
   | |
   CPU
   microcode
   assembly
   C
   C++
   | |
MSIL JavaScript
C#   jQuery
Run Code Online (Sandbox Code Playgroud)

很多时候,任何单一的抽象层看起来都像语法糖,但是多层分离感觉彼此之间的距离非常小.

你怎么知道什么东西停止了语法糖并开始成为一个真正的功能?

Rui*_*iro 23

当它意味着不同的思维方式时,它被证明是一种特征而不是语法糖.

当你说对象实际上是带有方法和继承的美化结构时,你是对的.然而,这只是实施细节.对象允许以不同的方式思考.在考虑对象时,您可以更轻松地与现实世界实体联系.同样的事情发生在更进一步的时候,我们从使用go-to跳到程序编程.在引擎盖下,处理器仍然保持从OP到OP的jmp'ing,但我们可以用不同的,更黑盒子的方式思考.

话虽如此,在极端情况下,你可以说一切都是语法糖,但是当它允许你以不同的方式思考时,其中一些糖就是一个特征.


Ara*_*raK 12

句法糖一个特征.

  • 从广义上讲,是的.但我不认为你是按照OP的问题回答的. (2认同)

Ned*_*der 5

所有软件都是基于其他抽象构建的大量抽象.字符串可能只是一个字符数组,但有许多操作在字符串上感觉很自然,但在字符数组上却很笨拙.所有这些抽象的目标都是相同的:删除不相关的细节,以便开发人员可以专注于问题的重要部分.

正如您所指出的,所有现代编程语言都可以被淘汰,我们可以回到使用汇编语言.但是我们的生产力会直线下降.

我猜人们在感觉到它们从中获得的好处时会称之为语法糖,并且当他们觉得从中获得很大的好处时就会有这个特征.这使得区别非常模糊,而且非常主观.


Jay*_*Jay 5

当变化提供价值?我用汇编语言编写了代码.我切换到C并查看编译器的输出.它的代码是95 +%和我手工制作的汇编程序一样好,而且编写起来要容易得多.对我来说,它提供了价值所以我说它不是糖.

C++帮助我将面向对象的思想转化为代码.只要开销不是很高,我认为这是一个功能.

我是一个实用的人."如果我能看到它有价值"是我的答案