Studio      23/11/2023

Paradigme de programmation structurelle. Paradigmes de programmation « oubliés ». Langages supportant ce paradigme

CALCUL RÉCURSIF DANS DIVERS PARADIGMES DE PROGRAMMATION.

G.V. Vanykina, A.V. Yakouchine

Université pédagogique d'État de Tula nommée d'après. L. N. Tolstoï

[email protégé]

1. Paradigmes de la programmation moderne.

Historiquement, les premières techniques technologiques dans le domaine de la programmation incluent la décomposition de la structure générale du problème à résoudre en de tels composants, qui dans ce contexte sont élémentaires. Par la suite, une base théorique sérieuse et un certain nombre de techniques technologiques recommandées ont été développées pour cette approche, qui constituent ensemble une programmation moderne. Selon le choix de la « base d'éléments », vous pouvez obtenir divers ensembles de techniques méthodologiques, règles, relations, dépendances, etc. pour résoudre un problème donné, qui forment ensemble un paradigme de programmation.

Il convient de noter que le mot « paradigme » est venu dans la programmation à partir du livre influent « La structure des révolutions scientifiques », écrit par l'historien des sciences Thomas Kuhn en 1970. Kuhn a utilisé ce terme pour décrire un ensemble de théories, de normes et de méthodes qui, ensemble, constituent une manière d'organiser la connaissance scientifique, en d'autres termes, une manière de voir le monde. Le point principal de Kuhn est que les révolutions scientifiques se produisent lorsqu’un ancien paradigme est révisé, rejeté et remplacé par un nouveau.

Dans un sens similaire, comme modèle ou exemple, et généralement comme approche organisatrice, le mot est utilisé dans la conférence « Programmation Paradigmes » de Robert Floyd, lauréat du prix Turing 1979.

Le paradigme de programmation est un concept fondamental de très haut niveau dans la théorie de la programmation et ne peut donc pas être défini de manière stricte. Par paradigme de programmation, nous entendons un ensemble cohérent d’éléments de programme qui ont des caractéristiques fondamentales communes, à la fois logiques et algorithmiques, ainsi que les concepts de base associés à ces éléments. De même, un paradigme de programmation peut être considéré comme une manière de conceptualiser la manière d’effectuer des calculs et la manière dont le travail effectué par un ordinateur doit être structuré et organisé.

Les paradigmes de programmation occupent une place importante dans la technologie du développement logiciel. C'est autour d'eux que les concepts méthodologiques commencent à se construire et à se développer. Ce rôle est déterminé par le fait que les nouvelles idées émergentes pour la création de programmes sont initialement mises en œuvre dans des outils simples qui soutiennent la recherche et la vérification expérimentale du style proposé, qui sont le plus souvent des langages de programmation. Après avoir généralisé l'expérience initiale, vient une compréhension des avantages et des inconvénients, ce qui permet de passer à la formation de méthodologies garantissant l'utilisation du paradigme dans le développement de grands systèmes logiciels. Si le paradigme développé n'est pas susceptible de servir de base à une méthodologie industrielle, il est rejeté ou appliqué à une échelle limitée. Nous pouvons dire que le paradigme de programmation est mis en œuvre à travers des méthodologies de programmation, qui sont conclues dans un ensemble d'accords et d'accords sur les outils linguistiques de base et leurs combinaisons acceptables et non acceptables pour un paradigme donné.

Selon la méthode de décomposition, les principaux paradigmes de programmation suivants peuvent être distingués, présentés dans le tableau 1.

Tableau 1. Paradigmes de programmation de base

Nom du paradigme

Méthode de décomposition

Exemples de langages de programmation

Impératif

(synonymes : directif, procédural)

Sous-programmes, types de données abstraits

Fortran, C, Pascal, Basique

Déclaratif

(composants : logiques et fonctionnels)

Objectifs exprimés en termes de calcul de prédicats. Règles "si-alors"

Lisp, Scheme, Prologue, ML, Haskell

Orienté objet

Classes et objets

Java, C++, Ruby

Programmation sous contraintes

Relations invariantes, système de restrictions

langages CLP(X), SETL, Prolog III

Scénario

Scénario de traitement ou de contrôle élémentaire

Perl, PHP, Python, ASP

Il convient de noter que le fait de suivre un certain paradigme influence considérablement l'approche technologique de la résolution de problèmes et l'utilisation de divers types de structures heuristiques caractéristiques dans la pratique de la programmation. De manière générale, on peut dire que le choix et l'utilisation d'un paradigme pendant longtemps laissent une certaine empreinte sur la pensée d'un programmeur (surtout un débutant) et il peut être très difficile de briser le cercle vicieux des « clichés » établis lorsque il est nécessaire de résoudre des problèmes non standard. Pour un utilisateur de tout niveau, une fois fait, le choix d'un certain paradigme détermine essentiellement à la fois son attitude envers les technologies informatiques et l'efficacité de leur utilisation.

Actuellement, une connaissance professionnelle de la technologie informatique et un niveau élevé de culture de l'information sont impossibles sans une compréhension claire non seulement des principes de fonctionnement d'un ordinateur, mais, dans une plus large mesure, de ses capacités potentielles. Cette tendance ne peut qu'influencer la structure de l'étude de l'informatique tant à l'université qu'à l'école, car c'est l'enseignement scolaire qui pose les bases fondamentales qui déterminent et soutiennent le développement ultérieur d'un futur spécialiste.

Le problème du développement de la culture algorithmique des écoliers en tant que composante fondamentale de la culture de l'information est résolu du point de vue de divers paradigmes de programmation en fonction d'un certain nombre de facteurs : le programme d'enseignement des cours d'informatique, de matériel et de logiciels, ainsi que le qualités personnelles et professionnelles de l'enseignant. La section « Programmation » dans le cadre de la formation générale des écoliers consiste à étudier les bases de l'impératif ( Basique, Pascal, C , langage algorithmique scolaire) ou orienté objet ( Delphes, C++, Java ) paradigmes. La formation spécialisée des lycéens en sciences naturelles est, en règle générale, également mise en œuvre dans le cadre des paradigmes ci-dessus. Il convient toutefois de noter que l'enseignement de la programmation dans un langage spécifique n'est pas la tâche principale dans la mise en œuvre de la formation algorithmique auprès des écoliers. Une priorité bien plus élevée est la formation à l'approche algorithmique de la résolution de problèmes, la capacité d'évaluer l'efficacité d'un algorithme développé du point de vue du problème à résoudre et le choix de la technologie pour sa mise en œuvre - c'est-à-dire que nous parlons sur la familiarisation avec les méthodes de développement de modèles algorithmiques dont la mise en œuvre est possible dans le cadre de n'importe quel paradigme.

Le développement de divers paradigmes de programmation s'est déroulé en parallèle. Pendant longtemps, l'approche impérative a dominé ; dans les années 70 et 80, l'accent s'est déplacé vers l'étude des paradigmes non classiques ; les années 90 ont été marquées par le développement rapide du paradigme orienté objet et l'introduction de ses éléments dans autres. Le développement des langages de programmation du point de vue de divers paradigmes est présenté à la Fig. 1

Fortran

Algol,C

Pascal

Module

Obéron

Directif

Basique

ZÉZAYER

ML, schéma

Haskell

Déclaratif

Prologue

CPrologue

VB, C++, Pascal Objet

Java, C#

Orienté objet

Petite conversation

Rubis

SETL

Programmation sous contraintes

Prologue III

CPL (X)

Perl

Python

Scénario

PHP, ASP

Fig. 1. Développement de langages et paradigmes de programmation

Afin d'étudier une méthode alternative en programmation, nous pouvons proposer la technologie d'utilisation de symboles récursifsproblèmes lors de l'étude de l'informatique, puisque la récursion, étant un concept mathématique fondamental, est mise en œuvre de manière très similaire dans le contexte de différents paradigmes de programmation. Les constructions récursives, en général, ne sont pas naturelles pour la plupart des langages de programmation et leur mise en œuvre nécessite un certain niveau d'abstraction de la méthodologie choisie pour créer des programmes. Dans le même temps, il convient de prêter attention à l'éventuelle inefficacité et à la complexité importante des algorithmes récursifs dans certains cas. Il est donc conseillé de développer des algorithmes récursifs avec une évaluation ultérieure de leur complexité.

Traçons les capacités conceptuelles des différents paradigmes utilisés pour mettre en œuvre la récursivité.

2. Paradigme impératif.

Programmation impérative – l’une des approches les plus naturelles pour écrire des programmes pour l’architecture très répandue de von Neumann. Le programme dans ce cas se compose d'opérateurs d'affectation et de clauses qui contrôlent la séquence de leur exécution. La programmation directive est basée sur un modèle d'automate d'ordinateur qui sépare les abstractions de l'état et du comportement. Dans ce cas, le programme est considéré comme un processus de changement d'état en exécutant des commandes individuelles. Le caractère impératif ici est compris comme une indication pour le calculateur que Comment résoudre un problème. La récursivité dans les langages directifs est implémentée en créant un type spécial de sous-programmes permettant d'effectuer des appels récursifs et en utilisant une technologie spéciale pour traduire les programmes récursifs en codes machine. Dans les langages directifs, il existe la possibilité d'une alternative entre itération et récursivité, mais c'est l'utilisation de cette dernière qui permet de construire des algorithmes non seulement efficaces, mais aussi faciles à lire.

3.1. Programmation logique est apparu à la suite des recherches d'un groupe de scientifiques français dirigés par Colmerier dans le domaine de l'analyse du langage naturel. Il a ensuite été découvert que la programmation logique est tout aussi efficace pour mettre en œuvre d’autres tâches d’intelligence artificielle, pour lesquelles elle est actuellement principalement utilisée. La programmation logique s'avère également pratique pour mettre en œuvre d'autres tâches complexes.

La programmation logique est basée sur la logique des prédicats. La logique des prédicats est une branche de la logique formelle qui s'est développée au XXe siècle. En programmation logique, l’accent est mis sur la description de la structure d’un problème d’application plutôt que sur l’instruction à l’ordinateur de ce qu’il doit faire. En programmation logique, un programme représente une théorie (décrite dans un langage assez limité) et une affirmation qui doit être prouvée. La preuve de cette affirmation consistera en l’exécution du programme.

Le travail d'un programme dans un langage logique s'effectue en recherchant la preuve de l'énoncé proposé dans la base de connaissances existante, qui est un ensemble de certains faits et règles. La récursivité dans les langages de ce paradigme est mise en œuvre à la fois dans le processus de recherche de preuves et pour préciser le mécanisme d'une telle recherche. L'établissement de la valeur de vérité d'une déclaration est de nature récursive et, par conséquent, la récursivité est mise en œuvre ici de manière assez naturelle.

3.2. Programmation fonctionnelle s'appuie sur la théorie des fonctions récursives et le calcul lambda de Church. L'accent est mis sur la dépendance entre les fonctions vis-à-vis des données. Un programme de fonctions consiste en un ensemble de définitions de fonctions, qui à leur tour représentent des appels à d'autres fonctions et instructions contrôlant la séquence d'appels. Dans les langages fonctionnels, la récursion est mise en œuvre naturellement, puisqu'elle constitue la base fondamentale pour construire la sémantique du langage. En général, un programme fonctionnel ne contient pas d'opérateur d'affectation ; le calcul d'une fonction n'entraîne aucun effet secondaire autre que le calcul réel de sa valeur. Le branchement des calculs est basé sur le mécanisme de traitement des arguments d'une phrase avec sursis, et les calculs cycliques sont mis en œuvre par récursivité.

4. Paradigme orienté objet.

Programmation orientée objet (POO) est une évolution naturelle des méthodologies de programmation antérieures. Le résultat de la décomposition d'objets est un ensemble d'objets, qui sont ensuite implémentés en tant que variables de certains types (classes) spécialement développés, qui constituent un ensemble de champs de données et de méthodes fonctionnant avec ces champs. On peut dire que POO – est la modélisation d'objets à travers des classes hiérarchiquement liées. Dans le même temps, des détails insignifiants de l'objet nous sont cachés, et si nous donnons une commande à un objet, alors il « sait » comment l'exécuter. Un concept fondamental en POO est le concept de responsabilité ou responsabilité pour effectuer une action.

Tous les objets sont des représentants, ou copies, Des classes. La méthode qu'un objet appelle en réponse à un message est déterminée par la classe à laquelle appartient le destinataire du message. Tous les objets d'une même classe utilisent les mêmes méthodes en réponse aux mêmes messages. Les classes sont représentées sous la forme d'une structure arborescente hiérarchique, dans laquelle les classes ayant des caractéristiques plus générales sont situées à la racine de l'arbre, et les classes spécialisées et, finalement, les individus sont situés dans les branches. La décomposition des objets elle-même contient déjà des éléments de constructions récursives, puisque la hiérarchie des objets ainsi obtenue comporte des éléments d'auto-similarité. Comme vous le savez, la programmation orientée objet repose sur trois concepts principaux : l'encapsulation (masquer des données dans une classe ou une méthode) ; héritage; polymorphisme. Encapsulation peut être pensé comme une coque de protection autour du code des données avec lesquelles ce code opère. Le shell définit le comportement et protège le code contre tout accès arbitraire de l'extérieur. Héritage - est le processus par lequel un type hérite des propriétés d'un autre type. Polymorphisme est un concept qui permet d'avoir différentes implémentations pour une même méthode, qui seront choisies en fonction du type d'objet passé à la méthode lors de son appel.

Le paradigme orienté objet occupe une position particulière parmi tous ceux existants, car la plupart des langages modernes de styles variés sont orientés objet, mais en général, l'implémentation orientée objet du langage diffère considérablement de celle standard.

La récursion dans ce paradigme est mise en œuvre à la fois dans le processus de décomposition des objets et de manière directe. En général, le développement de programmes orientés objet est plusieurs fois plus difficile que les programmes traditionnels, mais la construction d'une hiérarchie récursive d'objets est non seulement tout à fait réalisable, mais aussi une tâche vitale pour les écoliers.

5. Programmation sous contraintes.

La programmation par contraintes est une direction relativement nouvelle dans la programmation déclarative. Elle est apparue dans les années 80 du XXe siècle grâce au développement des systèmes informatiques symboliques, de l’intelligence artificielle et de la recherche opérationnelle. L'idée de base de la programmation par contraintes est de définir un ensemble de variables et de définir les contraintes qu'elles doivent satisfaire, et le système trouve les valeurs appropriées.

La programmation par contraintes est étroitement liée à la programmation logique traditionnelle. La plupart des systèmes de programmation contraints sont un interpréteur de langage Prologue avec un mécanisme intégré pour résoudre une certaine classe de problèmes de satisfaction de contraintes. La programmation dans de tels systèmes est appelée programmation logique par contraintes (CLP), et la plupart des langages ou bibliothèques sont appelés CLP(X), où X indique la classe de problèmes à résoudre.

Par exemple, CLP(B) signifie la capacité de résoudre des équations avec des variables booléennes. CLP(Q) sont des équations en nombres rationnels et CLP(R) sont en nombres réels. Les solveurs les plus populaires pour les problèmes sur des ensembles finis d’entiers sont CLP(FD).

L'énoncé du problème est un ensemble fini de variables X = ( X 1 , ..., Xn ), ensembles finis (dénombrables) correspondants de valeurs D X = ( dx 1 , ..., dxn ), et un ensemble de restrictions C = ( c 1 ,..., c m ). Un système de contraintes peut inclure des équations, des inégalités, des fonctions logiques, ainsi que toute construction formelle admissible reliant les variables de l'ensemble. X . La solution au problème est de construire un ensemble de variables qui satisfait toutes les contraintes c je ,où je = 1,.., m.

Sémantiquement, la programmation par contraintes diffère de la programmation logique traditionnelle principalement en ce que l'exécution du programme n'est pas considérée comme la preuve d'une déclaration, mais comme la recherche des valeurs des variables. Dans ce cas, l'ordre interne de la solution pour l'exécution des contraintes individuelles n'a pas d'importance et le système de programmation par contraintes cherche, en règle générale, à optimiser l'ordre de preuve des déclarations afin de minimiser le retour en arrière en cas d'échec. Ainsi, l'utilisation d'un schéma de récursion vers l'arrière a lieu. Les constructions récursives sont généralement implémentées de la même manière qu'en programmation logique.

6. Paradigme du scénario.

Langages de script. Les langages de script ont fait d’énormes progrès ces dernières années. Il y a dix ans, on leur assignait le rôle de moyens auxiliaires, mais aujourd'hui le scepticisme à leur égard a été remplacé par l'intérêt et la reconnaissance.

Les langages de script ont une histoire de développement assez longue. Le concept de programmation scriptée est apparu comme une évolution naturelle du langage ZÉZAYER . Les premiers langages de script incluent des contrôles shell de commande intégrés pour le système d'exploitation. Un fichier batch dans le langage du système d'exploitation est un script de contrôle qui exécute une séquence d'actions donnée. On peut dire que le script « colle » les différentes parties du système d'exploitation et interagit avec elles.

Actuellement, la popularité des langages de script est associée au développement l'Internet -technologie. Les langages de script sont utilisés pour créer des la toile -des pages dont le contenu est modifié en fonction des actions de l'utilisateur et de l'état des autres pages et données.

Une caractéristique distinctive des langages de script est la formation d'un programme dans un langage externe à la suite de l'exécution d'un script. Un langage de script repose dans une faible mesure sur la création du produit final à partir de zéro et, dans une plus large mesure, sur l'utilisation des capacités du système d'exploitation, de l'environnement graphique, du moteur de service d'application et d'autres composants similaires, dont l'interaction est réalisée à l'aide de scripts.

Le paradigme du scénario consiste à diviser une tâche en parties distinctes, dont chacune est résolue par un logiciel spécialisé ; le scénario agit comme un « répartiteur » chargé d'organiser leur interaction.

Langages de script pour la toile -les développements ont été principalement créés dans les années 90 XX siècle et incluent des éléments de divers paradigmes de programmation, de l’impératif à l’orienté objet. Parmi les systèmes de script les plus puissants et les plus populaires figurent les suivants : Perl, Python, PHP, ASP . La syntaxe et la sémantique des différents langages de script sont assez similaires. Cela est dû à l’influence significative des langages C et C++ sur la communauté des programmeurs. La prise en charge de la récursivité dans les langages de script est implémentée de la même manière que les paradigmes impératifs et orientés objet.

La littérature méthodologique et technique moderne fournit assez souvent des exemples de mise en œuvre de programmes récursifs dans divers paradigmes de programmation. La grande attention portée à la récursivité est une confirmation du fait que la méthodologie récursive permet de se concentrer sur la logique même de résolution d'un problème, et non sur les détails de sa mise en œuvre. Ainsi, nous pouvons conclure que la récursivité n’est pas seulement l’une des méthodes alternatives de programmation, mais aussi un certain style de pensée algorithmique abstraite.

Aujourd'hui, nous comprendrons ce que sont les paradigmes de programmation et les caractéristiques distinctives de chacun d'eux.

La définition d’un paradigme ressemble généralement à ceci :

Les paradigmes sont un ensemble de principes d'idées et de concepts qui déterminent le style d'écriture d'un programme informatique.

Il faut aussi noter que les paradigmes existent non seulement en programmation, mais aussi en philosophie, etc.

Sur la base de cette définition, nous pouvons dire qu'un paradigme de programmation est un ensemble spécifique de principes pour l'écriture de logiciels informatiques.

Types de paradigmes de programmation

Il se trouve que de nombreux programmeurs ont proposé leurs principes, leurs méthodes d'écriture d'un programme et, par conséquent, un grand nombre de paradigmes sont apparus.

Nous listons les plus populaires d'entre eux :

  • Programmation impérative
  • Programmation structurée
  • Programmation déclarative
  • Programmation orientée objet

En fait, il existe bien d’autres paradigmes que nous n’avons pas répertoriés dans la liste ; nous ne couvrons que les plus célèbres d’entre eux.

Examinons brièvement chacun d'eux

Programmation impérative

Le tout premier paradigme qui s'est formé immédiatement après l'avènement des ordinateurs.

de l'anglais impératif- commande

Particularités de la programmation impérative :

Dans le code source, ce sont les « ordres » de commandes qui sont écrits, et non les classes, comme c'est le cas par exemple dans la programmation orientée objet.

Toutes les instructions doivent être exécutées séquentiellement, les unes après les autres (par exemple, on ne peut pas passer d'une section de code à une autre)

Une fois les instructions exécutées, les données peuvent être écrites dans la mémoire et lues dans la mémoire.

Langages représentatifs du paradigme : codes machine (binaires), Assembly, fortran, algol, cobol

Programmation structurée

Cette méthode a été proposée par un scientifique néerlandais

Edsger Dijkstra 1930 - 2002

Mais le concept principal de la programmation structurée est le concept blocs et hiérarchique et qui utilise trois structures de contrôle principales :

  • sous-séquence
  • ramification

La programmation structurée comporte également 7 principes décrits par Dijkstra :

  1. refus total d'utiliser l'opérateur goto ; *
  2. tout programme est construit sur trois structures de contrôle : séquence, cycle et branchement ;
  3. les structures de contrôle de base peuvent être imbriquées les unes dans les autres à volonté ;
  4. Les composants répétitifs doivent être conçus comme des sous-programmes ;
  5. Chaque structure logique doit être formatée comme bloc;
  6. toutes les structures doivent avoir une entrée et une sortie, et pas plus ;
  7. le développement du programme doit procéder étape par étape en utilisant une méthode « échelle » (méthode de haut en bas)

* —
goto est un opérateur de saut inconditionnel largement utilisé dans les années 1970.

Programmation déclarative

représente une spécification pour résoudre un problème et décrit quel est le problème et le résultat attendu du travail.

Elle contraste avec la programmation impérative car la programmation déclarative décrit Quoi faire, et dans un autre Comment faire.

Programmation orientée objet (POO)

est le paradigme le plus populaire et le plus couramment utilisé, accepté dans le monde entier par presque tous les programmeurs. Toute programmation industrielle est construite là-dessus. L'idée principale est de représenter un programme sous forme d'objets, qui à leur tour représentent une instance d'une classe, et les classes, à leur tour, forment une hiérarchie d'héritage.

Concepts de base de la POO

Abstraction de données— mettre en évidence les informations significatives et les séparer des informations non significatives.

Encapsulation- c'est une propriété qui permet de combiner des données et des méthodes dans une classe

Héritage— une propriété qui permet de créer une nouvelle classe basée sur une ancienne (hériter de toutes ses propriétés)

Polymorphisme- et cette propriété permet d'utiliser des objets avec la même interface

(BASES DE L'ALGORITHMISATION ET DE LA PROGRAMMATION)
  • Paradigmes et technologies de programmation
    Objectifs du chapitre 1. Étudier les concepts de « paradigme de programmation », de « technologie de programmation ». 2. Obtenez une compréhension générale des technologies modernes de développement de logiciels. 3. Étudiez les étapes de création d'un programme structurel. 4. Familiarisez-vous avec les modèles de cycle de vie du développement logiciel...
  • Paradigmes de programmation SE
    SWEBOK comprend un certain nombre de paradigmes de programmation Voir : Lavrishcheva E. M. Paradigmes de programmation de type assemblage en génie logiciel // UKRProg-2014. N° 2-3. p. 121-133. . Ses bootcamps de programmation comprennent les éléments suivants : programmation procédurale(cours CS1011 « Fondamentaux de la programmation »),...
    (GÉNIE LOGICIEL ET TECHNOLOGIES POUR LA PROGRAMMATION DE SYSTÈMES COMPLEXES)
  • PARADIGMES DE PROGRAMMATION
    PROGRAMMATION MODULAIRE. CONCEPTS DE BASE L'un des problèmes clés de la programmation moderne est la réutilisation des modules et des composants (KPI). Il peut s'agir de programmes, de sous-programmes, d'algorithmes, de spécifications, etc., adaptés au développement de nouveaux logiciels plus complexes.
    (GÉNIE LOGICIEL. PARADIGMES, TECHNOLOGIES ET OUTILS DE CAS)
  • Paradigme procédural
    Le paradigme procédural a été chronologiquement premier et a prévalu pendant longtemps. Actuellement, il cède progressivement la place au paradigme orienté objet, même s'il occupe encore environ la moitié du marché du développement logiciel. Il est appliqué à tous les niveaux du développement logiciel...
    (ALGORITHMISATION ET PROGRAMMATION)
  • Mémoire déclarative et procédurale
    Une autre manière indépendante d'organisation fonctionnelle de la mémoire, indépendante des autres, est sa division en déclaratif Et de procédure. Ces deux méthodes d'organisation de la mémoire ont une base fonctionnelle tout à fait compréhensible. Une forme de mémoire déclarative est conçue pour soutenir le mental...
    (Psychologie et pédagogie)
  • Un paradigme de programmation est un ensemble d'idées et de concepts qui déterminent le style d'écriture de programmes.

    Le paradigme impératif décrit le processus de calcul sous forme d'instructions qui modifient l'état du programme. Un programme impératif est très similaire aux ordres impératifs dans les langues naturelles, c'est-à-dire qu'il s'agit d'une séquence de commandes que l'ordinateur doit exécuter. Basé sur le modèle d'automate fini Turing-Post.

    Les premiers langages impératifs étaient les codes machine - le langage de programmation natif de l'ordinateur. Dans ces langages, les instructions étaient extrêmement simples, ce qui réduisait la charge sur les ordinateurs, mais rendait difficile l'écriture de programmes volumineux. En 1954, apparaît le premier langage de programmation « humain » : FORTRAN, puis ALGOL, COBOL, BASIC, Pascal, C.

    L'un des traits caractéristiques de la programmation impérative est la présence de variables avec opération « d'affectation destructive ». Autrement dit, il y avait une variable A, elle avait une valeur X. L'algorithme demande d'attribuer la valeur Y à la variable A à l'étape suivante. La valeur qu'avait A sera « oubliée pour toujours ».

    La programmation impérative est la plus adaptée à la mise en œuvre de petites sous-tâches, pour lesquelles la vitesse d'exécution sur les ordinateurs modernes est très importante. De plus, le travail avec des appareils externes est généralement décrit en termes d'exécution séquentielle d'opérations (« ouvrir le robinet, puiser de l'eau »), ce qui fait de ces tâches des candidats idéaux pour une mise en œuvre impérative.

    Le choix du cadre du paradigme impératif pour l'enseignement des bases de la programmation semble ne faire aucun doute. Il y a plusieurs raisons à cela:

    · le paradigme impératif est le plus proche de la nature humaine et du concept intuitif d'un algorithme dans les premiers stades du développement de la pensée (il existe une expérience positive d'éducation au développement avec des éléments d'algorithmique déjà à l'école primaire) ;

    · la programmation dans le cadre du paradigme impératif est efficace pour une large classe de tâches, dont beaucoup relèvent de la zone de développement proximal des élèves des classes supérieures de l'école de base ;

    · le paradigme impératif est le plus proche de la nature d'un ordinateur, des principes de base de son fonctionnement, puisque, malgré toute la complexité d'un ordinateur moderne, au niveau matériel il peut encore être considéré comme une sorte d'automate (processeur + mémoire + ...) avec un ensemble fini d'états (contenus) de mémoire) ;

    · la part des produits logiciels créés exclusivement dans le cadre du paradigme de programmation déclarative est faible ; En règle générale, lors de la résolution de problèmes, une combinaison de paradigmes est utilisée, dont l'un est impératif ;

    · un large choix de systèmes de programmation sous forme de logiciels indépendants et sous forme de sous-systèmes intégrés à d'autres systèmes, permettant le développement de produits logiciels utilisant le paradigme impératif ;


    · une vaste gamme de publications éducatives, de référence et autres sur les systèmes de programmation pertinents sous forme papier et électronique sur divers médias et sur le réseau mondial.

    Inconvénient : sous sa forme pure, il ne permet de résoudre que des problèmes très simples.

    La programmation événementielle est une programmation dans laquelle les réactions du programme à divers événements (actions de l'utilisateur) sont spécifiées. Le PMS peut être considéré comme un « descendant » du paradigme impératif. Le SUP comprend 2 sous-classes :

    1.La programmation parallèle représente un programme comme un ensemble de processus communicants pouvant être exécutés en parallèle. De tels programmes peuvent être exécutés soit sur un seul processeur (en alternant l'exécution des étapes de chaque processus), soit sur plusieurs.

    Dans un système de processus parallèles, chaque processus individuel traite les événements. Les événements peuvent être soit généraux pour l'ensemble du système, soit individuels pour un ou plusieurs processus. En de tels termes, il est très pratique de décrire, par exemple, des éléments d'une interface utilisateur graphique ou la modélisation de processus réels (par exemple, le contrôle du trafic) - puisque le concept d'événement est naturel pour de telles tâches.

    2.La programmation orientée objet est une technologie de programmation dans laquelle un programme est considéré comme un ensemble d'objets et de leurs interactions. Chaque objet programme est une instance d’une classe ; - les classes peuvent hériter des attributs et méthodes de leurs classes parentes, tout en ajoutant les leurs. La hiérarchie des classes vous permet de modéliser l'essence du problème à résoudre à plusieurs niveaux de détail, puis d'utiliser une classe qui correspond au niveau de détail requis pour résoudre une sous-tâche spécifique.

    Il est important de souligner les propriétés de base suivantes des objets :

    1.) Puisqu'un objet peut en influencer un autre uniquement en envoyant des messages à ce dernier, il ne peut en aucun cas travailler directement avec les propres données de « l'interlocuteur » et, par conséquent, ne peut pas violer leur cohérence interne. Cette propriété (masquage des données) est communément appelée encapsulation.

    2.) Étant donné que les objets interagissent uniquement par l'échange de messages, les objets interlocuteurs peuvent ne rien savoir de l'implémentation des gestionnaires de messages dans leur homologue. L'interaction se produit uniquement en termes de messages/événements, qui sont assez faciles à lier au domaine. Cette propriété (une description de l’interaction uniquement en termes de domaine) est appelée abstraction.

    3.) Les objets interagissent exclusivement en s’envoyant des messages. Par conséquent, si dans un scénario d'interaction d'objets vous remplacez un objet arbitraire par un autre capable de traiter les mêmes messages, le scénario sera également implémentable. Cette propriété (la capacité de remplacer un objet par un autre objet ayant une structure de classe similaire) est appelée polymorphisme.

    De nombreux langages modernes prennent en charge la POO, bien qu'à des degrés divers : les langages purement orientés objet, tels que Smalltalk et Ruby, sont conçus pour prendre en charge et même appliquer un style de développement orienté objet, et ne prennent pas en charge d'autres styles de programmation ; - les langages à prédominance objet, tels que Java, C++ et Python, sont conçus principalement pour prendre en charge la POO, mais permettent l'utilisation d'éléments de programmation procédurale ; - Historiquement, les langages procéduraux, par exemple Perl et Fortran 2002, ont été affinés et la prise en charge de certains éléments POO a été ajoutée.

    Le paradigme de programmation déclarative définit le processus de calcul en décrivant la logique du calcul lui-même, plutôt que la logique de contrôle du programme.

    La programmation déclarative est à l’opposé de la programmation impérative ; le premier décrit ce qui doit être fait et le second décrit exactement comment le faire.

    Les types de programmation déclarative les plus importants sont la programmation fonctionnelle et logique (ou relationnelle).

    1.La programmation fonctionnelle est l'une des alternatives à l'approche impérative. Il est basé sur le calcul lambda de Church. En programmation impérative, les algorithmes sont des descriptions d’opérations exécutées séquentiellement. Il existe le concept d'une « étape d'exécution actuelle » (c'est-à-dire le temps) et d'un « état actuel » qui change au fil du temps.

    Il n'y a pas de notion de temps en programmation fonctionnelle. Les programmes sont des expressions ; l’exécution du programme consiste à évaluer ces expressions.

    Puisque l’ordre dans lequel les sous-expressions sont évaluées n’a pas d’importance, la programmation fonctionnelle peut être implémentée naturellement sur les plates-formes prenant en charge le parallélisme.

    La programmation fonctionnelle, comme d'autres modèles de programmation « non impératifs », est généralement utilisée pour résoudre des problèmes difficiles à formuler en termes d'opérations séquentielles. Presque toutes les tâches liées à l’intelligence artificielle entrent dans cette catégorie. Parmi elles, il convient de noter les tâches de reconnaissance d'images, de communication avec l'utilisateur en langage naturel, de mise en œuvre de systèmes experts, de preuve automatisée de théorèmes et de calculs symboliques. Ces tâches sont loin de la programmation d’applications traditionnelle et ne reçoivent donc pas beaucoup d’attention dans les programmes d’études en informatique.

    Programmation logique

    En programmation fonctionnelle, les programmes sont des expressions et leur exécution consiste à calculer leur valeur. En programmation logique, un programme est une théorie (décrite dans un langage assez limité) et un énoncé qui doit être prouvé. La preuve de cette affirmation consistera en l’exécution du programme.

    La programmation logique et le langage Prolog sont nés de recherches dans le domaine de l'analyse du langage naturel. Par la suite, on a découvert que la programmation logique est tout aussi efficace pour mettre en œuvre d’autres tâches d’intelligence artificielle.

    La programmation logique permet une mise en œuvre parallèle naturelle.

    Conférence n° Paradigmes de programmation. Programmation impérative.

      Le concept d'un paradigme de programmation.

      Classification des paradigmes de programmation.

      Programmation impérative.

    1. Le concept d'un paradigme de programmation.

    Un paradigme de programmation est un ensemble d'approches, de méthodes, de stratégies, d'idées et de concepts qui déterminent le style d'écriture de programmes.

    Le paradigme de programmation dans l'industrie de la programmation moderne est très souvent déterminé par la boîte à outils du programmeur (langage de programmation et système d'exploitation).

    Un paradigme de programmation représente (et définit) la manière dont un programmeur perçoit l'exécution d'un programme. Par exemple, en programmation orientée objet, le programmeur considère le programme comme un ensemble d’objets en interaction, alors qu’en programmation fonctionnelle, le programme est représenté comme une chaîne d’évaluations de fonctions.

    L'engagement d'une certaine personne envers un paradigme particulier est parfois si fort que les débats sur les avantages et les inconvénients de divers paradigmes sont classés dans les cercles informatiques comme des guerres dites « de religion ».

    Histoire du terme

    Le terme « paradigme » doit apparemment son sens moderne dans le domaine scientifique et technique à Thomas Kuhn et à son livre « La structure des révolutions scientifiques » (voir paradigme). Kuhn a appelé les paradigmes les systèmes établis de vues scientifiques au sein desquels la recherche est menée. Selon Kuhn, dans le processus de développement d'une discipline scientifique, un paradigme peut être remplacé par un autre (comme, par exemple, la mécanique céleste géocentrique de Ptolémée a été remplacée par le système héliocentrique de Copernic), tandis que l'ancien paradigme continue d'exister. depuis un certain temps et même se développer du fait que nombre de ses partisans se révèlent, pour une raison ou une autre, incapables de s'adapter pour travailler dans un paradigme différent.

    Le terme « paradigme de programmation » a été utilisé pour la première fois par Robert Floyd dans sa conférence lauréate du prix Turing.

    Floyd note qu'en programmation, on peut observer un phénomène similaire aux paradigmes de Kuhn, mais contrairement à eux, les paradigmes de programmation ne s'excluent pas mutuellement :

    Si le progrès de l'art de la programmation dans son ensemble nécessite l'invention et l'amélioration constantes de paradigmes, alors l'amélioration de l'art d'un programmeur individuel nécessite qu'il élargisse son répertoire de paradigmes.

    Ainsi, selon Robert Floyd, contrairement aux paradigmes du monde scientifique décrits par Kuhn, les paradigmes de programmation peuvent être combinés, enrichissant ainsi les outils du programmeur.

    2. Classification des paradigmes de programmation.

    Le paradigme principal de la programmation appliquée basé sur le contrôle impératif et le style de construction de programme par opérateur procédural a gagné en popularité il y a plus de cinquante ans dans le domaine des activités hautement professionnelles des spécialistes de l'organisation des processus informatiques et d'information. La dernière décennie a considérablement élargi la géographie de l’informatique, l’étendant au domaine de la communication de masse et des loisirs. Cela modifie les critères d'évaluation des systèmes d'information et les préférences dans le choix des outils et des méthodes de traitement de l'information.

    Les paradigmes généraux de programmation apparus au tout début de l'ère de la programmation informatique - les paradigmes de programmation appliquée, théorique et fonctionnelle, entre autres - sont les plus stables.

    La programmation appliquée est soumise à une orientation problème, reflétant l'informatisation de l'information et les processus informatiques du traitement numérique, étudiés bien avant l'avènement des ordinateurs. C’est ici qu’un résultat pratique clair est rapidement apparu. Naturellement, dans de tels domaines, la programmation diffère peu du codage: pour cela, en règle générale, le style opérateur de représentation des actions est suffisant. Dans la pratique de la programmation appliquée, il est d'usage de faire confiance à des modèles et des bibliothèques de procédures éprouvés et d'éviter les expériences risquées. L'exactitude et la stabilité des calculs scientifiques sont valorisées. Le langage Fortran est un vétéran de la programmation d'applications. Ce n'est qu'au cours de la dernière décennie qu'il est devenu quelque peu inférieur dans ce domaine au Pascal-C, et sur les supercalculateurs aux langages de programmation parallèles tels que Sisal. [, , , ]

    La programmation théorique adhère à une orientation de publication visant la comparabilité des résultats d'expériences scientifiques dans le domaine de la programmation et de l'informatique. La programmation tente d'exprimer ses modèles formels, d'en montrer la signification et le caractère fondamental. Ces modèles ont hérité des principales caractéristiques de concepts mathématiques connexes et se sont imposés comme une approche algorithmique en informatique. Le désir de preuve des constructions et d'évaluation de leur efficacité, plausibilité, exactitude, justesse et autres relations formalisées dans les diagrammes et les textes de programme a servi de base à une programmation structurée [, ] et à d'autres méthodes pour assurer la fiabilité du processus de développement du programme, par exemple , programmation compétente. Les sous-ensembles standard d'Algol et Pascal, qui servaient de matériel de travail pour la théorie de la programmation, ont été remplacés par des langages applicatifs plus pratiques pour l'expérimentation, tels que ML, Miranda, Scheme et d'autres dialectes Lisp. Ils sont désormais rejoints par des sous-ensembles de C et Java.

    La programmation fonctionnelle a été créée en hommage à l'orientation mathématique dans la recherche et le développement de l'intelligence artificielle et au développement de nouveaux horizons en informatique. Une approche abstraite de la présentation de l'information, un style laconique et universel de construction des fonctions, la clarté de l'environnement d'exécution pour différentes catégories de fonctions, la liberté des constructions récursives, la confiance dans l'intuition du mathématicien et du chercheur, l'évitement du fardeau du prématurément. résoudre des problèmes sans principes d'allocation de mémoire, rejet des restrictions déraisonnables sur la portée des définitions - tout cela est lié par John McCarthy à l'idée du langage Lisp. La réflexion et la validité méthodologique des premières implémentations Lisp ont permis d'accumuler rapidement de l'expérience dans la résolution de nouveaux problèmes et de les préparer à la programmation appliquée et théorique. Actuellement, il existe des centaines de langages de programmation fonctionnels axés sur différentes classes de tâches et types de moyens techniques. [,,,,,,]

    Les outils et méthodes de programmation de base ont évolué à mesure que la complexité des problèmes à résoudre augmentait. Il y a eu une stratification des paradigmes de programmation en fonction de la profondeur et de la généralité de l'élaboration des détails techniques de l'organisation des processus de traitement informatique de l'information. Différents styles de programmation ont émergé, dont les plus matures sont la programmation de bas niveau (orientée machine), la programmation système, la logique déclarative, l'optimisation-transformation et la programmation haute performance/parallèle.

    La programmation de bas niveau se caractérise par une approche matérielle de l'organisation du fonctionnement d'un ordinateur, visant à accéder à toutes les capacités matérielles. L'accent est mis sur la configuration matérielle, l'état de la mémoire, les commandes, les transferts de contrôle, le séquencement des événements, les exceptions et les surprises, les temps de réponse des appareils et le succès des réponses. Le langage assembleur a été éclipsé pendant un certain temps en tant que support visuel de choix par Pascal et C, même en microprogrammation, mais les améliorations de l'interface utilisateur pourraient retrouver sa place. [,,,]

    La programmation système se développe depuis longtemps sous la pression du service et du travail sur mesure. L'approche de fabrication inhérente à un tel travail repose sur une préférence pour des processus reproductibles et des programmes stables conçus pour un usage répété. Pour de tels programmes, un schéma de traitement de compilation, une analyse statique des propriétés, une optimisation et un contrôle automatisés sont justifiés. Ce domaine est dominé par le style de programmation impératif-procédural, qui est une généralisation directe du style opérateur de programmation d'applications. Il permet une certaine standardisation et une programmation modulaire, mais il acquiert des structures, des spécifications, des méthodes de test, des outils d'intégration de programmes assez complexes, etc. Les exigences strictes en matière d'efficacité et de fiabilité sont satisfaites par le développement d'outils professionnels qui utilisent des heuristiques sémantiques associatives complexes ainsi que des méthodes de conception et de génération de programmes basées sur la syntaxe. Le potentiel indéniable de tels outils dans la pratique est limité par la complexité du développement - une exigence de qualification se pose.

    La programmation haute performance vise à atteindre les performances maximales possibles lors de la résolution de problèmes particulièrement importants. La réserve naturelle de performances informatiques réside dans les processus parallèles. Leur organisation nécessite une réflexion approfondie sur les relations temporelles et un style de gestion non impératif des actions. Les supercalculateurs prenant en charge le calcul haute performance nécessitaient des techniques de programmation système spéciales. L'approche de réseau graphique pour représenter les systèmes et les processus pour les architectures parallèles a été exprimée dans des langages de programmation parallèles spécialisés et des supercompilateurs adaptés pour mapper la hiérarchie abstraite des processus au niveau des tâches sur la structure spatiale spécifique des processeurs d'équipements réels [,,] .

    La programmation déclarative (logique) est née d'une simplification de la programmation fonctionnelle pour les mathématiciens et les linguistes résolvant des problèmes de traitement symbolique. La possibilité d'utiliser le non-déterminisme comme base conceptuelle est particulièrement intéressante, ce qui nous libère d'un ordre prématuré lors de la programmation du traitement des formules. Le style de production consistant à générer des processus avec des retours est suffisamment naturel pour qu'une approche linguistique clarifie les connaissances formalisées par des experts et réduit la barrière de départ à la mise en œuvre de systèmes d'information.

    La programmation transformationnelle combinait méthodologiquement les techniques d'optimisation de programme, de macrogénération et de calcul partiel. Un concept central dans ce domaine est l’équivalence de l’information. Elle se manifeste dans la définition des transformations des programmes et des processus, dans la recherche de critères d'applicabilité des transformations, dans le choix d'une stratégie pour leur utilisation. Calculs mixtes, actions différées, programmation paresseuse, processus retardés, etc. sont utilisés comme méthodes pour augmenter l'efficacité du traitement de l'information dans certaines conditions supplémentaires identifiées. [,]

    Le développement ultérieur des paradigmes de programmation reflète un changement dans le cercle des personnes intéressées par l'utilisation des systèmes d'information. La formation d'approches étendues de la programmation est une réponse naturelle aux améliorations radicales des caractéristiques de performance des équipements et des réseaux informatiques. Il y a une transition des outils informatiques de la classe des outils techniques vers la classe des appareils électroménagers. Le terrain est apparu pour mettre à jour les approches de programmation, ainsi que pour la possibilité de réhabiliter des idées anciennes qui ont été peu développées en raison de la faible technologie et des performances des ordinateurs. Il est intéressant de développer des approches de recherche, évolutives, cognitives et d'adaptation en matière de programmation, qui créent la perspective d'un développement rationnel des ressources d'information réelles et du potentiel informatique. [,]

    Une approche de recherche avec un style de jeu éducatif de programmation professionnelle, éducative et amateur peut donner une impulsion à l'ingéniosité dans l'amélioration de la technologie de programmation qui ne pouvait pas faire face aux phénomènes de crise sur la base d'éléments précédente. [,]

    L'approche évolutive avec un style mobile de raffinement des programmes est assez clairement visible dans le concept de programmation orientée objet, qui évolue progressivement vers une programmation orientée sujet et même orientée ego. La réutilisation des définitions et l'héritage des propriétés des objets peuvent allonger le cycle de vie des environnements d'information débogués, augmenter la fiabilité de leur fonctionnement et leur facilité d'utilisation. Une approche cognitive avec un style interopérable de développement d'interfaces visuelles de systèmes ouverts et l'utilisation de nouveaux outils audio-vidéo et de dispositifs non standard ouvrent la voie à l'amélioration de la perception d'informations complexes et à la simplification de leur traitement adéquat. [,]

    Une approche d'adaptation avec un style ergonomique de conception individualisée de systèmes d'information personnalisés offre aux informaticiens la possibilité de programmer, d'organiser et de soutenir avec compétence des processus technologiques en temps réel sensibles au facteur humain et au transfert de système [,].

    La domination d'une ligne architecturale, d'une interface standard, d'une technologie de programmation standard, etc., qui se stabilise aujourd'hui. se heurte à une perte d’agilité lors de la mise à jour des technologies de l’information. Les personnes habituées à tout assimiler fermement une fois pour toutes sont particulièrement vulnérables à cet égard. Lors de l'apprentissage des langages de programmation, de tels problèmes sont évités en enseignant simultanément différents langages de programmation ou en pré-présentant la base, qui définit la structure grammaticale pour généraliser des concepts dont la variabilité est difficile à saisir dans des exemples pédagogiques simplifiés. C'est précisément la base que constitue l'étude de la programmation fonctionnelle dans la mesure où elle vise à présenter et à analyser les paradigmes qui se sont développés dans la pratique de la programmation dans différents domaines d'activité avec différents niveaux de qualifications spécialisées, ce qui peut être utile comme base conceptuelle. base pour l'étude de nouveaux phénomènes en informatique.

    Le paradigme de programmation est un outil permettant de façonner le comportement professionnel. L'informatique est passée du statut de programmation professionnelle d'une élite hautement qualifiée de spécialistes techniques et de scientifiques au passe-temps gratuit d'une partie active d'une société civilisée. La maîtrise des systèmes d'information par la compréhension en vue d'une action compétente et d'une utilisation responsable de la technologie a été remplacée par des compétences intuitives d'influence chaotique sur l'environnement de l'information avec un modeste espoir de chance, sans prétention à la connaissance. La maintenance des centres d'utilisation partagés, le support professionnel de l'intégrité de l'information et la préparation des données ont presque complètement cédé la place au libre-service des ordinateurs personnels, au fonctionnement indépendant des réseaux et des serveurs hétérogènes avec l'interaction de diverses communications.

    La juxtaposition des programmes en cours de développement, des données en cours de traitement et de la gestion des tâches laisse place à l'idée d'interfaces conçues pour participer aux flux d'informations comme la navigation. Les anciens critères de qualité : rapidité, économie de mémoire et fiabilité du traitement de l'information sont de plus en plus éclipsés par l'attrait du jeu et l'étendue de l'accès aux ressources d'information mondiales. Les systèmes logiciels fermés offrant des garanties connues de qualité et de fiabilité sont remplacés par des systèmes d'information ouverts dont la composition, les méthodes de stockage et de traitement de l'information sont imprévisibles.

    De nombreux concepts importants pour la pratique de la programmation, tels que les événements, les exceptions et les erreurs, le potentiel, la hiérarchie et l'orthogonalité des constructions, les points d'extrapolation et de croissance du programme, la mesure de la qualité, etc. n’a pas atteint un niveau suffisant d’abstraction et de formalisation. Cela vous permet de prédire l'évolution des paradigmes de programmation et de sélectionner du matériel pédagogique pour l'avenir de la programmation de composants (COM/DCOM, Corba, UML, etc.). Si les moyens et méthodes traditionnels de sélection de composants réutilisables étaient soumis au critère de modularité, compris comme le choix optimal d'un couplage minimal avec une fonctionnalité maximale, alors la base d'éléments moderne permet le fonctionnement d'unités multi-contacts effectuant des opérations simples. [,,,,,]

    Ces symptômes de mise à jour du paradigme de programmation déterminent la direction des changements qui se produisent dans le système de concepts de base, dans le concept d'information et d'informatique. La tendance à utiliser des interprètes (plus précisément, une compilation incomplète) au lieu de compilateurs, annoncée dans le concept de Java par rapport à C, et la tentation de la programmation orientée objet dans le contexte du style de programmation impératif-procédural généralement accepté peuvent être vu comme un mouvement implicite vers un style fonctionnel. Le pouvoir de modélisation des formules fonctionnelles est suffisant pour une représentation complète des différents paradigmes, ce qui permet, sur leur base, d'extrapoler l'acquisition de compétences pratiques dans l'organisation des processus d'information pour le futur.

    Au milieu du XXe siècle dernier, le terme « programmation » n’impliquait pas une connexion avec un ordinateur. On pouvait y voir le titre du livre "Computer Programming". Désormais, par défaut, ce terme désigne l'organisation des processus sur les ordinateurs et les réseaux informatiques.

    La programmation en tant que science diffère considérablement des mathématiques et de la physique en termes d'évaluation des résultats. Le niveau des résultats obtenus par les physiciens et les mathématiciens est généralement évalué par des spécialistes de qualifications similaires ou supérieures. Dans l'évaluation des résultats de la programmation, l'évaluation de l'utilisateur, qui ne prétend pas avoir de connaissances en programmation, joue un rôle important. Par conséquent, contrairement aux sciences conventionnelles, les spécialistes en programmation remplissent en partie la fonction de traduire leurs termes professionnels en concepts utilisateur.

    La programmation a sa propre méthode spécifique pour établir la fiabilité des résultats - il s'agit d'une expérience informatique. Si en mathématiques la fiabilité se résume à des constructions démonstratives compréhensibles uniquement par des spécialistes, et en physique - à une expérience de laboratoire reproductible nécessitant un équipement spécial, alors une expérience informatique peut être accessible au grand public.

    Une autre caractéristique de la programmation vient de sa dépendance à l’égard d’une technologie électronique en développement rapide. Pour cette raison, les connaissances en programmation sont une combinaison de classiques et de mode. Les connaissances spécifiques sur les nouveaux produits à la mode deviennent obsolètes. Par conséquent, pour mettre à jour rapidement les connaissances et les compétences, vous avez besoin d'une base classique dont le but direct n'est pas entièrement évident pour les utilisateurs et les débutants. [,,]

    La programmation utilise des appareils mathématiques comme base conceptuelle (théorie des ensembles, théorie des nombres, algèbre, logique, théorie des algorithmes et des fonctions récursives, théorie des graphes, etc.)

    Les critères de qualité des programmes sont très divers. Leur importance dépend essentiellement de la classe de tâches et des conditions d'application des programmes :

    efficacité

    fiabilité

    durabilité

    automatisation

    utilisation efficace des ressources (temps, mémoire, appareils, informations, personnes)

    facilité de développement et d'utilisation

    visibilité du texte du programme

    observabilité du processus du programme

    diagnostic de ce qui se passe

    L'ordre des critères subit souvent des changements à mesure que le domaine d'application du programme se développe, que les qualifications des utilisateurs augmentent, que les équipements sont modernisés, que les technologies de l'information et le génie logiciel sont développés. Le développement continu qui en résulte de l'espace dans lequel le problème est résolu introduit des exigences supplémentaires pour le style de programmation des systèmes d'information :

    la flexibilité

    modifiabilité

    améliorabilité

    La programmation en tant que science, art et technologie explore et développe de manière créative le processus de création et d'utilisation de programmes, détermine les moyens et les méthodes de construction de programmes, dont nous nous familiariserons avec la diversité dans d'autres conférences consacrées à l'analyse d'un certain nombre de principes fondamentaux. paradigmes de programmation.

    Il existe des difficultés évidentes pour classer les langages de programmation et déterminer s'ils appartiennent à un paradigme de programmation spécifique. Dans ce cours, le paradigme de programmation est caractérisé par l'interaction de systèmes sémantiques de base, tels que le traitement des données, le stockage des données et le contrôle du traitement des données. Avec cette approche, trois catégories de paradigmes peuvent être distinguées :

    programmation de bas niveau ;

    programmation dans des langages de haut niveau ;

    préparation de programmes basés sur des langages de très haut niveau.

    La programmation de bas niveau traite des structures de données dictées par l'architecture et le matériel. Lors du stockage des données et des programmes, une mémoire globale et un modèle de contrôle automatique du traitement des données sont utilisés. [,,,,,,,,]

    La programmation dans les langages de haut niveau est adaptée pour spécifier des structures de données qui reflètent la nature des problèmes à résoudre. Une hiérarchie de zones de visibilité des structures de données et des procédures de traitement de celles-ci est utilisée, subordonnée à un modèle de contrôle structurel-logique qui permet la convergence du processus de débogage du programme. [,,,,,,]