In this post, we will try to explain what is A.I. and this is a good introduction to Artificial Intelligence Technologies. We will continue to give C++ examples about AI Technologies in AI Tech series. Artificial Intelligence is being widely explained well in Computer Science and many other disciplines, when we search simple examples in C++ it is really hard to find simple examples. The main aim of this post is to give basics of AI before releasing AI posts with examples in C++. We will try to make these as simple as possible and this post is also a good example of an introduction to Neural Network (ANN).
Why AI is so Important?
We may have a new era with Artificial Intelligence (AI) Technologies, maybe we need more time to have a real AI, we think that we may see this in 10 – 20 years, maybe less. The human brain is one of the great parts of our body, and we want to know more and more and we want to dive deeper and deeper after Alan Turing – who is the founder of computer science, mathematician, philosopher – built the first Enigma Computer. Now, large computation capabilities, multi-core CPUs, and large memory capacities with 64bit systems are boosting this technology as well as with the large and high-speed internet and better programming techniques. Nowadays many companies developing Artificial Intelligence (AI) applications, it is very clear that there is an apparent increment in the issue of patents in the last 10 years. Still, this is also a good research area in academics. Computers thinking like a human are still absent in our world but day by day we are getting much more closer. If you are new to this area you can get more information about AI.
What is AI, What is Artificial Intelligence?
Artificial Intelligence, also called AI refers to the simulation of human intelligence in machines that are programmed to think like humans and mimic their actions. The term may also be applied to any machine that exhibits traits associated with a human mind such as learning and problem-solving. (reference: Investopedia).
There are many other definitions about the same as above. In addition to AI term, we should add these terms too. Machine learning (ML) is the study of computer algorithms that improve automatically through experience. While we have all advertisements that say Smart or AI-supported thing, in reality, there is no AI yet. We call all AI-related things as AI Technology. AI term in its definition may be happening with Artificial General Intelligence also called as Strong AI, there is also Artificial Biological Intelligence (ABI) term that attempts to emulate ‘natural’ intelligence.
What is Artificial Neural Network, What is ANN, What is Artificial Neuron?
Artificial Neural Network, also called ANN is a part of Artificial Intelligence that models artificial neurons connected in artificial layers. ANN is something like an excel table with numbers and relations, and all this table represents the general form of a function when it is trained by parameters. Codes based on this ANN theory works well in many applications. In a general view, ANN applications simulate connected neurons in a specific problem and this allows you to train from inputs and estimate results by trained ANN. You can compare these predictions by real results or results obtained from any other techniques.
Why we use AI Techs instead of AI term?
According to Professor Josh Tenenbaum from MIT, there is no real AI in the world, all these researches, modules, APIs, applications today are AI Technologies and it is true. There is no AI in the world yet while all the internet and all the market use AI term in their products. All these might be a way to real AI but no AI yet. This is why we used AI Tech term in our category instead of AI !
Why C++ is the Best to Programming Language for the AI related things?
If you would like to dive into AI programming with C++ programming language, we should say that your choice is the best one. In real, you can develop any AI codes, applications, tools, modules, web pages in any programming language and mathematics behind this theory is very simple. The complex part is how to use this for the focused application. There are programming languages like Python, Java, Basic, you can create AI applications by using their frameworks (like Tensorflow, Keras, …), modules, libs too. Especially Python programming language is easy to adapt most of AI applications. It has good AI focused modules for many specific operations, these specific modules runs faster on AI operations. Java and other programming languages can be used too.
AI needs much more CPU and GPU processing and you need a faster programming language. It’s very easy to identify which programming language is the best for AI based applications, it should be faster and it should be faster to use all components of your device. If you want to implement small projects for analysis and calculations without GUIs and many other features, most small compilers will do just fine. If you want to migrate from building simple exe files to complex professional applications, we highly recommend using a professional C++ compiler with an advanced IDE from the start.
There are two types of programming languages: Interpreted and Non-Interpreted (Compiled). All computers (CPU/GPU) work with machine code (code that can be directly programmed by assembler codes) that tells the computer what to do (exe files are this kind of file). This is the most native and fastest code, but it requires writing many lines for simple things and is hard to generalize for all kind of machines. A Compiler (C or C++ Compiler, etc.) is a computer program that converts one programming language (i.e. C/C++ codes) written with text into executable machine code with a linker. Such code may not be as fast as assembler code, but the difference in speed is very small because both machine code and compiler-based code in text form are much more compatible with other CPU/GPUs and/or with other Operating Systems when you compile them on a machine. This is one reason why C++ is the fastest and most powerful programming language. Interpreted programming languages run inside executable applications like Java, Python or Visual Basic. This is why they are slower when executing operations, as they need to use compiled libraries for faster operations. Again, they mostly they use C/C++ compilers to build these libraries. Using an interpreted programming language is like being carried by a runner, while a compiled (non-interpreted) programming language is like running itself. This subtle difference turns into a huge gap when you run the same routine (i.e. for face recognition) millions of times a millisecond.
Consequently, to do better AI solutions in applications, Instead of Interpreted programming languages like Python, Java, Basic,… etc., I highly recommend you to code on Non-Interpreted (Compiled) programming languages (like Assembler, C++, Delphi, Fortran.. etc). Logically, Asm might be the best because of it’s native machine codes but it is hard and not compatible with all platforms, needs very hard to work with it. Here C++ is the best; because it is faster, adaptable to all platforms, easy to apply AI based applications with optimization and compiles to native machine codes which is close to asm programming. Note that, Python and other some interpreted programming languages mostly use libs/modules compiled in C++. This makes Python simple and easy than C++ on AI things
Which C++ Compiler or IDE is the Best for the AI applications ?
All C & C++ compilers are good on AI calculations, they can be used in calculation applications. Try to code mostly with C++ compiler because of Classes and many benefits of C++. We highly recommend you CLANG based compilers like GNU C/C++, C++ Builder, Visual C++, Dev C++. If you want develop GUI based professional AI applications we highly recommend you C++ Builder (RAD Studio) because of its multiplatform support with many GUI features. Visual C++ is also good for GUI based professional AI application.
What you need to know in C++ for the A.I. programming
If you decide to do AI research in C++, you need a good mathematics and programming skills, engineering departments, fundamental science departments, and some other educational departments on IT might be enough to have these skills.
To do programming in C++ on AI, you should know well about,
1.Basics of C++ programming language. Constants, Data types, Variables, Functions, Parameters etc.
2. Structures and Classes in C++ are very important
3. Pointers, using pointers well is also important
4. Memory Operations, File Operations are needed
5. Logics and procedural Logics in functions, Recursive Functions etc.
6. Vectors and some Matrix Operations are needed too
7. You may need more specific things for example, if you want to analyze images, you should know well about Bitmap Operations, if you want to analyze voice you should know well about Sound Recording, Playing and Analyzing these data blocks.
Don’t worry ! All these topics and more are explained well in our LearnCPlusPlus.org web site here.
After all above you need to know basic of artificial intelligence and you should dive into it’s sections. In the next post, we will start with a Very Simple Artificial Neural Network.