{"product_id":"154714","title":"Une programmation fonctionnelle facile à comprendre ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jYDPLHC0ySg0N1y70Z3INAEBVVD9W.png?v=1765081489\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Une programmation fonctionnelle facile à comprendre \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/108748841\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eIntroduction au livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e \u003cb\u003eUn ouvrage indispensable pour appréhender la complexité des logiciels.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Ce livre explique comment simplifier la programmation en utilisant la pensée fonctionnelle pour empêcher la propagation d'une complexité involontaire dans votre code. \u003cbr\u003eApprenez à distinguer les actions qui modifient l'état d'un système des calculs qui ne le modifient pas, et à restructurer les actions en calculs pour simplifier le logiciel.\u003cbr\u003e Il vous montre également comment résoudre les problèmes de synchronisation qui surviennent lors de l'utilisation de l'asynchronisme et du multithreading.\u003cbr\u003e Vous apprendrez également à éliminer le code répétitif et à accroître l'expressivité.\u003cbr\u003e Cela vous donnera beaucoup d'inspiration pour créer de meilleurs logiciels.\u003cbr\u003e\n\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e Vous pouvez consulter un aperçu du contenu du livre.\u003cbr\u003e \u003cspan\u003eAperçu\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindice\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Préface du traducteur xvii\u003cbr\u003e Avis du lecteur bêta xix\u003cbr\u003e Recommandation 21\u003cbr\u003e Préface xxvi\u003cbr\u003e Remerciements xxviii\u003cbr\u003e À propos de ce livre xxx\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 1 Bienvenue dans le monde de la programmation fonctionnelle : un guide simple pour apprendre\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Qu'est-ce que la programmation fonctionnelle ? 2\u003cbr\u003e Problèmes liés aux définitions de la programmation fonctionnelle d'un point de vue pratique 3\u003cbr\u003e Les définitions de la programmation fonctionnelle déroutent les gestionnaires 4 \u003cbr\u003e5. Considérer la programmation fonctionnelle comme une technique et un concept, et non comme un savoir académique\u003cbr\u003e Distinguer les actions, les calculs et les données 6\u003cbr\u003e Les programmeurs fonctionnels font la distinction entre le code qui doit être appelé avec prudence 7\u003cbr\u003e Les programmeurs fonctionnels font la distinction entre le code qui s'exécute et le code qui ne s'exécute pas.\u003cbr\u003e Les programmeurs fonctionnels séparent les actions, les calculs et les données. 9\u003cbr\u003e En programmation fonctionnelle, le code est divisé en trois catégories : 10\u003cbr\u003e Quels sont les avantages de séparer les actions, les calculs et les données ? 11\u003cbr\u003e 12 différences entre ce livre et d'autres ouvrages sur la programmation fonctionnelle\u003cbr\u003e Qu’est-ce que la pensée fonctionnelle ? 13\u003cbr\u003e 14 règles de base pour lire ce livre\u003cbr\u003e Conclusion 16\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 2 La pensée fonctionnelle dans la vie réelle 17\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Bienvenue chez Tony's Pizza 18\u003cbr\u003e Partie I : Actions et calculs, Données 19\u003cbr\u003e Code divisé par la capacité de modification 20\u003cbr\u003e Partie II : Abstraction de première classe 21\u003cbr\u003e Visualisation des systèmes distribués sous forme de chronologie 22\u003cbr\u003e Chaque chronologie se déroule dans un ordre différent. 23 \u003cbr\u003e24 leçons tirées de l'expérience sur les systèmes distribués\u003cbr\u003e Réduction du temps : Faire attendre les robots les uns les autres 25\u003cbr\u003e 26 choses que j'ai apprises sur les chronologies grâce à une bonne expérience\u003cbr\u003e Conclusion 27\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePARTIE I Actions, calculs et données\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 3 Comprendre la différence entre actions, calculs et données 31\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Actions et calculs, données 32\u003cbr\u003e Les actions, les calculs et les données peuvent être appliqués n'importe où 33\u003cbr\u003e 36 choses que j'ai apprises en faisant du shopping\u003cbr\u003e Application de la pensée fonctionnelle au nouveau code 39\u003cbr\u003e Schéma du processus d'envoi des coupons 42\u003cbr\u003e Mise en œuvre du processus d'envoi de coupons 47\u003cbr\u003e Application de la pensée fonctionnelle au code existant 54\u003cbr\u003e Actions réparties dans tout le code 56\u003cbr\u003e L'action prend de nombreuses formes 57\u003cbr\u003e Conclusion 59\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 4 Éliminer les calculs des actions 61\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Bienvenue sur MegaMart.com 62\u003cbr\u003e Calculer les frais de livraison gratuite 63\u003cbr\u003e Calcul des impôts 64\u003cbr\u003e Faciliter les tests 65\u003cbr\u003e Faciliter la réutilisation 66\u003cbr\u003e Séparation des actions, des calculs et des données 67 \u003cbr\u003eLes fonctions ont des entrées et des sorties 68\u003cbr\u003e Les tests et la réutilisabilité sont liés aux entrées\/sorties 69\u003cbr\u003e Mise hors service des calculs 70\u003cbr\u003e En supprimant un autre calcul 73\u003cbr\u003e Examinons le code 85 dans son intégralité.\u003cbr\u003e Conclusion 86\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 5 CRÉER DE MEILLEURES ACTIONS 87\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Alignement des exigences commerciales avec la conception 88\u003cbr\u003e Alignement des exigences et des fonctions de l'entreprise 89\u003cbr\u003e Principe : Moins il y a d'entrées et de sorties implicites, mieux c'est. 91\u003cbr\u003e Réduction des entrées et sorties implicites 92\u003cbr\u003e Réexamen du Code 95\u003cbr\u003e Classification des calculs 97\u003cbr\u003e Principe : Concevoir, c'est démêler le code 98\u003cbr\u003e Séparer add_item() pour créer une meilleure conception 99\u003cbr\u003e Extraction du modèle de copie sur écriture 100\u003cbr\u003e Utilisation de add_item() 101\u003cbr\u003e Classification des calculs 102\u003cbr\u003e Petites fonctions et nombreux calculs 106\u003cbr\u003e Conclusion 107\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 6 Maintien de l'immuabilité dans les langages avec des structures de données mutables 109\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Toutes les actions peuvent-elles être rendues invariantes ? 110\u003cbr\u003e Classification des actions comme lecture, écriture ou les deux 111 \u003cbr\u003eLe principe de la copie sur écriture : trois étapes 112\u003cbr\u003e Conversion de l'écriture en lecture avec Copy-On-Write 113\u003cbr\u003e Afficher les différences entre la version originale et la version copy-on-write 117\u003cbr\u003e L'opération de copie sur écriture que nous avons créée précédemment est courante 118\u003cbr\u003e Aperçu des tableaux JavaScript 119\u003cbr\u003e Comment lire en écrivant ? 122\u003cbr\u003e Séparation des fonctions lues pendant l'écriture 123\u003cbr\u003e Créez une fonction qui renvoie deux valeurs : 124\u003cbr\u003e La lecture des structures de données immuables est un calcul 131\u003cbr\u003e L'application possède un état qui évolue au fil du temps 132\u003cbr\u003e Les structures de données immuables sont suffisamment rapides 133\u003cbr\u003e Copie sur écriture pour les objets 134\u003cbr\u003e Aperçu rapide des objets JavaScript 135\u003cbr\u003e Conversion des écritures imbriquées en lectures 140\u003cbr\u003e De quel type de copie s'agirait-il ? 141\u003cbr\u003e Exploration picturale de la copie superficielle et du partage structurel 142\u003cbr\u003e Conclusion 145\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 7 Maintien de l'invariance lors de l'écriture de code non fiable 147\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Code hérité et immuabilité 148 \u003cbr\u003eLe code à copie sur écriture que nous créons doit interagir avec du code non fiable. 149\u003cbr\u003e La copie défensive empêche la modification de l'original. 150\u003cbr\u003e Mise en œuvre de la copie défensive 151\u003cbr\u003e Règle 152 de la copie défensive\u003cbr\u003e Encapsulation de code non fiable 153\u003cbr\u003e La copie défensive vous est peut-être familière 156\u003cbr\u003e Comparons la copie à l'écriture et la copie défensive 158\u003cbr\u003e Les copies profondes sont plus chères que les copies superficielles 159\u003cbr\u003e La mise en œuvre de copies profondes en JavaScript est difficile.\u003cbr\u003e Dialogue entre la copie sur support papier et la copie défensive 162\u003cbr\u003e Conclusion 165\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 8 CONCEPTION HIÉRARCHIQUE I 167\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Qu'est-ce que la conception logicielle ? 168\u003cbr\u003e Qu’est-ce qu’une conception hiérarchique ? 169\u003cbr\u003e Développer le sens du design 170\u003cbr\u003e Modèle de conception hiérarchique 171\u003cbr\u003e Modèle 1 : Implémentation directe 172\u003cbr\u003e Niveau de zoom en 3 étapes 186\u003cbr\u003e Suppression des boucles 189\u003cbr\u003e Revue du modèle d'implémentation directe 198\u003cbr\u003e Conclusion 199\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 9 CONCEPTION HIÉRARCHIQUE II 201\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Modèle de conception hiérarchique 202\u003cbr\u003e Motif 2 : Mur abstrait 203 \u003cbr\u003eDissimuler l'implémentation derrière un mur d'abstraction 204\u003cbr\u003e Les détails cachés sont symétriques 205\u003cbr\u003e Modification de la structure des données du panier d'achat 206\u003cbr\u003e Recréer le panier d'achat en tant qu'objet 208\u003cbr\u003e Avec un mur d'abstraction, vous n'avez pas à vous soucier des détails. 209\u003cbr\u003e Quand est-il judicieux d'utiliser un mur abstrait ? 210\u003cbr\u003e Analyse du motif 2 : Mur abstrait 211\u003cbr\u003e Le code précédemment modifié se rapproche davantage d'une implémentation directe 212\u003cbr\u003e Modèle 3 : Petite interface 213\u003cbr\u003e Analyse du modèle 3 : Petite interface 219\u003cbr\u003e Modèle 4 : Couche pratique 220\u003cbr\u003e Modèle de conception hiérarchique 221\u003cbr\u003e Quelles informations sur le code peut-on tirer du graphique ? 222\u003cbr\u003e Le code en haut du graphique est le plus facile à corriger : 223\u003cbr\u003e Le code ci-dessous est important pour tester 225\u003cbr\u003e Le code ci-dessous est plus facile à réutiliser. 228\u003cbr\u003e Résumé : Ce que le graphique vous apprend sur votre code 229\u003cbr\u003e Conclusion 230\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePARTIE II Résumé de première classe\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 10 : Fonctions de première classe I 233\u003c\/b\u003e\u003cbr\u003e \u003cbr\u003eL'équipe marketing doit encore consulter l'équipe de développement 235\u003cbr\u003e Mauvaises pratiques de programmation : arguments implicites dans les noms de fonctions 236\u003cbr\u003e Refactorisation : Mise en évidence des arguments implicites 238\u003cbr\u003e Distinction entre les billets de première classe et les billets de classe inférieure 240\u003cbr\u003e L'utilisation de noms de champs sous forme de chaînes de caractères ne risque-t-elle pas de provoquer des bogues ? 241\u003cbr\u003e L'utilisation de champs de première classe rend-elle les modifications d'API plus difficiles ?\u003cbr\u003e Vous utiliserez trop d'objets et de tableaux 247\u003cbr\u003e Toute grammaire peut être convertie en une fonction de première classe 250\u003cbr\u003e Exemple de boucle : Manger et nettoyer 253\u003cbr\u003e Refactorisation : Remplacement du corps d’une fonction par une fonction de rappel 259\u003cbr\u003e Quelle est cette règle grammaticale ? 262\u003cbr\u003e Pourquoi encapsuler le corps dans une fonction et le passer en paramètre ? 263\u003cbr\u003e Conclusion 265\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 11 Fonctions de première classe II 267\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Un problème de code et deux refactorisations 268\u003cbr\u003e Refactorisation Copy-on-Write 269\u003cbr\u003e Refactorisation Copy-on-Write pour les tableaux 270\u003cbr\u003e Fonctions qui renvoient des fonctions 279\u003cbr\u003e Conclusion 288\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 12 Itération fonctionnelle 289\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Un problème de code et deux refactorisations 290 \u003cbr\u003eMegaMart a décidé de créer une équipe de communication. 291\u003cbr\u003e Dérivation de la fonction map() à travers des exemples 294\u003cbr\u003e Outils fonctionnels : map() 295\u003cbr\u003e Trois façons de passer des fonctions 297\u003cbr\u003e Exemple : Toutes les adresses e-mail des clients 298\u003cbr\u003e Dérivation de la fonction filter() à travers des exemples 301\u003cbr\u003e Outils fonctionnels : filter() 302\u003cbr\u003e Exemple : Le client 303 n’a rien acheté.\u003cbr\u003e Dérivation de reduce() avec exemples 306\u003cbr\u003e Outils fonctionnels : reduce() 307\u003cbr\u003e Exemple : Concaténation de chaînes 308\u003cbr\u003e 313 choses que vous pouvez faire avec reduce()\u003cbr\u003e Comparaison de trois outils fonctionnels 315\u003cbr\u003e Conclusion 316\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 13 : Enchaînement fonctionnel des outils 317\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e L'équipe de communication client travaille toujours 318\u003cbr\u003e Clarifier la chaîne 1 : Nommer les étapes 324\u003cbr\u003e Rendre les chaînes plus claires 2 : Nommer les rappels 325\u003cbr\u003e Clarification de la chaîne 3 : Comparaison des deux méthodes 326\u003cbr\u003e Exemple : Liste d'adresses électroniques de clients n'ayant effectué qu'un seul achat (327)\u003cbr\u003e Refactorisation des boucles avec des outils fonctionnels 332\u003cbr\u003e Conseil 1 : Création de données 333 \u003cbr\u003eAstuce 2 : Manipuler un tableau entier en une seule fois 334\u003cbr\u003e Conseil 3 : Décomposez-le en étapes plus petites 335\u003cbr\u003e Comparaison des codes de procédure et de fonction 337\u003cbr\u003e Résumé des conseils d'enchaînement 338\u003cbr\u003e Conseils pour le débogage en chaîne 340\u003cbr\u003e Outils fonctionnels divers 341\u003cbr\u003e reduce() pour créer des valeurs 345\u003cbr\u003e Faites preuve de créativité avec les données 347\u003cbr\u003e Tri par opérateur de méthode 353\u003cbr\u003e Conclusion 354\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 14 Utilisation des outils fonctionnels avec des données imbriquées 355\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Fonctions d'ordre supérieur pour la manipulation d'objets 356\u003cbr\u003e Rendre les noms de champs explicites 357\u003cbr\u003e Dérivation de update() 358\u003cbr\u003e Utilisation de la fonction update() pour modifier les valeurs 359\u003cbr\u003e Refactorisation : Remplacer Get, Change et Set par update() 361\u003cbr\u003e Outils fonctionnels : update() 362\u003cbr\u003e Visualisation des valeurs dans les objets 363\u003cbr\u003e Visualisation des mises à jour imbriquées 368\u003cbr\u003e Utilisation de update() avec des données imbriquées 369\u003cbr\u003e Dérivation de updateOption() 370\u003cbr\u003e Dérivation de update2() 371\u003cbr\u003e Visualisation de update2() pour les objets imbriqués 372\u003cbr\u003e Quatre façons de créer incrementSizeByName() 374 \u003cbr\u003eDérivation de update3() 375\u003cbr\u003e Dérivation de nestedUpdate() 377\u003cbr\u003e Utilisation sécurisée de la récursivité 382\u003cbr\u003e Visualisation de nestedUpdate() 383\u003cbr\u003e Pourquoi les fonctions récursives sont appropriées 384\u003cbr\u003e 386 éléments à prendre en compte lors de la conception de structures profondément imbriquées\u003cbr\u003e Utilisation des murs d'abstraction pour les données profondément imbriquées 387\u003cbr\u003e Fonctions d'ordre supérieur apprises précédemment 388\u003cbr\u003e Conclusion 389\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 15 : Isoler la chronologie 391\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Il y a un bug ! 392\u003cbr\u003e Double-cliquons rapidement sur 393\u003cbr\u003e Un diagramme chronologique illustre ce qui se passe au fil du temps 395\u003cbr\u003e Règles de base du diagramme chronologique à deux lignes 396\u003cbr\u003e Deux détails concernant la séquence d'action que vous pourriez manquer si vous regardez attentivement 400\u003cbr\u003e Élaboration d'une chronologie d'ajout au panier : Étapes 1 à 401\u003cbr\u003e Les appels asynchrones mènent à une nouvelle chronologie 402\u003cbr\u003e Langues différentes, modèles de threads différents 403\u003cbr\u003e Création d'une chronologie étape par étape 404\u003cbr\u003e Élaboration d'une chronologie d'ajout au panier : Étape 2 406 \u003cbr\u003eLe diagramme chronologique montre que deux types de code sont exécutés séquentiellement. 407\u003cbr\u003e Un diagramme chronologique montre que l'exécution simultanée de code a un ordre imprévisible 408\u003cbr\u003e Principe 409 d'une bonne chronologie\u003cbr\u003e JavaScript monothread 410\u003cbr\u003e Files d'attente asynchrones en JavaScript 411\u003cbr\u003e AJAX et files d'attente d'événements 412\u003cbr\u003e Exemple asynchrone complet 413\u003cbr\u003e Simplifier la chronologie 414\u003cbr\u003e Lecture de la chronologie complétée 420\u003cbr\u003e Simplifier le processus d'ajout au panier : Étape 3 422\u003cbr\u003e Révision : Élaboration d'une chronologie (Étapes 1 à 3) 424\u003cbr\u003e Résumé : Élaboration d'un diagramme chronologique 426\u003cbr\u003e Si vous comparez les chronologies, vous pouvez constater le problème 427\u003cbr\u003e Double-cliquez lentement et il n'y a aucun problème 428\u003cbr\u003e Un double clic rapide donne des résultats incorrects 429\u003cbr\u003e Les échéanciers qui partagent des ressources peuvent poser problème 430\u003cbr\u003e Conversion des variables globales en variables locales 431\u003cbr\u003e Conversion des variables globales en arguments 432 \u003cbr\u003eRendre le code plus réutilisable 435\u003cbr\u003e Principe : Les fonctions de rappel peuvent être utilisées à la place des valeurs de retour pour une sortie explicite dans les appels asynchrones 436\u003cbr\u003e Conclusion 440\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 16 Partage des ressources entre les chronologies 441\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Principes d'une bonne chronologie 442\u003cbr\u003e Il y a toujours un bug dans le panier 443\u003cbr\u003e Nous devons nous assurer de l'ordre dans lequel le DOM est mis à jour 445\u003cbr\u003e Création d'une file d'attente en JavaScript 447\u003cbr\u003e Principe : Inspirer la réalité dans Comment partager 455\u003cbr\u003e Rendre les files d'attente réutilisables 456\u003cbr\u003e Analyse de la chronologie créée jusqu'à présent 461\u003cbr\u003e Règle : Si vous pensez qu'il y a un problème, consultez le diagramme chronologique. 464\u003cbr\u003e Faites passer la file d'attente au 465.\u003cbr\u003e Conclusion 469\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 17 : Ajustez votre chronologie 471\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Principes d'une bonne chronologie 472\u003cbr\u003e Il y a un bug ! 473\u003cbr\u003e Comment le code a-t-il changé ? 475\u003cbr\u003e Vérifier l'action : Étape 1 476\u003cbr\u003e Dessiner toutes les actions : Étape 2 477\u003cbr\u003e Simplification du diagramme : Étape 3 481 \u003cbr\u003eAnalyse de la séquence exécutable 483\u003cbr\u003e Pourquoi le délai est-il plus court maintenant ? 484\u003cbr\u003e Attendez tous les rappels parallèles 486\u003cbr\u003e Primitives de concurrence pour la division des chronologies 487\u003cbr\u003e Application de Cut() au code 489\u003cbr\u003e Analyse des ordres incertains 491\u003cbr\u003e Analyse de l'exécution parallèle 492\u003cbr\u003e Analyse 493 lors de plusieurs clics\u003cbr\u003e Basic 500, appelé une seule fois\u003cbr\u003e Modèles temporels implicites et explicites 502\u003cbr\u003e Résumé : Utilisation de la chronologie 507\u003cbr\u003e Conclusion 508\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 18 Architecture réactive et architecture en oignon 509\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Les deux modèles architecturaux sont indépendants 510\u003cbr\u003e Lien de cause à effet étroit pour le changement 511\u003cbr\u003e Qu'est-ce que l'architecture réactive ? 512\u003cbr\u003e Compromis en architecture réactive 513\u003cbr\u003e Cellule en parfait état 514\u003cbr\u003e Vous pouvez rendre ValueCell adaptatif 515\u003cbr\u003e Vous pouvez mettre à jour l'icône d'expédition lorsque la cellule change 516\u003cbr\u003e FormulaCell calcule les valeurs dérivées 517\u003cbr\u003e Programmation fonctionnelle et état mutable 518 \u003cbr\u003eComment l'architecture réactive a transformé les systèmes 519\u003cbr\u003e Distinguer la combinaison de cause et d'effet 520\u003cbr\u003e La séparation de l'union régit le centre de cause et d'effet 521\u003cbr\u003e Traiter plusieurs étapes dans un pipeline 522\u003cbr\u003e Le calendrier devient plus flexible 523\u003cbr\u003e Un autre motif architectural 526\u003cbr\u003e Qu'est-ce que l'architecture en oignon ? 527\u003cbr\u003e Revoir : Actions et calculs, Données 528\u003cbr\u003e Revoir : Conception hiérarchique 529\u003cbr\u003e Architecture hiérarchique traditionnelle 530\u003cbr\u003e Architecture fonctionnelle 531\u003cbr\u003e Il devrait être facile de modifier et de réutiliser 532\u003cbr\u003e Les règles de domaine utilisent les termes de domaine 535\u003cbr\u003e La lisibilité doit être prise en compte 536\u003cbr\u003e Conclusion 539\u003cbr\u003e\u003cbr\u003e \u003cb\u003eCHAPITRE 19 : Avant votre parcours en programmation fonctionnelle 541\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Plan du chapitre final 542\u003cbr\u003e J'ai appris les compétences d'un expert 543\u003cbr\u003e 544 choses à retenir\u003cbr\u003e Évolution des compétences et des passions au fil du temps 545\u003cbr\u003e Devenir un maître avec deux pistes 546\u003cbr\u003e Bac à sable : Démarrer un projet parallèle 547\u003cbr\u003e Bac à sable : Entraînement avec des exercices pratiques 548 \u003cbr\u003eProduit : Débarrassez-vous des insectes dès aujourd'hui ! 549\u003cbr\u003e Produit : Améliorez votre design étape par étape 549\u003cbr\u003e 550 langages de programmation fonctionnelle populaires\u003cbr\u003e Le langage fonctionnel qui compte le plus d'emplois (552)\u003cbr\u003e 552 langages fonctionnels disponibles sur différentes plateformes\u003cbr\u003e 553 langages fonctionnels, classés selon ce que vous pouvez apprendre\u003cbr\u003e Acquisition de connaissances mathématiques 554\u003cbr\u003e Lecture complémentaire 555\u003cbr\u003e Conclusion 556\u003cbr\u003e\u003cbr\u003e Recherche 557\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eImage détaillée\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate3807\/MidCate002\/380613007.jpg\" border=\"0\" alt=\"Image détaillée 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDans le livre\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e De nombreux développeurs se demandent ce qu'est la programmation fonctionnelle et dans quels cas il serait judicieux de l'utiliser.\u003cbr\u003e Il est difficile de déterminer précisément où se situe la programmation fonctionnelle.\u003cbr\u003e La programmation fonctionnelle est un paradigme de programmation à usage général, elle peut donc être utilisée partout.\u003cbr\u003e Mais à la lecture de ce livre, vous découvrirez des domaines où la programmation fonctionnelle est plus adaptée.\u003cbr\u003e\u003cbr\u003e --- p.2\u003cbr\u003e\u003cbr\u003e À l'avenir, vous apprendrez différentes techniques de programmation fonctionnelle. \u003cbr\u003eAvant cela, nous devons être capables de faire la distinction entre actions, calculs et données.\u003cbr\u003e Puisque cela constitue la base de toutes les autres techniques, une fois que vous l'aurez appris, vous pourrez facilement apprendre d'autres techniques de programmation fonctionnelle.\u003cbr\u003e\u003cbr\u003e --- p.30\u003cbr\u003e\u003cbr\u003e La conception hiérarchique est une technique permettant d'organiser un logiciel en couches.\u003cbr\u003e Les fonctions de chaque couche sont définies à l'aide des fonctions de la couche immédiatement inférieure.\u003cbr\u003e Développer un sens du design vous aidera à comprendre la hiérarchie qui facilite la correction, la lecture, le test et la réutilisation de votre logiciel.\u003cbr\u003e --- p.169\u003cbr\u003e\u003cbr\u003e Trouvons quelque chose qui n'est pas de première classe et transformons-le en produit de première classe.\u003cbr\u003e Cela vous permettra d'acquérir de nouvelles compétences en résolution de problèmes.\u003cbr\u003e La capacité à en faire quelque chose de première classe est importante en programmation fonctionnelle.\u003cbr\u003e En vous appuyant sur cette technique, vous pourrez apprendre des techniques plus sophistiquées de modèles de programmation fonctionnelle.\u003cbr\u003e --- p.240\u003cbr\u003e \u003cbr\u003eDécouvrons les diagrammes chronologiques pour représenter la séquence d'actions exécutées au fil du temps.\u003cbr\u003e Les diagrammes chronologiques vous aident à comprendre le fonctionnement du logiciel.\u003cbr\u003e Il est particulièrement utile pour comprendre les systèmes distribués, tels que la communication entre serveurs web et clients.\u003cbr\u003e Vous pouvez également diagnostiquer et prédire les bogues à l'aide d'un diagramme chronologique.\u003cbr\u003e Et vous pouvez créer du code qui résout le problème.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- p.391\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eAvis de l'éditeur\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eComment les développeurs fonctionnels pensent-ils et écrivent-ils du code ?\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e La programmation fonctionnelle est une nouvelle façon de programmer, différente de la programmation procédurale et de la programmation orientée objet.\u003cbr\u003e Apprendre la programmation fonctionnelle, c'est donc apprendre une nouvelle façon de penser.\u003cbr\u003e Alors, comment les développeurs fonctionnels conçoivent-ils et créent-ils des logiciels ? \u003cbr\u003eCe livre commence par aborder les effets secondaires, l'aspect le plus fondamental de la programmation fonctionnelle.\u003cbr\u003e Nous apprendrons d'abord à distinguer les actions (fonctions avec effets de bord) des calculs (calculs sans effets de bord). Une fois cette distinction établie, nous verrons comment réduire les actions avec effets de bord et quelles techniques permettent de les transformer en calculs.\u003cbr\u003e Ensuite, nous apprendrons le concept des fonctions de première classe et expliquerons comment réduire les boucles à l'aide de fonctions d'ordre supérieur.\u003cbr\u003e Apprendre cela vous permettra de réutiliser des unités de code fonctionnelles et de faciliter les tests.\u003cbr\u003e Ce processus est expliqué étape par étape afin que vous puissiez facilement comprendre et appliquer ce que vous avez appris en théorie.\u003cbr\u003e\u003cbr\u003e Le code d'exemple utilisé dans ce livre est écrit en JavaScript. \u003cbr\u003eJavaScript n'est pas un langage fonctionnel parfait, mais il lui manque certaines caractéristiques des langages fonctionnels, ce qui en fait un bon langage pour illustrer la pensée fonctionnelle.\u003cbr\u003e Elle explique plus en profondeur les concepts fonctionnels en créant soi-même des fonctions fonctionnelles insuffisantes.\u003cbr\u003e Ce livre raconte l'histoire en créant des cas réalistes.\u003cbr\u003e Il est conçu pour être ludique et stimulant, comme si vous faisiez partie de l'équipe de développement de l'entreprise.\u003cbr\u003e En rejoignant l'équipe de développement, vous pourrez observer directement comment les développeurs fonctionnels conçoivent la création de logiciels.\u003cbr\u003e Même si vous n'utilisez pas de langage fonctionnel ou que la programmation fonctionnelle ne vous intéresse pas, apprendre la pensée fonctionnelle vous aidera à développer vos compétences en résolution de problèmes grâce à une nouvelle façon de penser. \u003cbr\u003eJe recommande ce livre aux lecteurs qui souhaitent apprendre la programmation fonctionnelle, ainsi qu'à tous les développeurs qui veulent rendre leur programmation un peu plus concise et claire.\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePublic cible\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e ■ Professionnels ayant 2 à 5 ans d'expérience en développement logiciel\u003cbr\u003e ■ Les développeurs qui créent des systèmes simples mais qui ont des difficultés à gérer des systèmes complexes \u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e SPÉCIFICATIONS DES PRODUITS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate de publication :\u003c\/strong\u003e 22 avril 2022\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e \u003cstrong\u003eNombre de pages, poids, dimensions :\u003c\/strong\u003e 596 pages | 1 124 g | 170 × 225 × 28 mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13 :\u003c\/strong\u003e 9791191600759\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10 :\u003c\/strong\u003e 1191600750 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893444476970,"sku":"154714","price":49.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/6566a8e668ea2389f8ebaa424c9b36c1.jpg?v=1765402427","url":"https:\/\/librairie.coreenne.fr\/products\/154714","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}