Droits associés à la version française▲
En vertu de la licence Creative Commons (CC BY-NC-SA 3.0 FR ; Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 FR), vous êtes autorisé à partager (copier, distribuer et communiquer le matériel par tous moyens et sous tous formats) et adapter (remixer, transformer et créer à partir du matériel) selon les conditions suivantes :
- Attribution — Vous devez créditer le document, intégrer un lien vers la licence (en l'occurrence : CC BY-NC-SA 3.0 FR) et indiquer si des modifications ont été effectuées au document. Vous devez indiquer ces informations par tous les moyens raisonnables, sans toutefois suggérer que le présent auteur vous soutient ou soutient la façon dont vous avez utilisé son travail.
- Pas d’utilisation commerciale — Vous n'êtes pas autorisé à faire un usage commercial du présent document, tout ou partie du matériel le composant.
- Partage dans les mêmes conditions — Dans le cas où vous effectuez un remix, que vous transformez, ou créez à partir du matériel composant le document original, vous devez diffuser le document modifié dans les mêmes conditions, c'est-à-dire avec la même licence avec laquelle le document original a été diffusé.
Vous n'êtes pas autorisé à appliquer des conditions légales ou des mesures techniques qui restreindraient légalement autrui à utiliser le document dans les conditions décrites par la licence.
Préface de l'édition française▲
Initialement publié en 2012 par Alan Edelman, Stefan Karpinski, Jeff Bezanson et Viral B. Shah, Julia est un langage de programmation libre (licence MIT) dont les prémices datent de 2009. Le code est arrivé à maturité en 2018 avec la version 1.0. Cependant, c'est seulement durant la période de confinement associée à la covid-19, au début mars 2020, que j'ai été véritablement attiré par Julia du fait qu'il s'agit d'un langage dont la syntaxe, aisée à comprendre, conduit rapidement, entre autres, à la résolution de problèmes scientifiques (mais aussi économiques et financiers), à l'apprentissage machine, à la manipulation de données de masse et à l'intelligence artificielle.
Au tout début mars, j'ai donc cherché un livre permettant d'apprendre le langage Julia. Parmi plusieurs ouvrages [1-5], l'un m'a séduit par sa qualité, sa rigueur et la progressivité de l'apprentissage sans s'encombrer de détails inutiles : Think Julia — How to Think Like a Computer Scientist de Ben Lauwens et Allen B. Downey [1]. Comme Julia demande à être diffusé aussi largement que possible compte tenu de ses qualités d'une part et que de l'autre il n'existe pas de livre en français pour « débutant », j'ai rapidement réalisé que s'imposait une traduction de Think Julia — How to Think Like a Computer Scientist — lui-même « portage » de Think Python — How to Think Like a Computer Scientist d'Allen B. Downey. Quelques aménagements ont été apportés ; ils sont mentionnés dans l'annexe CAnnexe C : notes de traduction .
Traductions en espagnol et en portugais▲
Le lecteur trouvera également, sous ce lien, une traduction en espagnol réalisée par Pamela Alejandra Bustamante Faúndez (Ph.D. à la Pontificia Universidad Católica de Chile) ainsi que, sous ce lien, une traduction en portugais effectuée par Abel Soares Siqueira, Gustavo Sarturi, João Okimoto, Kally Chung. Abel Soares Siqueira est professeur à l'Université fédérale du Paraná (UFPR), située à Curitiba, Brésil. Gustavo Sarturi est titulaire d'une licence en mathématiques industrielles de l'Universidade Federal do Paraná (UFPR). João Okimoto est étudiant en informatique à l'UFPR et Kally Chung y est professeur d'ingénierie mécanique.
La coordination des traductions est assurée par Christian Peel.
Remerciements▲
Ma gratitude s'adresse aux développeurs du langage Julia travaillant inlassablement à l'efficacité et au rayonnement du langage ainsi qu'aux développeurs de la Free Software Foundation qui ont contribué aux logiciels , kitxmlcodeinlinelatexdvp\LaTeX{}finkitxmlcodeinlinelatexdvp, kitxmlcodeinlinelatexdvp\TeX{}finkitxmlcodeinlinelatexdvp, Inkscape et Gimp ainsi qu'aux fontes Times Roman et TeX Gyre DejaVu Math, sans lesquels ce document n'aurait pu être réalisé.
Enfin, mes plus vifs remerciements vont aux relecteurs et correcteurs aussi avisés que scrupuleux : Maryse Debrichy et Claude Just.
Élouges, le 13 janvier 2021. |
Remerciements Developpez.com▲
Nous tenons à remercier Thierry Lepoint de nous avoir autorisés à publier sur Developpez.com son travail de traduction de ce livre.
Copyright▲
Copyright © 2018 , . Tous droits réservés.
Think Julia est disponible sous la licence Creative Commons Attribution-NonCommercial 3.0 Unported License(1). Les auteurs maintiennent une version en ligne à l'adresse ThinkJulia.jl/latest/book.html.
Ben Lauwens est professeur de mathématiques à l'École royale militaire - Koninklijke Militaire School (RMA Belgium). Il est titulaire d'un doctorat en ingénierie et d'une maîtrise de la KU Leuven et de la RMA, ainsi que d'une licence de la RMA.
Allen B. Downey est professeur d'informatique à l'Olin College of Engineering. Il a enseigné au Wellesley College, au Colby College et à l'U.C. Berkeley. Il est titulaire d'un doctorat en informatique de l'U.C. Berkeley et d'un master et d'une licence du MIT.
Une version papier de ce livre est publiée par O'Reilly Media et peut être achetée sur Amazon.
Dédicace▲
Pour Emeline, Arnaud et Tibo.
Préface▲
Ben Lauwens : « En janvier 2018, j'ai commencé la préparation d'un cours de programmation destiné aux étudiants sans expérience en programmation. Je voulais utiliser Julia, mais j'ai découvert qu'il n'existait aucun livre ayant pour but d'apprendre à programmer avec Julia comme premier langage de programmation. Il existe de merveilleux tutoriels qui expliquent les concepts-clés de Julia, mais aucun d'entre eux n'accorde suffisamment d'attention à l'apprentissage concernant la façon de penser comme un programmeur.
Je connaissais le livre « Think Python » d'Allen Downey, qui contient tous les ingrédients-clés pour apprendre à programmer correctement. Cependant, ce livre était basé sur le langage de programmation Python. Ma première ébauche de notes de cours était un melting-pot de toutes sortes d'ouvrages de référence, mais, plus j'y travaillais, plus le contenu commençait à ressembler aux chapitres de « Think Python ». Bientôt, l'idée de développer mes notes de cours comme un portage de ce livre pour Julia s'est concrétisée.
Tout le matériel était disponible sous forme de carnets Jupyter dans un dépôt GitHub. Après avoir posté un message sur le site Julia Discourse concernant les progrès de mon cours, les réactions se sont avérées très positives. Un livre sur les concepts de base de la programmation avec Julia comme premier langage de programmation était apparemment un chaînon manquant dans l'univers de Julia. J'ai contacté Allen pour lui demander si je pouvais lancer un portage officiel de « Think Python » vers Julia et sa réponse a été immédiate : « Allez-y ! » Il m'a mis en contact avec son éditeur chez O'Reilly Media et, un an plus tard, je mettais la dernière main à ce livre.
C'était un parcours semé d'embûches. En août 2018, Julia 1.0 est sorti et, comme tous mes collègues programmeurs de Julia, j'ai dû procéder à une migration du code. Tous les exemples du livre ont été testés lors de la conversion des fichiers source en fichiers AsciiDoc compatibles avec O'Reilly. La chaîne d'outils et le code des exemples ont dû être rendus conformes à la version 1.0 de Julia. Heureusement, il n'y a pas de conférence à donner en août…
J'espère que ce livre vous plaira et qu'il vous aidera à apprendre à programmer et à penser comme un informaticien, au moins un peu. »
Pourquoi choisir Julia ?▲
Julia a été initialement publié en 2012 par Alan Edelman, Stefan Karpinski, Jeff Bezanson et Viral B. Shah. Il s'agit d'un langage de programmation libre et open source (sous licence MIT).
Le choix d'un langage de programmation est toujours subjectif. Les caractéristiques suivantes de Julia sont déterminantes :
- Julia est développé comme un langage de programmation performant ;
- Julia utilise le dispatch multiple, ce qui permet au programmeur de choisir parmi différents modèles de programmation adaptés à l'application ;
- Julia est un langage à typage dynamique qui peut facilement être utilisé de manière interactive ;
- Julia a une jolie syntaxe de haut niveau, facile à apprendre ;
- Julia est un langage de programmation à typage optionnel dont les types de données (définis par l'utilisateur) rendent le code plus clair et plus robuste ;
- Julia dispose d'une bibliothèque standard étendue et de nombreux paquets tiers sont disponibles.
Julia est un langage de programmation unique, car il résout le problème des « deux langages ». Aucun autre langage de programmation n'est nécessaire pour écrire un code performant. Cela ne signifie pas que cela se fait automatiquement. Il incombe au programmeur d'optimiser le code qui provoque un ralentissement à l'exécution, mais cela peut se faire dans Julia même.
À qui ce livre s'adresse-t-il ?▲
Ce livre est destiné à tous ceux qui veulent apprendre à programmer. Aucune connaissance préalable formelle n'est requise.
De nouveaux concepts sont introduits progressivement et des sujets plus avancés sont décrits dans les chapitres suivants.
Think Julia peut être utilisé pour un cours d'un semestre au niveau lycée ou université.
Conventions typographiques▲
italique les nouveaux termes ou des notions-clés sont indiqués en italique. Lorsqu'un terme anglais est repris, il est indiqué en italique.(2)
renvois les renvois à des chapitres, sections, sous-sections (voire sous-sous-sections), les renvois aux notes de bas de page et à la bibliographie ainsi que les liens hypertextes sont en gris et cliquables (sur ordinateur à l'aide de la souris [symbole ]).
mots chasse fixe petit fonte utilisée pour le code des programmes.
mots chasse fixe bleu fonte faisant référence dans le texte aux éléments des programme tels que les noms de variables ou de fonctions, les bases de données, les types de données, les variables d'environnement, les déclarations et les mots-clés.
Plusieurs éléments sont indiqués pour attirer l'attention du lecteur :
Cette indication donne un conseil ou une suggestion.
Cette mention apporte une information générale.
Cette information signale une mise en garde ou une situation où la prudence s'impose.
Utilisation des exemples de code▲
Tout le code utilisé dans ce livre est disponible dans un dépôt Git sur GitHub : BenLauwens/ThinkJulia.jl. Git est un système de contrôle de version qui permet de garder une trace des fichiers qui composent un projet. Une collection de fichiers sous le contrôle de Git est appelée un « dépôt ». GitHub est un service d'hébergement qui fournit un stockage pour les dépôts Git et une interface web pratique.(3)
Compte tenu de modifications récentes (postérieures à la publication de Think Julia [10]) concernant directement l'environnement de développement intégré de Julia (Atom/Juno) et de l'abandon de JuliaBox, le traducteur se permet de renvoyer le lecteur à l'annexe BAnnexe B : Installation de Julia pour l'installation de Julia, de ses modules, de Visual Studio Codium et l'usage de carnets (notebooks) d'utilisation sur le web ou en mode local.
Remerciements▲
Je tiens à remercier Allen B. Downey d'avoir rédigé Think Python, How to Think Like a Computer Scientist et de m'avoir permis d'effectuer un portage de son livre en Julia. Son enthousiasme est contagieux !
J'aimerais également remercier les relecteurs/correcteurs de ce livre, qui ont fait de nombreuses suggestions utiles : Tim Besard, Bart Janssens et David P. Sanders.
Merci à Melissa Potter de O'Reilly Media, qui a contribué à améliorer ce livre. Vous m'avez forcé à faire les choses correctement et à rendre ce livre aussi original que possible.
Merci à Matt Hacker de O'Reilly Media, qui m'a aidé avec la chaîne d'outils Atlas et qui a résolu quelques problèmes de syntaxe.
Merci à tous les étudiants ayant travaillé avec une première version de ce livre et à tous les contributeurs (cités ci-dessous) qui ont envoyé des corrections et des suggestions.
Liste des contributeurs▲
Si vous avez une suggestion ou une correction, veuillez envoyer un courriel à ou ouvrir un numéro sur GitHub. Si je fais une modification sur la base de vos commentaires, je vous ajouterai à la liste des contributeurs (sauf si vous demandez à être omis).
Faites-moi savoir avec quelle version du livre vous travaillez et avec quel format. Si vous incluez au moins une partie de la phrase dans laquelle l'erreur apparaît, cela facilitera la recherche. Les numéros de page et de section sont également utiles quoique peu aisés à utiliser.
- Scott Jones a signalé le changement de nom de
Void
enNothing
, ce qui a lancé la migration vers Julia 1.0. - Robin Deits a trouvé quelques fautes de frappe dans le chapitre 2Variables, expressions et déclarations (Variables, expressions et déclarations).
- Mark Schmitz a suggéré d'activer la mise en évidence syntaxique.
- Zigu Zhao a détecté des bogues dans le chapitre 8Chaînes (Chaînes).
- Oleg Soloviev a détecté une erreur dans l'URL d'ajout du paquet ThinkJulia (chapitre 4Étude de cas : Conception d'une interface).
- Aaron Ang a trouvé des problèmes de rendu et de dénomination.
- Sergey Volkov a détecté un lien brisé dans le chapitre 7Itération (Itération).
- Sean McAllister a suggéré de mentionner l'excellent paquet BenchmarkTools.
- Carlos Bolech a envoyé une longue liste de corrections et de suggestions.
- Krishna Kumar a corrigé l'exemple de Markov dans le chapitre 18Sous-typage (Sous-typage).