Programming methodologies: basic concepts and definitions

At the beginning there were many programming languages. The "right" survived. But it cannot be said that Fortran, Algol, C / C ++ or Pascal are somewhat qualitatively different from Lisp or Prolog or other languages: different ideas are laid down, equivalent results are obtained. In fact, it doesn't matter what programming is called functional or procedural. The task of a program that can create, or at least read itself, is not so interesting. But in the distant 80s, it was all lively, relevant and very important.

The ratio of the beginning and the modern moment

To create a compiler in the last century is the work of a fairly large team of programmers using certain techniques, mathematical algorithms, taking into account the experience gained over a fairly long time. In the process, the team grew in number, updates were constantly issued, and the work was for everyone. The programming methodology in each company was different, as the mentality of each programmer was radically different in the good old days.

functional programming




The modern world of programming has not changed in essence, but public consciousness in this area has become the foundation of understanding what to do, how to do it, how to maintain, update and where to go next. Today, making your own compiler is a couple of days of work. Even a novice programmer will cope. In fact, nothing has changed, but the mental abilities of programmers have become more productive, more competent, and they began to think “the same way”. Fundamentally, this is nothing new. Each new generation (children) surpasses the previous ones (parents) in mental abilities. In programming, the presence of knowledge recorded in programs is extremely important.





The essence of the language and working methods

Programming methodologies have developed dynamically, aggressively in relation to each other and effectively in terms of accumulated knowledge. Technologies for developing software tools - compilers, interpreters, shells for development.

imperative programming




Application programming technologies differed significantly, and the industry owes them concepts:

  • software package;
  • library of mathematical functions;
  • module;
  • component, etc.

The system and the applied tried not to intersect, each direction had its own philosophy, sphere and programming methodology. However, the term “module” is equally convenient to use in compilers and graphic editors. A library of mathematical functions has nothing to do with functional programming. The software package can equally well be applied to android development, although the term “application” is more popular.

math function library




Everything was mixed up, which means it was systematized. Indeed, there is no difference between a C # compiler and an HTML code pasher written in the same C #. In both cases we are talking about information processing. The main thing is a quality algorithm, and not how it was made.





A characteristic feature of the programming development process: all syntactic constructions defined as early as the spontaneous stage of development have remained in modern programming languages. Functional programming should be grateful to Lisp and Prolog for their ideas and dizzy syntax constructs. But today, the concept of functions as methods of objects is more important.

Programming language syntax

On the one hand, everything that is used is convenient. All modern programming languages ​​offer equivalent syntax constructs, but the philosophy of each language is different. This is exactly the case when using a programming methodology is of real value.

A brilliant example: JavaScript is a browser language. This is an integral part of the DOM (object tree) of the page loaded into the browser. Demanding similarity from the PHP language is pointless. This is the server language. His concern is to work with the page in order to create it. JavaScript animates the page, filling it with real functionality in the browser, under the influence of the actions of a particular visitor.

Each programmer is free to form his own programming methodology. Combining the qualities of JavaScript and PHP, you can go the beaten path of using JSON and AJAX, or you can make the page exchange with the server in your own way. This is another philosophy that has nothing to do with the ideas of the developers of these tools.

syntax and semantics




At the lowest, logical level, imperative programming can be distinguished. When this paradigm was formulated, it was important to understand what programming in general was. Wording:

  • source code - instructions;
  • instructions are executed sequentially;
  • data can be written / read to / from memory.

The main features of imperative languages ​​can be found in any modern programming language. In this context, many of the ideas of programming methodologies have dissolved in an abundance of new ideas.

Programming Development Stages

Remembering how programming developed is a tribute to memory, any course in a specialty begins with a respectful enumeration:

  • spontaneous;
  • imperative;
  • structural;
  • procedural;
  • functional;
  • object oriented;
  • CASE-technologies, etc.

Each author in his own way understands the development path and the time of the appearance of certain methods and methods, but no one doubts that the essence of the programming methodology has fundamentally changed in terms of basic concepts and definitions. As before, we are talking about the totality of methods, philosophy and stages of life of a software product. But today, the concept of a software product is far from just a program.

virtual container and computer




Work on intelligent and expert systems calmed down, everyone agreed that programmers simply work, create programs, algorithms, process information, naming something from time to time as knowledge. This is not the point. The syntax and semantics of the language are important, which allows the programmer to create his own programming methodology. This is significant, because a programmer, and especially a team of programmers, accumulate an arsenal of modules, libraries, algorithms over time. The exchange of knowledge, skills and best practices allows you to create your own philosophy and dynamically adapt your developments to the mainstream of general development trends.

Area Key Concepts

A software product, software package or just applications - these concepts have played a role, but are used even today. The app is a more modern concept. A cloud or virtual environment is a sign of the features of a software product.

Work on a physical computer or in a container of a virtual machine is different, but a special philosophy of programming methodology arises here. Types of programs (services) have acquired a kind of status. Previously, I just bought the program, installed and use it. Licensing access, acquiring a subscription for the duration or number of uses of the program, it is not known where and how it was installed - this was not even supposed in the past.

In fact, programming has remained in its original form, but in a modern design. Programming has gained a different status due to cloud and virtual technologies. Security issues, ensuring the work of large companies have led to the formation of a real need for programming methodologies by employees (users, customers). The social factor and experience in combating cyber attacks is an already recognized and necessary set of methods and technologies. However, this is not programming in the classical sense of this concept.

Expert systems and knowledge bases

A characteristic feature of some languages ​​(such as Prolog) is an attempt to create logical programming programs. As far as this idea turned out to be tenacious, the dynamics of the development of the design philosophy and programming of the infrastructure of large companies shows. Making responsible decisions, manipulating huge volumes of information has made management relevant through available third-party services. Essentially, there is no programming as such, but without a programmer the task cannot be solved. The use of logical languages ​​is not advertised, therefore, the logical paradigm, discrete mathematics and programming methodology in limitations have not shown their best side. Each method has its own field of application.

Expert systems




Here the logic and philosophy of the programming methodology are the conceptual ideas of a particular company about what should be processed and how. The knowledge about the available services and their functionality fit into the algorithm for manipulating the sequence of their use, depending on the emerging information picture.

These are not expert systems and not knowledge bases, but they are real knowledge, functions and algorithms that allow you to make objective decisions. The knowledge of many qualified specialists has, in fact, become the subject of the formation of business-level programming methodologies.

Some philosophical problems

Each experienced programmer understands the development of programming methodologies in his own way. Classical programming is significantly different, for example, from:

  • virtual environment programming;
  • access control to an external application;
  • Security Administrator Actions

In each case, its own philosophy, its own methods, technologies, work methods. If you approach the history of the development of the “mirror of intelligence” from the standpoint of common sense, then it’s not the point on which to write something, it is important how convenient it is to do it. It is sad that modern programming has repeatedly forced programmers to rewrite old code.

Development of programming methodologies




Characteristic: features of the "old" programming languages ​​- bottom-up compatibility (sometimes top-down) has gone down in history. The idea of ​​untyped data has shown its vitality. Indeed, why is it necessary to say in one place of the algorithm that “X” is a number, and “Y” is a string, and then stick to this idea throughout the algorithm. Programming methodologies have approached the need for a radically new solution: the program must be independent of the author and designed so that the author can develop it as a set of relevant knowledge.

Statics and dynamics

Modern programming is static, dynamic methods and technologies developed by programmers. Everyone is used to it and this is not discussed. But how convenient it is to have a programming methodology in which each new product, no matter what its name (program, library, module, component, service, access control), is developed and supplemented, and not rewritten for the hundredth time when changing the computer configuration network, tool, or other event.

Dynamics of thoughts and code




Dynamics is the next stage in the development of programming methodologies, but not the dynamics of thoughts in the head of a programmer, but the dynamics of the code written by him.




All Articles