Erlang is not a mainstream programming language, and even Erlang supporters, most of them do not report high expectations of Erlang becoming a "mainstream language." However, since 2006, Erlang language has indeed been used in a number of elite programmers at home and abroad have been quite mature, as far as I know, there are not less than a group of technical masters obsessed with these old language. This is a surprising thing. Because in terms of time, Erlang was 4 years younger than C ++ in the same year as Perl, and was no less than 10 years older than Java, but Java was already the mainstream industry language and C ++ and Perl started to decline. Logically, an old guy who has been thrown away for twenty years and ignored should die slowly, but Erlang did not think it was like a sudden return to old age. In his twenties, The fire, not only more people to learn to study it, but there are many people formed a team, began to develop and implement some very influential software projects. This aroused our thinking.
The fundamental reason is that Erlang talented just adapt to the general trend of computing environment changes: CPU multi-core and cloud computing.
Since Herb Sutter, Chair of the C ++ Standards Committee, published the article "Free Lunch is Over" in Dr. Dobb's Journal in 2005, it has been well established that if parallelized hardware resources are not effectively utilized in parallel in the future , Our computational efficiency will always stagnate at just slightly higher than the current level, and can not move. Therefore, the future calculation must be parallel. Herb Sutter himself said that if a language can not handle parallel computing in an elegant and reliable manner, it loses its right to life in the 21st century. Of course, the "mainstream language" does not really want to lose this right to subsistence, so they have solved the problem of parallel computing in different ways. In terms of C / C ++, in addition to the standards committees' commitment to providing parallel computing libraries in a standard library, standardized OpenMPs and MPIs as well as Intel's Threading Building Blocks libraries are also trustworthy solutions; Java at 5.0 Version of the introduction of a significant concurrency library, get the same respect in the Java community; and Microsoft is using a variety of means to deal with this problem: First, the introduction of APM in .NET, and later in the Robotics Studio CCR library , Recently released Parrallel FX and MPI.NET, spare no effort. However, these techniques can all be regarded as remedial measures because these languages and infrastructures were not created with the priority of parallelism. Contrary to them, Erlang put "parallelism" at its center from the moment of its conception, and its linguistic mechanisms and details are all designed and developed from a parallel perspective and are maturing over the course of two decades of development and improvement . Today, Erlang can be said to be one of the few reliable computing environments that naturally adapt to multicore, which can not but be a historical opportunity.
Another potentially more pressing change is cloud computing. Google's practice shows that server clusters of inexpensive servers can reach the price of large, computationally efficient computing platforms, without a doubt as a dream world for large, very large Web sites and Web applications. However, it is not easy to reach this realm. At present, in order to achieve better scalability and operational efficiency, an average website needs to employ experienced architects and system administrators to manually configure the network server-side architecture and maintain a high standard of system operation and maintenance department, ready to handle each Unexpected situation. It can be said that while most Web companies simply want to run applications on these infrastructures, companies must invest significant resources and energy just to get their infrastructure up and running. Now it can even be said that the capabilities in this area have become the core competencies of large and very large websites. This is similar to the case of people setting up their own hardware and writing drivers before the operating system matures - the people who make the application are well-versed in the underlying details. This pattern of irrational glance, but the solution is clear at a glance - the establishment of network server-side computing operating system, which is similar to Google has established a "cloud computing" that platform. The so-called "cloud computing" refers to the result, but the current key is not the result, but as a means of "computing cloud." Compute cloud is actually an operating system that controls the computing resources of a large network server cluster. It not only parallelizes computational tasks automatically, fully mobilizes the computing power of large server clusters, but also automatically copes with most system failures and achieves a high level of autonomy management.
Computing cloud technology is the operating system of the era of network computing, is the absolute core technology, and therefore, many large well-known Chinese and foreign large IT companies are hesitate to invest heavily in research and development of computing cloud. Many, including myself, believe that cloud computing will not only fundamentally change our computing environment, but will fundamentally change the profitability of the IT industry, which is truly a major change in decades. For some businesses and Technical staff is a major historical opportunity. It is precisely on this topic that Erlang has a natural advantage, which is of course due to its inherent parallel computing power, making it extremely easy to develop a computing cloud system for Erlang. Now that the Erlang community has developed cloud computing systems that proved to be very effective in practice, learning Erlang and these systems is a quick way to get into that area and get things done.
Thus, although Erlang is not yet a mainstream language, it is likely to play an important role in the coming period, so understanding and learning Erlang may be "avant-garde" programmers who are willing to appreciate the cutting edge of technology Very valuable investment. Even if you do not intend to use Erlang in the future, it's quite possible to be inspired by Erlang's design and the Erlang community's wisdom to better accomplish both parallel and cloud computing-related design and implementation tasks in other language projects. Take a step back and say that Erlang is worth learning from just thinking about it and fully understanding the nature of computation and parallel computing features. So, I really hope this book will not be discouraged in the Chinese programmer community.
This book is written by Erlang creator Joe Armstrong authoritative Erlang language authoritative reference book, the original easy to guide the way to help readers understand Erlang's deep design ideas in practice, and to master the development of parallel programming in Erlang technology, technical books Is a rare masterpiece. Both translators I know, they are both skilled and thought-provoking "avant-garde" and have a great passion for Erlang, so the quality of translation is very high and the reading is fluent. . Interested readers focus on a period of time, it is entirely possible to set foot on this understanding Erlang, Erlang Road.