Basics of Programming

Programming – Session 1

  • Qu’est-ce qu’un programme ?
  • Bonnes pratiques de programmation
  • Évaluer la qualité d’un code Python
  • Erreurs de programmation
  • Récapitulatif de la session

What is a program?

From algorithms to programs

Programme informatique

  • Une traduction d’un algorithme dans un langage de programmation
  • Possède une syntaxe et une sémantique valides
  • Est un ensemble d’instructions qu’un ordinateur suit pour réaliser une tâche

Langage de programmation

  • Un langage de programmation est un système de notations pour écrire des programmes informatiques

  • Il est décrit en termes de syntaxe et de sémantique (Wikipedia)

What is a program?

Examples of programming languages

Python

  • Langage interprété de haut niveau
  • Facile à apprendre et à utiliser
  • Très populaire et largement utilisé pour l’IA
  • Communauté forte

$\rightarrow$ Langage principal pour ce semestre

Java

  • Langage compilé de haut niveau
  • Plus complexe à apprendre (basé sur les classes, orienté objet)
  • Très présent dans l’industrie
  • Communauté forte

$\rightarrow$ Présenté comme exemple ce semestre, étudié le suivant

Le choix du langage pertinent dépend de plusieurs facteurs, par exemple, adaptabilité, performance, facilité d’utilisation, communauté, etc.

What is a program?

A list of programming languages

Wikipedia - List of programming languages

What is a program?

From human to computer

Étapes principales

  1. Écriture – Le programmeur écrit le code
  2. Lexing – Le code est transformé en tokens
  3. Parsing – Les tokens sont transformés en arbre syntaxique abstrait
  4. Compilation – L’arbre syntaxique abstrait est transformé en code machine
  5. Exécution – Le code machine est exécuté par l’ordinateur

Good programming practices

Things you should keep in mind when writing code

Lisibilité

  • Indentation – Montrer la structure du code
  • Conventions de nommage – Rendre le code auto-explicatif
  • Éviter les valeurs fixes – Utiliser des variables à la place
  • Éviter les variables globales – Utiliser des variables locales

Fiabilité

  • Programmation structurée – Éviter le code spaghetti
  • Tests – S’assurer que le code fonctionne comme prévu
  • Fonctions et bibliothèques intégrées – Éviter de réinventer la roue

Maintenabilité

  • Commentaires – Expliquer la logique du code, pas la syntaxe
  • Documentation – Expliquer le but du code
  • Modularité – Diviser le code en petites parties réutilisables

Assessing quality of a Python code

Some tools to help you keep it clean

Les normes aident à garantir un code uniforme

  • PEP 8 (Python Enhancement Proposals 8) – Un guide de style pour le code Python
  • Les normes de codage peuvent varier d’un langage à un autre
  • L’essentiel est de rester cohérent et clair

Des outils existent pour évaluer le code

  • Pylint – Un outil pour vérifier si un module respecte une norme de codage
  • Type hinting – Un mécanisme optionnel de Python pour spécifier le type des variables $\rightarrow$ (conseil : utiliser pour les fonctions et non pour toutes les variables)
  • Mypy – Un vérificateur de type statique

Programming errors

Syntax errors

Que pensez-vous de ce code ?

# The string to manipulate
s = "IMT Atlantique"

# Loop to append to a new string
result = ""
for i j in range(len(s)):
    result = s[i] + result
File "session_1.py", line 7
  for i j in range(len(s)):
          ^
SyntaxError: invalid syntax

Programming errors

Runtime errors

Que pensez-vous de ce code ?

# Ask user at runtime for a value
den = input("Please enter the value of the denominator")

# Perform a computation
result = 42 / den
print(result)

Générera une erreur d’exécution de type division par zéro si den == 0

Programming errors

Non-deterministic programs

Non-déterminisme

  • Lorsqu’on utilise des valeurs aléatoires, le programme peut ne pas toujours produire le même résultat
  • Il peut donc être difficile à déboguer

Contrôler l’aléa

  • Il est possible de fixer une graine pour assurer la reproductibilité
  • Les graines aléatoires ne sont pas destinées à optimiser vos programmes !!!
# Needed imports
import random

# Set the seed
random.seed(42)

Recap of the session

Main elements to remember

Un programme est une traduction d’un algorithme dans un langage de programmation


  • Les langages de programmation ont leurs spécificités et déterminent la syntaxe valide des programmes

  • Un langage de programmation peut être interprété ou compilé

  • Il est important de suivre de bonnes pratiques pour garder un code propre, maintenable et fiable

  • Certains outils peuvent vous aider à vérifier la qualité de votre code

  • Les erreurs de syntaxe se produisent dans le texte, tandis que les erreurs d’exécution surviennent lors de l’exécution du programme

  • Méfiez-vous des nombres aléatoires !

Recap of the session

What’s next?

Activité pratique (~2h30)

Implémenter des solutions algorithmiques avec des programmes

  • Comprendre l’origine des erreurs
  • Écrire et exécuter des programmes
  • Demander à d’autres étudiants de revoir la qualité de votre code !

Après la session

  • Revoir les articles de la session
  • Vérifier votre compréhension avec le quiz
  • Compléter l’activité pratique
  • Consulter la section “Avant le cours” de la prochaine session