`

[转]Python和Erlang的对比

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

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

分享到:
评论

相关推荐

    Go/Python/Erlang编程语言对比分析及示例代码

    Go、Python和Erlang是目前流行的三种编程语言,各有特色。Go语言的设计借鉴了C、Pascal和CSP的编程范式,具有清晰的语法结构和强大的并发处理能力。Python以其简洁的语法和丰富的库而受到广泛的欢迎。Erlang则是以...

    java php python erlang 千万级内存数据性能比较

    本文将深入探讨Java、PHP、Python和Erlang这四种语言在处理千万级内存数据时的性能差异。 首先,让我们从Erlang开始。Erlang是一种并发性极强的函数式编程语言,特别适合构建分布式、容错系统。在提供的文件"erlang...

    Erlang Programming 导读.pdf

    - **基础准备**: 如果之前没有接触过任何编程语言,建议先学习一些基础知识,如 C 语言或 Python,了解计算机的基本工作原理和编程思维。 - **官方资源**: 通过阅读《Programming Erlang》这本书来深入了解 Erlang ...

    为什么你一定要学习Python或Ruby语言.pdf

    与Lisp、Scala、Haskell、Closure和Erlang等更为专业的语言相比,Python和Ruby更主流,更适合初学者和中级开发者。这些语言具有独特的特性,对高级程序员的思维有提升作用,但Python和Ruby在功能和实用性之间找到了...

    各种消息队列对比

    RabbitMQ是基于Erlang语言开发的高性能消息队列,支持AMQP协议,强调高可用性和可靠性,广泛用于高并发场景。 RocketMQ则是阿里巴巴开源的消息中间件,以高吞吐量、低延迟和强大的分布式能力著称,可以处理万亿级别...

    Twisted系列教程 的中文翻译

    第十九部分到第二十一部分则是对Twisted的高级话题的探讨,包括了如何在代码中取消Deferreds,Twisted与Erlang的结合使用以及Twisted和Haskell的对比与结合。通过这部分内容,读者可以对Twisted框架有一个全面的认识...

    十种MQ的技术选型详细对比.docx

    | RabbitMQ | 开源 | Erlang | | RocketMQ | 开源 | Java | | Joram | 开源 | Java | | HornetQ | 开源 | Java | | OpenMQ | 开源 | Java | | MuleMQ | 商业 | Java | | SonicMQ | 商业 | Java | | ZeroMQ | 开源 | ...

    进一步理解Python中的函数编程

    ”一个答案可能会说 FP 就是您在使用例如 Lisp、Scheme、Haskell、ML、OCAML、Clean、Mercury、Erlang(或其它一些)语言进行编程时所做的。这是一个稳妥的答案,但不能很确切地阐明问题。不幸的是,即使是函数...

    RPC调用框架比较分析

    Thrift的特点在于其强大的跨语言支持,提供了C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk等多种语言的绑定。它同样支持动态服务定义,使得服务的扩展性更强。 综合比较: - ...

    mq研究报告

    在本报告中,我们将对比分析几种主流的MQ解决方案,包括RabbitMQ、ZeroMQ和ActiveMQ。 首先,RabbitMQ是一款基于Erlang语言构建的消息中间件,具有出色的性能,能够达到每秒生产17000+条消息和消费17000+条消息。它...

    网络编程语言 幻灯片

    Erlang因其在多核心环境、网络分布式计算和容错能力方面的优势,被认为是具有潜力的新兴语言。 总结来说,2008年的网络编程语言市场充满了竞争和变革,各种语言各有优势,适应不同的应用场景。开发者需关注这些趋势...

    redis和Mongo区别

    它支持多种语言的 API,包括 Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang 等。Redis 的主要特点是高性能、支持主从同步和发布/订阅机制。 Redis 的数据类型包括: * StringType:...

    redis 的学习笔记A

    Redis不仅限于Java,还支持C/C++、C#、PHP、JavaScript、Perl、Objective-C、Python、Ruby和Erlang等多种编程语言,因此它可以在各种开发环境中广泛使用。 7. Redis的安装与使用 Redis可以在多种操作系统上运行,...

    rabbitmq学习资料

    RabbitMQ是一款基于AMQP(Advanced Message Queuing Protocol)的消息中间件,由Erlang编程语言开发,具有高稳定性和跨平台特性,支持多种开发语言如Java、Python、.NET、PHP、Node.js、C++等。它提供了一个可复用的...

    分布式通讯面试专题系列:ActiveMQ+RabbitMQ+Kafka.zip

    2. **特性和优缺点**:对比分析ActiveMQ、RabbitMQ和Kafka各自的特性,以及在不同场景下的适用性。 3. **部署与配置**:如何设置和配置这些服务,包括集群搭建、性能优化等。 4. **API使用**:如何使用各种编程语言...

    如何进行高效的性能测试? 性能测试全流程培训资料

    对比不同的性能测试工具,如LoadRunner、JMeter、Locust和Tsung,它们各有优势和适用场景。LoadRunner提供了完善的报告和分析,但需要商业许可;JMeter虽然单机并发能力较低,但开源且易于使用;Locust以Python为...

    seven languages in seven weeks

    Scala(重复)**:考虑到 Scala 已经介绍过,这里可以将注意力转移到另一种语言,比如 JavaScript 或 Python 等主流语言,以增加语言多样性和实用性。 #### 三、学习目标与方法 本书的目标在于通过七周的时间,让...

Global site tag (gtag.js) - Google Analytics