Generic selectors
Correspondance stricte
Recherche dans le titre
Recherche dans le contenu
Post Type Selectors
Filtre par catégorie
ADNEthique
Algorithmique
Asso Référentiel
Association
Bibliographie
Domaines abordés
Données personnelles
Economie numérique
Emploi
IA
IA Etat de l'art
IA Risques
Informatique
Marché
Usages du numérique

Programme

Un Programme Informatique est un ensemble organisé d’instructions qui, dans un Langage compréhensible par les Systèmes Informatiques auxquels il se destine, transcrit l’Algorithme modélisant un traitement attendu des Données.
La Programmation est l’ensemble des actions qui consistent à écrire et à vérifier un programme en respectant le cadre de ses spécifications logiques et techniques. Son résultat est reconnu efficace quand son exécution répond aux exigences que son commanditaire a formulées dans son cahier des charges.

Programme versus Logiciel :
Les termes programme et logiciels se substituent fréquemment l’un à l’autre. On convient cependant d’une certaine hiérarchie entre les deux :

  • Un programme est une entité cohérente d’instructions à charger en mémoire pour exécuter un traitement.
  • Un logiciel peut être composé de plusieurs programmes, chacun dédié à l’exécution d’une partie des traitements qu’intègre ce logiciel.
    Ainsi, un logiciel de « gestion des ressources humaines » comprend généralement différents modules fonctionnels composés de plusieurs programmes.

De l’écriture du programme à son exécution par un système informatique :
Un compositeur livre une partition musicale compréhensible par tous les artistes-interprètes potentiels. Elle ne leur explique pas comment jouer de leur instrument respectif, mais quelles notes jouer, à quel tempo, avec quelles inflexions.
Un programme peut être comparé à la partition que doit exécuter l’Ordinateur auquel il s’adresse.
Une différence significative limite plus particulièrement cette analogie : un programme informatique doit pouvoir être interprété à deux niveaux :

  • Le programmeur livre un Programme Source (ou Code Source) rédigé dans un « Langage évolué », c’est-à-dire facilement compréhensible par tous les techniciens et spécialistes (les autres membres de l’équipe de développement logiciel) qui devront le contrôler, corriger ses Bugs éventuels, le maintenir pour l’adapter tant aux évolutions fonctionnelles souhaitées par ses utilisateurs qu’aux capacités techniques des Infrastructures qui les exécuteront.
  • L’interprète final du programme est cependant un système informatique. Un code source n’est pas en l’état immédiatement compréhensible par ce système qui l’exécute. Il doit être converti en Langage machine par un Compilateur. Un compilateur est un logiciel pour la traduction automatique d’un programme du langage évolué au langage machine. D’un Fichier contenant un code source, un compilateur génère un Code Exécutable.

Les articles Compilateur et Logiciel précisent la mise en œuvre de ce passage du code source au code exécutable. L’évolution des langages, la virtualisation de la dimension matérielle et les progrès de l’Intelligence Artificielle bousculent chaque jour les étapes du passage d’un langage naturel à un langage artificiel qu’impose encore aujourd’hui la programmation conventionnelle.

Un programme est un Fichier particulier géré par le Système d’Exploitation :
Un programme est un fichier Numérique inerte stocké dans une des bibliothèques accessibles par l’Infrastructure Technique qui le met en œuvre.
Pour être exécuté, un programme doit être chargé dans la mémoire active de la machine.
Le système d’exploitation du matériel est configuré pour savoir retrouver et charger le programme quand un utilisateur le sollicite.

L’utilisateur ignore souvent où sont stockés ou chargés physiquement les programmes qu’il active et les Données auxquelles chaque programme doit avoir accès. Aujourd’hui, dans la majeure partie des cas, les applications numériques organisent une distribution répartie des éléments qu’elles sollicitent. Cette distribution répartie virtualise encore davantage les liens entre Hardware et Software :

  • On parle d’utilisation autonome quand l’utilisateur peut activer même partiellement un programme sans que son exécution exige la connexion de son poste de travail à une infrastructure tierce.
  • Une application est dite mobile quand, d’où qu’il se connecte à une Application Informatique, un utilisateur peut accéder aux Fichiers de Données et de programmes requis, conformément aux habilitations que son Profil lui octroie.

Brève histoire de la programmation et de son niveau d’abstraction :
Les premiers programmeurs étaient des ingénieurs qui convertissaient en codage machine un algorithme qu’ils avaient le plus souvent eux-mêmes conçu. Ils avaient une perception physique de la traduction électronique de leur travail.
Ce passage de la logique structurée à l’exécution physique par une machine a évolué avec le développement de langages de plus en indépendants du matériel d’exécution des programmes.
Tous comme les musiciens qui ignorent tout autant les fréquences hertziennes des sons qu’ils émettent et l’origine pythagoricienne de la gamme qu’ils lisent, les programmeurs ignorent aujourd’hui le détail du passage de l’organisation logique des instructions programmées à leur exécution physique par une machine électronique.

  • 1950-1970, l’ère du Hardware : Les techniques et les langages de programmation ont d’abord étaient très liées au matériel auquel ils s’adressaient. Le « langage assembleur », dont la modélisation et la structure étaient intimement liées à l’architecture technique de la machine cible, était souvent spécifique et propriété du constructeur du matériel.
    Plusieurs langages généralistes apparaissent à la fin des années 1960, répondant plus particulièrement aux contraintes de la recherche scientifique ou à ceux de la gestion d’entreprise.
  • 1970-1985, l’époque du Logiciel d’entreprise : Les techniques d’écriture des programmes se structurent progressivement. Les méthodes de programmation s’enseignent indépendamment de l’apprentissage des langages eux-mêmes. L’évolution des techniques de gestion des données (avec notamment l’arrivée des « bases de données »), le développement d’outils d’analyse du code source, de mesure de performance ainsi que plus de rigueur dans les procédures de tests et de validation des logiciels accompagnent l’informatisation massive des entreprises.
  • 1985-2000, l’avènement de la « Programmation Objet » : Cette nouvelle approche aborde la programmation au travers de l’interaction de briques logicielles appelées Objets. Un Objet logiciel est un agent du système d’information, une entité du monde physique observé (comme une voiture, une pompe à essence, un conducteur, un passager, un panneau indicateur, etc.). Il possède une structure interne et un comportement et il interagit avec ses pairs. C’est ce que résumait une formule célèbre des années 1990 : « Un système d’information, c’est des objets qui communiquent entre eux ! » La modélisation du cycle de vie des objets et de leurs interactions est devenue l’étape cruciale qui délivre une interprétation optimisée des éléments du réel.
    Le déploiement de la Programmation Objet coïncide avec celui de L’Internet en entreprise, avec la multiplication de l’offre de solutions Progicielles comme celle des ERP (pour « Enterprise Resources Planning », suites applicatives pour l’administration des entreprises), et avec la normalisation des Interfaces Homme Machine forcée par la vulgarisation de l’informatique personnelle.
    Les méthodes agiles bousculent l’approche conventionnelle de la gestion des projets informatiques. Les interactions permanentes entre l’équipe technique de développement et celle du commanditaire du projet sont dorénavant indispensables pour réduire les temps de livraison et maîtriser les investissements.
    La séparation des rôles entre analyste et programmeur disparaît alors, tant la distinction entre la conception du logiciel et sa programmation devient artificielle.
  • De 2000 à ce jour, les briques logicielles : La multiplication des matériels interconnectés, les nouvelles interfaces proposées (écrans tactiles, reconnaissance vocale ou graphique, etc.) font que les nouveaux programmes ne sont plus perçus comme des listes de codes organisés, mais davantage comme un assemblage de briques fonctionnelles préfabriquées et mises à la disposition du concepteur/développeur d’une application logicielle.
    Ainsi un site Internet professionnel peut être livré en quelques jours. À titre d’exemple, sans effort particulier de son programmeur, l’affichage de ses pages d’un site s’adapte automatiquement aux caractéristiques des supports personnels qui y accèdent (smartphones, tablettes, ordinateur portable, etc.), ce par simple activation de la fonction « Responsive Design », compatible avec la plupart des nouveaux matériels. Cette véritable prouesse qui pourtant ne surprend plus est la conséquence de décennies d’harmonisation des langages de programmation et des interfaces machines. La mise à disposition gratuite de la fonction « Responsive Design » mentionnée ici est le fruit d’années-personnes de programmation par des spécialistes de haut niveau.

L’espoir du Néerlandais Edsger Dijkstra — informaticien visionnaire et lauréat prix Turing en 1972 pour ses contributions à la science et l’art des langages de programmation — se réalise lentement : « Les progrès ne seront possibles que quand nous pourrons penser les programmes sans les voir d’abord comme des fragments de code exécutable ».

Sidebar