Now the development of computer technology is: No matter how the development of hardware technology can not meet the needs of software, no matter how fast the processor to run, will not meet the needs of software computing power. The number of semiconductor transistors contained per square area of Moore's Law processor (CPU) will increase by one-fold every 18 months. Up to now, all CPU manufacturers can no longer in accordance with Moore's law in a certain area multiplied by the semiconductor, and everyone can only increase the number of CPU cores to work. Multi-core CPU has become the trend of modern computer technology. The increasing demand of modern software for computing power is mainly attributed to the popularization and proliferation of data applications in modern society. This data scale can not be handled by increasing the processor and storage capacity, and must be processed efficiently through distributed computing mode.
No matter how we increase the CPU, memory, or drive through vertical expansion, the hard disk never solves the infinite expansion of the data channel (Bus). Only through horizontal expansion (scale out), that is, distribution expansion by increasing the computer server and then using the distributed computing technology to divide the computational task into discrete servers for processing; This is the core of big data technology.
Predictably, we will face the future: distributed data, high concurrency processing, parallel computing, NoSQL and very large interactive complex network platform programming. As a veteran programmer, experienced from the BIOS to the Cloud Platform application development process, in the face of these new hardware environment and software requirements or feel the effort is not enough. I analyzed it myself; If you rely on the technology and experience you currently have, you can use Java or C # object-oriented programming language (OOP) plus existing repositories to face distributed (distributed), parallel operations (parallelism), High concurrency ( concurrency) software development, feeling or force still less than, like Mission impossible.
Through a period of research, it is found that Scala can easily solve the problem in mind. Scala is a JVM programming language that is equal to Java at the bytecode level (not only compatible). I think it's possible to say that Scala is an upgrade to Java, on the one hand to maintain bytecode compatibility, on the other hand, from a functional and simplified solution to many previous Java programming problems encountered. Information about the Scala programming language is still relatively easy to find. What kind of programming language is it, how powerful it is, and how it is, I don't need to say much about it. Scala is the perfect mix of object-oriented programming (OOP) and functional Programming (FP). Scala's approach to multi-core CPU parallel operations and high concurrency is mainly achieved through the functional programming category (functional programming Paradigm). I found that there was a dearth of textbooks on the domestic internet about Scala functional programming, and the Scala language tutorials were relatively easy to find. The following series of articles will not describe the semantics of the Scala programming language, but rather show how to shift from OOP programming thinking to functional programming patterns.
The reason I chose Scala was that it was the first new programming language I stumbled across when I was looking for a solution that would solve the problems that I've been thinking about in Java development. Later, in order to learn more about functional programming, we also looked at some other programming language materials, including Haskell, Clojure,erlang and so on. But eventually, Scala was chosen for the following reasons:
1. Scala is a JVM programming language that is highly compatible with Java and can take full advantage of existing Java program resources
2, Scala is the OOP and FP hybrid, some problems can be solved by OOP form, is good OOP to FP programming mode of transition
3, new Java 8 has added many features of Scala (Features). Will the two programming languages be progressively closer, more similar, or merged in some way? We may return to Java programming when Java solves all the problems, and we can take advantage of Java experience and resource accumulation.
4. The Scala build tool SBT is a powerful tool after Maven. Can fully build large-scale software system and implement team development management
5. Some well-known enterprises have used Scala to develop their own platforms such as Tweeter, Gilt, Foursquare, etc. The most famous of the big success projects is Spark
How Scala programming is selected