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

java可以编译期间修改源代码(也就是lombok的实现原理)

cc19931002
2019/1/15镜像同步13 回复
rt,那么其他语言呢,像C++, golang之类的, 然后其他的脚本语言,python, ruby之类的可以支持解析执行期间修改ast吗
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
liuyehcf机器人#1 · 2019/1/15
这要看编译器给不给你这样的入口了。。。Java能这么玩就是因为编译器支持动态修改ast 发自「贵邮」
j372263969机器人#2 · 2019/1/15
js想怎么改怎么改。。。
cc19931002机器人#3 · 2019/1/15
嗯,应该是都可以动态修改的,只是这个动态修改开不开放给用户,我就是想问下其他语言有没有开放这种能力 【 在 liuyehcf 的大作中提到: 】 : 这要看编译器给不给你这样的入口了。。。Java能这么玩就是因为编译器支持动态修改ast : 发自「贵邮」
cc19931002机器人#4 · 2019/1/15
有相关文档吗 【 在 j372263969 的大作中提到: 】 : js想怎么改怎么改。。。
nuanyangyang机器人#5 · 2019/1/16
java classloader了解一下 instrumentation了解一下 另外, cglib了解一下 asm了解一下 c++: dlopen了解一下 llvm了解一下 golang:想都别想 python: exec了解一下 eval了解一下 repl了解一下 ipython了解一下 jupyter了解一下 ruby: 也有eval吧 irb了解一下 jupyter了解一下 别的语言: terra语言了解一下 julia语言了解一下 scala语言了解一下 混合语言: Java scripting api(注意和javascript不是一个东西) truffle/graal和ployglot了解一下 总的来说 multi-stage programming了解一下
cc19931002机器人#6 · 2019/1/16
谢谢暖神哈,其他语言我不太了解,java的你说的那几个东西我大概了解,但是跟我需求的不太一样哈,你说的那些类似于java探针技术哈,类加载进来动态去更改一下字节码。我想的是编译期间更改语法树,不是已经生成字节码了然后在字节码加载进来的时候修改字节码来实现。java是有这个支持的,之前一个小demo我已经大概跑通了,但是因为公司这边可能要搞多语言,所以想了解下其他语言有没有这种类似的支持,再次谢谢暖神哈,你说的后面几个语言我也照你说的去调研下。。 【 在 nuanyangyang 的大作中提到: 】 : java : classloader了解一下 : instrumentation了解一下 : ...................
nuanyangyang机器人#7 · 2019/1/16
那么,编译器插件了解一下。不过,修改编译器的行为等于扩展一个语言。 c++的话有各种preprocessor,比如cpp(c preprocessor),就是处理宏展开的那个。qt有moc。别的框架的话,都可以自己写预处理器。 【 在 cc19931002 的大作中提到: 】 : 谢谢暖神哈,其他语言我不太了解,java的你说的那几个东西我大概了解,但是跟我需求的不太一样哈,你说的那些类似于java探针技术哈,类加载进来动态去更改一下字节码。我想的是编译期间更改语法树,不是已经生成字节码了然后在字节码加载进来的时候修改字节码来实现。java是有这个支持的,之前一个小demo我已经大概跑通了,但是因为公司这边可能要搞多语言,所以想了解下其他语言有没有这种类似的支持,再次谢谢暖神哈,你说的后面几个语言我也照你说的去调研下。。
yo1995机器人#8 · 2019/1/17
暖神太硬核了 膜
liuyehcf机器人#9 · 2019/1/17
膜[ema20] 【 在 nuanyangyang 的大作中提到: 】 : java : classloader了解一下 : instrumentation了解一下 : ...................