看 PHP 的系统函数实现( PHP 是 C 写的),觉得不如直接看 PHP 代码方便。
我是个 PHPer,顺便也学习了一些 Go 和 Py,了解这三门语言的一些背景后,就产生了好奇:
一门编程语言,实现并选择自举编写,有什么前置条件与坏处呢?
1
missdeer 2019-05-14 11:20:37 +08:00
为什么问“坏处”?没看明白你的问题上下文是什么。。。
|
2
janxin 2019-05-14 11:21:15 +08:00
首先先看 https://en.wikipedia.org/wiki/Bootstrapping_(compilers)
自举是工程化的自证,用实例证明本语言可实现复杂项目的可能性,同时设计者可以在开发实现过程中反思语言的设计是否存在缺陷。 自举前置条件一般需要 spec 和大量的测试。比如一个语言最开始使用 C++编写,那么要完成自举,首先是要保证语言 spec 不被破坏,功能正常执行。 缺点是,比较耗时间? |
3
uiosun OP @missdeer
从我对 PHP 的感觉,PHP 就算无法全部自举,部分自举也是可以做到的。 如果有利于更广泛的使用者为 PHP 仓库提供代码、降低 PHP 内核理解难度,为什么不使用自举?所以更希望了解,一门程序进行自举,所带来的问题 |
4
lincanbin 2019-05-14 11:41:37 +08:00 via Android 1
PHP 是个解释型语言,不输出二进制文件,输出字符串。
|
5
isCyan 2019-05-14 11:47:10 +08:00 via Android
你看很多 php 本身就能实现的功能(有现成的库)
可大多情况下还是用 c extension |
6
uiosun OP |
7
echohey 2019-05-14 11:50:57 +08:00
不会缩写就写全称。
|
8
reus 2019-05-14 11:53:31 +08:00
要么就能自举,要么就不能自举,哪来什么“部分自举”?
PHP 不能自举,就这么简单。 |
10
pursuer 2019-05-14 11:55:49 +08:00
自举的缺点:需要人力
|
11
momocraft 2019-05-14 11:56:25 +08:00
没好处,没人做算不算缺点
没有缺点就应该吗? |
12
reus 2019-05-14 11:57:57 +08:00
编译器不是你想自举,就能自举。首先这个编译器应该可以输出二进制程序,不然你还要借助其他程序去跑编译器,那就不叫自举了。PHP 编译器连这个最基本的要求都没做到,所以不能自举。
|
13
missdeer 2019-05-14 13:48:29 +08:00 1
1. 解释型语言可以自举。
2. PHP 可以输出二进制文件。 3. 不自举的原因可能是效率不高:1 )自举了运行效率不如用 C/C++开发的高; 2 )写编译器的话 PHP 开发效率不高 |