编程语言的自举到底有哪些坏处? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
uiosun
V2EX    Go 编程语言

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

  •  
  •   uiosun 2019-05-14 11:06:11 +08:00 7122 次点击
    这是一个创建于 2346 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言    2019-05-14 11:39:43 +08:00
    > 为什么问自举的坏处?

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

    如果有利于更广泛的使用者为 PHP 仓库提供代码、降低 PHP 内核理解难度,为什么不使用自举?
    missdeer
        1
    missdeer  
       2019-05-14 11:20:37 +08:00
    为什么问“坏处”?没看明白你的问题上下文是什么。。。
    janxin
        2
    janxin  
       2019-05-14 11:21:15 +08:00
    首先先看 https://en.wikipedia.org/wiki/Bootstrapping_(compilers)

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

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

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

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

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

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

    才明白“解释型语言不能自举”,我实在是太萌新了,hah。
    pursuer
        10
    pursuer  
       2019-05-14 11:55:49 +08:00
    自举的缺点:需要人力
    momocraft
        11
    momocraft  
       2019-05-14 11:56:25 +08:00
    没好处,没人做算不算缺点
    没有缺点就应该吗?
    reus
        12
    reus  
       2019-05-14 11:57:57 +08:00
    编译器不是你想自举,就能自举。首先这个编译器应该可以输出二进制程序,不然你还要借助其他程序去跑编译器,那就不叫自举了。PHP 编译器连这个最基本的要求都没做到,所以不能自举。
    missdeer
        13
    missdeer  
       2019-05-14 13:48:29 +08:00   1
    1. 解释型语言可以自举。
    2. PHP 可以输出二进制文件。
    3. 不自举的原因可能是效率不高:1 )自举了运行效率不如用 C/C++开发的高; 2 )写编译器的话 PHP 开发效率不高
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3899 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 00:08 PVG 08:08 LAX 17:08 JFK 20:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86