<  Retour au portail Polytechnique Montréal

Python Functional Programming: Study of List Comprehensions and Lambda Functions Performance and Change-Proneness Risk

François Philippe Ossim Belias

Mémoire de maîtrise (2022)

[img] Accès restreint: Personnel autorisé jusqu'au 17 juillet 2024
Conditions d'utilisation: Tous droits réservés
Afficher le résumé
Cacher le résumé

Résumé

Python est un langage de programmation populaire et sa popularité gagne du terrain dans de nombreux secteurs informatiques différents tels que l’apprentissage automatique, l’analyse de données, etc. De nos jours, c’est le langage de programmation standard d’apprentissage automatique. La popularité de Python s’explique en partie par sa syntaxe proche de l’anglais, son niveau d’abstraction et les structures de données disponibles facilitant la tâche pour implémenter rapidement des idées abstraites au moyen d’un vaste écosystème de modules et de bibliothèques. Les fonctionnalités Python permettent de mettre en œuvre des idées plus efficacement et plus rapidement, souvent en utilisant moins de lignes de code [1] par rapport aux autres langages. De plus, bien qu’il s’agisse d’un langage interprété, les performances sont acceptables dans la plupart des cas où le temps n’est pas la contrainte la plus stricte. Python est un langage multi-paradigme et l’une de ses fonctionnalités populaires, utilisée par de nombreux programmeurs, est la programmation fonctionnelle. Ce dernier, même s’il peut avoir quelques effets indésirables, offre plusieurs avantages aux programmeurs comme une meilleure parallélisation et même parfois une meilleure compréhensibilité [2]. Ce projet se concentre sur deux constructions de programmation fonctionnelle en Python qui sont la compréhension de liste et les fonctions lambda. Il y a plusieurs objectifs. Pre- mièrement et avant tout, développez un petit ensemble de règles pour transformer les com- préhensions de liste (programmation fonctionnelle) en constructions équivalentes basées sur des boucles for et vice-versa. Ces règles doivent être suffisamment générales pour garantir que la plupart des compréhensions de liste sont correctement transformées. Une fois les règles développées, un deuxième objectif est de comparer et de contraster les performances, c’est- à-dire de vérifier si la compréhension des listes est effectivement plus rapide. Pour vérifier les performances, plusieurs étapes ont été effectuées. La comparaison entre la compréhension de liste et les boucles for a été effectuée en exécutant des fragments de code équivalents de 10 000 et 100 000 itérations. L’expérience a été reproduite 30 fois, les résultats collectés et analysés statistiquement à l’aide de la méthode du Cliff delta. Les résultats montrent qu’il est préférable d’utiliser la compréhension de liste plutôt que les boucles for lorsqu’il s’agit d’exécuter un code avec un grand nombre d’itérations.

Abstract

Python is a popular programming language and its popularity is gaining traction in many different IT sectors such as machine learning, data analytics etc.. Nowadays it is the factor of the standard machine learning programming language. Python’s popularity is partially ex- plained by its syntax close to English, its level of abstraction and its available data structures easing the task of quickly implementing abstract ideas through a vast ecosystem of modules and libraries. Python features allow ideas implementation more efficiently and quickly, often, using fewer lines of code [1] compared to other languages. Furthermore, despite being an interpreted language, performances are acceptable in most cases where time is not the most stringent constraint. Python is a multi-paradigm language and one of its popular features, used by a lot of programmers, is functional programming. The latter, even if it may have some undesirable effects, offers several advantages to programmers, advantages such as better parallelization and even sometimes better comprehensibility [2]. This project focuses on two Python functional programming constructs: list comprehension and lambda functions. There are multiple objectives. First and foremost develop a small set of rules to transform list comprehensions (functional programming) into the equivalent for loop-based constructs and vice-versa. These rules should be general enough to ensure most list comprehensions are correctly transformed. Once rules are developed, a second objective is to compare and contrast performances i.e., verify if indeed list comprehensions run faster. To verify performance, several steps have been carried out. The comparison between list comprehension and for loops has been performed running 10 000 and 100 000 iterations equivalent code fragments. The experiment has been replicated 30 times, and the results were collected and statistically analyzed using the Cliff delta effect size. The results show that it is better to use list comprehension over for loops when it comes to running a code with a great number of iterations.

Département: Département de génie informatique et génie logiciel
Programme: Génie informatique
Directeurs ou directrices: Giuliano Antoniol
URL de PolyPublie: https://publications.polymtl.ca/10764/
Université/École: Polytechnique Montréal
Date du dépôt: 17 juil. 2023 11:43
Dernière modification: 13 avr. 2024 05:43
Citer en APA 7: Ossim Belias, F. P. (2022). Python Functional Programming: Study of List Comprehensions and Lambda Functions Performance and Change-Proneness Risk [Mémoire de maîtrise, Polytechnique Montréal]. PolyPublie. https://publications.polymtl.ca/10764/

Statistiques

Total des téléchargements à partir de PolyPublie

Téléchargements par année

Provenance des téléchargements

Actions réservées au personnel

Afficher document Afficher document