促使我们写这本书的主要原因是出于对分享Erlang的热衷。希望我们的工作能对Erlang的学习者有所帮助,这也是我们对Erlang社区给予的一点儿回报。虽然我们两个是出于不同目的而开始学习Erlang的,但结果都是一样:通过付出比学习其他语言更多的努力而获得了更多的乐趣。最妙的是,它不仅仅是以娱乐为目的的工具,而是每天我们工作时都在使用它! Francesco: 为什么使用Erlang 那是在1994年,我正在Uppsala大学学习计算机科学,我参加的课程之一是并行程序设计。讲师举着“Erlang并行程序设计”(Prentice Hall)第1版,说道:“阅读它吧。”然后他举起讲义又说道,“还有做练习。”之后Erlang就很少被提及。它很快隐没在线程、内存共享、信号量和死锁的理论中。 该课程的主要练习是设计一个模拟胡萝卜、兔子和狼共同居住的环境。在这个环境中,兔子随机在土地上寻找生长的胡萝卜。如果它们吃了足够多的胡萝卜,就会变胖并且由一只分裂为两只。在这个环境中,狼搜寻兔子,如果狼吃了足够多的兔子,也会变胖并且由一只分裂为两只。如果兔子和狼靠近到了一定的距离,就会彼此发布食物和掠食者的消息。如果一只兔子发现了一片生长胡萝卜的土地,其他兔子也会很快知道这个地方。如果狼一旦发现了兔子,马上就开始追逐它。 最后的结果很有趣。一只古怪的兔子直接跑进了狼群,而其他的兔子跑向了其他方向,有时在发现胡萝卜的地方停下来进食。每一块胡萝卜地、每一只兔子和狼都代表了一个Erlang进程,它们之间通过消息传递进行通信。 这个练习花了我大约40个小时。虽然当时我就很喜欢使用Erlang,并且惊讶于Erlang并发模型的简易性和每个进程对操作系统线程极少的占用,但是当时并没有很重视它。毕竟Erlang也只是我为了得到学位而学习的几门语言之一。我在函数式编程中使用了机器语言,并且在实时程序设计中使用了ADA。Erlang对于我来说只是众多语言中的一种。在几个月后,当我开始学习面向对象程序设计时,这一观点得到了改观。 在面向对象程序设计课程中,我们需要模拟同一个环境,不过这一次用Eiffel语言——一种面向对象语言,我们的新讲师认为它极其适合此类模拟。尽管我已经解决过这个问题,可以直接重用其中某些算法,但我还是花费了大约120个人-时来解决它。 这使我惊讶地意识到Erlang的声明性语言和并行处理的特性是软件开发的新方向。当时,我并不确定编程语言是否会向Erlang模式转移,但是我相信,不管是哪种编程语言,将来一定会深受Erlang和它的先驱者的影响。于是我拿起电话打给Joe Armstrong——Erlang的创造者之一。一个星期之后,我拜访了爱立信的计算机科学实验室,从此我再没有回头。
Erlang编程指南——Francesco: 为什么使用Erlang
书名: Erlang编程指南
作者:
出版社: 机械工业出版社
原作名: Erlang Programming
译者: 慕尼黑Isar工作组 | Simon Thompson
出版年: 2011-3
页数: 444
定价: 79.00元
装帧: 平装
ISBN: 9787111303251