我已经理解Python是一种解释型语言......然而,当我查看我的Python源代码时,我看到了.pyc
Windows,它们识别为"编译的Python文件".这些来自哪里?
根据我的理解:
一个解释语言是高级语言运行和由解释器执行(程序将高级语言转换成机器代码,然后执行)在旅途中; 它一次处理一点程序.
甲编译语言是一种高级语言,其代码由编译器,然后通过一个执行器(另一个程序用于运行代码)执行(其高级语言转换成机器代码的程序)首先被转换为机器代码.
如果我的定义错了,请纠正我.
现在回到Python,我对此感到困惑.在任何地方,您都了解到Python是一种解释型语言,但它被解释为某些中间代码(如字节代码或IL)而不是机器代码.那么哪个程序执行IM代码?请帮助我理解如何处理和运行Python脚本.
Javascript可以被称为纯粹的解释语言吗?或者它也有一些编译风味吗?有人可以指导两者背后的原因,无论哪个是真的.
我被告知你可以解释haskell文件(我认为这意味着它们将像Ruby/Python/Perl一样工作).但是,无法在ghc上找到命令行选项来执行此操作.它总是想编译我的文件.看看ghci也是如此,但它总是把我扔进一个repl.
我基本上只想做ghc -i MyFile.hs
(其中-i是一个组成的标志,我假装与解释模式相关)并让它执行以便我可以在我尝试创意和学习时获得快速反馈.
我问这个是因为我使用Python,但它也适用于其他解释语言(Ruby,PHP,JavaScript).
每当我在代码中留下评论时,我是否会放慢口译员的速度?根据我对解释器的有限理解,它以字符串形式读取程序表达式,然后将这些字符串转换为代码.似乎每次解析评论时都会浪费时间.
是这样的吗?在解释语言中是否有一些评论惯例,或者效果可以忽略不计?
关于这一点有很多矛盾的信息.虽然有人说C#被编译(因为它被编译成IL然后在运行时被编译为本机代码),但是其他人说它被解释为它需要.NET.EN Wiki说:
许多解释语言首先被编译为某种形式的虚拟机代码,然后在运行时将其解释或编译为本机代码.
所以我很困惑.任何人都可以清楚解释这个
我只是不知道,有什么技术原因吗?为弱键入的语言实现编译器是否更难?它是什么?
compiler-construction programming-languages interpreted-language
为什么HTML/JavaScript/CSS不会成为编译语言(甚至可能合并为一种编译语言)?如果浏览器运行"浏览器虚拟机"和html/javascript/css源可以通过编译为"浏览器字节码"怎么办?它不会对开发人员和用户有很大帮助吗?
我可以看到一些挑战:
如何处理数以万计的现有页面?使这个编译可选,所以如果你想要你可以使用普通的旧HTML.如果您想为浏览器提供已编译的页面,请使用.chtml.
搜索提供商如何索引页面?制作一个可以将字节码反编译为精确原始源的反编译器(例如像flash一样可以反编译).或者搜索提供商可以使用相同的虚拟机并从中获取所需的数据.
如何使其与所有浏览器兼容?有一个集中开发人员(比方说w3c)来开发这个虚拟机,然后每个浏览器都会嵌入它.
但是好处呢?
如果不是字节码,那么至少有一些原生压缩,html可能不是最有效的数据存储方式.我知道有gzip但是为什么每次在服务器上压缩页面并在浏览器中解压缩,如果我们可以压缩一次并将其提供给浏览器?
那么是什么阻止我们走这条路(好吧,除了付出巨大努力才能实现这一切)?
我在某处编写了Clojure.是真的编译,如Java或Scala,而不是解释,如Jython或JRuby?
interpreted-language compilation clojure jvm-languages compiled-language
为什么C等语言最终没有用于Web开发?当然,编译后的速度增加对重载站点有用吗?
compiled ×3
python ×3
c# ×1
clojure ×1
comments ×1
compilation ×1
ghc ×1
ghci ×1
haskell ×1
html ×1
interpreter ×1
javascript ×1
pyc ×1