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

发布于 1周前 作者 vueper 来自 Go语言

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

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

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

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

14 回复

为什么问“坏处”?没看明白你的问题上下文是什么。。。

更多关于Golang Go语言中编程语言的自举到底有哪些坏处?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


首先先看 https://en.wikipedia.org/wiki/Bootstrapping_(compilers)

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

缺点是,比较耗时间?



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

如果有利于更广泛的使用者为 PHP 仓库提供代码、降低 PHP 内核理解难度,为什么不使用自举?所以更希望了解,一门程序进行自举,所带来的问题

PHP 是个解释型语言,不输出二进制文件,输出字符串。

你看很多 php 本身就能实现的功能(有现成的库)
可大多情况下还是用 c extension

THK,我继续了解下。

(看起来 Wiki 也没写缺点,如果自举没有缺点,那岂不是所有语言都“应该”自举?语言进行自举的边界在哪儿呢……总之,感谢了 :D )

不会缩写就写全称。

要么就能自举,要么就不能自举,哪来什么“部分自举”?

PHP 不能自举,就这么简单。

感谢点明!

才明白“解释型语言不能自举”,我实在是太萌新了,hah。

自举的缺点:需要人力

没好处,没人做算不算缺点
没有缺点就应该吗?

编译器不是你想自举,就能自举。首先这个编译器应该可以输出二进制程序,不然你还要借助其他程序去跑编译器,那就不叫自举了。PHP 编译器连这个最基本的要求都没做到,所以不能自举。

  1. 解释型语言可以自举。
    2. PHP 可以输出二进制文件。
    3. 不自举的原因可能是效率不高:1 )自举了运行效率不如用 C/C++开发的高; 2 )写编译器的话 PHP 开发效率不高

针对您提出的关于Golang(Go语言)中编程语言自举的坏处,以下是我的专业回复:

编程语言自举是指使用一种语言的编译器或解释器来编译或解释该语言自身的源代码。Go语言在其发展过程中也实现了自举。然而,自举并非没有坏处,对于Go语言而言,其主要坏处可能包括:

  1. 技术复杂性增加:自举要求编译器能够编译自身,这增加了编译器的设计和实现难度,可能导致技术上的复杂性和潜在的问题。
  2. 依赖性问题:自举的编译器可能依赖于特定版本的运行时库或其他组件,这可能导致在不同环境或平台上部署时出现问题。
  3. 维护和更新成本:由于自举编译器的特殊性,其维护和更新成本可能相对较高,需要更多的开发和测试资源来确保稳定性和兼容性。

然而,值得注意的是,Go语言的自举也带来了许多好处,如提高了编译器的可靠性和性能,简化了编译过程等。因此,在评估自举的坏处时,需要综合考虑其带来的利弊。

总的来说,Go语言的自举是其设计和实现过程中的一个重要方面,虽然存在一些潜在的坏处,但总体上对Go语言的成功和发展起到了积极的推动作用。

回到顶部