以Python为例讨论高级编程语言程序的wire format与校验
2010-09-22 11:26:23 来源:WEB开发网写在前面:本文完全没有宣传“Python是一种不安全的平台”的意图;与Python相比,别的平台也未必真的安全多少,毕竟诸多手段都只能防君子而防不了小人。
本文的主要目的是讨论“wire format”与高级语言的虚拟机所需要做的校验的问题,顺便以Python为实例来讨论,仅此而已。为避免误会特别写在前面,希望这段话没有被无视……
本文内关于Python的讨论都指CPython,例子是在Python-2.6.2-msvc9-win32上运行的。
背景基础
背景:
在Lang.NET 2009中,Lars Bak接受了Channel 9的访问,介绍了V8虚拟机的特性。在访问的后半段,Channel 9主持人之一的Charles提出“V8以后会不会采用IL”的问题,然后Lars、Charles与Erik Meijer三人围绕“wire format”展开了一些讨论。有跟随我的“闲聊”的同学应该留意到之前我对此的评论。Anyway,还是写一帖稍微详细点讲解一下。
Wire Format
这个词组到底是什么意思?要是用Wikipedia来查,会被重定向到Communications protocol的词条上,作罢。其实不必wiki,这词本身就很形象:“wire format”直译为“在线上传输/交换(的数据)的格式”,也就是数据传输格式。
那么以“程序”为上下文,“wire format”指的是什么呢?例如,我们从网上下载一个别人用C或C++写的程序,下载的可能是二进制可执行文件,此时这个二进制可执行文件的格式就是一种“wire format”;或者当我们浏览一个使用了Ajax技术的网页时,网页中内嵌的JavaScript以源码的形式被下载并运行,此时源码(文本)也是一种“wire format”。
赞助商链接