Informatics is divided into the following fundamental areas:
In addition to these three main areas, there are:
The use of informatics in different fields of daily life, such as in economics, geography, medical field, is included in the term applied informatics.
Theoretical informatics can be considered as a basis for other derived fields. It provides the basic knowledge for the decidability of a problem, the systematization of complexity and the formalization of automata and formal languages .
On these theoretical foundations are established practical informatics and technical informatics. They deal with the central problems of information processing and offer pragmatic and adaptable solutions. At this point the two areas of development are closely related to each other, differing by approaching or moving away from microelectronics . From an IT point of view, electronics is only a tool and not a central field of research. In practical informatics, finding solutions is done in such a way as to obtain the least possible dependence on electronics.
The results are finally used in applied computing. This area lies realization of equipment and software (hardware and software), and therefore most of the market of information technology IT (in English Information Technology - IT ). Research is being done in interdisciplinary fields to find possible solutions that information technology could offer. Thus we can mention here the development of geoinformation systems , or economic informatics or bioinformatics .
Theoretical informatics deals with the study of the theory of formal languages , respectively automation , computational theory and complexity , graph theory , cryptology , logic , etc. laying the groundwork for building compilers for programming languages and for formalizing mathematical problems . It is, therefore, the backbone of computer science.
Automata are in theory theoretical machines, having a well-defined behavior through a series of rules ( algorithm ), which make up a program . The algorithm represents a finite set of instructions, which, performed in a certain order, give a result.
A finite automaton has a purpose in that, starting from any state in which it can be at a given moment, a final state well determined by the program is reached. Of course, you can also build programs with random or pseudo-random elements.
The machine receives a so-called "input word" at the input and, depending on what it is programmed to do, will follow a series of predefined steps (algorithm) to reach a final result. An automaton has a single starting state and a number of well-defined final states. Once the machine has reached a final state, after going through all the corresponding intermediate states, it can be stated that the word at the input of the machine is accepted. The multitude of all words accepted by an automaton make up what is called the language of the automaton.
In order to be able to accept complicated languages, other automaton models are needed, which must first and foremost have storage capacity. The set of all words consisting of a sequence containing an equal number of letters "a" and letters "b" constitutes a so-called context-independent language, which requires a "memory automaton" (also called " automatic push-down "). Such an automaton has at its disposal a stack of memories, with the possibility of noting how many times the letter "a" has been read and not yet associated - and therefore how many times the letter "b" must appear.
Linguist Noam Chomsky classified formal languages into a hierarchy as follows:
In computational theory, theoretical computer science studies the possibilities of solving a problem with a certain machine. Curch-Turing's thesis argues that any intuitive problem that can have a solution, so computable, can be solved by an MAA machine - a machine with random access or by the Turing machine , therefore there is no machine that is computationally limited. This sentenceit is not formally demonstrable, but is universally accepted. It is said that a computer system model, namely a programming language, is "fully compatible Turing", if with it the universal Turing machine can be simulated. All current computers are "Turing fully compatible", which means that a solution can be found to any decision-making problem. The term decidability can be described as a question of whether a particular problem is algorithmically solvable or not. Thus, for example, the problem of the least common multiple of two numbers is a decidable problem. An undecidable problem is, for example, the question of whether a computer, given certain input parameters, will ever arrive at the result, known as the Halt problem.. Computational theory investigates which machines can be used to perform a given function. Thus the Ackermann function, for example, is solved not by the class of loop programs , but by the more efficient class of while programs .
