Première · Langages et programmation

Les langages informatiques : points communs et différences

Changer de langage peut donner l’impression de tout recommencer. Pourtant, affecter une valeur, prendre une décision ou répéter un traitement reste souvent reconnaissable. Apprendre à séparer l’idée de sa notation permet de lire un code nouveau avec davantage de confiance.

SofienAvec SofienIngénieur et enseignant en informatique
Dans ce chapitre

Un cap pour ce chapitre

Ce que vous saurez faire

  • Reconnaître les constructions communes à plusieurs langages
  • Distinguer programmation description et interrogation
  • Comparer deux écritures sans supposer leur équivalence automatiquement
Les bases utiles pour commencer

L’algorithme ne dépend pas de son écriture

Un algorithme décrit une méthode précise pour résoudre un problème. Un programme traduit cette méthode dans un langage que des outils peuvent exécuter. La recherche d’un maximum peut ainsi s’exprimer en français structuré, en Python ou en JavaScript. Les symboles, les règles de blocs et les bibliothèques changent, mais on retrouve une initialisation, un parcours et une comparaison. Pour lire un nouveau langage, cherchez d’abord ces rôles. Essayer de traduire chaque signe sans comprendre le traitement général rend la lecture plus laborieuse et moins fiable.

On peut distinguer le problème, la méthode et sa traduction. « Trouver le maximum » est le problème ; conserver la plus grande valeur déjà vue est la méthode ; une boucle écrite avec la syntaxe d’un langage est sa traduction. Plusieurs méthodes peuvent résoudre le même problème.

Retrouver les constructions élémentaires

Les programmes impératifs usuels combinent des séquences d’instructions, des affectations, des conditions, des boucles et des appels de fonctions. Python utilise l’indentation pour délimiter ses blocs ; JavaScript utilise notamment des accolades. Une boucle Python for i in range(3) et une boucle JavaScript initialisant i à zéro, testant i < 3 puis augmentant i de un peuvent produire le même parcours. Le rapprochement est utile, mais il faut vérifier les bornes, les valeurs et les effets : une ressemblance visuelle n’est pas une preuve d’équivalence.

Ces deux programmes additionnent les valeurs de 0 à 3 et affichent 6. La borne, la mise à jour et le bloc répété se reconnaissent malgré des notations différentes.

total = 0
for i in range(4):
    total = total + i
print(total)
let total = 0;
for (let i = 0; i < 4; i = i + 1) {
  total = total + i;
}
console.log(total);

Le bloc répété doit être repéré avant de traduire. Une accolade fermante ou une diminution d’indentation marque une frontière de bloc, pas une opération sur les données. Déplacer une initialisation de part et d’autre de cette frontière change l’algorithme, même si toutes les autres lignes sont identiques.

Tous les textes formels ne jouent pas le même rôle

HTML décrit la structure d’un document Web : titre, paragraphe, lien ou bouton. CSS décrit sa présentation. JavaScript peut programmer une réaction à un événement. SQL exprime notamment des requêtes sur des données relationnelles. Ces langages coopèrent dans une application, mais ne répondent pas à la même question. Un bouton HTML peut exister sans comportement programmé ; une règle CSS peut modifier sa couleur sans calculer une moyenne. Cette distinction est plus utile qu’un classement sommaire des langages du « meilleur » au « moins bon ».

Un langage de description est formel sans nécessairement exprimer les mêmes constructions qu’un langage de programmation généraliste. Il faut raisonner sur le rôle de l’extrait étudié. Un fichier HTML peut contenir un script : cette inclusion ne donne pas aux balises elles-mêmes la responsabilité de réaliser les calculs.

Comparer avec des exemples contrôlés

Pour comparer deux programmes, fixez les mêmes données d’entrée et le même résultat observable. Vérifiez ensuite les types, l’ordre des opérations, les bornes et le format de sortie. Certaines différences de langage deviennent importantes : la division, la conversion des textes ou l’égalité peuvent suivre des règles différentes. En Première, l’objectif est de repérer les ressemblances et quelques différences significatives, pas de maîtriser plusieurs écosystèmes. La documentation sert à résoudre les points inconnus, tandis qu’un tableau de trace permet de vérifier que l’on comprend bien le mécanisme commun.

Deux programmes peuvent calculer le même résultat tout en utilisant des méthodes différentes ou des coûts différents. Inversement, une traduction proche peut changer le résultat si une borne, un type ou une conversion est mal compris. L’équivalence concerne donc une propriété annoncée, sur un domaine d’entrées défini.

Traduire une boucle à partir de sa trace

Un programme initialise un compteur à deux, le compare à neuf, affiche sa valeur lorsqu’elle reste strictement inférieure à neuf, puis l’augmente de trois. Sa trace est deux, cinq, huit. On peut traduire ce parcours en Python avec range(2, 9, 3). Le nombre neuf est une limite, pas une valeur obligatoirement produite.

La traduction doit aussi préserver ce qui est observable : afficher avant l’augmentation donne deux, cinq, huit ; afficher après donne cinq, huit, onze. Une ressemblance entre conditions ne suffit donc pas. La place des actions dans le corps compte autant que la liste des valeurs du compteur.

Suivre les responsabilités dans une recherche Web

Une page de catalogue décrit un champ de recherche et un bouton. Sa feuille de style rend ces éléments lisibles. Un programme réagit à la soumission, puis le serveur peut interroger ses données et renvoyer des résultats. Chaque étape traite une information différente : structure de la page, présentation, événement, puis sélection des données.

Si les résultats sont présents mais invisibles, on inspecte d’abord la présentation et la structure. Si cliquer ne déclenche rien, on étudie l’événement. Si la réponse ne contient pas les livres attendus, on étudie les critères de recherche. Identifier le rôle défaillant permet de choisir le bon fichier ou le bon langage à examiner.

À vous de faire varier les choses

Qui fait quoi dans cette application ?

Attribuez chaque extrait ou intention à son rôle principal. Les explications vous permettent de réviser chaque choix.

Lire les associations expliquées
Un bouton existe et reçoit le focus au clavier, sans aucun calcul associé. : Structure HTML
La structure HTML suffit à définir un bouton natif et son accessibilité de base. Le calcul doit être programmé séparément.
Une liste de livres devient une grille lorsque la fenêtre s’élargit. : Présentation CSS
Les règles de disposition décrivent la présentation ; aucune sélection des livres dans la base n’est nécessaire.
Un traitement parcourt les prix et conserve le plus petit déjà rencontré. : Programme JavaScript ou Python
Le parcours, le test et les affectations forment un algorithme impératif.
SELECT titre FROM livre WHERE annee > 2020 : Interrogation SQL
La condition sélectionne des lignes dans une relation ; elle ne décrit pas leur couleur à l’écran.
La saisie change ; une fonction recalcule aussitôt un total. : Programme JavaScript ou Python
Un événement déclenche un calcul et une mise à jour de l’état.
Associer une étiquette descriptive à un champ de formulaire. : Structure HTML
Le lien entre label et champ appartient à la structure sémantique du document.
Masquer visuellement un message quand une classe donnée est présente. : Présentation CSS
La règle de style définit l’effet visuel. Un programme peut séparément décider d’ajouter la classe.
Demander uniquement les auteurs distincts ayant publié après 2020. : Interrogation SQL
La sélection et l’élimination des doublons relèvent ici de l’interrogation relationnelle.
Un programme additionne des valeurs en Python ; un autre reproduit sa trace en JavaScript. : Programme JavaScript ou Python
Deux syntaxes différentes peuvent traduire le même traitement. Il faut vérifier les bornes et les valeurs.
Décrire un lien dont la destination est un autre chapitre. : Structure HTML
La navigation d’un lien natif est fournie par le navigateur à partir de sa structure HTML, sans script obligatoire.

La même application assemble des langages dont les responsabilités diffèrent. Comprendre le rôle précède l’apprentissage de la syntaxe.

De la compréhension à l’autonomie

À vous de résoudre

Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.

Exercice 1 · S’entraîner#

Lire une boucle inconnue

Un pseudo-code exécute i ← 0 ; tant que i < 3, afficher i puis faire i ← i + 1. Donnez les affichages et une traduction Python avec for.

Indice 1

L’état initial est zéro et la borne trois est exclue.

Indice 2

range peut représenter directement ces trois valeurs.

Comprendre la correction

Les affichages sont 0, 1 et 2. La traduction Python est for i in range(3): print(i), avec l’affichage dans le bloc indenté. Les deux versions produisent le même ordre de valeurs dans ce contexte. La traduction repose sur le sens des étapes, pas sur le remplacement mécanique des mots.

Exercice 2 · S’entraîner#

Le bouton immobile

Une page contient un bouton intitulé « Ajouter un point ». Sa couleur change au survol, mais un clic ne modifie pas le score. Quel rôle peut manquer ?

Indice 1

La structure et l’apparence peuvent fonctionner sans traitement du clic.

Indice 2

Une réaction à un événement demande un comportement programmé.

Comprendre la correction

Le bouton peut être correctement décrit en HTML et stylé en CSS, tandis que le traitement JavaScript du clic est absent ou incorrect. Il faut examiner l’association entre l’événement et la fonction chargée de modifier le score. Changer le texte du bouton ou sa couleur ne réalise pas cette opération.

Exercice 3 · S’entraîner#

Un même résultat suffit-il ?

Deux programmes affichent 10 pour l’entrée 4. Peut-on affirmer qu’ils réalisent le même algorithme ou calculent toujours la même fonction ?

Indice 1

Un résultat commun peut être obtenu par des méthodes différentes.

Indice 2

Une seule entrée ne décrit pas tous les comportements.

Comprendre la correction

Non. L’un peut calculer la somme des entiers de 1 à 4, l’autre ajouter 6 à son entrée, et un troisième afficher toujours 10. Ils coïncident sur ce test sans être équivalents. Il faut comparer les contrats et les traitements, puis examiner les entrées pertinentes pour justifier une équivalence.

Exercice 4 · S’entraîner#

Choisir le bon rôle

On souhaite présenter un tableau de livres, rendre les titres bleus, sélectionner les livres publiés après 2020 dans une base et réagir à un clic. Associez chaque tâche à HTML, CSS, SQL ou JavaScript.

Indice 1

Séparez structure, présentation, interrogation et comportement.

Indice 2

Plusieurs langages peuvent coopérer dans une seule page.

Comprendre la correction

HTML structure le tableau, CSS définit les titres bleus, SQL sélectionne les données de la base et JavaScript peut traiter le clic dans le navigateur. Cette répartition décrit les rôles habituels de ces outils. Elle n’implique pas qu’un navigateur exécute directement les requêtes SQL de la base du serveur.

Exercice 5 · Approfondir et relier#

Une traduction presque identique

Une boucle part de 2, affiche le compteur tant qu’il est inférieur à 9, puis ajoute 3. Une traduction affiche après l’ajout. Donnez les deux suites affichées et une traduction Python de la version initiale.

Indice 1

Séparez valeur avant et valeur après l’incrémentation.

Indice 2

La condition est testée avant chaque corps.

Comprendre la correction

La version initiale affiche 2, 5 et 8. La traduction incorrecte affiche 5, 8 et 11 : le dernier affichage a lieu dans un corps autorisé par la valeur huit. Une boucle for i in range(2, 9, 3) avec print(i) dans son corps reproduit la première version.

Exercice 6 · Approfondir et relier#

Trois programmes, une coïncidence

A calcule la somme des entiers de 1 à n. B calcule n + 6. C renvoie toujours 10. Ils coïncident pour n égal à 4. Donnez leurs résultats pour n égal à 2, puis expliquez ce que ce test établit et ce qu’il ne prouve pas.

Indice 1

La somme de un à deux vaut trois.

Indice 2

Un contre-exemple suffit à réfuter une équivalence générale.

Comprendre la correction

Les résultats sont trois, huit et dix. Les trois programmes ne calculent donc pas la même fonction pour toutes les entrées. Ce test réfute leur équivalence ; il ne prouve pas, à lui seul, que chaque programme respecte son propre contrat. Il faut vérifier séparément le service annoncé pour chacun.

Exercice 7 · Approfondir et relier#

Diagnostiquer un catalogue

Un catalogue affiche correctement des livres et ses boutons deviennent bleus au survol. Cliquer sur « Trier » ne change aucun résultat. Associez les observations aux rôles concernés, puis proposez deux vérifications distinctes avant de modifier la page.

Indice 1

Le survol peut être traité uniquement par une règle de style.

Indice 2

Vérifiez le déclenchement de l’événement puis le traitement associé.

Comprendre la correction

La structure des livres peut être correctement décrite et la présentation fonctionner. Il faut d’abord vérifier que le clic appelle bien la fonction prévue, puis que cette fonction modifie l’ordre des données ou leur affichage. Le texte « Trier » n’impose aucun comportement. Changer seulement la couleur du bouton ne corrigerait pas cette absence d’action.

Les erreurs qui méritent un détour

Traduire des signes sans vérifier les types
Deux opérateurs semblables peuvent agir différemment selon le langage et les données.
Confondre une page interactive et un seul langage
Repérez séparément les responsabilités de structure, de présentation et de traitement.

La fiche à garder

L’essentiel à retenir

  • Un algorithme peut avoir plusieurs traductions.
  • Les constructions communes aident à lire un langage nouveau.
  • Les langages d’une application ont des rôles complémentaires.

Le prochain pas

Retrouver le catalogue de Première

Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.