百科问答小站 logo
百科问答小站 font logo



编程语言语法和风格是否应该建立统一的标准? 第1页

  

user avatar   s.invalid 网友的相关建议: 
      

这个嘛……证明了编程要从娃娃……哦不,hello world抓起的重要性。


1、哪怕现实中的程序员编程,也是一个人、一个问题只用同一种语言;极少有在同一个项目组使用多种不同语言的。


2、人类语言都可以找到一个统一的模型、一举支持全球数百种语言的双向互译;编程语言格式规范得多——只要你真解决了任意一种语言的AI编程问题,现在有无数种现成的工具可以在不同语言间自动翻译。

典型的,各种语言的编译器其实就是自动把该语言代码翻译到汇编语言/机器码。

更有甚者,各种模拟器——包括VMware等虚拟机软件,也包括街机模拟器、浏览器沙盒等等,实质上做的就是同构/异构硬件平台的机器码之间的相互翻译工作。


结论:学着敲个hello world吧。


user avatar   he-shi-jun 网友的相关建议: 
      

题主的想法是好的,但是核心的基本假设「至少在语法书写上达到一致,就能够极大的降低入门门槛」是不成立的。

编程语言的关键问题是语义,语法可以说只是编程的界面(的一部分)。所以语法要适应语义(虽然在设计语言时也会有语法反过来影响语义的情形,但总体上说,主次是不能颠倒的)。所以即使语法书写上达到一致,只要语义不一致,也没有什么大用,而且会有反作用——相同的语法,语义却不同,很容易让跨语言编程的程序员搞糊涂并产生bug。

我6年前写过一个老答案:会不会出现统一 PHP, Java, Javascript 的语言规范?

该问题讨论的是语法很相似,语义也比较接近的 PHP、Java 和 JS。

举个小例子,还是 PHP 和 JS。两者数组都可以用 [1, 2, 3] 构造,然后用 a[0] 这样的下标语法访问。且 PHP 和 JS 的数组也都可以用字符串作为 key ,甚至字符串如果是数字,和数字索引是一样的。看上去一模一样啊。但是实际上 PHP 和 JS 的数组有很大的不同。
1. JS 和 PHP 都对索引进行隐式类型转换。JS 的索引都是归化为字符串的,所以 a[10] 和 a[10.1] 是不同的。但是 PHP 的索引是首先归化为整数的,所以 a[10] 和 a[10.1] 是相同的。
2. PHP 中:
$a1 = [1, 2];
$a2 = [0 => 1, 1 => 2];
$a3 = [1 => 2, 0 => 1];
a1和a2是相等的,但是和a3不等,行为(如迭代)也不同。实际上a3不是一个普通数组,而是一个关联数组。
在JS中数组虽然由于下一条都是不同对象,但不管用什么方式创建索引0是1索引1是2的数组(或者对象),其行为(如迭代)是一致的。
3. PHP 的数组是值,而 JS 的数组是对象引用。这在语义(如相等性)上天差地别,具体就不展开了。
在几乎完全一样的语法背后,也可以拥有如此巨大的差异,所以单单统一语法并没有什么卵用。

很相近的语言如此。如果是非常不一样的编程语言(比如不同的编程范式,不同领域的DSL等),那就连统一的可行性也是不存在的。

然后说一下「能够简化未来AI编程的难度」的想法,这也是不成立的。因为对于AI来说,语法可能是最不重要的部分,或者说,用传统的parser和code generator就可以解决的问题,根本用不上AI。

最后,我认为题主的问题虽然显然不成立,但其动机「降低入门门槛」还是可以思考的。这一目标没法通过统一语法达成,但也许可以通过其他方式达成。比如以非专业程序员为目标设计的编程方式(不是单单的编程语言),最典型的是古老的 Smalltalk(诞生于半个世纪之前),其语法规则很简单,编程范式很容易让普通人认知(对象互发消息),一体化的编程环境,操纵程序和操纵界面的一致性,程序就是虚拟世界,编程就是改造虚拟世界…… 从很多方面看,它比现在许多所谓的面向入门的编程语言(如Scratch这样的图形化语言)要自然得多。我个人非常期待未来能出现继承 Smalltalk 精神,辅以图形化、AI的,适合更广泛人群的一体化编程语言和编程环境。


user avatar   icon-meh 网友的相关建议: 
      

《标准是如何泛滥的》

图1:现状,有 14 种相互矛盾的、冲突的标准。

图2:14种? 太荒谬了!我们需要制定一个能涵盖每种需求的统一的标准。

图3:很快,情况变成了:我们拥有了 15 种相互矛盾的、冲突的标准。

原文在这里:

《创建一种统一的编程语言,允许程序员学习一次,然后能够为 Apple 设备、Android、Microsoft 和 Linux 系统创建本地应用程序,最大的绊脚石是什么?如果有的话,它什么时候会存在?》
quora.com/What-is-the-b


user avatar   xing-jiankuan 网友的相关建议: 
      

这个问题有很复杂的回答,但估计大部分人看不懂也不想看。

一定要回答下,也很简单:

  • 建立和维护统一的标准的代价是10^10
  • 建立和维护统一标准不利于创新,对未来的负面影响是10^10
  • 相对的,建立和维护统一标准得到的收益最多不会超过100

因此正常人都知道怎么选。


user avatar    网友的相关建议: 
      

是什么让你产生了“AI编程的难度在于语法”的错觉?




  

相关话题

  当程序员需要天赋吗? 
  批判易语言的人是否用过这门语言,批判它的原因又是什么? 
  如何在c#应用程序里使用excel文件做数据源? 
  有哪些计算机术语的翻译,让你第一次学的时候感到十分别扭? 
  硬盘写到一半断电时文件系统发生了什么? 
  世界顶级开源软件工程师,他们如何谋利? 
  面向对象编程的下一阶段是什么? 
  2021年你读了哪些觉得比较好的计算机书籍? 
  为什么 C++ 没有 C 语言快? 
  面向对象编程的弊端是什么? 

前一个讨论
刚刚我电脑上的浏览器用不了了,然后我就给它卸载了,现在我的电脑没有浏览器,搜索东西也不知道上哪去搜?
下一个讨论
既然有电阻分压,还要7805干什么?





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利