There are two main types of software, system software and application software. Systems software includes the operating system on a computer, such as Linux or Windows. Application software are the software that help the user to get his or her work done. Some examples for application software are Microsoft office, media software, games and so on. All these software needs to be controlled by the user to complete the task that is at hand. These software provide the necessary tools, but the user needs to know which tool to use and when to use them.
Smart software can also be called as software with artificial intelligence. A totally complete AI (Artificial Intelligence) do not yet exits, but the idea is the same. The idea or scheme is to get the software to think on its own and take decisions accordingly. Please do understand that this is still a concept and the level of AI in movies is yet to be reached. Put aside the thought of a totally independent software system, yet there are software which go beyond the normal norms of being a "software". The first example of smart software I can give you would be a computer game. If you have ever played a computer game, then you would know that there are so many outcomes which are possible. Take for an example, a computer racing game. The user might race in the same track a hundred times, but every race will be different. The way the other cars behave would be totally random from the way they behaved earlier. Say in a certain corner you push the car next to you to a pillar on the road. In the next race you might encounter a similar situation (which of course is very rare) but the same car would certainly behave in a different manner.
These types of software can be called smart. The fact is that it is impossible to develop these types of programs in the conventional manner, which is, giving a set of instructions to be executed if certain parameters are met. The developer will have no idea how each user will react towards different situations and provide a set of instructions accordingly. Here the software "learns" as the race progresses. The aggressiveness and the level of driving depends on the skill level chosen by the user but when it comes to the actual race, the behavior is totally random.
Developers are trying to create a totally independent software system but they are still far off from hitting gold. As in the racing game, it is impossible to program everything into the AI. The systems would simply crash with to much information. The trick is to make the AI learn. This is of course far easier said than done. It is hard enough to make the program learn as the race progresses, imagine having to write a program to learn everything. The concept came about from looking at animal and especially, human behavior. Humans are born without much knowledge or survival skills. As it happens, human newborns have less knowledge and survival skills than animals. But as we grow we learn from experience and by watching others. This is the technique which has to be used when developing any sort of artificial intelligence.
The fact remains whether we will ever be able to give birth to a totally individual source of intelligence. Many efforts through the years have failed, but through these failures come knowledge and new ideas on how to complete the task. If we do create an AI, the question is whether it will end up like in the movies where the AI tries to destroy all humanity, or will it actually help humanity and take us to heights which we as humans have never dreamt of being possible.
Summery: This article aims to explain the development of smart software, what they are about and the probabilities of creating a truly independent AI system in the future.