avatar
j*w
2
好奇大家有谁实现过完整的编程语言系统?包括:
1 定义语言 spec,包括词法,语法,BNF 产生式等;明白自己在设计中作出的
tradeoffs;
2 实现该 spec,包括 lexer,parser,code generator 等;用啥工具都成:bison,
YACC, 或者手工随意;
3 实现虚拟机,包括指令集,数据类型,条件,循环,堆,栈,子程序调用,递归,垃
圾收集,异常抛出和处理,coroutine,程序加载和执行。
你做的系统未必是进入 production 的系统,只要走过从 spec 到可运行程序的整个流
程就可以。或者不用虚拟机,直接生成机器代码也可以,只要能跑。
哪怕能在 vm 上面运行个该语言写的八皇后都算。关键是点到点,到了这个份上就 OK。
只做一个 lexer,parser,或者写几个产生式不算,需要完整的系统。
做过的握个手。
avatar
P*s
3
啥呀


【在 P*****s 的大作中提到】

avatar
h*i
4
我老是一个。

【在 j*****w 的大作中提到】
: 好奇大家有谁实现过完整的编程语言系统?包括:
: 1 定义语言 spec,包括词法,语法,BNF 产生式等;明白自己在设计中作出的
: tradeoffs;
: 2 实现该 spec,包括 lexer,parser,code generator 等;用啥工具都成:bison,
: YACC, 或者手工随意;
: 3 实现虚拟机,包括指令集,数据类型,条件,循环,堆,栈,子程序调用,递归,垃
: 圾收集,异常抛出和处理,coroutine,程序加载和执行。
: 你做的系统未必是进入 production 的系统,只要走过从 spec 到可运行程序的整个流
: 程就可以。或者不用虚拟机,直接生成机器代码也可以,只要能跑。
: 哪怕能在 vm 上面运行个该语言写的八皇后都算。关键是点到点,到了这个份上就 OK。

avatar
s*t
5
? 我网速这么慢?

【在 P*****s 的大作中提到】

avatar
j*w
6
+1
avatar
c*g
7
这个电影没看。。。。据说有残忍镜头,不太敢看
avatar
j*w
8
强调一下,在编译原理上面做的 lexer 或者 parser 不算是完整的系统,只能是系统
的一部分。
要 end-to-end 的才算。
avatar
P*s
9
lol

【在 s****t 的大作中提到】
: ? 我网速这么慢?
avatar
T*x
10
没有目标代码,解释执行,算不算?

OK。

【在 j*****w 的大作中提到】
: 好奇大家有谁实现过完整的编程语言系统?包括:
: 1 定义语言 spec,包括词法,语法,BNF 产生式等;明白自己在设计中作出的
: tradeoffs;
: 2 实现该 spec,包括 lexer,parser,code generator 等;用啥工具都成:bison,
: YACC, 或者手工随意;
: 3 实现虚拟机,包括指令集,数据类型,条件,循环,堆,栈,子程序调用,递归,垃
: 圾收集,异常抛出和处理,coroutine,程序加载和执行。
: 你做的系统未必是进入 production 的系统,只要走过从 spec 到可运行程序的整个流
: 程就可以。或者不用虚拟机,直接生成机器代码也可以,只要能跑。
: 哪怕能在 vm 上面运行个该语言写的八皇后都算。关键是点到点,到了这个份上就 OK。

avatar
m*n
11
政治正确

【在 P*****s 的大作中提到】

avatar
g*t
12
python寫個Lisp解釋器,可以跑八皇后的算不算。带测试两天就差不多了。
带类型,包管理,... 没幾個月搞不定的。你还要coroutine都要有的虛擬機什麼的,
一個人要做一年。
avatar
c*i
13
the only nomination i haven't seen so far. :D.
avatar
j*w
14
其他主要环节有,也算。
+2

【在 T*******x 的大作中提到】
: 没有目标代码,解释执行,算不算?
:
: OK。

avatar
P*s
15
唉。。

【在 m****n 的大作中提到】
: 政治正确
avatar
g*t
16
虛擬機和語言是兩回事。放一起是怎麼回事。


: 其他主要环节有,也算。

: 2



【在 j*****w 的大作中提到】
: 其他主要环节有,也算。
: +2

avatar
d*d
17
是部好电影,但总觉得缺了什么

【在 P*****s 的大作中提到】

avatar
g*t
18
Domain specific language現在很常見。帶自己指令集的虛擬機可不常見。你也寫過?
那等於是要自己設計和寫一套汇编。


: 我老是一个。



【在 h*i 的大作中提到】
: 我老是一个。
avatar
P*s
19
缺啥

【在 d*****d 的大作中提到】
: 是部好电影,但总觉得缺了什么
avatar
j*w
20
LOL,这个有些过度简化。

【在 g****t 的大作中提到】
: python寫個Lisp解釋器,可以跑八皇后的算不算。带测试两天就差不多了。
: 带类型,包管理,... 没幾個月搞不定的。你还要coroutine都要有的虛擬機什麼的,
: 一個人要做一年。

avatar
v*5
21
还好,你可以搭着frozen一起看

【在 c*****g 的大作中提到】
: 这个电影没看。。。。据说有残忍镜头,不太敢看
avatar
g*t
22
虚拟机你写过。汇编指令集自己设计的吗?


: LOL,这个有些过度简化。



【在 j*****w 的大作中提到】
: LOL,这个有些过度简化。
avatar
d*d
23
灵气

【在 P*****s 的大作中提到】
: 缺啥
avatar
g*t
24
本身语言并不复杂。麻烦的是各种tool。虚拟机更麻烦。如果你列的那些feature都实
现,目测至少要半年。


: LOL,这个有些过度简化。



【在 j*****w 的大作中提到】
: LOL,这个有些过度简化。
avatar
c*g
25
这个电影没看。。。。据说有残忍镜头,不太敢看
avatar
j*w
26
是呀。

【在 g****t 的大作中提到】
: 虚拟机你写过。汇编指令集自己设计的吗?
:
:
: LOL,这个有些过度简化。
:

avatar
P*s
27
这种题材很沉重吧

【在 d*****d 的大作中提到】
: 灵气
avatar
j*w
28
这两个放在一起才能组成一个最小的脚本系统。你看到的 Python/JavaScript/Lua/
Ruby 都这样干。

【在 g****t 的大作中提到】
: 虛擬機和語言是兩回事。放一起是怎麼回事。
:
:
: 其他主要环节有,也算。
:
: 2
:

avatar
c*g
29
frozen看完了
嗯,是应该撘个欢快的一起看

【在 v**5 的大作中提到】
: 还好,你可以搭着frozen一起看
avatar
g*t
30
除了指令集。虚拟机还要写内存管理,进程,线程调度。
语言相对简单。Lisp下写个lisp的eval就半页纸。


: 是呀。



【在 j*****w 的大作中提到】
: 这两个放在一起才能组成一个最小的脚本系统。你看到的 Python/JavaScript/Lua/
: Ruby 都这样干。

avatar
d*d
31
沉重和灵气不矛盾

【在 P*****s 的大作中提到】
: 这种题材很沉重吧
avatar
j*w
32
一般脚本的 VM 单线程,JavaScript 就是。因为主要用途就是嵌入,复杂了 overhead
就高。
我那个也是,单线程。调度通过 coroutine,脚本自愿 yield。

【在 g****t 的大作中提到】
: 除了指令集。虚拟机还要写内存管理,进程,线程调度。
: 语言相对简单。Lisp下写个lisp的eval就半页纸。
:
:
: 是呀。
:

avatar
P*s
33
恩,如果灵气是某种天赋,那是的。
你说像大兵Ryan那种电影需要灵气么?战争大场面有,小范围战斗也有,道德或者说情
节需要的吊诡也有,沉重有余。这么多年过去了,我依然怀念这部电影。

【在 d*****d 的大作中提到】
: 沉重和灵气不矛盾
avatar
g*t
34
语言和虚拟机实现这条路是两回事。虚拟机,bytecode这条路是java开始的。
以python
为例,最早的1990年就有了。那时候应该不是虚拟机这条路的实现。另外最早的
JavaScript
是10天写完的。也不太可能包括VM这部分。
当然,现在假如真的要自制通用语言的话。走llvm我认为最妥当。假如要嵌入式腳本語
言的話,我會抄克努奇書的系統。


: 一般脚本的 VM 单线程,JavaScript 就是。因为主要用途就是嵌入,复
杂了
overhead

: 就高。

: 我那个也是,单线程。调度通过 coroutine,脚本自愿 yield。



【在 j*****w 的大作中提到】
: 一般脚本的 VM 单线程,JavaScript 就是。因为主要用途就是嵌入,复杂了 overhead
: 就高。
: 我那个也是,单线程。调度通过 coroutine,脚本自愿 yield。

avatar
d*d
35
我看这部电影无感,老实说看他大多数电影都无感,除了最早期的紫色。我还是比较喜
欢biglow处理战争片,那个比她老公有灵气。

【在 P*****s 的大作中提到】
: 恩,如果灵气是某种天赋,那是的。
: 你说像大兵Ryan那种电影需要灵气么?战争大场面有,小范围战斗也有,道德或者说情
: 节需要的吊诡也有,沉重有余。这么多年过去了,我依然怀念这部电影。

avatar
j*w
36
没有 VM 的话,你认为代码如何执行?

python
JavaScript

【在 g****t 的大作中提到】
: 语言和虚拟机实现这条路是两回事。虚拟机,bytecode这条路是java开始的。
: 以python
: 为例,最早的1990年就有了。那时候应该不是虚拟机这条路的实现。另外最早的
: JavaScript
: 是10天写完的。也不太可能包括VM这部分。
: 当然,现在假如真的要自制通用语言的话。走llvm我认为最妥当。假如要嵌入式腳本語
: 言的話,我會抄克努奇書的系統。
:
:
: 一般脚本的 VM 单线程,JavaScript 就是。因为主要用途就是嵌入,复
: 杂了

avatar
P*s
37
他的电影除了这个还有辛德勒名单,其他的我也不喜欢。紫色没有看过。是不是讲黑奴
的?
后面越拍越烂,尤其是跟Tom Cruise的几部。

【在 d*****d 的大作中提到】
: 我看这部电影无感,老实说看他大多数电影都无感,除了最早期的紫色。我还是比较喜
: 欢biglow处理战争片,那个比她老公有灵气。

avatar
j*w
38
> 虚拟机,bytecode这条路是java开始的。
虚拟机至少在 60 年代就有,轮不到 Java。

【在 g****t 的大作中提到】
: 语言和虚拟机实现这条路是两回事。虚拟机,bytecode这条路是java开始的。
: 以python
: 为例,最早的1990年就有了。那时候应该不是虚拟机这条路的实现。另外最早的
: JavaScript
: 是10天写完的。也不太可能包括VM这部分。
: 当然,现在假如真的要自制通用语言的话。走llvm我认为最妥当。假如要嵌入式腳本語
: 言的話,我會抄克努奇書的系統。
:
:
: 一般脚本的 VM 单线程,JavaScript 就是。因为主要用途就是嵌入,复
: 杂了

avatar
j*e
39
slave太流水账,尤其让人以为快出现高潮的时候突然就结局了,草草收场,很奇怪
人物也都比较平面
avatar
g*t
40
辦法多的是。例如你用C寫一個lisp解釋器。例如Lisp的加法。C程序把S表達式當字符
串讀進來,翻譯成C自己的加法。然後編譯過的C本身是汇编。這不就变成add的汇编语
言了,这不就執行了。


: 没有 VM 的话,你认为代码如何执行?

: python

: JavaScript



【在 j*****w 的大作中提到】
: > 虚拟机,bytecode这条路是java开始的。
: 虚拟机至少在 60 年代就有,轮不到 Java。

avatar
r*a
41
还好吧,估计就是背部被抽的皮开肉绽的镜头?除了这个好像没什么了。

【在 c*****g 的大作中提到】
: 这个电影没看。。。。据说有残忍镜头,不太敢看
avatar
g*t
42
這個是我說的不對。應該說包含jvm帶來的一系列革命性feature的vm是從jvm開始的。
其實跟沒說一樣。


:

【在 j*****w 的大作中提到】
: > 虚拟机,bytecode这条路是java开始的。
: 虚拟机至少在 60 年代就有,轮不到 Java。

avatar
r*a
43
话说我当时在网页上看的时候,也是这边都好几个帖子出来了,我那里还在说goes to
什么的

【在 s****t 的大作中提到】
: ? 我网速这么慢?
avatar
j*w
44
这个机制就是 VM。
所谓的解释器 interpreter 就是 compiler + VM。
你自己的描述已经包括 VM 的表达式估值的一部分,你没有意识到。

【在 g****t 的大作中提到】
: 辦法多的是。例如你用C寫一個lisp解釋器。例如Lisp的加法。C程序把S表達式當字符
: 串讀進來,翻譯成C自己的加法。然後編譯過的C本身是汇编。這不就变成add的汇编语
: 言了,这不就執行了。
:
:
: 没有 VM 的话,你认为代码如何执行?
:
: python
:
: JavaScript
:

avatar
r*a
45
无法,今年那么多部片子里,觉得就这一部有比较深的社会政治内容,其它的片子都比
较小家碧玉般,虽然在各自领域内都是佼佼者,但是整体上还是有点局限。

【在 j****e 的大作中提到】
: slave太流水账,尤其让人以为快出现高潮的时候突然就结局了,草草收场,很奇怪
: 人物也都比较平面

avatar
g*t
46
From my understanding, VM required another set of ASM instructions.
The path :Lisp -->C --> X86 ASM
There is no new ASM instructions set and bytecodes.
Another path:
Step 1: Implement the smallest C subset in X86 ASM
Step 2: Expand the miniC language to whole C language spec.
Still, you need not to use VM.

【在 j*****w 的大作中提到】
: 这个机制就是 VM。
: 所谓的解释器 interpreter 就是 compiler + VM。
: 你自己的描述已经包括 VM 的表达式估值的一部分,你没有意识到。

avatar
m*d
47
这片就是政治正确的主旋律影片吧,反映点社会现实的是Dallas buyer club。

【在 r**********a 的大作中提到】
: 无法,今年那么多部片子里,觉得就这一部有比较深的社会政治内容,其它的片子都比
: 较小家碧玉般,虽然在各自领域内都是佼佼者,但是整体上还是有点局限。

avatar
j*w
48
写个 VM 吧。完了就没那么多纠结了。

【在 g****t 的大作中提到】
: From my understanding, VM required another set of ASM instructions.
: The path :Lisp -->C --> X86 ASM
: There is no new ASM instructions set and bytecodes.
: Another path:
: Step 1: Implement the smallest C subset in X86 ASM
: Step 2: Expand the miniC language to whole C language spec.
: Still, you need not to use VM.

avatar
g*t
49
你说的东西很多都是似是而非。
本身VM为基础的动态编译就不是必须的。你跟语言混在一起扯。golang有VM吗?
照你这么说,CPU simulator是不是也要和语言混在一起。
我说你到底懂不懂啊。bitcoin里面就有个类似forth的语言。哪里有什么VM?

【在 j*****w 的大作中提到】
: 写个 VM 吧。完了就没那么多纠结了。
avatar
j*w
50
你对编译器和虚拟机所知极少,在理论和实践层面。概念也不清晰,所以你试图用类比
来理解其中的本质,但是对你真正理解编译器和虚拟机帮助不大。
讨论打住吧。

【在 g****t 的大作中提到】
: 你说的东西很多都是似是而非。
: 本身VM为基础的动态编译就不是必须的。你跟语言混在一起扯。golang有VM吗?
: 照你这么说,CPU simulator是不是也要和语言混在一起。
: 我说你到底懂不懂啊。bitcoin里面就有个类似forth的语言。哪里有什么VM?

avatar
g*t
51
虚拟机我是没学过。我上学那会是手写汇编,然后汇编查表写成16进制数,输入到小键
盘的。工作时候最多也就看过CPU simulator的代码。但我是有一说一。
编程语言的实现是不需使用VM的这个中间层的,你听不懂吗?

【在 j*****w 的大作中提到】
: 你对编译器和虚拟机所知极少,在理论和实践层面。概念也不清晰,所以你试图用类比
: 来理解其中的本质,但是对你真正理解编译器和虚拟机帮助不大。
: 讨论打住吧。

avatar
T*x
52
把我减下去。我写过parser,但是解释器也没写过。我就是问问。不好意思啊。:)

【在 j*****w 的大作中提到】
: 其他主要环节有,也算。
: +2

avatar
j*w
53
哈哈,没事。写过 parser 也挺棒的,编译原理课标配。
你的头像虽然皱着眉,但还是很有喜感 :)
+1

【在 T*******x 的大作中提到】
: 把我减下去。我写过parser,但是解释器也没写过。我就是问问。不好意思啊。:)
avatar
C*l
54
还有一种vm就是比如你进来一个加法,我背后call libc帮你算出来,python, perl应
该用的是这种。

【在 g****t 的大作中提到】
: From my understanding, VM required another set of ASM instructions.
: The path :Lisp -->C --> X86 ASM
: There is no new ASM instructions set and bytecodes.
: Another path:
: Step 1: Implement the smallest C subset in X86 ASM
: Step 2: Expand the miniC language to whole C language spec.
: Still, you need not to use VM.

avatar
l*s
55
编译器的轮子很成熟了,我觉得这个版上大部分同学都能轻松⛏;
avatar
T*i
56
产品自带Lua parser。很快就要发布了。专利也批准了。
图,就先不上了。
avatar
j*w
57
Lua 简单易用,嵌入 的 overhead 也低,挺好。
预祝发布顺利。
avatar
j*w
58
某些轮子是几十年前就有了,但是做一个完整的语言,从 spec 到 运行仍然不是
cakewalk。
So far, 观察结果是:有些基本上是 buzzword/red herring 横飞,但是并不真正理解
程序语言的运行机制。
如果理解了,讨论是可以深入到有意义的细节中的,而不是停留在 buzzword/red
herring 上。

【在 l*********s 的大作中提到】
: 编译器的轮子很成熟了,我觉得这个版上大部分同学都能轻松⛏;
avatar
g*t
59
VM和程序語言都分不清的就不要講別人了。自娛自樂吧


: 某些轮子是几十年前就有了,但是做一个完整的语言,从 spec 到 运行
仍然不


: cakewalk。

: So far, 观察结果是:有些基本上是 buzzword/red herring 横飞,但是
并不真
正理解

: 程序语言的运行机制。

: 如果理解了,讨论是可以深入到有意义的细节中的,而不是停留在
buzzword/
red

: herring 上。



【在 j*****w 的大作中提到】
: 某些轮子是几十年前就有了,但是做一个完整的语言,从 spec 到 运行仍然不是
: cakewalk。
: So far, 观察结果是:有些基本上是 buzzword/red herring 横飞,但是并不真正理解
: 程序语言的运行机制。
: 如果理解了,讨论是可以深入到有意义的细节中的,而不是停留在 buzzword/red
: herring 上。

avatar
j*w
60
这里讨论的质量远不如 StackOverflow,比 Lambda the Ultimate 差了更远。
实际上算不上什么“讨论”。

【在 j*****w 的大作中提到】
: 某些轮子是几十年前就有了,但是做一个完整的语言,从 spec 到 运行仍然不是
: cakewalk。
: So far, 观察结果是:有些基本上是 buzzword/red herring 横飞,但是并不真正理解
: 程序语言的运行机制。
: 如果理解了,讨论是可以深入到有意义的细节中的,而不是停留在 buzzword/red
: herring 上。

avatar
j*w
61
我已经打住跟你的讨论了。请不要自讨没趣。
无知不是你的错,强行装就是。
在这方面,我发明过自己的程序语言,你做过什么?

【在 g****t 的大作中提到】
: VM和程序語言都分不清的就不要講別人了。自娛自樂吧
:
:
: 某些轮子是几十年前就有了,但是做一个完整的语言,从 spec 到 运行
: 仍然不
: 是
:
: cakewalk。
:
: So far, 观察结果是:有些基本上是 buzzword/red herring 横飞,但是
: 并不真
: 正理解
:
: 程序语言的运行机制。

avatar
g*t
62
你不知道golang不走VM。恐怕C compiler怎么回事也够呛。列一堆buzz words . 别人
怎么和你讨论。


: 这里讨论的质量远不如 StackOverflow,比 Lambda the Ultimate 差了
更远。

: 实际上算不上什么“讨论”。



【在 j*****w 的大作中提到】
: 我已经打住跟你的讨论了。请不要自讨没趣。
: 无知不是你的错,强行装就是。
: 在这方面,我发明过自己的程序语言,你做过什么?

avatar
g*t
63
SBK組合邏輯聽說過嗎?
你把三个字换成四个,也可以声称自己发明了新的程序语言。你这个计算机理论知识是
不是0啊。发明个语言也要出来讲。
你主贴说的东西是通用语言产品的一种。难点在engineering部分。压根不在语言和算
法上
,语言的原理和算法书上都有。


: 我已经打住跟你的讨论了。请不要自讨没趣。

: 无知不是你的错,强行装就是。

: 在这方面,我发明过自己的程序语言,你做过什么?



【在 j*****w 的大作中提到】
: 我已经打住跟你的讨论了。请不要自讨没趣。
: 无知不是你的错,强行装就是。
: 在这方面,我发明过自己的程序语言,你做过什么?

avatar
j*w
64
少扯 red herring。
》你主贴说的东西是通用语言产品的一种。难点在engineering部分。
我做的语言就是我的首贴所说的,包含所有的功能。

【在 g****t 的大作中提到】
: SBK組合邏輯聽說過嗎?
: 你把三个字换成四个,也可以声称自己发明了新的程序语言。你这个计算机理论知识是
: 不是0啊。发明个语言也要出来讲。
: 你主贴说的东西是通用语言产品的一种。难点在engineering部分。压根不在语言和算
: 法上
: ,语言的原理和算法书上都有。
:
:
: 我已经打住跟你的讨论了。请不要自讨没趣。
:
: 无知不是你的错,强行装就是。
:
: 在这方面,我发明过自己的程序语言,你做过什么?

avatar
j*w
65
你不要再跟这个贴了,没意思。

65533;

【在 g****t 的大作中提到】
: SBK組合邏輯聽說過嗎?
: 你把三个字换成四个,也可以声称自己发明了新的程序语言。你这个计算机理论知识是
: 不是0啊。发明个语言也要出来讲。
: 你主贴说的东西是通用语言产品的一种。难点在engineering部分。压根不在语言和算
: 法上
: ,语言的原理和算法书上都有。
:
:
: 我已经打住跟你的讨论了。请不要自讨没趣。
:
: 无知不是你的错,强行装就是。
:
: 在这方面,我发明过自己的程序语言,你做过什么?

avatar
h*i
66
你们两个争的都是鸡毛蒜皮的命名问题。你说的VM,其实就是runtime,而他认为的VM
,是具体的一种runtime。
一个编译的语言,必然是compiler和runtime都需要,这是对的,但你用VM这个词,太
具体了。runtime不一定要以VM的形式出现,也不一定需要语言自己来实现。只要能运
行编译出的代码的环境,就是runtime,比如ClojureScript,编译结果是Javascript源
代码,runtime就是JavaScript engine,不是ClojureScript自己写的。当然,大部分
语言,都会写自己的runtime。

【在 j*****w 的大作中提到】
: 没有 VM 的话,你认为代码如何执行?
:
: python
: JavaScript

avatar
g*t
67
你是不是没上过计算理论基础这门课啊?所以还要自己造个“语言”出来。
我给你列一下国内课本的目录:
全书共分7章,分别为:集合、关系和语言;有穷自动机;上下文无关语言;Turing机
;不可判定性;计算复杂性;NP完全性。


: 少扯 red herring。

: 》你主贴说的东西是通用语言产品的一种。难点在engineering部分。

: 我做的语言就是我的首贴所说的,包含所有的功能。



【在 j*****w 的大作中提到】
: 你不要再跟这个贴了,没意思。
:
: 65533;

avatar
h*i
68
你这不搭嘎,你这是计算理论教材,与语言基本无关。语言实现经典是龙书,讲编译器
的,国内外都用这本书。我老在国内上学的时候也用这个。
可见你不是CS科班出身的,龙书都不知道,说你是科学计算domain expert,不是CS的
没有冤枉你。

【在 g****t 的大作中提到】
: 你是不是没上过计算理论基础这门课啊?所以还要自己造个“语言”出来。
: 我给你列一下国内课本的目录:
: 全书共分7章,分别为:集合、关系和语言;有穷自动机;上下文无关语言;Turing机
: ;不可判定性;计算复杂性;NP完全性。
:
:
: 少扯 red herring。
:
: 》你主贴说的东西是通用语言产品的一种。难点在engineering部分。
:
: 我做的语言就是我的首贴所说的,包含所有的功能。
:

avatar
h*i
69
我老发明的语言,从spec, compiler和runtime都是我一人写的,算是我司的技术核心
,现在已经有大学课程教我老的语言了。你说呢?
你是CTO,我也是CTO, 我们的工作性质,很不一样,哈哈。

【在 g****t 的大作中提到】
: Domain specific language現在很常見。帶自己指令集的虛擬機可不常見。你也寫過?
: 那等於是要自己設計和寫一套汇编。
:
:
: 我老是一个。
:

avatar
g*t
70
那我要向你脱帽致敬。


: 我老发明的语言,从spec, compiler和runtime都是我一人写的,算是我司的技
术核心

: ,现在已经有大学课程教我老的语言了。你说呢?



【在 h*i 的大作中提到】
: 我老发明的语言,从spec, compiler和runtime都是我一人写的,算是我司的技术核心
: ,现在已经有大学课程教我老的语言了。你说呢?
: 你是CTO,我也是CTO, 我们的工作性质,很不一样,哈哈。

avatar
g*t
71
他不是自称自己看ultimate lambda吗?那里很多CS语言的fresh phd发语言相关的广告
。你看看讲的语言,是我说的为
准。还是你讲的一个具体实现技术为准。
我当初本科可以上任何一个系的课。只要你想。就可以学物理系的物理课,数学系的数
学课。可以不必理会自己系的同类课。我考研选的数据结构还有微机原理。


: 你这不搭嘎,你这是计算理论教材,与语言基本无关。语言实现经典是龙
书,讲
编译器

: 的,国内外都用这本书。我老在国内上学的时候也用这个。

: 可见你不是CS科班出身的,龙书都不知道,说你是科学计算domain
expert,不
是CS的

: 没有冤枉你。



【在 h*i 的大作中提到】
: 我老发明的语言,从spec, compiler和runtime都是我一人写的,算是我司的技术核心
: ,现在已经有大学课程教我老的语言了。你说呢?
: 你是CTO,我也是CTO, 我们的工作性质,很不一样,哈哈。

avatar
h*i
72
我应该向你致敬,我这个CTO当得辛苦,还是你的本事大。嗯。

【在 g****t 的大作中提到】
: 那我要向你脱帽致敬。
:
:
: 我老发明的语言,从spec, compiler和runtime都是我一人写的,算是我司的技
: 术核心
:
: ,现在已经有大学课程教我老的语言了。你说呢?
:

avatar
h*i
73
lambda the ultimate 对我来说太高深了,我只看hacker news,哈哈。

【在 g****t 的大作中提到】
: 他不是自称自己看ultimate lambda吗?那里很多CS语言的fresh phd发语言相关的广告
: 。你看看讲的语言,是我说的为
: 准。还是你讲的一个具体实现技术为准。
: 我当初本科可以上任何一个系的课。只要你想。就可以学物理系的物理课,数学系的数
: 学课。可以不必理会自己系的同类课。我考研选的数据结构还有微机原理。
:
:
: 你这不搭嘎,你这是计算理论教材,与语言基本无关。语言实现经典是龙
: 书,讲
: 编译器
:
: 的,国内外都用这本书。我老在国内上学的时候也用这个。

avatar
g*t
74
CS language 的博士,都是以我讲的为准吧。另外我也没有抬杠的意思。不然我说我做了
个算盘,也是计算机语言系统的实现。
按我的理解。VM一定要有自己的汇编指令集。不然哪里来的机器一说呢?VM的细节我确
实没研究过。但是我知道golang没有VM。此为定论。没什么含糊的地方。然后我还仔细
看过nim,人家也有十几年历史了,翻译成gcc以及javascript。也没有自己造汇编指令
集。
所以现在这个时代,语言的实现很多种路径都是可以的。这是我的浅见。你看了smart
contract的那几个新品种吗?区块链内嵌图灵完备语言。年轻的天才很多啊。


: lambda the ultimate 对我来说太高深了,我只看hacker news,哈哈。



【在 h*i 的大作中提到】
: lambda the ultimate 对我来说太高深了,我只看hacker news,哈哈。
avatar
g*t
75
一把年纪了。瞎吹这些还有啥意思。
我写码水平还是不错的。这就不谦虚了。我这个CTO是现学java写码几个月promote 的
。本身是找的developer的工作。
我不认识人。没有关系。也不拿股份。
去年还在本版给大家分享了developer的面试题。
现在等于车间主任。说不定很快就退休了。
你和本版很多别的朋友(包括楼主)是走在发大财的路上,祝你们越走越好。


: 我老发明的语言,从spec, compiler和runtime都是我一人写的,算是我
司的技
术核心

: ,现在已经有大学课程教我老的语言了。你说呢?

: 你是CTO,我也是CTO, 我们的工作性质,很不一样,哈哈。



【在 h*i 的大作中提到】
: lambda the ultimate 对我来说太高深了,我只看hacker news,哈哈。
avatar
k*x
76
吗公还真是谁都看不起谁,不是吹的

:一把年纪了。瞎吹这些还有啥意思。
avatar
P*r
77
我也没明白,为啥语言一定要有VM?直接编译成机器码不也是常见的吗
avatar
h*i
78
那位用错了词,其实应该说runtime environment


: 我也没明白,为啥语言一定要有VM?直接编译成机器码不也是常见的吗



【在 P******r 的大作中提到】
: 我也没明白,为啥语言一定要有VM?直接编译成机器码不也是常见的吗
avatar
g*t
79
假如用gcc写个可以消费Lisp程序的编译成C的編譯器。那就不一定需用自己写RTE。用
gcc的即可
。当
然,有一些配置信息总是要的。也可以叫它们就是RTE。


: 那位用错了词,其实应该说runtime environment



【在 h*i 的大作中提到】
: 那位用错了词,其实应该说runtime environment
:
:
: 我也没明白,为啥语言一定要有VM?直接编译成机器码不也是常见的吗
:

avatar
g*t
80
楼主可能类似于记错了JRE和JVM的名字。


: 我也没明白,为啥语言一定要有VM?直接编译成机器码不也是常见的吗



【在 P******r 的大作中提到】
: 我也没明白,为啥语言一定要有VM?直接编译成机器码不也是常见的吗
avatar
j*w
81
根本没有弄错,看原帖,一直有 vm 和机器指令两个选项。
说弄错的是你回帖没看清,回错了。
avatar
g*t
82
“实现虚拟机,包括指令集”
我們不理解的就是語言系統就語言系統唄。
為啥要一定要實現虛擬機。还得是有指令集的虚拟机。


: 根本没有弄错,看原帖,一直有 vm 和机器指令两个选项。

: 说弄错的是你回帖没看清,回错了。



【在 j*****w 的大作中提到】
: 根本没有弄错,看原帖,一直有 vm 和机器指令两个选项。
: 说弄错的是你回帖没看清,回错了。

avatar
x*u
83
vm能实现静态编译做不到的优化,比如逃逸分析,利用TLS分配内存等

【在 g****t 的大作中提到】
: “实现虚拟机,包括指令集”
: 我們不理解的就是語言系統就語言系統唄。
: 為啥要一定要實現虛擬機。还得是有指令集的虚拟机。
:
:
: 根本没有弄错,看原帖,一直有 vm 和机器指令两个选项。
:
: 说弄错的是你回帖没看清,回错了。
:

avatar
g*t
84
VM有优点是没错。我也认可。但是golang这种。还有编译成C的语言也有自己的优点。
总之,语言系统和VM是两回事。
为了说明VM和语言系统是两回事。我举的例子,Golang還是照顧了樓主的知識的。我並
沒有拿github上面乱七八糟的各种语言项目出来做例子。
现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
式数据库什么的也就是一个学期不到的时间的course work。
这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
学校里大批训练新人出来。
但是这样的坏处是。要是一个
新人不幸上了这种课。那说不定还真就以为分布式文件系统就必须是coursework学到的

一种架构了。除此之外的都不算CS, LoL


: vm能实现静态编译做不到的优化,比如逃逸分析,利用TLS分配内存等



【在 x****u 的大作中提到】
: vm能实现静态编译做不到的优化,比如逃逸分析,利用TLS分配内存等
avatar
h*c
85
还是解决具体问题比较好,编译器这种东西没碰过。不过做过breadboard设计整数相加
的溢出,我觉得使得我对计算机器认识比较深刻。
三极管就是近似,电压是测量近似,傅立叶变换再精妙,最后还得用门电路,就是世界
上你可以认为没有是非,但是只有门里或者门外。忘了,书上讨论过门电路vs 摸拟电
路。
如果你没有一个全的真值表,你肯定会溢出,会有漏洞。
另外我最近总结,图灵机没有时间参数,是不是一个缺陷。不是说隐含了时间就是不变
流形,而是计算机器的一些问题实际是应该以可变流形,就是物理的规律会随时间变化
。比如数据库系统一边计数一边运算,最后一定会溢出。还没太想好。总之不是一个全
真值表的表述,所以有时间参数的系统不是图灵机,图灵测试是伪命题。全真或许可以
以群论来表示。

OK。

【在 j*****w 的大作中提到】
: 好奇大家有谁实现过完整的编程语言系统?包括:
: 1 定义语言 spec,包括词法,语法,BNF 产生式等;明白自己在设计中作出的
: tradeoffs;
: 2 实现该 spec,包括 lexer,parser,code generator 等;用啥工具都成:bison,
: YACC, 或者手工随意;
: 3 实现虚拟机,包括指令集,数据类型,条件,循环,堆,栈,子程序调用,递归,垃
: 圾收集,异常抛出和处理,coroutine,程序加载和执行。
: 你做的系统未必是进入 production 的系统,只要走过从 spec 到可运行程序的整个流
: 程就可以。或者不用虚拟机,直接生成机器代码也可以,只要能跑。
: 哪怕能在 vm 上面运行个该语言写的八皇后都算。关键是点到点,到了这个份上就 OK。

avatar
x*u
86
静态语言执行效率可确定啊,中间代码的话能跑多快还要看你的vm设置
有的时候确定性非常重要

【在 g****t 的大作中提到】
: VM有优点是没错。我也认可。但是golang这种。还有编译成C的语言也有自己的优点。
: 总之,语言系统和VM是两回事。
: 为了说明VM和语言系统是两回事。我举的例子,Golang還是照顧了樓主的知識的。我並
: 沒有拿github上面乱七八糟的各种语言项目出来做例子。
: 现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
: 式数据库什么的也就是一个学期不到的时间的course work。
: 这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
: 学校里大批训练新人出来。
: 但是这样的坏处是。要是一个
: 新人不幸上了这种课。那说不定还真就以为分布式文件系统就必须是coursework学到的

avatar
j*w
87
你说的这些应该是相对高级的特性了,当时并没有实现。
当时选择用 vm 是因为有些基本特性在 vm 上面实现方便。比如说异常处理和捕获中,
需要倒卷数据栈,还有实现 coroutine/closure 之类的,生成机器代码挺麻烦,毕竟
学生时代的习作。但是对一个 vm,你可以对它做很多事情,实现这些相对容易。
思考各种日常用到的语言特性在 vm 中如何具体实现是一件相当有意思的事情。

【在 x****u 的大作中提到】
: vm能实现静态编译做不到的优化,比如逃逸分析,利用TLS分配内存等
avatar
x*u
88
CS行业通过加中间层加速的思路在各个领域都有啊,jvm是PLT领域的,通信领域的缓存
服务器,体系结构领域把指令解码成微码跑流水线都是类似思路

【在 j*****w 的大作中提到】
: 你说的这些应该是相对高级的特性了,当时并没有实现。
: 当时选择用 vm 是因为有些基本特性在 vm 上面实现方便。比如说异常处理和捕获中,
: 需要倒卷数据栈,还有实现 coroutine/closure 之类的,生成机器代码挺麻烦,毕竟
: 学生时代的习作。但是对一个 vm,你可以对它做很多事情,实现这些相对容易。
: 思考各种日常用到的语言特性在 vm 中如何具体实现是一件相当有意思的事情。

avatar
g*t
89
我最近听闻的,最新的CS master的course work流行两种:
一种是大数据。
一种是带推荐系统的假Amzon网站。
我猜你可能就是Course work写VM的。先一个贴coursework
的利弊我的参考意见如下。

现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
式数据库什么的也就是一个学期不到的时间的course work。
这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
学校里大批训练新人出来。
但是这样的坏处是。要是一个
新人不幸上了这种课。那说不定还真就以为分布式文件系统就必须是coursework学到的

一种架构了。除此之外的都不算CS, LoL”


: 你说的这些应该是相对高级的特性了,当时并没有实现。

: 当时选择用 vm 是因为有些基本特性在 vm 上面实现方便。比如说异常处
理和捕
获中,

: 需要倒卷数据栈,还有实现 coroutine/closure 之类的,生成机器代码
挺麻烦
,毕竟

: 学生时代的习作。但是对一个 vm,你可以对它做很多事情,实现这些相
对容易。

: 思考各种日常用到的语言特性在 vm 中如何具体实现是一件相当有意思的
事情。



【在 j*****w 的大作中提到】
: 你说的这些应该是相对高级的特性了,当时并没有实现。
: 当时选择用 vm 是因为有些基本特性在 vm 上面实现方便。比如说异常处理和捕获中,
: 需要倒卷数据栈,还有实现 coroutine/closure 之类的,生成机器代码挺麻烦,毕竟
: 学生时代的习作。但是对一个 vm,你可以对它做很多事情,实现这些相对容易。
: 思考各种日常用到的语言特性在 vm 中如何具体实现是一件相当有意思的事情。

avatar
j*w
90
不,是我自己设计和实现的。
你的先入为主的假设又错了。

【在 g****t 的大作中提到】
: 我最近听闻的,最新的CS master的course work流行两种:
: 一种是大数据。
: 一种是带推荐系统的假Amzon网站。
: 我猜你可能就是Course work写VM的。先一个贴coursework
: 的利弊我的参考意见如下。
: “
: 现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
: 式数据库什么的也就是一个学期不到的时间的course work。
: 这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
: 学校里大批训练新人出来。

avatar
g*t
91
我本科的course work是自己查表翻译汇编指令。硕士course work是给亚州某某会议写
个delphi 程序管理论文数据库。


: 我最近听闻的,最新的CS master的course work流行两种:

: 一种是大数据。

: 一种是带推荐系统的假Amzon网站。

: 我猜你可能就是Course work写VM的。先一个贴coursework

: 的利弊我的参考意见如下。

: “

: 现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统
,分布

: 式数据库什么的也就是一个学期不到的时间的course work。

: 这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究
挡不住

: 学校里大批训练新人出来。



【在 g****t 的大作中提到】
: 我最近听闻的,最新的CS master的course work流行两种:
: 一种是大数据。
: 一种是带推荐系统的假Amzon网站。
: 我猜你可能就是Course work写VM的。先一个贴coursework
: 的利弊我的参考意见如下。
: “
: 现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
: 式数据库什么的也就是一个学期不到的时间的course work。
: 这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
: 学校里大批训练新人出来。

avatar
g*t
92
“我猜你可能就是Course work写VM的。”
没说不是你自己写的coursework。


: 不,是我自己设计和实现的。

: 你的先入为主的假设又错了。



【在 j*****w 的大作中提到】
: 不,是我自己设计和实现的。
: 你的先入为主的假设又错了。

avatar
x*u
93
这些叫实操技能,会多会少其实没大区别
关键是对技术的品味和对新事物的接受能力

【在 g****t 的大作中提到】
: 我最近听闻的,最新的CS master的course work流行两种:
: 一种是大数据。
: 一种是带推荐系统的假Amzon网站。
: 我猜你可能就是Course work写VM的。先一个贴coursework
: 的利弊我的参考意见如下。
: “
: 现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
: 式数据库什么的也就是一个学期不到的时间的course work。
: 这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
: 学校里大批训练新人出来。

avatar
g*t
94
我最爱实操。很有成就感。跟打麻将是类似的。
我现在早上7点多就到办公室。实操几小时不间断。
主要都是画图。


: 这些叫实操技能,会多会少其实没大区别

: 关键是对技术的品味和对新事物的接受能力



【在 x****u 的大作中提到】
: 这些叫实操技能,会多会少其实没大区别
: 关键是对技术的品味和对新事物的接受能力

avatar
j*w
95
我说你错的原因是写 vm 这个东西不是 coursework 的一部分。是快毕业的时候自己的
一个 fun project。当时已经写了一个编译器前端,后来想了想,为什么不写一个 VM
来执行这个编译器生成的代码?这样不就是一个完整的语言了吗?

【在 g****t 的大作中提到】
: “我猜你可能就是Course work写VM的。”
: 没说不是你自己写的coursework。
:
:
: 不,是我自己设计和实现的。
:
: 你的先入为主的假设又错了。
:

avatar
g*t
96
那是我说错了。我还以为现在的OS课也许不写简单OS了?改写
VM?


: 我说你错的原因是写 vm 这个东西不是 coursework 的一部分。是快毕业的时候
自己的

: 一个 fun project。



【在 j*****w 的大作中提到】
: 我说你错的原因是写 vm 这个东西不是 coursework 的一部分。是快毕业的时候自己的
: 一个 fun project。当时已经写了一个编译器前端,后来想了想,为什么不写一个 VM
: 来执行这个编译器生成的代码?这样不就是一个完整的语言了吗?

avatar
j*w
97
我咋知道?
而且我已经说了,那个项目跟课程没关系。
要是课程规定要做的,搞不好就做不出来了。
要感觉有意思,你才能做下去。
这个项目已经有些时候,不是近期。最近这里讨论编程语言,所以提起。

【在 g****t 的大作中提到】
: 那是我说错了。我还以为现在的OS课也许不写简单OS了?改写
: VM?
:
:
: 我说你错的原因是写 vm 这个东西不是 coursework 的一部分。是快毕业的时候
: 自己的
:
: 一个 fun project。
:

avatar
j*w
98
对。学习技能是基础的,不稀缺。
对新的技术趋势的把握,以及其未来对市场格局可能产生的变动的推演,这类能力是稀
有资源。

【在 x****u 的大作中提到】
: 这些叫实操技能,会多会少其实没大区别
: 关键是对技术的品味和对新事物的接受能力

avatar
h*i
99
你还是比较有观察力的,一下就看出了那位其实就是个学生作了个project就自以为是
了,
你老的情商看来不错,果然厉害,是得致敬。

【在 g****t 的大作中提到】
: VM有优点是没错。我也认可。但是golang这种。还有编译成C的语言也有自己的优点。
: 总之,语言系统和VM是两回事。
: 为了说明VM和语言系统是两回事。我举的例子,Golang還是照顧了樓主的知識的。我並
: 沒有拿github上面乱七八糟的各种语言项目出来做例子。
: 现如今知识更新换代很快。我一天和好几个新毕业生面试。听闻分布式文件系统,分布
: 式数据库什么的也就是一个学期不到的时间的course work。
: 这些东西在本版早年,不少人也觉得会写这些东西的底层就是屠龙术?然而终究挡不住
: 学校里大批训练新人出来。
: 但是这样的坏处是。要是一个
: 新人不幸上了这种课。那说不定还真就以为分布式文件系统就必须是coursework学到的

avatar
j*w
100
你错了,我跟他说的。
况且,我学生的时候就做 full-featured 的通用编程语言,并且把它嵌入到别的项目
中做脚本,挺好。

【在 h*i 的大作中提到】
: 你还是比较有观察力的,一下就看出了那位其实就是个学生作了个project就自以为是
: 了,
: 你老的情商看来不错,果然厉害,是得致敬。

avatar
h*i
101
好吧。

【在 j*****w 的大作中提到】
: 你错了,我跟他说的。
: 况且,我学生的时候就做 full-featured 的通用编程语言,并且把它嵌入到别的项目
: 中做脚本,挺好。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。