vignette|Liste d'instructions sur le Commodore 64.
La programmation informatique est l'ensemble des activités liées à la conception, l'écriture, le test et la maintenance de programmes informatiques à l'aide de langages de programmation. Compétence centrale de l’ingénierie contemporaine, elle intervient dans le développement de logiciels, d'applications, de systèmes d'exploitation et de dispositifs numériques au cœur de tous les secteurs de la société.
L'écriture d'un programme se fait par un ou plusieurs programmeurs dans un ou plusieurs langages de programmation. Un logiciel est un ensemble de programmes (qui peuvent être écrits dans des langages de programmation différents) destiné à la réalisation de certaines tâches par un (ou plusieurs) utilisateurs du logiciel.
La programmation représente donc ici la rédaction du code source d'un logiciel. On utilise plutôt le terme développement pour dénoter l'ensemble des activités liées à la création d'un logiciel et des programmes qui le composent. Cela inclut la spécification du logiciel, sa conception, puis son implémentation proprement dite au sens de l'écriture des programmes dans un langage de programmation bien défini, ainsi que la vérification de sa correction, etc.
Longtemps perçue comme un simple instrument technique, la programmation est désormais reconnue comme une pratique culturellement et socialement signifiante. Elle façonne nos usages numériques, nos modes de communication et jusqu’à nos structures sociales et économiques. Des chercheurs comme Lev Manovich. ou Shoshana Zuboff. ont mis en lumière le rôle structurant du logiciel dans notre culture numérique contemporaine et les rapports de pouvoir qui en émergent.
La programmation n’est pas neutre : elle implique des choix techniques et éthiques pouvant renforcer ou atténuer des biais algorithmiques, comme l’ont montré Joy Buolamwini et Timnit Gebru dans l’étude Gender Shades.. Elle est aussi au cœur des débats sur l’inclusion dans les métiers du numérique, documentés notamment par Mar Hicks. ou Janet Abbate..
Enfin, elle s’inscrit dans des dynamiques sociales vivantes : communautés open source, plateformes coopératives comme GitHub, ou initiatives éducatives visant à démocratiser l’apprentissage du code. L’anthropologue Gabriella Coleman. y voit une éthique du partage et de la liberté façonnée par les développeurs eux-mêmes.
Histoire
La première machine programmable (c’est-à-dire machine dont les possibilités changent quand on modifie son programme) est probablement le métier à tisser de Jacquard, qui a été réalisé en 1801. La machine utilisait une suite de cartons perforés. Les trous indiquaient le motif que le métier suivait pour réaliser un tissage ; avec des cartes différentes le métier produisait des tissages différents.. Cette innovation a été ensuite améliorée par Herman Hollerith d'IBM pour le développement de la fameuse carte perforée d'IBM..
En 1937, la publication de l'article fondateur de la science informatique On Computable Numbers with an Application to the Entscheidungsproblem. par Alan Turing allait donner le coup d'envoi à la création de l'ordinateur programmable. Il y présente sa machine de Turing, le premier calculateur universel programmable, et invente les concepts et les termes de programmation et de programme.
Les premiers programmes d'ordinateur étaient réalisés avec un fer à souder et un grand nombre de tubes à vide (plus tard, des transistors). Les programmes devenant plus complexes, cela est devenu presque impossible, parce qu'une seule erreur rendait le programme entier inutilisable. Avec les progrès des supports de données, il devint possible de charger le programme à partir de cartes perforées, contenant la liste des instructions en code binaire spécifique à un type d'ordinateur particulier. La puissance des ordinateurs augmentant, on les utilisa pour faire les programmes, les programmeurs préférant naturellement rédiger du texte plutôt que des suites de 0 et de 1, à charge pour l'ordinateur d'en faire la traduction lui-même.
Les origines de la programmation informatique remontent bien avant l’ère contemporaine des algorithmes. Le premier algorithme qui fut écrit pour une machine a été écrit par Ada Lovelace en 1843 pour la machine analytique de Charles Babbage. Elle est aujourd’hui considérée comme la première programmeuse de l’histoire. Dans le , au cours de la Seconde Guerre mondiale, la programmation prend une forme plus concrète et appliquée. Un des meilleurs exemples est celui des programmeuses de l'ENIAC, un groupe composé de six femmes qui furent chargées de la programmation du premier ordinateur électronique à usage général. Alors que leur rôle a été longtemps négligé, des études telles que celles de Janet Abbate ou de Mar Hicks ont permis de redécouvrir le rôle moteur joué par les femmes dans les origines de l'informatique. Jusque dans les années 1960, la programmation était généralement considérée comme une activité administrative ou secondaire, dominée par les femmes. À mesure que la programmation gagnait en prestige, les femmes en ont été progressivement écartées. Mar Hicks montre comment, au Royaume-Uni, la profession a été délibérément masculinisée, écartant les femmes au profit d'une vision technocratique et élitiste de l'informatique. Les années 1970 et 1980 ont vu l'émergence des premiers langages structurés (tels que C ou Pascal) et de paradigmes de programmation tels que la programmation orientée objet. Cette période marque aussi l’essor des communs numériques, avec le début du mouvement open source, qui deviendra central dans les années 1990. Le travail de Christopher Kelty. et Gabriella Coleman met en lumière l'importance socioculturelle des communautés de développeurs dans cette période de transition.
Avec le temps, de nouveaux langages de programmation sont apparus, faisant de plus en plus abstraction du matériel sur lequel devraient tourner les programmes. Ceci apporte plusieurs facteurs de gain : ces langages sont plus faciles à apprendre, un programmeur peut produire du code plus rapidement, et les programmes produits peuvent tourner sur différents types de machines.
Enfin, à partir des années 2010, les réflexions éthiques sur les algorithmes et l'intelligence artificielle sont devenues centrales. Des chercheuses comme Joy Buolamwini et Timnit Gebru ont démontré, dans l'étude Gender Shades, que certains systèmes d'IA présentaient des biais importants envers les femmes et les personnes racisées. Cette conscience a représenté un nouveau repère dans l'histoire de la programmation : celui de la responsabilisation des codeurs et de la prise en compte de l'impact social de leurs œuvres.
Différents langages de programmation
JavaScript PHP Ruby Java Swift C#, C ou C++ Python Julia Scala Rust
Exemple de programme L'immense majorité des programmes qui s'exécutent sur nos ordinateurs, téléphones et autres outils électroniques sont écrits dans des langages de programmation dits impératifs : les lignes du programme sont exécutées les unes après les autres. Chaque ligne du programme effectue soit une opération simple, soit exécute une fonction qui est elle-même une suite d'opérations simples.
Le programme « Hello World! » est par tradition le premier programme écrit par tout programmeur, censé illustrer la syntaxe du langage de programmation. Le programme a pour unique fonction d'afficher le texte "Hello World!" dans la console ou dans une fenêtre de l'interface graphique.
Voici une version d'un programme « Hello World! »: vignette|alt=|centré|Affichage d'un programme « Hello World! »
Le programme suivant écrit en langage simplifié et avec des commentaires, demande simplement à l'utilisateur d'entrer au clavier deux nombres entiers, et affiche leur quotient. void main() { // fonction 'main' : c'est toujours ici qu'un programme commence // 'int' signifie integer : nombre entier en anglais int A, B; // on déclare deux variables A et B qui sont des nombres entiers WriteLine("entrez deux entiers : "); // 'WriteLine' permet d'écrire à l'écran A = ReadIntFromKeyboard(); // on attend que l'utilisateur tape un entier au clavier, // et on l'enregistre dans A B = ReadIntFromKeyboard(); // puis on fait la même chose pour B if (B == 0) { // si B est égal à 0 WriteLine("erreur : division par zéro"); } else { // sinon float C = CalculerDivision(A,B); // on exécute la fonction 'CalculerDivision' // que l'on a programmée ci-dessous, // et on enregistre le résultat dans C qui est un 'float' : un nombre à virgule WriteLine("le résultat est : " + C); // on affiche C
float CalculerDivision(float U, float V) { // U et V sont les paramètres de notre fonction 'CalculerDivision' : ce sont des nombres à virgules (float). // et celle-ci renvoie un 'float' : un nombre à virgule flottante // dans la fonction 'main', A et B étaient des nombres entiers, // U et V sont des copies des valeurs de A et B, // et qui ont été converties en nombres à virgule (22 deviendrait simplement 22.0000000) float Resultat; Resultat = U / V; // on effectue la division return Resultat; /// on renvoie le résultat }
Dans ce programme, les principales fonctionnalités de la programmation impérative sont utilisées : des variables de type nombre entier, nombre à virgule, chaîne de caractères, fonction calculant un résultat à partir de paramètres, fonction effectuant une tâche telle qu'afficher un message à l'écran, instruction if permettant d'exécuter un code ou un autre en fonction de la valeur de telle ou telle variable.
Dans un programme informatique typique, on trouvera suivant les langages des boucles while ou for qui permettent d'exécuter un morceau de code en boucle ou simplement un certain nombre de fois, des new pour l'allocation dynamique de données (par exemple des tableaux), et très souvent des éléments de programmation objet permettant de structurer différemment le code et de créer des types de données personnalisés, ou encore des exceptions pour gérer certains cas d'erreurs plus facilement.
On remarque que pour effectuer une tâche très simple, le code informatique peut être très laborieux, et encore ici on ne traite pas les erreurs (si l'utilisateur tape un mot au lieu d'un nombre), et l'affichage est minimaliste. C'est pourquoi les langages de programmation n'ont jamais cessé d'évoluer, dans le but d'aider le programmeur qui souhaite réaliser des programmes rapides à s'exécuter, sans dysfonctionnements, et surtout simples à écrire, du moins le plus possible.
Développement Logiciel
Il est aussi focalisé sur le rôle des communautés en ligne (Stack Overflow, Reddit, forums d'utilisateurs spécialisés). Elles favorisent l’entraide, la transmission du savoir et la construction d’une culture professionnelle partagée. Selon Gabriella Coleman, ces communautés bâtissent une éthique propre aux développeurs, centrée sur l'autonomie, la transparence et la création libre. Le développement logiciel est également influencé par des enjeux sociaux et culturels. Les pratiques de développement sont souvent le reflet de relations de pouvoir, de normes implicites ou d'exclusions : par exemple, la sous-représentation des femmes et des minorités dans les équipes de développement est un problème structurel, attesté entre autres par Mar Hicks. Des initiatives telles que les programmes de diversité dans la tech ou les projets d'inclusion open source cherchent à diminuer ces écarts.
Aspects sociaux et culturels Bien que souvent perçue comme une activité purement technique, la programmation informatique s’inscrit dans des dynamiques sociales, culturelles, économiques et politiques complexes. Elle influence la société tout autant qu’elle en est le produit. Plusieurs courants en sciences humaines et sociales, tels que les sciences and technology studies (STS), les humanités numériques ou la sociologie de l’informatique, permettent de mieux comprendre ces dimensions.
1. Évolution sociale du métier et inclusion