编程语言的自举到底有哪些坏处?

2019-05-14 11:06:11 +08:00
 uiosun

看 PHP 的系统函数实现( PHP 是 C 写的),觉得不如直接看 PHP 代码方便。

我是个 PHPer,顺便也学习了一些 Go 和 Py,了解这三门语言的一些背景后,就产生了好奇:

一门编程语言,实现并选择自举编写,有什么前置条件与坏处呢?

6740 次点击
所在节点    Go 编程语言
13 条回复
missdeer
2019-05-14 11:20:37 +08:00
为什么问“坏处”?没看明白你的问题上下文是什么。。。
janxin
2019-05-14 11:21:15 +08:00
首先先看 https://en.wikipedia.org/wiki/Bootstrapping_(compilers)

自举是工程化的自证,用实例证明本语言可实现复杂项目的可能性,同时设计者可以在开发实现过程中反思语言的设计是否存在缺陷。 自举前置条件一般需要 spec 和大量的测试。比如一个语言最开始使用 C++编写,那么要完成自举,首先是要保证语言 spec 不被破坏,功能正常执行。

缺点是,比较耗时间?
uiosun
2019-05-14 11:40:27 +08:00
@missdeer

从我对 PHP 的感觉,PHP 就算无法全部自举,部分自举也是可以做到的。

如果有利于更广泛的使用者为 PHP 仓库提供代码、降低 PHP 内核理解难度,为什么不使用自举?所以更希望了解,一门程序进行自举,所带来的问题
lincanbin
2019-05-14 11:41:37 +08:00
PHP 是个解释型语言,不输出二进制文件,输出字符串。
isCyan
2019-05-14 11:47:10 +08:00
你看很多 php 本身就能实现的功能(有现成的库)
可大多情况下还是用 c extension
uiosun
2019-05-14 11:48:52 +08:00
@janxin THK,我继续了解下。

(看起来 Wiki 也没写缺点,如果自举没有缺点,那岂不是所有语言都“应该”自举?语言进行自举的边界在哪儿呢……总之,感谢了 :D )
echohey
2019-05-14 11:50:57 +08:00
不会缩写就写全称。
reus
2019-05-14 11:53:31 +08:00
要么就能自举,要么就不能自举,哪来什么“部分自举”?

PHP 不能自举,就这么简单。
uiosun
2019-05-14 11:53:58 +08:00
@lincanbin 感谢点明!

才明白“解释型语言不能自举”,我实在是太萌新了,hah。
pursuer
2019-05-14 11:55:49 +08:00
自举的缺点:需要人力
momocraft
2019-05-14 11:56:25 +08:00
没好处,没人做算不算缺点
没有缺点就应该吗?
reus
2019-05-14 11:57:57 +08:00
编译器不是你想自举,就能自举。首先这个编译器应该可以输出二进制程序,不然你还要借助其他程序去跑编译器,那就不叫自举了。PHP 编译器连这个最基本的要求都没做到,所以不能自举。
missdeer
2019-05-14 13:48:29 +08:00
1. 解释型语言可以自举。
2. PHP 可以输出二进制文件。
3. 不自举的原因可能是效率不高:1 )自举了运行效率不如用 C/C++开发的高; 2 )写编译器的话 PHP 开发效率不高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/563937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX