2.1 概览
同任何其他学习经历一样,在掌握Erlang的过程中你也会将经历若干个阶段。下面就来看看,在这本书里会经历哪些阶段,而在这些阶段之中我们又能够学到些什么。
2.1.1 阶段1:茫然无绪
作为一个初学者,你能学到如何启动系统,在shell里运行命令,编译简单的程序,然后逐渐地熟悉Erlang(Erlang是一门小巧的语言,这用不了多久)。
让我们在细化一下。作为一个初学者,需要做下面的事情。
确保你计算机上的Erlang系统能够正常工作。
学习启动和关闭Eralng shell。
了解如何在Erlang shell里输入表达式,对其求值,并且弄懂返回结果的意思。
了解如何在你惯用的文本编译器中创建和修改程序。
练习一下如何在Elang shell 中编译和运行程序。
2.1.2 阶段2:初窥门径
到这个阶段你已经具备了初步的只是来运用这个语言。如果继续学习语言而碰到难点,正好可以运用这些背景知识去弄懂第五章。
在这个阶段中我们已经熟悉了Erlang,因此可以转到更多有趣的主题。
你会发掘出Erlang shell更多的高级功能。与初次接触他时所学的那些功能相比,Erang shell可以做到的事情远远地超乎了我们的想象。(比如说,你可以重新调用之前录入的表达式并对他们进行编辑,这个话题包含在6.5节中)
你会开始逐步学习各种
库(Erlang中称为模块)。我所撰写的大多数程序中会用到5个模块:lists、io、file、dict和gen_tcp,而且,在本书中我们还会频繁地使用这些模块。
随着代码模块的逐渐膨胀,你有必要学会如何去自动地编译和执行,这个话题包含在6.4节中。
Erlang编程更高的层次是能灵活地运用一批扩展库——OTP。随着Erlang使用经验的积累,你会意识到,通晓OTP库将能事半功倍。毕竟,如果有人已经写好了所需的功能,又何必另起炉灶?我们学会OTP主要的行为(behavior),特别是gen_server,这个话题包含在16.2节中。
Erlang主要用来编写分布式的应用程序,这个阶段正式开始尝试的好时机,你可以从第10章的样例程序开始,而后尽情地扩展它们。
2.1.3 阶段2.5:观其大略,不求甚解
第一次通读本书时不必苛求每一章都能学得面面俱到。
你先前可能接触过很多语言,Eralng与他们中的大部分都不相同,他是一种并发编程语言,Erlang与他们中大部分都部相同,他是一种并发编程语言,这使得他可以和分布式、多核/SMP编程结合的天衣无缝。大多数Erlnag程序在多核或者SMP机上运行得更快。
用Erlang编程总是以以汇总贬称范式形影不离,我称之为COP(面向并发编程)。
用COP,你可以分解问题,识别出他的本身(天然)的并发模式。这正是面向并发编程实质性的第一步。
2.1.4 阶段3: 运用自如
至此,你已然可以零活地运用这一语言,编写一些有用的分布式程序。但是要达到游刃有余的境界。你还需要学习更多的知识。
Mnesia。Eralng的发行版包含一个内置的、完整的、快速的、可复制的数据库——Mnesia。他原本用于那些姓名和容错都至关重要的电信应用,现在也广泛地用于很多非电信场合。
如何和其他编写的代码进行接口。如何使用内联的驱动,这些内容包含在12.4节中。
利用各种OTP行为(behavior)来构建监控树(supervision tree)和启动脚本(start script)等,这些内容包含在第18章中。
如何在多核计算机上运行和优化你的程序,这些内容包含在第20章中。
2.1.5 重中之重
在通读此书时,有一条原则你必须谨记于心:编程乐在其中。就我个人看来,与传统的顺序型应用程序相比,编写诸如聊天、即时消息这样的分布式程序有着更多的乐趣。如果说在一台计算机上你能做的事情往往被视为其能力有限,那么,构建与网络之上的计算机集群则是海阔凭鱼跃天高任鸟飞的另一番天地。Erlang提供了一个非常理想的环境,在他之中你可以尝试网络化的应用程序,构建产品级的系统。
为了让你能在这些领域里大展拳脚,我在那些技术性的章节里柔和了一些真实世界中的应用。毫无疑问,你可以将浙西应用作为进一步实践的基石。接受他们把他们应用到超乎我想象的领域,而我将会为此感到万分欣慰。