rah*_*dev 0 c# python ironpython dynamic-language-runtime language-design
我知道问题看起来是广泛和主观的,但我对IronPython的这个定义无处不在 - " IronPython是Python编程语言的实现 "如果有任何SO帖子准确回答这个问题,请随意将其标记为重复.
到目前为止,我对此的理解是:
1)Iron python只是用C#编写的托管库(IronPython.dll)并使用CLR
2)Iron python托管代码在内部使用标准Python库(作为Iron Python的一部分安装)来使用DLR弥补差距.
这里的任何python代码的实际执行运行时间是多少?是Python解释器吗?这个解释器是否在不同的进程中运行?
3)IronPython.dll公开api以与任何其他.net语言集成python代码.
我确信某些地方我的理解是不正确的 - " IronPython是Python编程语言的一种实现 "因为从这看起来像Python语言是一种契约,它规定了你如何编写检查条件if condition和实现者如铁python照顾将其转换为IL代码.是这样的吗?
感谢任何帮助或指针.
将编程语言看作不是实际的软件,而是作为"规范".这意味着我可以指定一种编程语言,但不一定能实现它.实现一种语言意味着编写一个程序,该程序接受该语言的代码并完全按照规范所说的"运行"它.
该csc编译器是不是C#编程语言本身,而是一个实现了C#编程语言.C#编程语言由C#语言规范定义.语言规范定义了语言是什么.并且该语言的实现应该完全按照语言规范所述编译/解释代码.从某种意义上说,语言规范是编程语言.
IronPython是一个实现,因为它是一个程序,它接受一串python代码作为输入,然后行为与python规范所说的完全一样.这就是"实施"的含义.
Iron Python的作用是:
.NET的替代Python.与Python.NET不同,这是一个完整的Python实现,可以生成IL,并直接将Python代码编译为.NET程序集.
所以Iron Python需要一些python代码,对它做一些事情,并吐出IL,其行为与语言规范所说的完全相同.这使得Iron Python成为python语言的"实现".
CPython被认为是python的另一个实现,因为它基本上做同样的事情:接受一些代码,将其转换为可执行程序,其行为与语言规范完全相同.