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

python– 以解释语言链接和加载,第1张

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

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

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

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

最佳答案解释语言或多或少是称为解释器的可执行文件的大型配置.该可执行文件(例如/usr/bin/python)是实际运行的程序.然后它读取它将执行的脚本(例如/home/alfe/bin/factorial.py)并以最简单的形式逐行执行它.

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

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

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

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

脚注:

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

总结

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

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存