MATH60230 - Séance 2

Vincent Grégoire

HEC Montréal

Saad Ali Khan

HEC Montréal

Plan pour aujourd’hui

  • Devoir 1: Questions
  • Formatage du code
  • Documentation du code
  • Tests du code
  • Débogage
  • Devoir 2 : Classes et exceptions

Devoirs

  • N’oubliez pas, le devoir 1 est à rendre mardi matin.
  • Si vous êtes bloqué, n’hésitez pas à poser une question !
  • Le devoir 2 est disponible, dû vendredi matin prochain.

Tant que vous suivez la syntaxe Python, votre code s’exécutera. Cependant, vous pourriez vous retrouver dans des situations comme celle-ci :

Crédits : xkcd

Formatage du code

  • Un guide de style est une liste de directives (au-delà de la syntaxe du langage) pour garantir que votre code est lisible.
    • Le guide de style officiel pour Python est PEP 8.
  • Un formateur est un programme qui formate votre code, c’est-à-dire qu’il le modifie pour qu’il soit conforme à un certain style.
    • Les formateurs les plus populaires pour Python sont autopep8, black, et Ruff.
    • Tous peuvent être intégrés avec VS Code pour formater votre code à la demande ou lors de la sauvegarde.
    • Je recommande d’utiliser Ruff, par la même entreprise que uv.
    • Démonstration !

Documenter / commenter le code

Le code est plus souvent lu que écrit. - Guido van Rossum (créateur du langage Python)

  • Le code formaté est bien, mais ce n’est pas toujours suffisant pour le rendre lisible.
  • Vous devriez commenter votre code lorsque c’est approprié.
  • Un commentaire en Python commence par le caractère #.
  • Il est également courant d’écrire des commentaires multiligne en utilisant """, ce qui crée en fait une chaîne.

Exemple


# Ceci est un exemple de commentaire
import math #  Un commentaire peut également apparaître à la fin d'une ligne.


"""
Ceci est un commentaire multiligne.

C'est en fait une chaîne, mais comme elle n'est pas affectée à une variable,
elle n'a aucun effet sur le code.

Selon PEP8, les commentaires ne devraient pas dépasser 72 caractères (s'ils sont plus longs,
se diviser sur plusieurs lignes).
"""

Quand commenter

  • En haut d’un fichier pour décrire ce que le code dans le fichier fait.
  • Pour décrire une section spécifique du code.
  • Pour décrire des algorithmes afin de les rendre plus faciles à lire et à comprendre.
  • Pour ajouter des balises dans le code :
# TODO : ajouter une nouvelle fonctionnalité ici.

Quand documenter

  • Lorsque vous pensez que vous réutiliserez le code à l’avenir (votre futur moi vous en remerciera)
  • Lorsque vous faites partie d’une équipe ou que vous voulez partager votre code avec d’autres.
  • La documentation en Python est souvent générée avec Sphinx ou mkdocs

Test du code

  • Les tests unitaires sont une méthode de test logiciel par laquelle des unités individuelles de code source sont testées pour déterminer si elles sont adaptées à l’utilisation.
  • Écrire des tests peut sembler ennuyeux au début, mais cela vous aide vraiment à trouver des problèmes plus rapidement—en particulier les régressions (casser quelque chose qui fonctionnait auparavant).
  • Je recommande d’utiliser la librairie pytest.

Développement piloté par les tests

Un processus qui met les tests au premier plan. Divisez les fonctionnalités à coder en petites unités (c’est-à-dire des fonctions). Ensuite, pour chaque fonctionnalité :

  1. Ajoutez un test.
  2. Exécutez tous les tests. Le nouveau test devrait échouer (comme lorsque vous commencez le devoir).
  3. Écrivez le code le plus simple qui fait passer le nouveau test.
  4. Tous les tests devraient maintenant passer.
  5. Refactorisez (c’est-à-dire améliorez votre code) au besoin, assurez-vous que les tests passent toujours.

Utile pour les fonctions de type mathématique, les fonctions de traitement de données, etc.

Débogage

Le débogage est le processus de recherche et de résolution des bugs (défauts ou problèmes qui empêchent le bon fonctionnement) au sein des programmes informatiques.

  • Une façon simple de déboguer est d’utiliser print() pour afficher les valeurs des variables, mais cela a des limites.
  • VS Code a un débogueur intégré.

Liens utiles :

Exceptions

Les exceptions en Python se produisent lorsqu’il y a une erreur lors de l’exécution du code :

print(5 / 0)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[1], line 1
----> 1 print(5 / 0)

ZeroDivisionError: division by zero

Exceptions (2)

Vous pouvez lever (raise) vos propres exceptions pour signaler les erreurs que vous détectez dans votre code :

error = True
if error:
    raise Exception("Il y avait une erreur")
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
Cell In[2], line 3
      1 error = True
      2 if error:
----> 3     raise Exception("Il y avait une erreur")

Exception: Il y avait une erreur

Exceptions (3)

Parfois, il est utile d’attraper et de gérer les exceptions :

x = 0
try:
    a = 5 / x
except Exception:
    print("J'ai eu une exception, mais je ne plante pas.")

print("Tout va bien !")
J'ai eu une exception, mais je ne plante pas.
Tout va bien !

Exceptions (4)

L’ensemble complet de clauses est :

  • try : exécutez ce code.
  • except : exécutez lorsque qu’il y a une exception.
  • else : exécutez lorsqu’il n’y a pas d’exceptions.
  • finally : exécutez toujours ce code à la fin.

Exceptions (5)

Il est préférable d’être aussi spécifique que possible lors de la capture des exceptions :

x = 0
try:
    a = 5 / x
except ZeroDivisionError:
    print("J'ai eu une ZeroDivisionError")
J'ai eu une ZeroDivisionError

Le code ci-dessus continuera s’il y a une ZeroDivisionError, mais plantera s’il y a un autre type d’erreur.

Utiliser l’IAG pour l’assistance à la programmation

  • Poser des questions efficacement
    • La précision compte.
    • Fournir un contexte aide.
  • Mettre en évidence des exemples
    • Mettez en évidence votre définition de code, par exemple en utilisant ``` ou un autre délimiteur.
  • Interrogation itérative
    • Commencez large, puis affinez.
    • Affinez en fonction des résultats du modèle.

Démonstration!

  • Exemples concrets
    • Débogage de code.
    • Brainstorming d’algorithmes.
    • Explication des concepts de code.

GitHub Copilot

  • Introduction à GitHub Copilot
    • Suggère du code pendant que vous tapez.
    • Paneau latéral pour chat et agent
  • Avantages de Copilot
    • Accélère la programmation.
    • Découvrez de nouvelles bibliothèques/fonctions.
    • Apprenez les meilleures pratiques.
    • Fonctionne avec Markdown
    • Version gratuites
  • Limitations et pièges potentiels
    • Ne remplace pas le jugement humain.
    • Vérifiez l’exactitude, surtout dans les tâches critiques.
    • Vérifiez l’exactitude, surtout dans les tâches critiques.
    • Vérifiez l’exactitude, surtout dans les tâches critiques.
    • Vérifiez l’exactitude, surtout dans les tâches critiques.
    • (Répété pour l’importance) Vérifiez l’exactitude.
    • NE FAITES PAS CONFIANCE AUX IAGs.

Pour utiliser l’IAG correctement, il faut connaître assez de Python pour comprendre ce qu’il se passe.

Conseils pratiques pour les étudiants en finance empirique

  • Stratégies de “prompting”
    • Soyez spécifique.
    • Offrez un contexte clair.
    • Ajuster en fonction des résultats.

Perspectives d’avenir

  • Avancées potentielles dans les MLL
    • Modèles plus spécialisés?
    • Amélioration de la précision et de la conscience du contexte.
  • L’avenir de la programmation avec l’assistance de l’IA
    • Changements dans notre approche de la programmation.
    • Équilibrer la créativité humaine avec l’efficacité de l’IA.
  • Expertise humaine et support IA
    • Partenariat pour les meilleurs résultats.
    • Chacun complète les forces et faiblesses de l’autre.

Devoir 2

  • Lecture et analyse de fichiers
  • Objets et classes
    • En Python, tout est un objet !