您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 以解释语言链接和加载

5b51 2022/1/14 8:20:38 python 字数 3301 阅读 505 来源 www.jb51.cc/python

在编译语言中,源代码由编译器转换为目标代码,并且不同的目标文件(如果有多个文件)由链接器链接并由加载器加载到存储器中以供执行.如果我有一个使用解释语言编写的应用程序(例如,ruby或python),并且如果源代码是跨文件分割的,那么文件恰好是在一起的时候.换句话说,链接什么时候完成?解释语言首先是否具有连接器和装载器,还是解释器可以完成所有操作?我对此感到困

概述

在编译语言中,源代码由编译器转换为目标代码,并且不同的目标文件(如果有多个文件)由链接链接并由加载器加载到存储器中以供执行.

如果我有一个使用解释语言编写的应用程序(例如,rubypython),并且如果源代码是跨文件分割的,那么文件恰好是在一起的时候.换句话说,链接什么时候完成?解释语言首先是否具有连接器和装载器,还是解释器可以完成所有操作?

我对此感到困惑,无法理解它!任何人都可以对此有所启发吗?!

在此过程中,它可能会遇到对其他文件的引用(其他模块,例如/usr/python/lib/math.py),然后它将读取并解释这些文件.

许多此类语言都内置了机制,通过创建它们解释的脚本的字节码版本来减少此过程的开销.所以可能有一个文件/usr/python/lib/math.pyc,例如解释器在第一次处理后放在那里,它可以比原来的/usr/python/lib/math.py更快地读取和解释.但这并不是解释语言概念的一部分¹.

有时,二进制库是解释语言的一部分;根据解释器的复杂程度,它可以在运行时链接该库,然后使用它.这对于需要高度优化的系统模块和东西来说是最典型的.

但总的来说,可以说根本没有生成二进制机器代码.在编译时没有任何关联.实际上,没有真正的编译时间,即使可以将输入脚本的第一次处理称为编译步骤.

脚注:

¹)解释脚本的概念既不包括“编译”(将源预转换为更快速的解释形式),也不包括通过存储.pyc文件文件来“缓存”此形式.关于将程序链接和拆分为多个文件或模块的问题,预编译和缓存的这些方面只是加速事情的技术细节.概念本身是:读取输入脚本的一行&执行它.然后阅读下一行,依此类推.

总结

以上是编程之家为你收集整理的python – 以解释语言链接和加载全部内容,希望文章能够帮你解决python – 以解释语言链接和加载所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶