BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #82195同步于 2014/9/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

一直不懂,用c语言开发一种别的语言比如说lua 是什么意思

mogumogu
2014/9/7镜像同步12 回复
我是这么认为的: 语言不该就是一种规定么 大家都这么用 编译器或解释器 能识别 能让机器按翻译过来的指令运行就行了 那用语言开发一种语言是什么意思 这两种语言应该有什么联系
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nuanyangyang机器人#1 · 2014/9/7
指得是语言实现吗?解释器是一种实现方法,编译也是一种实现方法。都是把理论上的语言变成真的能执行的东西。
mogumogu机器人#2 · 2014/9/7
开发一种语言 是不是 主要就是开发一个编译器或者解释器或者vm 【 在 nuanyangyang 的大作中提到: 】 : 指得是语言实现吗?解释器是一种实现方法,编译也是一种实现方法。都是把理论上的语言变成真的能执行的东西。
nuanyangyang机器人#3 · 2014/9/7
【 在 mogumogu 的大作中提到: 】 : 开发一种语言 是不是 主要就是开发一个编译器或者解释器或者vm : 还需要设计这个语言的语法、语义。比如这几个问题: 1.变量可以变还是不可以变? 2.有符号整数溢出的时候会发生什么。 3.函数参数的求值顺序是什么?从左向右?从右向左?还是随便? 4.如果有多个线程往不同的内存地址写数据的时候,所有线程的所有的写操作是否有一个全局统一的顺序? 不同的语言的选择会不同。 如果不规定,不同的人实现起来,运行的结果也不同。
mogumogu机器人#4 · 2014/9/7
意思就是 需要设计语法语义 然后实现一个编译器之类的东西 再进行测试。代码量主要在后者。 【 在 nuanyangyang 的大作中提到: 】 : : 还需要设计这个语言的语法、语义。比如这几个问题: : 1.变量可以变还是不可以变? : ...................
nuanyangyang机器人#5 · 2014/9/7
【 在 mogumogu 的大作中提到: 】 : 意思就是 需要设计语法语义 然后实现一个编译器之类的东西 再进行测试。代码量主要在后者。 : 有的语言没有一个单独的语言设计,比如python,没有“标准”什么的,官方的实现就是规范。他们用解释器。 另一些语言,比如C语言,会有单独的一个“标准”,有很多编译器实现。Java也有一个标准。 至于哪里难,哪里都不容易。就拿C语言的memory model(就是规定多个线程访问内存的时候程序的行为)为例,它的设计从2000年代中期就开始了,到2011年才设计出来。但是实现方面,就算到现在,主流的编译器(比如GCC)实现这个标准也有很多bug,尤其是优化器,有时候还在按照以前没有规定多线程行为的时候的很多假设来优化,现在都是错误的了。 但是想设计一个糟糕的语言很容易,比如PHP,以前黑过它: http://bbs.byr.cn/article/Linux/131124 最核心的语义里面有一个严重的缺陷,结果因为改正这个缺陷几乎不可能,他们干脆不改了。现在facebook往php这个垃圾里成百万上千万地投钱,即便如此,前一阵子他们服务器还宕机30分钟,因为他们的PHP实现的内存管理有问题。
nuanyangyang机器人#6 · 2014/9/7
【 在 mogumogu 的大作中提到: 】 : 意思就是 需要设计语法语义 然后实现一个编译器之类的东西 再进行测试。代码量主要在后者。 : 设计和实现一个语言,代码量真的不是最难的。
bystorm机器人#7 · 2015/4/4
【 在 mogumogu 的大作中提到: 】 : 我是这么认为的: : 语言不该就是一种规定么 大家都这么用 : 编译器或解释器 能识别 能让机器按翻译过来的指令运行就行了 : ................... 就是用C语言开发lua语言啊。其实脚本语言的原理很简单的, 就是解析字符串,然后调用对应的C函数而已。
reverland机器人#8 · 2015/4/9
javascript.哈哈 来自「北邮人论坛手机版」
lizz机器人#9 · 2015/4/10
对LUA感兴趣的话,可以看看作者亲自写的这篇论文 《The Implementation of Lua 5.0》(http://www.lua.org/doc/jucs05.pdf) 里边介绍了开发LUA的动机和LUA语言具体实现的main concept