Work on data/machine learning for many years. Most familiar with C + +, Matlab/r/python/java/scala have been used. But the experience of each language always feels flawed.
One idea: If you're not a language expert, then programming languages are just tools to implement ideas. The more important thing is how to quickly and accurately implement functions and ideas, rather than consuming the tools themselves.
1. C + +
As with C, computational performance is universally acknowledged, and few languages are faster than they are. However, due to its closer to the principle of the machine, the subtle calculation of resource control (especially memory management, pointers, etc.) and other reasons, making its development and maintenance costs are high. C + + is certainly not the best choice to implement ideas quickly.
2. matlab/r
During the period of reading, many people will choose Matlab to do the experiment, because the function is powerful, have you to think, while R language is open source solution. But its charge and bloated environment, always let a person heart has a pimple. And the performance is really not good. It's unbearable for those algorithms that are based on many or very big data for training and learning.
3. Python
Python's simple and powerful third-party features support, making it much more efficient to implement. It's really a good environment to validate ideas. But in the process of implementing a distributed system and deploying production, it is found that in many places there will be unknown pits. And its global lock makes the pursuit of high concurrency system very helpless, especially computing-intensive systems.
There is also an extremely non-endorsement is that must be aligned to the format requirements.
4. Scala
Scala's use is often the need to develop distributed big data algorithms, and spark is often the first choice, in the Spark interface, Scala is more comprehensive, and the logic and spark design implementation closer, so inclined to Scala.
But Scala's grammar is simply alien language, the numerous miscellaneous and the design way, simply let the head big.
This is a kaleidoscope, but for an industrial production environment that requires standardization and maintainability, choosing Scala may be the wrong choice.
Summarize:
Recently, in the process of understanding Lua, a language specifically designed for "parallel" numerical computing was discovered, and Julia
After the understanding and the trial, found that this is the best language for me.
1. Can call the C/python library, Smart way, can better inherit the existing results
2. Similar to MATLAB and Python syntax, the cost of learning to change languages is low, and the implementation is inherently as efficient as Python
3. Performance close to C + + is sufficient in many cases
4. Open source approach, so that the language has a strong package backup force, has begun to take shape in the ecological
5. Natural concurrency and distributed support, save a lot of things.
The best Julia language