48
$\begingroup$

First of all, I'm a beginner studying AI and this is not an opinion oriented question or one to compare programming languages. I'm not implying that Python is the best language. But the fact is that most of the famous AI frameworks have primary support for Python. They can even be multilanguage supported, for example, TensorFlow that support Python, C++ or CNTK from Microsoft that support C# and C++, but the most used is Python (I mean more documentation, examples, bigger community, support etc). Even if you choose C# (developed by Microsoft and my primary programming language) you must have the Python environment set up.

I read in other forums that Python is preferred for AI because the code is simplified and cleaner, good for fast prototyping.

I was watching a movie with AI thematics (Ex_Machina). In some scene, the main character hacks the interface of the house automation. Guess which language was on the scene? Python.

So what is the big deal with Python?

Why is there a growing association between Python and AI.

$\endgroup$
  • $\begingroup$ Just bear in mind that the representation of programming languages in movies is not usually related to real life! Anything that looks like cryptic gobbledegook to lay people is usually fine... $\endgroup$ – Oliver Mason May 23 '18 at 10:33
  • $\begingroup$ If C# is your main programming language you might be interested in scisharpstack.org $\endgroup$ – henon Jul 31 at 20:16
33
$\begingroup$

Python comes with a huge amount of inbuilt libraries. Many of the libraries are for Artificial Intelligence and Machine Learning. Some of the libraries are Tensorflow (which is high-level neural network library), scikit-learn (for data mining, data analysis and machine learning), pylearn2 (more flexible than scikit-learn), etc. The list keeps going and never ends.

You can find some libraries here.

Python has an easy implementation for OpenCV. What makes Python favourite for everyone is its powerful and easy implementation.
For other languages, students and researchers need to get to know the language before getting into ML or AI with that language. This is not the case with python. Even a programmer with very basic knowledge can easily handle python. Apart from that, the time someone spends on writing and debugging code in python is way less when compared to C, C++ or Java. This is exactly what the students of AI and ML want. They don't want to spend time on debugging the code for syntax errors, they want to spend more time on their algorithms and heuristics related to AI and ML.
Not just the libraries but their tutorials, handling of interfaces are easily available online. People build their own libraries and upload them on GitHub or elsewhere to be used by others.

All these features make Python suitable for them.

$\endgroup$
  • 11
    $\begingroup$ "They don't want to spend time on debugging the code for syntax errors" - Does any programmer want to do this? Is Python the best languge for everything? I am not convinced. $\endgroup$ – Frank Puffer Feb 7 at 19:19
  • $\begingroup$ Endless trade offs in all these areas: what python has in simplicity/built in libraries it can lose in stuff like speed, memory usage etc. Somewhat like vehicles - a simple automatic car is easy to learn to drive with and get around a city but won't get you very far in a race vs a race car, plane or an aircraft carrier. Can only try and pick the best tool for the problem. $\endgroup$ – Philip Nov 11 at 15:17
24
$\begingroup$

Practically all of the most popular and widely used deep-learning frameworks are implemented in Python on the surface and C/C++ under the hood.

I think the main reason is that Python is widely used in scientific and research communities, because it's easy to experiment with new ideas and code prototypes quickly in a language with minimal syntax like Python.

Moreover there may be another reason. As I can see, most of the over-hyped online courses on AI are pushing Python because it is easy for newbie programmers. AI is the new marketing hot word to sell programming courses. ( Mentioning AI can sell programming courses to kids who want to build HAL 3000, but can not even write a Hello World or drop a trend-line onto an Excel graph. :)

$\endgroup$
  • 4
    $\begingroup$ ".......most of the over-hyped online courses on AI are pushing Python because it is easy for newbie programmers. AI is the new marketing hot word to sell programming courses..." ---- Good point. Cant agree more. $\endgroup$ – Emran Hussain Mar 4 at 19:40
5
$\begingroup$

Python has a standard library in development, and a few for AI. It has an intuitive syntax, basic control flow, and data structures. It also supports interpretive run-time, without standard compiler languages. This makes Python especially useful for prototyping algorithms for AI.

$\endgroup$
  • $\begingroup$ Nice point about the interpretive capability of Python. It seems like flexibility and development speed is strongly favored over the greater "horsepower" of compiled languages. $\endgroup$ – DukeZhou Jun 15 '17 at 15:40
5
$\begingroup$

What attracts me to Python for my analysis work is the "full-stack" of tools that are available by virtue of being designed as a general purpose language vs. R as a domain specific language. The actual data analysis is only part of the story, and Python has rich tools and a clean full-featured language to get from the beginning to the end in a single language (use of C/Fortran wrappers notwithstanding).

On the front end, my work commonly starts with getting data from a variety of sources, including databases, files in various formats, or web scraping. Python support for this is good and most database or common data formats have a solid, well-maintained library available for the interface. R seems to share a general richness for data I/O, though for FITS the R package appears not to be under active development (no release of FITSio in 2.5 years?). A lot of the next stage of work typically occurs in the stage of organizing the data and doing pipeline-based processing with a lot of system-level interactions.

On the back end, you need to be able present large data sets in a tangible way, and for me, this commonly means generating web pages. For two projects I wrote significant Django web apps for inspecting the results of large Chandra survey projects. This included a lot of scraping (multiwavelength catalogs) and so forth. These were just used internally for navigating the data set and helping in source catalog generation, but they were invaluable in the overall project.

Moving to the astronomy-specific functionality for analysis, it seems clear that the community is solidly behind Python. This is seen in the depth of available packages and level of development activity, both at an individual and institutional level (http://www.astropython.org/resources). Given this level of infrastructure that is available and in work, I think it makes sense to direct effort to port the most useful R statistical tools for astronomy to Python. This would complement the current capability to call R functions from Python via rpy2.If you are interested, I strongly recommend that you read this article, here it is a question of comparing programming languages https://diceus.com/what-technology-is-b ... nd-java-r/ I hope it helps.Good Luck

$\endgroup$
3
$\begingroup$

Python has rich library, it is also object oriented, easy to program. It can be also used as frontend language. That's why it is used in artificial intelligence. Rather than AI it is also used in machine learning, soft computing, NLP programming and also used as web scripting or in Ethical hacking.

$\endgroup$
  • $\begingroup$ It's a great answer, because Python is indeed the number one programming language especially for web scripting. At first, i was in fear that you could explain to the world, that AutoIt is the perfect scripting language because it is used for Aimbot writing. $\endgroup$ – Manuel Rodriguez Feb 2 at 12:35
2
$\begingroup$

That’s because python is a modern scripting object-oriented programming language that has stylish syntax. Contrary to structural programming languages like java and C++, its scripting nature enables the programmer to test his/her hypothesis very fast. Furthermore, there are lots of open source machine learning libraries (including scikit-learn and Keras) that broaden the use of python in AI field.

$\endgroup$
2
$\begingroup$

It's a mix of many factors that together make it a very good option to develop cognitive systems.

  • Quick development
  • Rapid prototyping
  • Friendly syntax with almost human-level readability
  • Diverse standard library and multi-paradigm
  • It can be used as a frontend for performant backends written in compiled languages such as C/C++.

Existing performant numerical libraries, such as numpy and others already do the intensive bulk work for you which lets you focus more on architectural aspects of your system.

Besides, there is a very big community and ecosystem around Python, which results in a diverse set of available tools oriented to diffent kind of tasks.

$\endgroup$
0
$\begingroup$

I actually prefer C for machine learning. Because like in life, in the world as we know it, consists of never-ending "logic gates" (which basically is like flipping a coin - there WILL be 2 possible outcomes - not counting the third: landing on the side!). Which also means that while the universe seems never-ending, we still never stop finding those things that ar even smaller than the last smallest thing, right?

So... To put it in a context when programming C, I can control the memory usage more efficiently by coding smaller snippets that gets combined, to always form smaller & efficient "code-fragments", that make up what we would call "cells" in biology (it got a measurable function, and has some pre-set properties).

Thus, I like to optimize for low RAM-usage, low CPU-usage etc. when programming AI. I have only done feedforward with a basic genetic algo in C, but the more advanced recurrent neural network I wrote in C++ (ONLY because of the simplicity of using "std::vector name;", so I wrote my own cvector.c: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - compile with gcc -o debug debug.c cvector.c). That actually helped ALOT in the quest of optimizing CPU-usage (and overall runtime) when creating optimized neural networks.

Hope it helps.

EDIT: So I am in one sense really see the opposite of what AlexPnt sees, when it comes to exploring what is possible within the realm of a "self".

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.