rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Erlang

programming erlang(前言)

《免费的午餐已经结束》:如果一个语言不能够以优雅可靠的方式处理并行计算的问题,那它就失去了在21世纪的生存权。erlang沉寂20多年后成为为数不多天然适应多核的可靠计算环境,不能不说是一种历史的机缘。 现下为了达到更好的可伸缩和运行效率,聘请有经验的架构师和系统管理人员手工配置网络服务端架构,并常备一个高水准的系统运维部门已经成为一种核心竞争力。但这与操作系统成熟之前人们自己动手设置硬件并且编写驱动程序的情形是类似的。这种格局的不合理性的解决方式与“现代操作系统”类似,建立一种网络服务端的操作系统,类似“云计算”的平台,这个平台可称为“计算云”,实际上是控制大型网络服务器集群计算资源的操作系统,是绝对的核心技术。 但主流的技术体系在基本模型上存在着与并发计算相冲突的设计。换句话说,问题广泛存在于我们所写的每一行代码中。在大厦初具规模时,却猛然发现每一块砖石都不牢固,听起来有一些耸人听闻,但并不罕见。x=x+n这样的代码无处不在,每一处都需要小心地处理锁。更糟的是,大量的锁彼此互相影响又会导致更为复杂的问题。 消息模型的不共享特性避免了引入锁的必要,而且分布式的消息模型也方便尽可能避免顺序瓶颈。erlang在编程模型上走的更远。它在语言级别提供了一系列的并发原语,我们可以通过这些原语用“进程+消息”的模型来建模世界中多人协作的场景。 对于并发而言,这么多年来,业界对于并发预料之中的需求一直没有真正发生。高并发应用更多局限在一些相对高端的领域。但google的成功使其引为核心的大规模分布式应用广为人知。erlang才以其难以忽视的优势而引起广泛关注。
Erlang组件Erlang具有许多单独的组件,它们能够在开发应用时作为组建块(building blocks)使用。同时这些组件也熟知Erlang的系统消息(load、unload、start、stop、restart、change code)。Inets - HTTP 1.0服务器和FTP客户端。Mnesia - 使用Erlang的分布式实时数据库。它支持RAM复制、磁盘存储、动态改变shema、保存任意复杂的数据结构。Mnesia之所以非常快速,是因为它运行在和应用相同的地址空间(因为Mnesia和应用都使用Erlang编写)。Mnesia展示了Erlang的强大:你能够使用多少种语言使用少于 20000行的代码编写一个全特性、工业强度、分布式的DBMS?Orber - CORBA v2.0对象请求代理(ORB)。SNMP C 可扩展的SNMP v1/v2代理和MIB编译器。Erlang工具和代码库Erlang具有一套常用工具库:Appmon - 进程组图形监控(在本地和远程节点上)。ASN.1 - 支持ASN.1基本标记法和BER、DER、PER编码规则的编译时和运行时的代码包。Compiler - Erlang编译器。Debugger - 图形化Erlang调试器。ERTS - Erlang运行时系统,包括虚拟机、垃圾收集、端口映射守护进程。GS - 编写图形用户接口的代码库。IC - 把OMG的接口定义语言(IDL)转换到Erlang、C和Java语言的编译器。Kernel - 运行Erlang系统所必须的C代码:Erlang内建功能(BIFs);代码、启动、命名服务;对网络和分布式的支持;装载器、连接器、记录器;操作系统和文件系统接口。Mnemosyne - 可选的用于Mnesia的查询语言。Mnesia Session - 以IDL定义的与Mnesia接口的外部语言,它们通过IIOP和erl_interface协议对Mnesia进行访问。OS monitor (OS_MON) - 监控CPU、硬盘、内存使用情况,包括SNMPv1/v2 MIBs。并且提供了与Solaris syslogd、Windows NT事件日志的接口。Parse tools - 用于Erlang的LALR-1解析生成器(yecc),它和yacc类似。Yecc使用BMF语法定义作为输入,生成Erlang代码作为解析输出。Yecc被用于生成Erlang解析器。PMan - 跟踪、查看Erlang进程状态(在本地或者远程节点上)的工具。SASL - 进程、错误、崩溃报告处理、报告浏览、释放处理、重载管理。Stdlib - 标准代码库:输入、输出;基于内存、磁盘的表存储(ETS和DETS);图表、字典、列表、字符串、集合、队列;正则表达式;数学公式。Erlang解释器、tokenizer、解析器、lint和格式化打印。用于容错服务器的通用框架、事件处理器、状态机和线程监管等等。Table visualizer - 查看ETS和Mnesia表格的工具。Toolbar - 简化了对Erlang工具的访问。Tools - 覆盖分析器、优化器、基于文字的跟踪器、Emacs模式、Emacs TAGS文件生成器、make工具、调用图形化工具。
顶一下
(0)
踩一下
(0)