Who will become the first language of development in the AI and Big data era? This is a question that is not to be debated. If there were opportunities for Matlab, Scala, R, Java, and Python three years ago, the situation is unclear, and three years later, the trend is very clear, especially after the first two days of Facebook open source Pytorch, Python as AI The position of the time-cardinal language is basically established, the future suspense is only who can sit the second seat.
Google's AI defeated a go master, a way of measuring the sudden and rapid development of AI, and revealing how these technologies evolved and how they could evolve in the future.
AI is a futuristic technology and is currently working on its own set of tools. A series of developments have taken place over the past few years: an accident-free driving of more than 300000 miles and legal driving in three states ushered in a milestone in automatic driving; IBM Waston defeated the Jeopardy two-year championship; Statistical learning techniques are pattern recognition from the consumer's interest to a complex set of data in trillions of images. These developments are bound to increase the interest of scientists and giants in AI, which also allows developers to understand the true nature of creating AI applications. The first thing to note in developing these things is:
Which programming language is suitable for artificial intelligence?
Every programming language you are proficient in can be the language of AI development.
AI programs can be implemented in almost all programming languages, most commonly: lisp,prolog,c/c++, recently Java, and recently Python.
Lisp
High-level languages such as Lisp have been favored in artificial intelligence because they have chosen rapid prototyping after years of research in universities and abandoned rapid execution. Some of the features of garbage collection, dynamic typing, data functions, unified syntax, interactive environments, and extensibility make list ideal for AI programming.
PROLOG
This language has an effective combination of Lisp high-level and traditional advantages, which is very useful for AI. Its advantage is to solve the "logic-based Problem". Prolog provides a solution to a logic-related problem, or its solution has a concise logic feature. Its main drawback (with all due respect) is that it is difficult to learn.
C + +
Like a cheetah, C + + is primarily used when the speed of execution is high. It is mainly used for simple programs, and statistical artificial intelligence, such as neural networks, is a common example. BackPropagation only uses a few pages of C + + code, but requires speed, even if the programmer can only raise a little bit of speed is good.
Java
Newcomers, Java uses several of the concepts in Lisp, most notably garbage collection. Its portability allows it to be applied to any program, and it has a built-in type. Java does not have Lisp and Prolog advanced, and it is not as fast as C, but it is best if portability is required.
Python
Python is a language compiled with Lisp and Java. By comparing lips and Python in the Norvig article, the two languages are very similar to each other, with only a few small differences. There is also the Jpthon, which provides access to the Java image user interface. This is the reason why Peternorvig chose to use Jpyhton to translate the program in his AI books. Jpython allows him to use portable GUI demonstrations, and portable http/ftp/html libraries. Therefore, it is well suited as an AI language.
The benefits of using Python on artificial intelligence over other programming languages
High-quality documentation
Platform-independent, can be used on every *nix version now
and other object-oriented programming languages are easier and faster than learning
Python has many image enhancement libraries like Python Imaging libary,vtk and Maya 3D Visualizer, Numeric python, scientific python and many other tools available for numerical and scientific applications.
Python is designed to be very good, fast, rugged, portable, and extensible. This is obviously a very important factor for AI applications.
It is useful for a wide range of programming tasks for scientific purposes, from small shell scripts to entire Web site applications.
Finally, it is open source. Can get the same community support.
Ai's Python library
The overall AI Library
Aima:python implements the "AI: a Modern approach" algorithm from Russell to Norvigs
The logical programming engine in Pydatalog:python
Simpleai:python implements the artificial intelligence algorithms described in the book "Artificial Intelligence: a modern approach". It focuses on providing an easy-to-use library with good documentation and testing.
Easyai: A python engine for two-person AI games (negative maxima, substitution tables, game resolution)
Machine Learning Library
Pybrain is a flexible, simple and effective algorithm for machine learning tasks, which is a modular Python machine learning library. It also provides a variety of pre-defined environments to test and compare your algorithms.
PYML a bilateral framework written in Python that focuses on SVM and other kernel methods. It supports Linux and Mac OS x.
Scikit-learn is designed to provide a simple and powerful solution that can be reused in a variety of contexts: machine learning is a versatile tool for science and engineering. It is a Python module that integrates classic machine learning algorithms that are closely linked to the Python Science Pack (numpy,scipy.matplotlib).
Mdp-toolkit This is a python-data-processing framework that can be easily extended. It collects supervised and unregulated learning to calculate rice and other data processing units that can be combined into data processing sequences or more complex feedforward network structures. The implementation of the new algorithm is simple and intuitive. The available algorithms are increasing steadily, including signal processing methods (principal component analysis, independent component analysis, slow feature analysis), Flow learning methods (local linear embedding), centralized classification, probabilistic methods (factor analysis, RBM), data preprocessing methods, and so on.
Natural language and Text processing library
NLTK Open source Python modules, linguistic data and documentation for research and development of natural language processing and text analysis. There are Windows,mac OSX and Linux versions.
Case
Did an experiment, a software that uses artificial intelligence and the Internet of Things to do employee behavioral analysis. The software improves management and work habits by providing a useful feedback to employees about their emotional and behavioral distractions.
Use the Python machine learning Library, OPENCV and haarcascading concepts to train. A sample POC was established to detect the transmission of the underlying emotions through the placement of wireless cameras in different locations like happiness, anger, sadness, disgust, suspicion, contempt, sarcasm and surprises. The collected data is concentrated in the cloud database, and even the entire office can be retrieved by clicking on a button on an Android device or desktop.
Developers are making progress in analyzing the emotional complexities of the face and digging into more detail. With the help of in-depth learning algorithms and machine learning, you can help analyze employee individual performance and appropriate employee/team feedback.
Conclusion
Python has an important role to play in AI because it provides a good framework like Scikit-learn: machine learning in Python, which achieves most of the requirements in this area. D3.js JS is one of the most powerful and easy-to-use tools for visualizing data-driven documents. Processing framework, its rapid prototyping makes it an important language not to be ignored. AI requires a lot of research, so there's no need to ask a 500KB Java boilerplate code to test the new hypothesis. Almost every idea in Python can be implemented quickly through 20-30 lines of code (JS and Lisp are the same). Therefore, it is a very useful language for AI.
For developers who want to join the AI and big data industries, putting eggs in Python's basket is not only safe, but also necessary. Or in other words, if you want to mix in this industry in the future, don't think about it, just close your eyes and learn how to Python. Of course, Python is not without its problems and weaknesses, you can and should have another or even several languages with Python to form a match, but Python will sit steady data analysis and AI first language location, this is no doubt. I even think that because Python sits firmly in this position, because the industry needs a large number of practitioners in the future, and because Python is rapidly becoming the preferred language of instruction for the world's leading primary and secondary school programming program, This open source dynamic scripting language has the opportunity to become the first real programming Esperanto in the near future.
Discussion of the advantages and disadvantages of programming language has been considered a topic of war, by senior people disdain. But I think this Python's upper is a big deal. Imagine if, after 15 years, all knowledge workers under the age of 40, from doctors to construction engineers, from office secretaries to film directors, from composers to sales, can use the same programming language for basic data processing, invoke the AI API on the cloud, manipulate bots, And then communicate ideas to each other, then this universal programming collaboration network will be far more meaningful than any programming language dispute. At the moment, Python is most likely to assume this role.
The win for Python is surprising because its drawbacks are obvious. It is syntactically self-made, so that many veteran feel unaccustomed; "Bare" python is slow and varies from dozens of times to thousands of times times slower than C for different tasks; Because of the limitations of the Global Interpreter Lock (GIL), a single Python program cannot execute concurrently on multiple cores; Python 2 and Python 32 versions Long-term parallel, many modules need to maintain two different versions at the same time, to the developers to choose to bring a lot of unnecessary confusion and trouble; since not controlled by any company, there has been no technology giant willing to die Python, so the application of Python is relatively broad, The input and support from its core infrastructure is actually very weak. Until today, 26-year-old Python does not have an official standard JIT compiler, in contrast, the Java language in its first three years after the release of the standard JIT.
Another thing can explain the problem more. Python's GIL core code was written by the language creator Guido van Rossum in 1992, and for 18 years no one has changed one byte for this critical code. 18 Years! It was not until 2010 that Antoine Pitrou the GIL for the first time in nearly 20 years, and was only used in Python version 3.x. That is to say, most of the developers who use Python 2.7 today, each of the programs they write are still tightly constrained by a piece of code 26 years ago.
Python is one of those racers who rushed to the first square with all sorts of faults, but even a few years ago, few believed it had a chance to win the crown, and many believed that the location of Java was unshakable, and that all programs would be rewritten with JavaScript. But today we see, Python is already the first language of data analysis and AI, the first hacker language of network attack and defense, is becoming the first language of programming introduction teaching, Cloud computing system Management first language. Python has long been one of the mainstream languages for web development, game scripting, computer vision, Internet of things management and robotics development, and it has the opportunity to reach the top in many areas as Python users can expect to grow.
And don't forget that the vast majority of Python users in the future are not professional programmers, but those who are still using Excel, Powepoint, SAS, MATLAB, and video editors today. Take AI, we first want to ask, Ai of the main crowd where? If we talk about this topic statically today, you might think that Ai's main force is AI scientists in research institutions, machine learning experts with PhD degrees, and algorithmic experts. But the last time I mentioned that Kai-Fu Lee's "AI dividend three-paragraph" clearly told us, as long as a little longer, look back 3-5 years, you will see the entire AI industry practitioners will gradually form a huge pyramid structure, the above AI scientists are just the top of a little bit, 95% or more AI Technicians, will be AI engineers, application engineers, and AI tool users. I believe that almost all of these people will be clean sweep by Python and become the huge reserve of the Python camp. These potential Python users are still outside the technical circle, but with the development of AI applications, millions of of teachers, company staff, engineers, translators, editors, physicians, sales, administrators, and civil servants will be flocking to the Python and AI tides with industry knowledge and data resources in their respective fields. Profoundly change the overall landscape of IT, or the DT (data technology) industry.
Why does Python come from behind?
In general, I can enumerate some of the advantages of Python, such as the simplicity and elegance of language design, the friendliness of programmers, and the high efficiency of development. But I don't think that's the root cause, because some other languages do not have a bad performance in this respect.
Others argue that Python has the advantage of being resource-rich, with solid numerical algorithms, icons, and data-processing infrastructure, creating a very good ecological environment, attracting a large number of scientists and experts in various fields to make snowballs roll bigger. But I think it's all backwards. Why would Python be able to attract people and build such a good infrastructure? Why are there no libraries of NumPy, NLTK, Sk-learn, Pandas and Pytorch in the best language in the world? Why does JavaScript thrive after all sorts of libraries are out of order, with feathers, and Python's libraries are both prosperous and orderly to maintain a high level of quality?
I think the most fundamental reason is only one thing: Python is the only one in many mainstream languages with a clear strategic positioning, and always adhere to the original strategic positioning of the non-wavering language. In contrast, too many languages continue to use the tactical principle of non-principled diligence to erode and blur their strategic positioning, ultimately only care.
What is the strategic positioning of Python? In fact, it is very simple, is to do a simple, easy-to-use but professional, rigorous general combination of language, or glue language, so that ordinary people can easily get started, the various basic program components assembled together, coordinated operation.
It is precisely because of this positioning, Python always put the language itself beautifully consistent in front of the magic trick, always put the developer efficiency in front of the CPU efficiency, always put the horizontal expansion ability before the vertical depth of the ability to dive. Long-term adherence to these strategic options has brought Python a rich ecosystem of other languages.
For example, anyone who is willing to learn can learn the basics of Python in a few days, and then do a lot of things, which can be compared to any other language. For example, it is because the Python language itself is slow, so people in the development of the frequently used core library, a large number of C language with it, the results of the real program developed in Python run very fast, because it is likely more than 80% of the time the system executes the code is written in C. On the contrary, if Python is not convinced, not to compete in speed, then the result is likely to be a bare speed up a few times, but so no one has the power to develop C module, the final speed is far less than the mixed mode, and it is likely that the language will become more complex, the result is a slow and ugly language.
More importantly, Python's packaging capabilities, composable, and embeddable are good, and can be packed in Python modules, exposing beautiful interfaces. Most of the time, a library itself is written in C + +, but you will find that directly using C or C + + to call that library, from the environment configuration to the interface call, are very troublesome, but across a layer, with its Python packaging library more clean and tidy, fast and beautiful. These features have become a powerful advantage of Python in the field of AI. Python also uses AI and data science to climb to the top of the programming language ecosystem. Python is tied to AI, and to them, whether it's e-commerce, search engines, social networking or smart hardware, the future is just the data downstream of the ecosystem. Cows, e-nerves, and executive tools, will take orders from themselves.
People who lack understanding of the history of programming languages may feel that Python's strategic positioning is cynicism and lack of aggressiveness. But it turns out that it is difficult to be simple and rigorous, easy to use and professional, and to stick to the location of the glue language, it is even harder.
Some languages, from the beginning is for academic rather than practical purposes, learning curve is too steep, the average person is difficult to approach. Some languages, too dependent on the business support of the king behind the good, when the scenery is unlimited, once limbo, even survival is problematic. Some languages, when the design has a clear hypothetical scenario, either to solve the large-scale concurrency, or to solve the matrix operation, or to do a Web rendering template, once left this scene, the various unpleasant. More languages, just a little success, can not wait to become champion, in all directions desperately stretched tentacles, especially in the enhancement of expressive ability and improve performance often over-active, at the core language to change beyond recognition, and finally become the monster who can not control. In contrast, Python is a successful example of the design and evolution of modern programming languages.
The reason why Python is so clear in its strategic position, and its strategy is so strong, is that its community has built a model decision and governance mechanism. This mechanism with Guido van Rossum (bdfl,pythoners all know what this means), Davidbeazley, Raymond Hettinger and other people as the core, with PEP as an organizational platform, democratic and orderly, focused and enlightened. As long as the mechanism itself is maintained, Python will still be on a smooth upward trend in the foreseeable future.
The most likely challenge to Python, of course, is java. Java has a large user stock, which is itself a clear and firm language of strategic positioning. But I don't think Java has a big chance, because it's essentially designed to build large, complex systems. What is a large complex system? is a system that is clearly described and constructed by man, whose size and complexity are exogenous, or externally endowed. The essence of AI is a self-learning, self-organizing system, whose size and complexity is a mathematical model that grows out of data feeding itself and is endogenous. Therefore, most of the language structure of Java for the processing of big data and the development of AI system is not retwist, your strong things are not used here, the things you need here are awkward. Python's simplicity and toughness in data processing has long been known. Comparing two Java and Python machine learning programs with the same functionality, normal people can make judgments by looking at both eyes, and the Python program must be more refreshing.
About 2003 or 2004 years ago, I bought a Python book, and the author was a Brazilian. He said he was determined to choose Python because when he was a child, he often dreamed that the future world would be ruled by a boa python, Python's English. I thought the man was pathetic and dreamed of such a horrible scene. But today, perhaps he is just like the hacker's programmer Anderson, accidentally crossed into the future, and spied the truth of the world.