bootstrapping 自举
2016-06-02 20:38
1001 查看
bootstrapping
字面上的解释: boot为靴子,strap为带子(这里即为鞋带),bootstrapping为系鞋带?
某百科给出的解释:
拔靴法:所谓的拔靴法就是利用有限的样本资料经由多次“重复抽样”,重新建立起足以代表母体样本分布之新样本。
而程序界则称:
自举:程序语言编译器用自身的语言及其特性来编译自己。换句话说就是,使用这个语言的一些特性来编写编译器并使该编译器中支持这些自己使用到的特性。此为编译原理中一个很重要的部分。对于很多新新的语言如go,rust等,通过自检能使编译器获得新的特性外,语言开发者也能从中大量的使用新的语言,更有利于新语言的改进和发展。
来自网络的一个通俗的解释:
https://segmentfault.com/q/1010000000692678/a-1020000000693031
首先,第一个编译器肯定是用别的语言写的(不论是C还是Go还是Lisp还是Python),后面的版本才能谈及自举。至于先有鸡还是先有蛋,我可以举个这样的不太恰当的例子:比如我写了一个可以自举的C编译器叫作mycc,不论是编译器本身的执行效率还是生成的代码的质量都远远好于gcc(本故事纯属虚构),但我用的都是标准的C写的,那么我可以就直接用gcc编译mycc的源码,得到一份可以生成高质量代码但本身执行效率低下的mycc,然后当然如果我再用这个生成的mycc编译mycc的源码得到新的一份mycc,新的这份不光会产生和原来那份同等高质量的代码,而且还能拥有比先前版本更高的执行效率(因为前一份是gcc的编译产物,后一份是mycc的编译产物,而mycc生成的代码质量要远好于gcc的)。故事虽然是虚构的,但是道理差不多就是这么个道理。这也就是为什么如果从源码编译安装新版本的gcc的话,往往会“编译——安装”两到三遍的原因。
小小的p.s.
从这个例子我开始想起,自举给我最深的影响是自己尝试用C自举了__cdecl的一部分功能。这是用C语言编译出自己的编译器的一个自举的很好的例子 :)
字面上的解释: boot为靴子,strap为带子(这里即为鞋带),bootstrapping为系鞋带?
某百科给出的解释:
拔靴法:所谓的拔靴法就是利用有限的样本资料经由多次“重复抽样”,重新建立起足以代表母体样本分布之新样本。
而程序界则称:
自举:程序语言编译器用自身的语言及其特性来编译自己。换句话说就是,使用这个语言的一些特性来编写编译器并使该编译器中支持这些自己使用到的特性。此为编译原理中一个很重要的部分。对于很多新新的语言如go,rust等,通过自检能使编译器获得新的特性外,语言开发者也能从中大量的使用新的语言,更有利于新语言的改进和发展。
来自网络的一个通俗的解释:
https://segmentfault.com/q/1010000000692678/a-1020000000693031
首先,第一个编译器肯定是用别的语言写的(不论是C还是Go还是Lisp还是Python),后面的版本才能谈及自举。至于先有鸡还是先有蛋,我可以举个这样的不太恰当的例子:比如我写了一个可以自举的C编译器叫作mycc,不论是编译器本身的执行效率还是生成的代码的质量都远远好于gcc(本故事纯属虚构),但我用的都是标准的C写的,那么我可以就直接用gcc编译mycc的源码,得到一份可以生成高质量代码但本身执行效率低下的mycc,然后当然如果我再用这个生成的mycc编译mycc的源码得到新的一份mycc,新的这份不光会产生和原来那份同等高质量的代码,而且还能拥有比先前版本更高的执行效率(因为前一份是gcc的编译产物,后一份是mycc的编译产物,而mycc生成的代码质量要远好于gcc的)。故事虽然是虚构的,但是道理差不多就是这么个道理。这也就是为什么如果从源码编译安装新版本的gcc的话,往往会“编译——安装”两到三遍的原因。
小小的p.s.
从这个例子我开始想起,自举给我最深的影响是自己尝试用C自举了__cdecl的一部分功能。这是用C语言编译出自己的编译器的一个自举的很好的例子 :)
相关文章推荐
- Unity 5 官方打包管理工具 Asset Bundle Manager
- Android Material Design之Toolbar与Palette实践 (必看!详细!)
- Android应用在新浪微博授权提示:文件不存在 C8998 的解决方法
- Android Studio[百度地图SDK开发](一)
- Android Camera HAL3中拍照Capture模式下多模块间的交互与帧Result与帧数据回调
- Picasso入门教程(五) Placeholder,errors,Fading
- Android四大组件之- Service概述
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- android6.0 power按键深入分析
- 微信硬件平台从入门到精通(服务器端) 2
- Android常用权限大全,Android各种访问权限Permission详解
- htm5 页面跳转在android出现的奇葩问题 【已解决】
- Android基础之imageview截图
- android实现session保持
- Android总结篇系列:Android广播机制
- android 自定义控件学习之三 控件布局常用知识总结
- IOS动画机制
- android 学习笔记十二 监听键盘状态
- DPL,RPL,CPL 之间的联系和区别
- Mybatis的基本使用