erlang的abstract code是编译的中间代码,很多工具如 erl_pp lint什么的都是根据这个做调整的。还有进一步的parse_transform也是基于它的。 所以,了解它非常重要。 erts user guide里面详细了描述了它的定义。我这里展示的是如何获取到某个模块的abstract code 以便进一步研究:
[root@localhost ~]# erl -s hello
Erlang R13B02 (erts-5.7.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
hello world
Eshell V5.7.3 (abort with ^G)
1>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
[root@localhost ~]# cat hello.erl
-module(hello).
-export([start/0]).
start()->
io:format("hello world~n",[]).
[root@localhost ~]# erlc +debug_info hello.erl
[root@localhost ~]# erl
Erlang R13B02 (erts-5.7.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.7.3 (abort with ^G)
1> rp(beam_lib:chunks(hello, [abstract_code])).
{ok,{hello,[{abstract_code,{raw_abstract_v1,[{attribute,1,
file,
{"./hello.erl",1}},
{attribute,1,module,hello},
{attribute,2,export,[{start,0}]},
{function,4,start,0,
[{clause,4,[],[],
[{call,5,
{remote,5,{atom,5,io},{atom,5,format}},
[{string,5,"hello world~n"},{nil,5}]}]}]},
{eof,6}]}}]}}
ok
2>
对着文档开始好好分析吧。 Have fun!
分享到:
相关推荐
《编程Erlang》是Joe Armstrong所著的一本经典书籍,深入浅出地介绍了Erlang这门函数式编程语言,以及它在并发和分布式系统中的应用。源码分析可以帮助我们更深入地理解Erlang的内在机制和设计哲学。 Erlang是一种...
标题中的 "erlang jiffy code" 指的是使用 Jiffy 库进行 JSON 操作的相关代码。 在 Erlang 中,JSON 数据通常以二进制字符串的形式存在。Jiffy 提供了简单的 API 来解析和编码 JSON。例如,描述中的代码片段展示了...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
compiler - compiles Erlang code to byte-code; erts - the Erlang runtime system application; kernel - code necessary to run the Erlang runtime system itself; sasl - the system architecture support ...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...
Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性和处理大量并发连接的能力而被广泛应用于电信、互联网基础设施和实时系统。RabbitMQ...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
热部署(hot code replacement)是Erlang的一大特色,使得在不停机的情况下更新系统成为可能。这对于维护和升级大规模运行的应用系统尤其重要。 #### 12. IO和并发 Erlang的IO系统与其它语言相比设计得非常适合并发...
Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性、并发性和内存管理机制而被广泛应用于网络通信、数据库系统以及消息中间件,如...
【Erlang编程语言及其应用】 Erlang是一种并发式、函数式的编程语言,由瑞典电信设备制造商Ericsson开发,最初用于构建高可用性、容错性和可扩展性的分布式系统。"xiandiao_erlang_Erlang课后习题_"这个压缩包文件...
erlang安装包
此外,Erlang的热更新(Code Loading)功能允许程序在运行时升级代码而无需停止服务。Erlang 24.0可能对这部分功能进行了优化,使得升级过程更加安全,减少了服务中断的风险。 在Windows 64位环境下,Erlang 24.0的...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时计算系统。它的设计目标是创建一个高可用性、容错性强、低延迟的系统。Erlang9指的是Erlang/OTP(Open Telephony Platform)的第9个主要版本。OTP是Erlang...
6. **BEAM虚拟机**:Erlang运行在BEAM(Berkeley Erlang Abstract Machine)虚拟机上,它负责调度进程、内存管理和垃圾回收,为Erlang的高效执行提供了基础。 7. **OTP(Open Telecom Platform)**:OTP是Erlang的...
erlang otp25 win安装包
书中的源码部分(jaerlang2-code)包含了许多示例代码,读者可以跟随这些代码进行实践,以加深对Erlang编程的理解。这些代码涵盖了各种Erlang语言特性,包括进程间的通信、分布式节点之间的交互、故障恢复机制等。 ...