平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Erlang编程语言的第一印象”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
在这个场景下,和朋友切磋高同时发的时候,又一次涉及了Erlang,Erlang出自名门爱立信,具有稳定性极高的虚拟机和平台库,Face@book用它实现了聊天系统,Amazon 开发了SimpleDB,最令人惊叹的是What'sApp了,高并发的处理机制令人瞩目,是时候了解一下Erlang了。
结合项目来看,世界是同时行的,Erlang程序反应了我们思考和交流的方式,人作为个体借助发送消息进行交流,如果有人死亡,其他人会注意到。
落到代码里,Erlang里的模块类相当于OOPL中的类,进程相当于OOPL里的对象或类实例。
理解这一步时,同时发编程能够用来提升性能,新建可扩展和容错的系统,以及编写清晰和可理解的程序来控制现实世界里的应用。
落到代码里,同时发程序是以一种并发编程语言编写的程序,并发编程语言拥有用来编写并发程序的语言结构。Erlang的并发程序是由互相通信的多组顺序进程组成,一个进程就是一个轻量级的虚拟机,能够执行单个的Erlang函数,只能借助发送和接收消息来与其他进程通信。也就是说,并发性是由Erlang虚拟机提供的,并操作系统的并发控制粒度要小很多。
在Erlang里:
1) 新建和销毁进程是很快的
2) 在进程间发送消息是很快的
3) 进程在所有操作系统上都具有相同的行为方式
4) 能够拥有大量的进程
5) 进程间不共享内存,是完全独立的
6) 唯一的沟通方式是消息传递,每个进程都有一个邮箱与进程同步新建。
落到代码里,动态代码载入是Erlang特性之一,函数调用的总是最新模块里的最新版函数,哪怕当代码在模块里运行时重新编译了该模块也是如此。