- 浏览: 118748 次
- 性别:
最近访客 更多访客>>
文章分类
最新评论
-
差沙:
应该有django的Model
metaclass in python (part 1) -
beyking:
哈哈,恭喜
老子毕业了 -
towjzhou:
晕死,这种符号能打出来吗?
新的 pep ! -
xlp223:
好,需要这样的例子。自己用只能是从文档中获取一些,高级的用法, ...
SQLAlchemy Examples -
xlp223:
sql是个基础,脱离它去谈orm,有如纸上谈兵。
强大的 sqlalchemy
Jython,IronPython,PyPy。这几个项目相信玩过 python 的兄弟都不会陌生。Jython 好像是没有继续下去了,就不多说了。IronPython 和 PyPy 两个项目现在都正是如日中天的时候,都有许多让人兴奋的进展!
先来看看 IronPython 吧。在讨论之前,我们不妨先下这么一个定义,对于 python 来说,通常说让它支持某个平台,不光是要让 python 程序能够在该平台上运行,更重要的是 python 程序要能与这个平台进行互操作!
我们说 python 是跨平台的,是因为 CPython 不光能让 python 程序运行在不同的操作系统上,更可以通过一定的接口与 c 语言进行互操作,其实也就是和操作系统平台进行互操作了。
但是如果把 .net、java 两个也看作是平台的话,就更有意思了。.net 和 java 是两个特殊的平台,它们构建于操作系统平台之上,而且它们本身已经拥有了一些比较高级的抽象,比如OO、自动内存管理等。固然,在它们上面实现 python 的时候,某些问题可以(比如内存管理)不用再考虑了,但是解决 python 与这个两个平台之间互操作的问题仍然艰巨。问题的关键还是在于静态与动态的区别,或者说编译期与运行期之间的区别。就拿对 OO 的实现来说吧,静态语言和动态语言就大不一样,比如说静态语言中对象的属性在运行时其实只是编译器算出来的相对对象基地址的一个偏移,取属性值的过程只是个对地址做加法的过程;而 python 的属性却是实打实的 key:value ,名字和值都存在内存中,取属性值的过程实际上是个查哈希表的过程。如何才能让这两种 OO 系统之间的对象之间可以互相使用,甚至进行组合、继承?另外这两个平台本身也拥有一些自己独特的特性,比如 元数据、.net的 attribute、delegate 等,如何让 python 对象拥有这些特征?这些问题就成为 Jython 和 IronPython 要解决的关键问题所在了。
适配!也许你已经联想到这个设计模式了,不过这两个字的答案还是太抽象,等于没说,如何适配才是问题的关键所在。IronPython 在这方面似乎已经做得很不错了,许多 .NET 平台上组件、框架(比如 asp.net)已经可以为 IronPython 所用了。木野狐 同学已经写了好几篇分析 IronPython 实现的文章,看完后受益匪浅,也期待他更多的分析。从他的文章中可以看出,通过让 .net 对象实现一些由 IronPython 定义的接口便可以让 .net 的对象拥有一些 python 对象的动态特性。其实现在很想知道在 IronPython 中,一个 python 对象究竟被翻译成了一个什么样的 .NET 对象,有时间再研究研究。
再说说 PyPy 吧。今天逛到 pypy 首页的时候发现首页不知何时变了,变成了对项目的一个描述。可以感觉到,PyPy 已经比以前成熟很多了,至少现在对于“什么是PyPy”这个问题有了个明确的答案:“Researching a higly flexible and modular language platform and implementing it by leveraging the Open Source Python Language and Community” 。这是个实验性很强,也是野心很大的项目。我的理解是一套通用的“面向方面”的动态语言转换机制(其实现在只是 python 向其它语言的转换,不过许多东西对于其它语言也是通用的)。
它是从对 python 语言的一个“抽象”的实现开始的,其实这也就是它的名字的由来:用 python 编写的 python 实现。虽然看起来没有多大意义,其实这只是一个开始。为什么说它是个“抽象”的实现呢,因为在这个实现中把 python 实现中的许多“方面”都抽象出来了,比如 对象模型、 自动内存管理、并发模型 等,单就这个实现本身它只是个空壳(从pypy的源代码也看得出来,非常少),而把这些“方面”一加上,它就是个有用的 python 实现了!而这些“方面”或者是可选的,或者是可替换的,这让这个 python 实现拥有了巨大的灵活性!
然后它通过实现一整套语言转换的流程成了一个python到其它语言的转换工具!其中有一个 demo 演示了一个神经网络的程序在转换成 c 后执行速度提高了十几倍!目前可用的转换后端已经有:c、LLVM、.net、Smalltalk、ECMAScript、Common Lisp !
对于研究人员来说 PyPy 自然是一个不可多得的实验平台。而随着 pypy 的成熟,它对于 python 程序员的价值也会越来越大,我觉得最重要的一点就是对 python 程序进行优化,比如向 c 语言的转换,为 python 虚拟机提供 JIT ,还有在转换中进行的优化等;其次就是 stackless ;另外向 javascript 的转换也是很有用(也是很好用)的。
最后还有重要的一点不得不提的就是,所有这些全部都是用纯 python 编写而成!
更多的细节也不多说了 (再说下去就要露馅了 ;-) PyPy 涉及的范围广,要研究透彻还得花一番功夫,只能是期待它结出累累硕果的那一天早日来到吧,呵呵。
先来看看 IronPython 吧。在讨论之前,我们不妨先下这么一个定义,对于 python 来说,通常说让它支持某个平台,不光是要让 python 程序能够在该平台上运行,更重要的是 python 程序要能与这个平台进行互操作!
我们说 python 是跨平台的,是因为 CPython 不光能让 python 程序运行在不同的操作系统上,更可以通过一定的接口与 c 语言进行互操作,其实也就是和操作系统平台进行互操作了。
但是如果把 .net、java 两个也看作是平台的话,就更有意思了。.net 和 java 是两个特殊的平台,它们构建于操作系统平台之上,而且它们本身已经拥有了一些比较高级的抽象,比如OO、自动内存管理等。固然,在它们上面实现 python 的时候,某些问题可以(比如内存管理)不用再考虑了,但是解决 python 与这个两个平台之间互操作的问题仍然艰巨。问题的关键还是在于静态与动态的区别,或者说编译期与运行期之间的区别。就拿对 OO 的实现来说吧,静态语言和动态语言就大不一样,比如说静态语言中对象的属性在运行时其实只是编译器算出来的相对对象基地址的一个偏移,取属性值的过程只是个对地址做加法的过程;而 python 的属性却是实打实的 key:value ,名字和值都存在内存中,取属性值的过程实际上是个查哈希表的过程。如何才能让这两种 OO 系统之间的对象之间可以互相使用,甚至进行组合、继承?另外这两个平台本身也拥有一些自己独特的特性,比如 元数据、.net的 attribute、delegate 等,如何让 python 对象拥有这些特征?这些问题就成为 Jython 和 IronPython 要解决的关键问题所在了。
适配!也许你已经联想到这个设计模式了,不过这两个字的答案还是太抽象,等于没说,如何适配才是问题的关键所在。IronPython 在这方面似乎已经做得很不错了,许多 .NET 平台上组件、框架(比如 asp.net)已经可以为 IronPython 所用了。木野狐 同学已经写了好几篇分析 IronPython 实现的文章,看完后受益匪浅,也期待他更多的分析。从他的文章中可以看出,通过让 .net 对象实现一些由 IronPython 定义的接口便可以让 .net 的对象拥有一些 python 对象的动态特性。其实现在很想知道在 IronPython 中,一个 python 对象究竟被翻译成了一个什么样的 .NET 对象,有时间再研究研究。
再说说 PyPy 吧。今天逛到 pypy 首页的时候发现首页不知何时变了,变成了对项目的一个描述。可以感觉到,PyPy 已经比以前成熟很多了,至少现在对于“什么是PyPy”这个问题有了个明确的答案:“Researching a higly flexible and modular language platform and implementing it by leveraging the Open Source Python Language and Community” 。这是个实验性很强,也是野心很大的项目。我的理解是一套通用的“面向方面”的动态语言转换机制(其实现在只是 python 向其它语言的转换,不过许多东西对于其它语言也是通用的)。
它是从对 python 语言的一个“抽象”的实现开始的,其实这也就是它的名字的由来:用 python 编写的 python 实现。虽然看起来没有多大意义,其实这只是一个开始。为什么说它是个“抽象”的实现呢,因为在这个实现中把 python 实现中的许多“方面”都抽象出来了,比如 对象模型、 自动内存管理、并发模型 等,单就这个实现本身它只是个空壳(从pypy的源代码也看得出来,非常少),而把这些“方面”一加上,它就是个有用的 python 实现了!而这些“方面”或者是可选的,或者是可替换的,这让这个 python 实现拥有了巨大的灵活性!
然后它通过实现一整套语言转换的流程成了一个python到其它语言的转换工具!其中有一个 demo 演示了一个神经网络的程序在转换成 c 后执行速度提高了十几倍!目前可用的转换后端已经有:c、LLVM、.net、Smalltalk、ECMAScript、Common Lisp !
对于研究人员来说 PyPy 自然是一个不可多得的实验平台。而随着 pypy 的成熟,它对于 python 程序员的价值也会越来越大,我觉得最重要的一点就是对 python 程序进行优化,比如向 c 语言的转换,为 python 虚拟机提供 JIT ,还有在转换中进行的优化等;其次就是 stackless ;另外向 javascript 的转换也是很有用(也是很好用)的。
最后还有重要的一点不得不提的就是,所有这些全部都是用纯 python 编写而成!
更多的细节也不多说了 (再说下去就要露馅了 ;-) PyPy 涉及的范围广,要研究透彻还得花一番功夫,只能是期待它结出累累硕果的那一天早日来到吧,呵呵。
发表评论
-
如何在醉酒的情况下编写正确的程序
2007-06-22 09:12 1307答案很简单:Test Driven。哈哈,这个(http:// ... -
Evolution of a Python programmer
2007-05-26 07:51 1379http://dis.4chan.org/read/prog/ ... -
Python and vim: Two great tastes that go great together
2007-05-26 08:29 1710Python and vim: Two great taste ... -
字典与动态语言
2007-03-19 10:18 1392字典(或者叫哈希表、关联数组..)与动态语言的渊源可谓极深。动 ... -
使用 python 模拟 ruby 的 open class
2007-01-27 11:42 1303老早就写了这些代码,但一直懒得为它写篇博客,我觉得我永远也无法 ... -
do it runtime
2007-01-20 11:19 2650第一次从静态语言到动态语言的人肯定在思维上需要 ... -
PLY: 一个以教学为目的的lex、yacc实现
2006-09-16 12:37 3846官方网站 想学或正在学编译原理的同学可不要错过了,要是上个学期 ... -
意外收获:get_caller
2006-09-16 14:01 1240阅读 PLY 的 lex.py 的时候 ... -
python is obvious !
2006-09-18 17:40 1361初识 python 的时候常常会被一些陌生的概念绊倒,而当熟悉 ... -
compatibility of IronPython
2006-09-19 03:58 1766IronPython 1.0 的发布,在邮件列表中引起了很多争 ... -
Be Pythonic
2006-10-19 03:05 1134Be PythonicWhat is PythonicPyth ... -
a python tutorial
2006-12-04 08:01 1491A Very Brief Introduction To Py ... -
metaclass in python (part 1)
2006-12-12 14:15 2671python 的东西虽然概念上容易理解 ,但是实际用起来却也不 ... -
metaclass in python (part 2)
2006-12-12 14:24 1801接着上一篇的讲。 现在我们知道了,metaclass 生 c ... -
python types and objects
2006-12-16 14:02 1337在探寻 metaclass 的过程 ... -
selfless python
2006-12-18 04:07 1093Eliminating self with Metaclass ... -
理解 python 的 method 和 function 兼谈 descriptor
2007-01-01 07:34 4970总是看到有人对 python 中的 method 和 func ... -
写了个方便下载 tudou 网视频的小程序
2007-01-09 12:26 1758http://huangyilib.googlecode.co ... -
Build extensible application with egg
2007-01-17 02:49 1784在 python 社区中 egg 已经 ...
相关推荐
selling Gray Hat Python), you’ll explore the darker side of Python’s capabilities – writing network sniffers, manipulating packets, infecting virtual machines, creating stealthy trojans, and more. ...
infecting virtual machines, creating stealthy trojans, extending the popular web hacking tool Burp Suite, and more. By showing how carefully crafted code can be used to disrupt and disable a system, ...
As you progress through this book, you’ll automate several testing services with Python scripts and perform automation tasks on virtual machines and cloud infrastructure with Python. In the ...
As you progress through this book, you’ll automate several testing services with Python scripts and perform automation tasks on virtual machines and cloud infrastructure with Python. In the ...
Work with virtual machines and virtualization Develop skills in Python 3 See the importance of networking in ethical hacking Gain knowledge of the dark web, hidden Wikipedia, proxy chains, virtual ...
As you progress through this book, you’ll automate several testing services with Python scripts and perform automation tasks on virtual machines and cloud infrastructure with Python. In the ...
3. **Azure Virtual Machines**:Azure VM是微软Azure提供的基础设施即服务(IaaS)产品,允许用户在云端运行自定义的操作系统和应用程序。 4. **Python兼容性**:`py2.py3-none-any`表明这个库支持Python 2和...
2. **虚拟机(Virtual Machines)**:创建、配置和扩展Azure虚拟机,包括选择操作系统、设置网络配置、安装自定义脚本等。 3. **网络(Networking)**:设置虚拟网络、子网、网络安全组、负载均衡器和公共IP地址,...
- **Microsoft Azure**:提供了Azure Functions和Virtual Machines等服务,支持Python。 #### 六、Python在超级计算机集群的应用 对于科研领域和高性能计算场景,Python同样发挥着重要作用。超级计算机集群可以...
`azure-mgmt-compute`库是微软官方为Python开发者设计的,它允许开发者通过Python代码来管理Azure计算服务,包括虚拟机(Virtual Machines, VMs)、虚拟机规模集(Virtual Machine Scale Sets, VMSS)、可用性集...
`ar`通常是指用于创建、修改和提取库文件(如静态库)的工具,而在ARM架构(Advanced RISC Machines)的设备上,Python可能需要针对该架构进行编译或使用交叉编译,以适应硬件平台。 总结来说,本教程主要涵盖了在...
get_virtual_machines (): vm . power_on ()安装 pip install vmwc范例/示范查看目录历史当我搜索一个库来编写自动化脚本来控制esxi环境时,我 。 我的第一印象是“它的级别太低,一般的开发经验都不容易使用”。 ...
概述 这些机器执行一些简单的算术运算。 要启动REPL,请运行: $ python repl.py 语法很简单: > <first> <second> 像这样: > 5 3 mod 但是为了好玩,运算符是缩写字符串(add,sub,mult,div,mod)。
Integrate with VMware and track VMware virtual machines Configure apply and verify the access policies Extend or migrate a VMware Virtual Machine LAN inside the ACI Fabric Monitor ACI with third party...
const alfredo = { pronouns : "he" | "him" , code : [ Java , Unix , Matlab , Python , HTML , CSS , C ++ ] , tools : [ IBMCloud , VirtualMachines , Docker , Electronic ] , Cybersecurity : [ "Wifi ...
该存储库是“高级数据库”课程作业的一部分,其目的是使您熟悉MongoDB,Docker,Virtual Machines等服务。在多个较小的任务中。 任务1:Python Webscraper 第一项任务是为全球所有当前的交易刮除。这部分作业的输出...
2. **虚拟机(Virtual Machines)**:Azure Virtual Machines允许用户在云中创建和运行任意操作系统(如Windows、Linux)的服务器实例。它们提供了灵活的计算能力,可根据需求扩展或收缩。 3. **存储服务**:Azure...
/Library/Java/JavaVirtualMachines/<jdk>/Contents/Home/bin/java \ -Dfile.encoding=UTF-8 -classpath \ /Users/<user>/Desktop/labs/bin codeforces. 使用详细运行:java -verbose 执行 执行C代码 上面用于编译....