首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

[转]Python跟Erlang的对比

2012-12-23 
[转]Python和Erlang的对比名称PythonErlang主要范型面向对象函数式、面向并发开发者Python 基金会商业公司

[转]Python和Erlang的对比
名称PythonErlang主要范型面向对象函数式、面向并发开发者Python 基金会商业公司 爱立信文件编码在 Python 2 中默认为 ASCII,Python 3 中默认为 UTF-8,但都可以制定任意编码。默认为 Latin-1,不允许指定文件编码。不过事实上编译器并不会在意文件中是否存在“不正确”的字符。变量几乎什么都是变量,变量都可以不断变化,无论是值还是类型。甚至你可以改变 True 和 False,让他们颠倒。(当然,也有例外,如 None,我至今没找到改变他的方法)且不说原子是显然不可变的,任何一个变量被赋值之后,他的值也是不可变的,这是所谓变量绑定。(单次赋值)字符串拥有完善的字符串支持,在 Python 3 中这更是发挥到了极致。根本不存在字符串类型,一切字符串都是字符列表,因此就更没有什么强大的字符串处理函数了。列表可以根据下标索引快速获取列表任意位置的内容。考虑效率的话,只能从列表的头部摘取内容。模块依据文件系统的文件分布构建层级式的模块体系,使用模块前必须声明将模块引入当前名字空间。所有模块是平行的,在同一层中,模块名称强制与文件名相同。使用模块时模块必须已经被编译,Erlang 将会自动寻找模块并读取。并行通过 GIL 这一全局锁将所有多线程操作退化为单线程操作,不存在任何并发性。(不过 Python 正在尝试加入新的模块来改变这一问题)天生就是面向并发的……用他仅做顺序编程是一种莫大的浪费……C 接口使用 Python.h 编写接口,编译为动态链接库,运行时调入 Python 内使用。编写外部程序,通过标准输入输出与 Erlang 主进程交换数据,在 Erlang 进程空间外单独运行。(也有一种在进程空间内运行的接口,不过不推荐使用)函数重载不支持任何形式的函数重载,但支持可选参数。支持参数数量不同的同名函数,但不支持可选参数。而且基于模式匹配,支持同一函数的不同分支的定义。数据库内置了通用的 SQLite 数据库支持,可以通过 SQL 语句进行数据库操作,储存的信息限制在文本、数字等几种。内置了专用的 Mnesia,可以与 Erlang 无缝衔接地储存任何内容,通过 Erlang 的 qlc 模块不使用 SQL 语句进行数据库操作。(NoSQL)代码热替换支持使用 reload 函数重新载入一个模块。

模块的新版本被编译后任何调用即采用新的代码。

热点排行