Principes des Langages de Programmation

John Samuel

CPE Lyon

Année: 2026-2027
Courriel: john.samuel@cpe.fr

Creative Commons License

John SAMUEL

  • Enseignant-Chercheur, Conception Logicielle et Big Data, CPE Lyon,
  • Intérêts et thèmes de recherche : Représentation de connaissances, le web sémantique, les services web, l'intégration de données, l'entrepôt de données, les systèmes distribués, système d'information géographique
  • Cours : Programmation en C, Principes des Langages de Programmation, Data Mining et Machine Learning, Intelligence Artificielle et Deep Learning, Systèmes d'exploitation et Programmation Concurrente, Langages Web
  • Thèse : Intégration des données issues de services web
  • HDR : Des regards sémantiques pour des villes intelligentes, durables et inclusives

1.1. Principes des Langages de Programmation : Introduction

Objectifs

1.1. Principes des Langages de Programmation : Introduction

Bonjour le Monde!!! (C)

/* Fichier: bonjour1.c
* affiche 'Bonjour le Monde!!!' à l'écran.
* auteur: John Samuel
* Ceci est un commentaire sur plusieurs lignes
*/


#include <stdio.h> // headers

// Ceci est un commentaire sur une ligne
int main() {
  printf("Bonjour le Monde !!!");
  return 0;
}

1.1. Principes des Langages de Programmation : Introduction

Bonjour le Monde!! (Python)

# Ce programme affiche le message "Bonjour le monde !!!" à l'écran

# Définition de la fonction principale
def main():
    # Affichage du message
    print("Bonjour le monde !!!")

# Vérification si le script est exécuté directement (et non importé comme module)
if __name__ == "__main__":
    # Appel de la fonction principale
    main()

1.1. Principes des Langages de Programmation : Introduction

Structures de contrôle

Les structures de contrôle en C dirigent l'exécution du code en fonction de conditions ou de boucles.

1.1. Principes des Langages de Programmation : Introduction

Gestion de mémoire

Adresses physiques
la conversion des adresses virtuelles en adresses physiques
La conversion des adresses virtuelles en adresses physiques

1.1. Principes des Langages de Programmation : Introduction

La chaîne de compilation

Compilation: gcc

La chaîne de compilation en C est le processus séquentiel de transformation du code source en un exécutable.

1.1. Principes des Langages de Programmation : Introduction

Types et structures de données - file

Types et structures de données - file

Une file est une structure de données qui gère les éléments de manière FIFO (First-In-First-Out), ce qui signifie que l'élément ajouté en premier est le premier à être retiré.

1.1. Principes des Langages de Programmation : Introduction

Types et structures de données - pile

Types et structures de données - pile

Une pile est une structure de données qui gère les éléments de manière LIFO (Last-In-First-Out), où le dernier élément ajouté est le premier à être retiré.

1.1. Principes des Langages de Programmation : Introduction

Environnement de programmation:

Cours:

1.1. Principes des Langages de Programmation : Introduction

Devoir surveillé (DS): 60%

Vous recevrez un courrier détaillé avant l'examen

1.1. Principes des Langages de Programmation : Introduction

Comment travailler ce cours ?

Activité Méthode
Comprendre une notion La reformuler avec ses propres mots et donner un exemple.
Explorer un programme Prévoir son comportement, l’exécuter et expliquer les résultats.
Approfondir Modifier un exemple et observer les conséquences.
Préparer le DS Résoudre de nouveaux exercices et organiser les documents autorisés.

1.1. Principes des Langages de Programmation : Introduction

Déroulement du cours

Le cours de 2 heures est structuré avec une première partie de 55 à 60 minutes, suivie d'une pause de 5 à 10 minutes pour des questions, et conclut ensuite avec une deuxième partie de 55 à 60 minutes.

1.1. Principes des Langages de Programmation : Introduction

Travaux pratiques

1.1. Principes des Langages de Programmation : Introduction

Travaux pratiques : des bases du C à un interpréteur

Un seul rendu final regroupant TP1 à TP5 — noté sur 20 points.

TP Contenu
TP1 Bases du C : types, variables, opérateurs et structures de contrôle.
TP2 Compilation, débogage et manipulation de chaînes, structures et fichiers.
TP3 Construction d’un interpréteur : commandes, analyse et évaluation d’expressions simples.
TP4 Expressions arithmétiques : notations infixée et postfixée, parenthèses et évaluation.
TP5 Extension de l’interpréteur : variables et expressions lambda.

1.1. Principes des Langages de Programmation : Introduction

Travaux pratiques

Chaque TP comporte plusieurs exercices. Chaque exercice est accompagné d'une indication de niveau de difficulté :

1.1. Principes des Langages de Programmation : Introduction

Travaux pratiques

La complexité des TP augmente progressivement après chaque séance, ce qui peut nécessiter plus de temps pour compléter tous les exercices.

1.1. Principes des Langages de Programmation : Introduction

Travaux pratiques: Rendus

  1. Le rendu est constitué d'une seule archive contenant le rapport d'auto-évaluation et les fichiers source.
  2. Votre dossier de rendu doit comporter les éléments suivants
    • Un fichier README.md contenant le rapport d'auto-évaluation.
    • Un fichier CONTRIBUTORS.md listant les noms et prénoms des contributeurs.
    • Un répertoire src/ contenant les fichiers sources, identifiables par les extensions .c et .h.

1.1. Principes des Langages de Programmation : Introduction

Travaux pratiques: Rendus

  1. Votre rendu doit être renommé au format "groupe_N1_N2.zip", où N1 et N2 représentent les noms (par exemple, "groupe_DUPONT_SMITH.zip").
  2. Assurez-vous d'écrire ou de compléter les fichiers README.md et CONTRIBUTORS.md au format Markdown.
  3. Le contenu du fichier README.md devrait comprendre :
    1. Rapport d'auto-évaluation pour les TP réalisés (TP1 à TP5).
    2. Bibliothèques utilisées, y compris les bibliothèques standard.
    3. Références telles que les URL ou les groupes consultés pour l'exercice.
    4. Indication du niveau de difficulté (facile, moyen, difficile).
    5. Optionnellement, des commentaires ou des remarques supplémentaires peuvent être inclus.

1.1. Principes des Langages de Programmation : Introduction

Liste de contrôle

Avant de soumettre votre travail pratique, veuillez vérifier que vous avez respecté la liste de contrôle suivante :

1.1. Principes des Langages de Programmation : Introduction

Modèle de code

Vous pouvez consulter https://github.com/johnsamuelwrites/PLP en ligne
ou le cloner sur votre machine à l'aide du terminal en utilisant les commandes suivantes.

$ git clone https://github.com/johnsamuelwrites/PLP
$ cd PLP
$ ls

Pour obtenir les dernières mises à jour du répertoire, vous pouvez exécuter la commande suivante:

$ git pull

1.1. Principes des Langages de Programmation : Introduction

Programmer à l'ère de l'IA générative

1.1. Principes des Langages de Programmation : Introduction

Ce qui change, ce qui ne change pas

1.1. Principes des Langages de Programmation : Introduction

Génération de code par IA

1.1. Principes des Langages de Programmation : Introduction

Programmation multilingue : une démarche personnelle

Un noyau sémantique, plusieurs langues humaines. Il ne s'agit pas de traduire des mots-clés : il s'agit d'exprimer le même programme, avec la même sémantique, à travers plusieurs surfaces linguistiques.

Projet ouvert : github.com/johnsamuelwrites/multilingual

Pourquoi maintenant ? Les modèles génératifs rendent plausible l'idée que « la langue naturelle est un langage de programmation ». D'où la question centrale de ce cours : que garantit un langage qu'une consigne en langue naturelle ne garantit pas ?

1.1. Principes des Langages de Programmation : Introduction

Le même programme, trois surfaces

# français
soit a = 10

déf double(x):
    retour x * 2

afficher(double(a))
# español
sea a = 10

def doble(x):
    devolver x * 2

imprimir(doble(a))
# english
let a = 10

def double(x):
    return x * 2

print(double(a))

Même arbre syntaxique, même sémantique, trois surfaces. Ce que l'IA traduit facilement, c'est la surface. Ce qu'il faut savoir vérifier — types, portée, effets, terminaison — ne se traduit pas : c'est l'objet de ce cours.

1. Principes des Langages de Programmation : Références

Références

Crédits d'images