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



如何才能创造一门世界顶尖的中文编程语言? 第1页

  

user avatar   liu-chang-48-89-88 网友的相关建议: 
      

看到了来瞎答一波。传统编译器理论通常分为两个部分,语法检测部分(syntax)负责把一个字符串流parse为AST (Anstract Syntax Tree) ;语义检测部分(semantics)负责分析AST,检查可能的错误,分析可能的优化机会,并生成优化的目标代码(机器码,CLR, JVM等)。

目前的Programming Language的研究与发展主要集中在第二部分。比如我phd导师(Michael Hicks) 在Cornell时候做的cyclone就利用affine type很巧妙的解决了memory safety的问题,直接导致了rust的诞生。这就是type system方面的进步。再比如说llvm就是uiuc当时的一个研究项目,使得各类language有了一个统一的ast格式,使得优化方面的研究进展可以很容易的应用到各个语言。

而相对于semantics的研究使得编译器越来越智能,syntax方面并没有听说什么进展。这是为什么呢?因为关于syntax的问题早在七八十年代就已经被knuth完美的解决了。近几十年的进展也就是python让代码更好读呀; scala让语言的可扩展性增强呀之类的。本质的难点更多的还是在于,syntax提供了方便,那semantic analysis方面多出来的困难怎么解决。so,难点还是在于semantic analysis。

回到这个问题。题主想要造一个中文的语言。如果只是关键字换成中文,it’s all fine。在syntax analysis中,这只是alphabet,从ascii码扩展到utf8 or unicode,核心的问题在七八十年代已经完美解决了。

而题主并没有提出其他要求。syntax是programmer-friendly (like python) or semantic analysis-friendly (like java, coq)?后面的semantics是支持简单的分析来生产高效代码(like llvm)还是支持higher order logic and smt solving ability可以支持复杂的分析推理?

程序分析本身是一个undecidable的problem。所以程序语言设计的核心在于trade off:并没有办法设计一个全能的语言;一定要有侧重;也一定要有取舍。如果题主能给出更多需求的话我们可以深入讨论。




  

相关话题

  为何部分程序员从不使用 break 或 continue 语句? 
  创造编程语言应该学习什么语言?设计编程语言最好是用C/C++吗? 
  为什么英、法、德、美这四个国家在汉语中的习惯叫法是“单字+国”的形式,而别的国家都不是? 
  Linux 图形界面的显示原理是什么? 
  如何看待「湾湾」在台湾被选为「最不可接受词汇」,国台办回应「系大陆民众对台湾民众昵称,有萌萌的感觉」? 
  学C#后还有必要学C语言吗? 
  现在的编译器能把代码优化到什么程度? 
  使用基于LGPL授权QT的『歪歪yy语音』允许反编译吗? 
  为什么有人说“所有的哲学问题都是定义不清晰导致的”? 
  如何看待我国外交部在国际舞台上的发言方式? 

前一个讨论
如何看待郑爽为杭州女子发声?
下一个讨论
如果 ElementUI 不维护了,也不再支持 Vue 3了我们该怎么办呢?





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