[讨论] 未来C++地位会像高级组语码?

楼主: Sidney0503 (Sidney0503)   2018-07-04 09:31:13
现在的 llvm bytecode 是很流行的中介码 非常类似组合语言
很多语言只要写好前端接到llvm ir 就可以轻易地转后端就跑在各种硬件上
C++20 想要静态动态兼具 (modules, injection/reflection) 和图形化
(C++:“我全都要”)
这样当C++拥有全部语言都有的feature的时候
任何语言都可以转成 C++ code 作为后端
这样具有比组合语言更好的可读性
作者: freef1y3 ( )   2018-07-05 23:09:00
先手动优化转出来的C++, 再手动优化C++转出来的ASM手动优化也要分pass的概念
作者: dannypsnl (秦书)   2018-07-05 20:30:00
楼上说的是解析器产生器吧?
作者: tinlans ( )   2018-07-06 01:08:00
怎么可能只有解析器产生器啊,去复习下 UML 的活动图。状态机图也可以复习一下,其实程式都可以用这些描述。而且因为它本身是查表法的一种,也算是最佳化的一招。
作者: Neisseria (Neisseria)   2018-07-04 10:31:00
转成 C 可携性应该会比较好,这好像不只一个团队试过像是 Nim 就是以这个为号召,但那个语言目前不成气候Vala 也算吧,但是多带一个 GTK+,runtime 比较肥
作者: cphe (魔鬼藏在垃圾筒里)   2018-07-04 11:03:00
以后的事很难说,早期BIOS也都是用asm,后来uefi发展起来也只有最一开始的phase需要用到asm,其余都是c不过底层观念愈清楚对自己写code或debug还是有帮助的学过组语、学过cpu怎么读指令,写code还是会有不同层面的思考
作者: Neisseria (Neisseria)   2018-07-04 13:32:00
我记得 LLVM 算 IR,应该不用再转成 C (或 C++)我以为原 po 要的是从某个高阶语言转 C (或 C++)但小弟没修过编译器的课程,讲错请指教高阶语言 -> C -> LLVM -> 机械码 是这样吗?一般的程式设计者不会观看或手动修改转出来的 C 或 C++程式码,只要语义没有错掉,理想上转什么都没差甚至不透过 C (或 C++) 这个中介层,直接进 LLVM 也可像 Rust 也是用 LLVM,但没有生 C (或 C++) 程式码当然从设计者的角度来看会有差P.S. 讲错请不吝纠正,感恩
作者: sarafciel (Cattuz)   2018-07-04 15:36:00
我要转C/ASM出来看的目的 就是要看底层的实作呀XD如果要看高阶抽象的东西原语言的程式码足矣
作者: tinlans ( )   2018-07-04 16:03:00
转成丑爆的 C++ 也不会好读到哪去自动转出来的程式码一般难以阅读
作者: Schottky (顺风相送)   2018-07-04 18:10:00
咦我通过了原PO的骇客检定标准 XDDDD
作者: Lipraxde (Lipraxde)   2018-07-04 18:31:00
这样做有什么好处?Compiler比较好写?
作者: Bencrie   2018-07-04 21:57:00
可以多弄一层中继码的中继码,创造就业机会
作者: Neisseria (Neisseria)   2018-07-04 22:48:00
照原 po 的想法只要写前端就好,后端就丢给 GCC/Clang要从头写后端的那些优化应该也是蛮累人的一件事
作者: Lipraxde (Lipraxde)   2018-07-04 23:25:00
应该还是要转成ir在优化比较好吧,不过最后不会变成为什么不一开始就用C++写code吗
作者: sarafciel (Cattuz)   2018-07-04 23:29:00
创造就业机会XDDDD还有一个问题是 我不觉得++的学习成本比IR跟ASM低极端点讲 如果为了加速 前端编一堆TMP的Code出来呢?
作者: tinlans ( )   2018-07-05 00:27:00
先不说 TMP,光是 case label 从 1 排到 10000 的状态机,就已经是无法阅读了,但偏偏这是产生器最爱生的玩意。
作者: james732 (好人超)   2018-07-06 16:52:00
其实我不懂C++哪里适合当这个中间语言?
作者: Sex5F (HTC)   2018-07-08 14:48:00
不可能
作者: CoNsTaR ((const *))   2018-07-10 10:40:00
转成c++是复杂化的概念吗 (X
作者: Neisseria (Neisseria)   2018-07-10 11:18:00
Nim 就这样搞啊,Nim 除了转 C 也可转 C++但这样做有什么好处要问 Nim 的核心开发者...
作者: Killercat (杀人猫™)   2018-07-11 22:52:00
C++跟近代语言其实都比较像是描述语言,你要描述model跟“你想做什么”,而组语基本上没有抽象的描述概念所以以标题来讲... 我是觉得有点格格不入啦 XD有兴趣可以比对一下java跟转出来的bytecode的差异
作者: CoNsTaR ((const *))   2018-07-14 06:11:00
楼上我想原Po提组语意思是和组语一样成为所有语言的底层而高级指的就是有抽象概念吧
作者: ronin728 (浪人)   2018-07-15 14:09:00
C--

Links booklink

Contact Us: admin [ a t ] ucptt.com