Sunday, November 6, 2011

Topic 6: Turing thesis. Communication recursive functions with Turing machines

Topic 6: Turing thesis. Communication recursive functions with Turing machines

    A. Turing proposed a hypothesis that is formulated as follows: grades calculated and calculated by Turing functions coincide. Bring Turing thesis as the thesis of Church, it is impossible because the very notion of an algorithm (or an effective procedure) is inaccurate. This is not a theorem and postulate a mathematical theory, and a statement that links the theory of those objects for the description of which it was created. According to its value Turing thesis resembles the hypothesis of Physics adequacy of mathematical models of physical phenomena and processes. Proof of Turing thesis is a mathematical practice and the fact that the description of the algorithm in terms of any other known algorithmic models can be reduced to its description as a Turing machine (TM).



    Turing thesis allows, on the one hand, to replace the inaccurate assertions about the existence of effective procedures (algorithms) accurate statements about the existence of T M , on the other - allegations of non-existence TM interpreted as allegations of non-existence of algorithms in general. But we should understand Turing thesis in the sense that the whole theory of algorithms can be reduced to the theory of Turing machines. For example, in complexity theory of algorithms (which is now rapidly developing and considering the relative complexity of algorithms for memory, the number of actions) results are correct within an algorithmic model may be incorrect in another model.


    Church thesis (any function, calculated by some algorithm, is partially-recursive) has historically been formulated before Turing thesis. From the comparison of these two abstracts follows this statement: function calculated TM if and only if it is partially recursive. This statement about the equivalence of the two algorithmic models (as opposed to abstract) is a precise mathematical statement and requires proof.


    Theorem:
Any partial-recursive function is calculated on the TM .
Plan of proof of the theorem, first proved that the simplest functions that make up the complete system is calculated, and that operators of superposition, primitive recursion and minimization of retaining the ability to resolution of.



    You can also prove contrary.

    Theorem:

Any function, calculated on the   TM is partially recursive.

Friday, October 28, 2011

Topic 5: Part-recursive functions

Topic 5: Part-recursive functions

    Recursive functions - historically the first formalization of the concept of algorithm. In the theory of recursive functions adopted a constructive approach, whose main feature is that the set of objects that are studied, based on a finite number of elementary objects with simple operations, effective feasibility are fairly obvious. Operations on functions called operators.
     The function f(x1, x2, … , xn)  is called partially numerical n-seater function if its domain of definition and the region is a subset of its values  Nn If the domain of the function Nn ,   then the function f is everywhere defined. Calculated called numerical function f(x1, x2, … , xn) , whose value can be calculated by some algorithm based on the known values of the argument. Simplest is called such everywhere defined functions including:
O (x) = 0 (zero function), S (x) = x +1 (the continuity of the function)
Inm (x1, x2, … , xn) = xm , where m = 1, 2, ... , n
(projection function, selective function or feature selection).
Operator superposition
Snm called substitution function in m variables f(x1, x2, … , xm) m functions f1(x1, x2, … , xn), ... , fm(x1, x2, … , xn) n the same variables. It sets a new function n variables.
They say that the operator of primitive recursion Rn defines the (n +1)-triple function f(x1, x2, … , xn, y) through n-seater function   j(x1, x2, … , xn) and (n +2) - double function  w(x1, x2, … , xn, y, z) so (according to primitive recursion): f(x1, x2, … , xn, 0) = j(x1, x2, … , xn);
f(x1, x2, … , xn, y+1) = w(x1, x2, … , xn, y, f(x1, x2, … , xn, y)).
Then say f(x1, x2, … , xn, y) = Rn (j, w).
    The function is called primitive recursive if it can be formed from the elementary functions using a finite number of applications of superposition operators and primitive recursion.
     Consider the calculated n-bed partially numerical function f(x1, x2, … , xn) . Record a certain value x1, x2, … , xn-1 of its first (n-1) arguments and consider the equation f(x1, x2, … , xn-1, y) = xn . Than solve consistently value f(x1, x2, … , xn-1, y) for y = 0, 1, 2, .... Least a, for which f(x1, x2, … , xn-1, а) = xn, denoted as follows:
qy (f(x1, x2, … , xn-1, а) = xn).
    The obtained expression defines a partial function variables x1, x2, … , xn, which determines the operator to minimize (q-operator). Often the operator to minimize consider uncertain.
    The function f(x1, x2, … , xn) is called partial-recursive if it can be formed from the elementary functions using a finite number of applications of operators of superposition, primitive recursion and minimization. Everywhere defined partially recursive function call general recursive.
     You can easily install all recursivetion primitive logic functions: on the functional completeness of this set of functions and that the superposition of a primitive recursive operator.
     Consider the set A, which is a subset of N. Characteristic function of set A are called cA function cA (x), which equals 1 if x is A and 0 otherwise. The set A is called primitive recursive if its characteristic function - primitive recursive.
     Part-characteristic function cЧА set A called function cЧА (x), which equals 1 if x is A and is undefined otherwise. The set A is called partial-recursive if its characteristic function partially - partially-recursive. Obviously, the characteristic and partially characteristic functions coincide only for the set of natural numbers N. One can prove that every primitive recursive set is partially recursive.
     Theorem:
Let f (x) - primitive-recursive function, and A - some primitive recursive set. Then the partial function defined by the scheme: fx(x) = f (x), if x is A and is uncertain if x Is not is partially recursive.
     Theorem allows the construction of numerous examples of partially-recursive functions. General notion of partial-recursive functions - one of the main concepts of the theory of algorithms. On the one hand, each part of the standard set-recursive function is calculated for a specific procedure that meets the intuitive idea of the algorithm, on the other - that would still not built precisely defined classes of algorithms, always find out that the number of features that are calculated by the algorithms these classes were partially recursive. So common is this a scientific hypothesis (Church thesis): Class algorithmically calculated partial numerical functions coincides with the class of all partially recursive functions.
     In the formulation of this thesis is an intuitive notion obchyslyuvanosti because it can neither prove nor disprove in general-mathematical sense. It is a fact which testifies in favor of long mathematical practice.
     Theorem:
The system of functions {O (x), S (x)} is a relatively complete system of operations of superposition, primitive recursion and minimization of the set of algorithmically calculated partial numerical functions.
Partial
recursivetion - a clarification of the notion of the function is performed. This concept can prove or refute  resolution ofing.

Sunday, October 23, 2011

Theme 4: Applied theory of algorithms. Rice's theorem. Part 2

Rice's theorem
    Considering algorithmically not solvable problem is easy to see that almost all of them related to samozastosovnistyu - a situation where the algorithm operates with its own description. In applied theory of algorithms can solve that, because the concept is far from samozastosovnosti algorithmic practice, the not solvable in it will never happen. However, it is not.
    Rice's theorem: Let C - any class calculated functions of one variable, non-trivial in the sense that there is a function belonging to C, and functions that do not belong to S. Then there is no algorithm that would be the number x defined functions  fx , fx is a Class C or not (then say that the set {x | fx is C} is not solved).
   With Rice's theorem implies that the number computed by the function can not tell if this function is constant, intermittent, limited, or contains, among its values given number. It seems that nothing is impossible to know and everything in the world -   not solvable. On the other hand, does not contradict Theorem Rice the obvious fact that the number of Turing machine can always learn, for example, whether it contains more than 10 teams or not. In order to understand the meaning of Rice's theorem, it should first recall that the number's function f - is the number of algorithm that computes f; in turn, the number of algorithm uniquely recovers its description, and different numbers correspond to different algorithms.For functions this is not true: if х is'nt y fx and fy are the same function. In Theorem Rice involved as algorithms and functions that need to be clearly distinguished. Class C - a class of functions, while fx mean "function that calculates algorithm Ах ."
    Thus, the value of Rice's theorem is that the description of the algorithm's nothing you can learn about the properties of functions, which he calculates. In particular, it appears not solvable problem of equivalence of algorithms: two algorithms given can not be set, they calculated the same function or not. Number of teams - this property does not function, and describe the algorithm, Rice's theorem is not applicable. An experienced programmer knows that the text of a complex program without running it into work, it is difficult to understand what it does without hypotheses about what she should do, if this understanding is reached and, each time differently, systematic method here does not exist. On the other hand, the text can be found algorithmic method syntax errors, that is to install these or other properties of the algorithm description. Syntactic properties of the algorithm - it features texts that describe it, that the properties of finite words in a fixed alphabet. Semantic properties of algorithms related to the fact that he does, they naturally described in terms of functions and equivalence classes of functions that are calculated algorithms. Obviously, in the process of debugging syntax errors are found quickly, all unpleasantness associated with the analysis of semantics an not established program that attempts to determine what it does instead of doing what was planned.
    Informal interpretation of Rice's theorem: "Algorithm for syntax did not know about its semantics." The expression "do not know" - this is an exaggeration. His exact equivalent of "no single algorithm that allows to know."
    Some of the problems not solvable general theory of algorithms are defined interpretation in practice of programming. Not solvable also occurs in other theories: machine, languages and grammars. From a theoretical point of view, not solvable - not failure, but scientific fact. If it is important to deal with a solvable problem, you need to clear about two things: no general algorithm that solves this problem does not mean that in each case can not succeed; not solvable appearance - this is usually the result of excessive generality problem .

Theme 4: Applied theory of algorithms. Rice's theorem. Part 1

Applied theory of algorithms
    The standard form of presentation of algorithms such as Markov normal algorithm, due to their extremely high level of detail suitable for engineering practice. Turing machine is a convenient abstract model of any person or algorithm computing machine, but in the real world any kind of memory and time of operation is not infinite, but rather strictly limited. However, if the development and implementation of specific algorithms in engineering practice enough to go out of their general properties.
    Applied theory of algorithms itself little concern about the existence of algorithms, it directs its efforts primarily on developing the most effective methods for their description, conversion and implementation. Algorithm as a set of interconnected operators that reflect the basic set of operations transformation projects. Methods of operators are strictly defined (usually operators are some of the algorithms), and in particular the implementation of the algorithm are set as initial value data and parameters that are included in the description of the operators.
    To describe the algorithms use different methods to different degrees of detail and formalized. The theoretical description is given in a formalized form, which - without any details to substantiate the procedure, as the proposed algorithm. For visual presentation structure algorithms are widely used graphical tools: graphs, diagrams, network. A formal and complete description of the algorithms perform on specially developed for this purpose algorithmic languages, it contains all the necessary information to implement the algorithm, not directly related to specific features of computers. Machine implementation of the algorithm requires its translation into the language of a particular machine in a program. The role of automatic translation of algorithmic languages have a special software compilers. Often a general description of the algorithm is directly translated into machine language decryption algorithm operators in computers.
    In contrast to the general theory of algorithms applied theory considers not only deterministic but probabilistic (statistical) and heuristic algorithms. In the latter case than deterministic or statistically defined rules algorithm also includes substantial indications of the direction of sensible process.

Saturday, October 22, 2011

Theme 3: Basic methods construction algorithms. Part 3

Analysis of algorithms
    After developing and drafting stage of the algorithm comes to analysis. The analysis algorithm - an examination of its correctness, ie, determining the accuracy of the applied mathematical model, the coordination of individual blocks, routines, consistency of all actions.
    For the analysis algorithm used a system of testing. The essence of it lies in the selection of such initial data, which result to be obtained after the application of selected mathematical models, it is known in advance. The following reconciliation of the results of the composite algorithm with the same initial data will allow to determine its correctness. When testing the algorithm sequentially, step by step work examined some of its units - branches, loops, subroutines, input and output data. That's when single-step algorithm can correct logical errors.
    For complex and cumbersome algorithms can be applied technique using "stub", that instead of checking the implementation of selected parts of the algorithm currently used value to be derived from their implementation. Later, after the analysis of the main parts of the algorithm can return to the missing parts and to verify their correctness.
    Clearly, the incremental performance for large algorithms is a difficult task. For complex algorithms of modern programming environments provide users a convenient and useful features for single-step program for a computer to keep track of all the necessary intermediate values.
    Successive refinement algorithm
    During the analysis algorithm may need to clarify some of its parts, replacement of some fragments of more rational mathematical tools, design of individual blocks of the algorithm in the form of auxiliary algorithms for the next possible use in its other units.
    For the implementation of some algorithms by one of the essential factors is the time of their execution. When implementing these algorithms on a computer while the algorithm can be tested for different initial data. If the execution is not satisfied, the developer of the algorithm tries to apply more efficient methods for solving the task. Sometimes they are difficult to implement, but more effective on the timing of their implementation.
   

Theme 3: Basic methods construction algorithms. Part 2

Development of algorithms "top-down" and "bottom up"
    The massive use of computers - it is primarily the development of new software. So today we can already talk about the industry formed producing programs. To this end, a variety of programming techniques, which absorbed the idea of structural (modular) approach to drawing algorithms.
    Programming "top-down" or descending programming, based on the idea of gradual detailing the problem into a number of subtasks. First global problem represented as a set of subtasks and built a program in which these subtasks act as some referred to as routines that you can organize treatment. Those subtasks that have not implemented the program, temporarily replaced by so-called software "cap" that allows you to get the first version of the program, ready for the first step debugging and enhanced search options. After that, with respect to subtasks applied the same method.
    Programming "bottom up" or outbox programming based on the opposite process. Originally written and customizable design of tasks to solve specific subtasks, ie, the lowest level of the program and then gradually are going to larger blocks. This process ends when the whole program will be fully assembled and adjusted.
    Over time, technology has another program, called technology application packages. Her idea is that each new problem is solved by a combination of parts of ready-established software packages. Batch technology found its continuation and development in ob'yektnooriyentovanomu programming. Object-oriented tools are tools, high level language, built of modules that perform specific functions independently meaningful. In addition, the module may include objects created by the user or programmer for further processing and presentation.
    Methods of object-oriented programming is the basis to develop new application systems and applications. Now almost every traditional programming language developed from a subset or superset of the support object programming (programming system: Visual Basic, Visual C + +, Visual FoxPro; environment: Delphi, C Builder).

Theme 3: Basic methods construction algorithms. Part 1

Method step by step detail
The structural approach to building algorithms
Modular algorithm

    When creating complex algorithms the method step by step detail. At each stage of assembly algorithm formed its separate parts, which are topical at the moment, and the rest is replaced, such as text option description. In the next steps is the same method is applied to the next group of fragments of the algorithm. This approach leads to the gradual specification of the algorithm, as an executable specification and information of its structure.

    That is, using the method of incremental detail big task will be broken down into smaller units, they, in turn, to even smaller units, etc. Each block algorithm should be as independent and logically complete. Breakdown of units must be determined by the internal logic of the problem.
    Efforts to improve the quality of algorithms, programmers have found their performance in implementing the structural method of constructing algorithms. The basis of the structural approach of building algorithms is claim that the algorithm of any complexity can be displayed using the three basic structures: the passage, branching and loop. Basic structure can connect to each other or to perform their investments into each other. Another advantage of the structural approach is its modularity. The program, based on a structural basis of the algorithm can be presented as separate modules. Module - a sequence of logically related operations, executed as a separate part of the program.
    The structural approach to building algorithms - a way to create an algorithm with extensive use of auxiliary algorithms.
    In the complex and cumbersome tasks of this approach allows the algorithm to split into separate parts - modules, each of which solves its independent subtasks. This allows you to focus on solving each subtasks, implemented as a separate routine. For each such module determined the methods of implementation of the algorithm and data structure in which it operates. The final step in the modular construction of algorithms is an association of individual modules together. For this purpose between the modules must be installed connections for transferring information from one module to the other: the results of some modules are input to others.
    The main purpose of the structural approach to building algorithms is to develop an algorithm with minimal relationships between the modules.
    If placed in front of you is a serious problem of great challenge, the importance of partitioning the algorithm into separate modules can not be underestimated. Especially effective this technique in the development of complex algorithmic systems teams of programmers. In this case, any developer is given its own integral part of the algorithm, which sold it as a separate module. The culmination of the collective work is the construction of these modules together.

Topic 2: Programming Languages. Part 6

Visual programming
    The logical implementation of object-oriented programming is a visual programming.
    Include objects in your program in two ways:
  • manually using the corresponding operators in the program that actually happens very rarely;
  • by visual programming environment using wood - components.
    More recently, the development of graphical user interface has been associated with great efforts and took up to 80-90% of the software codes. When you change the style GUI all the work became useless, everything had to start over. Out of this situation was found by two approaches. First, many functions have been standardized interface, through which the clients can use ready-made library. Second, there was a visual programming, which allowed to reduce the design to the user interface is simple and obvious procedures that allow for minutes or hours to do what previously were months of work. Examples of ideas is a visual programming integrated development environment Delphi.
    Visual programming - a practical application of OOP using ready-made libraries of components, provided programming environment.
    The concept of system programming
Each programming language developed for its further implementation of the computer. It is for this specific implementation languages with their alphabet, rules of recording certain actions and developed programming system.
    Programming system - an implementation of a specific programming language for certain computer systems. Each language supported by your system programming and capacities of the particular operating system.
    Initially, the programming system had very limited capacity to provide the programmer only to transfer program from the algorithmic language into machine code and identify syntax errors. They do not contain even a text editor because the text had to tamp programs on punch cards using separate devices - hammer. Over time, the programming system improved, and now we use features editor of texts in the recruitment of the program, save as a text program and its machine code, features single-step program to determine the logical errors and run the program for execution. Modern systems programming complemented developed user interface that is implemented as an integrated interactive environments, or integrated tool environments. Such environments usually provide a multi-user and bahatofaylovyy mode, using a mouse, let you use object-oriented programming, using fragments of programs written in assembler. An example of integrated programming environment is Turbo Pascal.
    The concept of interpretation and compilation
    Compilers - a special system programs, which convert programs written in high level programming in executable form, ie a set of machine codes.
    Any translator performs two main tasks. The first - an analysis program that is broadcast, causing determined by its correctness. If you find errors streamer indicates the places text programs, where violations of its writing. The second - generation language source program commands the computer.
    Compilers are two types - interpreters and compilers. Interpreters translate one team or the operator to input the program to machine language and execute them immediately. Compilers translate the entire program, written in high level programming language to machine language, after which the program is written into memory and executed. The result of compiling the program, ie its machine code can be stored on external media as a separate file (exe). This vidkompilovanu program can be operated without using the programming environment.
    Examples of translators include: Basic programming language interpreter and compiler Pascal.

Topic 2: Programming Languages. Part 5

Object-oriented programming
    Object-oriented programming (OOP) - is nowadays a natural modern approach to building complex applications and systems.
    At the heart of object-oriented programming is the idea of merging into a single data structure and the actions taken against them. In OOP terminology, these actions are called methods. In this approach, the organization of data and software implementation of actions on them are much more connected than with traditional structured programming.
    Object-oriented programming is based on three basic concepts: encapsulation, inheritance, polymorphism.
    Encapsulation - a combination of data from procedures and functions that manipulate that data. Encapsulation can be imagined as a mechanism that combines data and procedures to handle them in a single structure.
    Imitation - an opportunity to use already defined objects to build a hierarchy of objects derived from them. Inheritance - a mechanism in the application of a single object may receive by heredity all other properties and methods, giving them their characteristic properties.
    Polymorphism - an opportunity to define a common name for the action (procedure or function) that can be applied to all objects of the hierarchy of inheritance. Polymorphism is a mechanism that allows the same name used for solving similar problems, which still differ in some detail.
    An example application of object-oriented programming is available in Windows.
    Object-oriented programming - programming a new ideology based on the use of set of objects and events to which he can react. Object-oriented approach can significantly simplify the writing of complex programs, give them flexibility. One of its main advantages can be called an opportunity to expand their areas of application, not pererabatyvaya programs themselves, but adding to them new levels of hierarchy.
 

Topic 2: Programming Languages. Part 4

Logic programming
    The idea of using mathematical logic as a programming language was proposed by Robert Kowalski in England in the early 70s of the twentieth century. Logic programming emerged mainly due to advances in automatic theorem proving.
    The main purpose of mathematical logic is to provide a system of formal notation for display purposes. One part of mathematical logic is a logic expression. Logic - a part of mathematical logic that studies the statements that are considered by their logical values - truth and falsity - and logical operations on them. The basic element of logic statements are statements and operations on them. In the logic expression is only affirmative sentences that may be true or false, not both; simultaneously. Each such statement is called affirmative sentence. In the logic expression is used five basic logical operations: negation, conjunction (logical multiplication), disjunction (logical addition), the conclusion (implication) equivalence.
    Logic programming - a record task language of mathematical logic as a set of statements, relations between the statements and rules of inference of some other expression. As a result of the problem, written in terms of logic programming, checked for fairness worded statements. Logic programming is far different from algorithmic programming languages. The compiled program does not describe the procedure for solving and logical domain model that includes some facts concerning the properties of the domain and relations between objects in this area, as well as rules of inference of new properties and relationships with the already defined.
    The basic idea of logic programming were first successfully implemented in the form of programming language Prolog. Language Prolog program consists of the set of statements, each of which is either a fact or rule and a statement of purpose. The rule specifies how the solution associated with the given facts, or as much as possible from the set of facts to bring this solution. Programming language Prolog includes the following stages:
  • announcement of facts about objects and relations between them;
  • define rules of interaction of objects and relations between them;
  • formulating questions about objects and relations between them.
    Thus, the program logic programming language Prolog is very similar to the hypothesis of a certain subject area, and question - to the theorem to be proved. Unlike procedural programming language Prolog program does not work consistently on the steps because it does not specifies no action. The content of Prolog programs - a collection of facts and relationships between them. Therefore, programming in Prolog is to transfer information and set your computer next time him with questions about possible conclusions from this information. And another possibility: logical program can use to find any information that can be logically derived from this program. Search for an object that is specified in relation to other objects is very important property of logic programs.

Topic 2: Programming Languages. Part 3

The procedural programming language
    Most high-level programming language relates to procedural languages. Basically it is a programming language for solving computational problems, such as Basic, Pascal and C.
    Programming languages in which the opportunity is realized step by step detail of the algorithm, the descending and ascending programming, called procedural languages.
    In procedural languages is the main method of breaking tasks into individual steps and their consistent description. Here are the details of the algorithm is for the moment until we get the basic steps for solving problems of fragments that can be written in the form of commands allowed in this language.
    Another feature of procedural programming languages is that the commands in programs written procedural languages, are performed sequentially. This means that the results of all previous operations have been received and retroactive effect they have. Since the contents of memory where information is stored all intermediate operations performed, constantly updated and preliminary information is not stored, then cancel the previously executed commands can not be. Programming languages such type is called algorithmic.
    The basis of procedural programming languages, the principle of structured programming. The key idea of the structural construction of the algorithm is mapping the structure of the algorithm in the structure of the program text. Indeed, it is impossible to understand the program, if its structure disappears, as it happens when the compiler issues a machine code. The program is useless if people can not understand it and verify its correctness.
 

Topic 2: Programming Languages. Part 2

Classification of programming languages
    There are different classifications of programming languages. According to the most common of them all programming languages are divided into low and high language level.
    Languages machine instructions (codes) of the computer model, which are perceived by him directly, are called low-level languages or machine languages.
    The group of programming languages are low:
  • microinstructions language that specifies the simplest transfer data between RAM and processor among the most processor registers;
  • machine language, each team which is described by a sequence of microinstructions;
  • assembler - the language of symbolic coding.
    The first two languages badly configured for human use, as their team set a sequence of zeros and ones. Operators of assembly - these are the same machine instructions, but they are symbolic (mnemonic) names as well as the operands are used not address specific memory cells, and their names. All programming languages are oriented low level for a certain type of computers and in this sense specialized for them.
    High-level programming languages are called languages in which programs are composed of operators. For all high-level languages common is that they focus not on the system of commands of a computer, and the total system operators that are specific to record a class of algorithms. Typical examples of such operators like assignment operators can be, conditional operators, operators cycles. Before the computer execute a program written in the language level, need to translate it into machine language that corresponds to this type of computer. This specially designed program - translators. Programming languages Basic, Pascal and C are called high-level programming languages, because their designs as close to normal spoken languages and is very convenient and understandable person.
    Classification of programming languages considered belong to the traditional in its underlying expressive power of language. However, there are classification and other characteristics. One of them - a classification according to which programming languages are divided into computational and logical. Most programming languages have computational, and by logical languages include Lisp and Prolog.
    Lisp language created in 1965 by American Professor John McCarthy for the study of Artificial Intelligence and became the basis for a number of software implementations of intelligent systems. Prologue - a European language, which is based on a logical calculus. It developed A. Kolmerauer in 1972 in Marseille university.
There is also an "applied" classification of programming languages. According to this classification, all programming languages are divided into groups of applications.

Topic 2: Programming Languages. Part 1

The concept of programming languages
    In preparing the algorithms for their execution on the computer to the forefront the need for accurate recording of commands that are understandable to the artist that leaves no room for arbitrary interpretations.
Programming language called the fixed system are going to meet Chen to describe algorithms and data structures.
    Language most modern computers rather "stingy" and consists of teams of orders such as "allocate a certain size", "read information from a place of memory", "remember information in a certain place of memory" "add two numbers," "go to the next team by reading it from a place of memory," "compare two numbers." Typically, teams only a few hundred. All of them are so simple that can be effectively implemented computer equipment. A set of commands is called machine language code, in terms of their functionality is complete. Using this set of commands, ie commands using a given system, can be described by any algorithm. However, that account for complex problems are so bulky that a person will be very little chance to make it unmistakable.
    There are two ways out of this situation. The first is associated with the creation of more complex computer systems, ie the hardware that can implement a wider and more complex set of commands. The second way - is to develop software that would allow use complex in terms of computer, but more understandable in terms of human commands, such as branching and loops. But while there is a need for special programs, translators, whose function is to transform programs with the input language to an equivalent program that can execute computer. Such programs are called translators. This second path was active development.
    To date, developed a considerable number of different programming languages. Also known even different versions of the same programming languages. Why is this number? The fact that today the field where the computers are diverse and are specific, that take into account all in one language is simply impossible. Therefore, each programming language oriented to a certain class of problems. For programming the economic problems of the programming language used dBase, Paradox, Clipper; for settlement of problems rather take advantage of as Basic, Pascal; for access to more "deep" of your computer is desirable to take advantage of assembler and C languages.

Topic 1: Information model

    Since ancient times man uses simulation to study the objects and phenomena in different spheres of life. As a result of these studies is necessary in determining the characteristics of real objects and processes in understanding the phenomena and adapting to them (or manage), in designing new and old modernizuvanni objects. Simulation allows a person to make informed decisions and to foresee the consequences of their activities. Process modeling using powerful modern means of information processing - the computer can be called a computer simulation. Thanks to computer significantly expand the application of modeling, and provides a comprehensive analysis of the results.
    The model can be called an artificial person or abstract material object. Research and analysis model allows to know the real nature of the existing complex object, process or phenomenon, called prototypes of the object. Thus, the model - a simplified picture of the real object, process or phenomenon, and modeling - building models for research and study facilities, processes and phenomena.
    You may question why you can not examine the object, why create a model? This may be many reasons:
  • at the time of original research may not exist;
  • actually this object can not be seen in full;
  • researcher wants to see the object, but can not get to the place of its location;
  • process that examines, life-threatening.

    For the same object, you can create a large number of models. It depends, first, the goal we set ourselves, and secondly, the methods and means by which we collect information about the prototype.
    Thus, the number of models and their diversity is very high. To avoid a loss in the diversity model to classify.
    Consider the most essential features, which are classified models: the use, taking into account the time factor in the model; way to represent models.
    On the basis of the use of models can be divided into:
  • learning - visual aids, simulators,
  • training programs;
  • Research - research designed to characteristics of the real object;
  • scientific and technical - to study processes and phenomena;
  • gaming model - to explore the possible behavior of the object in programmed or emergency situations;
  • simulation models - simulates the real situation is done, many times repeated to examine the actual circumstances.
    In a sign of the time factor model can be dynamic and static. In the first case on the subject of research carried out within a certain period and the second - is a one-time snapshot of the state.
    By way of presentation models may be material and information. The material model - a substantive display object with preservation of geometric or other properties. This material models of real objects. The material model can also be chemical or physical experiment. These models implement physical approach to the study of the object or phenomenon.
    Information model - a set of data characterizing the properties and state of the object, process or phenomenon, and their interaction with the outside world. Information models are: verbal - a model derived from human brain activity and are presented in verbal form; symbolic - models that are expressed by special symbols (pictures, texts, diagrams, graphs, formulas). The form of presentation are the following types of information models:
  • geometric - graphic shapes and three-dimensional design;
  • verbal - verbal and written descriptions with illustrations;
  • mathematics - mathematical formulas that reflect the relationship of various parameters of the object;
  • structural - diagrams, tables;
  • logical - models with various options presented selecting actions based on analysis of conditions;
  • special - notes, chemical formulas.
    In today's world solve complex scientific and industrial problems is impossible without the use of models and simulations. Among the various types of models occupy a special place mathematical models because they allow to take into account quantitative and easy-ditch options phenomena and use accurate mathematical methods. The study of real phenomena using mathematical models usually requires the use of computational methods. It is widely used methods of applied mathematics, mathematical statistics and computer science.