Maison > Problème commun > Quels sont les langages de programmation multi-paradigmes ?

Quels sont les langages de programmation multi-paradigmes ?

coldplay.xixi
Libérer: 2023-02-15 13:59:03
original
3859 Les gens l'ont consulté

Les langages de programmation multi-paradigmes comprennent : 1. La programmation orientée objet, qui améliore la réutilisabilité, la flexibilité et l'évolutivité des logiciels ; 2. La programmation fonctionnelle, un paradigme de programmation qui utilise les fonctions mathématiques comme langage de programmation de base ; modélisation ; 3. La programmation générique offre un niveau d'abstraction plus élevé.

Quels sont les langages de programmation multi-paradigmes ?

L'environnement d'exploitation de cet article : système Windows 7, ordinateur Dell G3.

Les langages de programmation multi-paradigmes sont :

Résumé :

Cet article parle principalement de trois paradigmes de programmation - la programmation orientée objet et la programmation fonctionnelle programmation , Le concept de programmation générique

Paradigme de programmation

Le paradigme de programmation est l'idée derrière le langage de programmation. Représente le point de vue du concepteur du programme sur la manière dont le programme doit être construit et exécuté. Les paradigmes de programmation courants incluent : la programmation procédurale, orientée objet, fonctionnelle, générique, etc.

Certains langages de programmation sont spécialement conçus pour un paradigme spécifique. Par exemple, le langage C est un langage de programmation procédural ; Smalltalk et Java sont des langages de programmation orientés objet relativement purs ; Haskell est un langage de programmation purement fonctionnel. De plus, la relation entre certains langages de programmation et paradigmes de programmation n'est pas individuelle. Par exemple, Python, Scala et Groovy prennent tous en charge dans une certaine mesure la programmation orientée objet et fonctionnelle. C++ est un exemple réussi de langage de programmation multi-paradigmes. C++ prend en charge le même paradigme de programmation procédurale que le langage C, et prend également en charge le paradigme de programmation orientée objet STL (Standard Template Library) qui permet au C++ d'avoir des capacités de programmation génériques. La prise en charge de plusieurs paradigmes peut être l’une des raisons pour lesquelles le C++ jouit encore d’une forte vitalité jusqu’à présent.

Swift est un langage de programmation multi-paradigme typique, qui prend en charge le paradigme de programmation orienté objet, le paradigme de programmation fonctionnelle et la programmation générique. La prise en charge par Swift de plusieurs paradigmes de programmation est déterminée par ses objectifs de création. L'intention initiale de Swift était de fournir un langage industriel pratique. Il est différent des langages de programmation académiques comme Haskell qui proviennent des universités et des instituts de recherche. Apple avait un objectif commercial clair lorsqu'il a lancé Swift : Objective-C, le principal langage de programmation pour les systèmes Mac OS et iOS, est devenu obsolète. Swift permettra aux développeurs de systèmes Apple de disposer d'un langage de programmation plus moderne, favorisant ainsi Apple La santé. développement de l’ensemble de l’écosystème.

La conception et le développement de Swift reflètent tous l'objectif du « langage industriel pratique ». Cela détermine que Swift ne peut pas faire d'expériences linguistiques extrêmes. Il doit rechercher soigneusement des percées basées sur une approche rationnelle de la réalité. Cela détermine que Swift doit hériter de l'héritage historique, répondre aux besoins pratiques de la plupart des programmeurs d'aujourd'hui et en même temps se développer vers l'avenir.

1. Orienté objet - héritage

La programmation orientée objet utilise les objets comme unité de base du programme, encapsulant le programme et les données qu'il contient pour améliorer la réutilisabilité du logiciel. Flexibilité et évolutivité.

Le concept de base de la programmation orientée objet :

  • Le polymorphisme fait référence à différentes classes liées générées par héritage, dont les objets répondront différemment au même message ; 🎜>

  • Héritage, dans certains cas, une classe aura des "sous-classes". La sous-classe est plus spécifique que la classe d'origine (appelée classe parent) ;

  • encapsulation, la programmation orientée objet masque les étapes d'exécution spécifiques d'une certaine méthode, à la place en utilisant des messages. Le mécanisme de livraison lui délivre des messages.

Un langage de programmation orienté objet qui utilise les objets comme unité de base d'un programme. Le polymorphisme offre des capacités d'abstraction plus élevées, nous permettant de concevoir des programmes plus généraux. L'héritage fournit un moyen de réutiliser le code. L'encapsulation fournit un mécanisme plus pratique et plus sûr pour utiliser un autre code.

Le langage de travail de la plupart des programmeurs aujourd'hui est toujours un langage de programmation orienté objet. Les langages de programmation modernes les plus populaires vous permettent de créer des objets. Les modèles logiciels sont faciles à créer à l’aide de langages de programmation orientés objet. Parce que les objets sont des classes, il semble facile de s'identifier à toutes les choses et à tous les concepts du monde réel. Mais la pratique de la programmation montre que tout devenir objet n’est pas une bonne chose. Pour donner un exemple boiteux en Java : seuls les objets peuvent être transmis aux fonctions en tant que paramètres en Java (et bien sûr aux types primitifs). Ainsi, pour transmettre une fonction à une autre fonction, vous devez envelopper la fonction dans un objet, généralement avec une classe anonyme, car cette classe n'a pas d'autre objectif, juste pour rendre la conception tout-objet de Java heureuse.

Java a un concept purement orienté objet. Dès le début de sa conception, on espérait modéliser le monde avec un modèle objet pur dans lequel tout est objet. Mais avec le développement actuel, de plus en plus d'éléments non objets ont été ajoutés à Java. Des fermetures ont été introduites pour obtenir des fonctions de premier niveau en programmation fonctionnelle ; des génériques ont été introduits pour obtenir des types paramétrés. Cela peut suggérer que le monde est si riche et si diversifié qu’il ne sera pas possible de le modéliser à l’aide d’un modèle unique.

2. Programmation fonctionnelle - développement

La programmation fonctionnelle est un paradigme de programmation qui utilise les fonctions mathématiques comme modélisation de langage de programmation de base. Il traite les opérations informatiques comme des calculs de fonctions mathématiques et évite l'utilisation d'états de programme et d'objets mutables.

Il y a deux idées principales dans la programmation fonctionnelle :

  • Utiliser les fonctions comme noyau de la modélisation du langage de programmation ;
  • Évitez l'état et la mutabilité.

La fonction est la pierre angulaire de la programmation fonctionnelle. Le code d'un langage de programmation fonctionnel est composé de fonctions. Le processus d'écriture d'un langage fonctionnel consiste à concevoir des fonctions. Les programmes à grande échelle sont composés de milliers de fonctions, et ces fonctions doivent être combinées efficacement. Les langages de programmation fonctionnels tentent d'éviter les états et les objets mutables. L'absence d'état mutable fait des fonctions des langages fonctionnels de pures fonctions. Les fonctions pures sont plus faciles à modulariser, plus faciles à comprendre et plus conviviales à réutiliser.

Les langages de programmation fonctionnels ont également produit des outils de programmation utiles :

  • Fonctions de premier niveau, fermetures

  • Fonctions au curry ;

  • évaluation paresseuse.

Ceux-ci seront mentionnés dans les chapitres suivants. Ces outils de programmation apparaissent également de plus en plus dans d’autres langages de programmation.

Le langage de programmation fonctionnel n'est pas jeune, son histoire est aussi vieille que la programmation orientée objet. LISP, créé en 1958, est le plus ancien langage de programmation fonctionnel. Il est plus ancien que le langage C. Mais ce n’est que récemment que les idées de programmation fonctionnelle ont été progressivement prises au sérieux. Presque tous les langages de programmation nouvellement inventés sont plus ou moins influencés par les idées de programmation fonctionnelle. Python, Scala, Groovy et Swift ont tous des fonctions et des fermetures de premier niveau. Cela vous permet de passer une fonction directement à une autre fonction, et la fonction peut également être renvoyée par une autre fonction sous la forme d'une valeur de retour. Les avantages de l'élimination de l'état et de l'immuabilité sont de plus en plus acceptés. Scala, Groovy et Swift proposent tous des méthodes pratiques pour déclarer des objets immuables afin de vous aider à écrire du code plus proche d'un style fonctionnel.

Le langage de programmation fonctionnel a ses avantages et pourrait devenir un paradigme de programmation important à l'avenir. Cependant, l'importance des langages de programmation fonctionnels peut se refléter davantage en influençant le développement d'autres langages de programmation. À l’avenir, il pourrait être difficile pour un langage de programmation conçu principalement avec un paradigme de programmation fonctionnelle de devenir un langage de programmation courant. Les langages de programmation comme Java, construits avec un seul paradigme de programmation (orienté objet), ont peu de chances de devenir courants. La recherche d’un langage de programmation purement fonctionnel comme Haskell pourrait être davantage une expérience linguistique académique.

Répétez la raison mentionnée dans la section précédente, le monde est si riche et coloré, modéliser le monde en utilisant un seul modèle ne réussira pas.

Programmation orientée objet et fonctionnelle

Si, nous classons les langages actuellement populaires selon les paradigmes linguistiques. La prise en charge des langages de programmation orientés objet devrait être la file d'attente la plus longue. La plupart des langages de programmation modernes populaires sont orientés objet et ils vous permettent tous de créer des objets. Mais en même temps, vous constaterez que plusieurs des langages de programmation les plus populaires, Python, Scala et même Java, sont plus ou moins influencés par les langages de programmation fonctionnels. Ils introduisent tous des concepts de programmation fonctionnelle, vous permettant dans une certaine mesure d'écrire du code de style fonctionnel.

Après vous être familiarisé avec les langages de programmation orientés objet, vous trouverez souvent cela rafraîchissant lorsque vous entrerez en contact avec des langages de programmation fonctionnels, et vous aurez peut-être même vaguement l'impression que les langages fonctionnels sont un bon moyen de sauvegarder le monde. Alors faut-il passer complètement aux langages de programmation fonctionnels ? Utilisez Haskell pour sauver le monde.

Après une pratique à grande échelle des langages de programmation orientés objet, nous comprenons mieux leurs défauts (par exemple, il est difficile d'écrire des applications logicielles dans un environnement multithread ; l'héritage n'est pas une bonne chose méthode de réutilisation du code). Les langages fonctionnels présentent de nombreux avantages, dont certains peuvent résoudre les problèmes des langages orientés objet (les fonctions pures sont très adaptées aux environnements multithread, les fonctions pures sont intrinsèquement modulaires et sont très conviviales pour la réutilisation du code). Cependant, la programmation fonctionnelle peut également rencontrer certains problèmes. Ces problèmes ne peuvent être révélés qu’après une pratique industrielle à plus grande échelle. Nous avons désormais établi qu’il est difficile de modéliser le monde uniquement en termes d’objets. Alors modéliser le monde avec des modèles mathématiques n’est peut-être pas mieux. Ce qui est sûr, c’est qu’ils ont tous leurs propres domaines et environnements dans lesquels ils excellent. Nous ne disposons toujours pas d’un paradigme de programmation capable de résoudre tous les problèmes.

La plus grande réalité est que d'innombrables entreprises ont réalisé d'énormes investissements dans les langages de programmation orientés objet. Même si la programmation orientée objet a révélé certains problèmes, la programmation fonctionnelle a montré de nombreuses solutions à ces problèmes. sont qu'aucune personne prudente n'abandonnera et ne pourra abandonner immédiatement la programmation orientée objet et passer complètement et intégralement aux langages de programmation fonctionnels.

Le choix réaliste est de prendre en charge la programmation orientée objet tout en fournissant également un support fonctionnel. De cette façon, vous pouvez toujours utiliser des méthodes orientées objet dans la plupart des endroits où l'orientation objet est confortable. Et là où la programmation fonctionnelle est adaptée et où vous avez la réflexion et les capacités de programmation fonctionnelle, vous pouvez toujours améliorer la productivité en utilisant des méthodes de programmation fonctionnelle.

3. Programmation générique-bel embellissement

La programmation générique est un autre sujet intéressant. Les génériques offrent un niveau d'abstraction plus élevé pour les langages de programmation, à savoir les types paramétrés. En d’autres termes, il s’agit d’abstraire les informations de type dans un algorithme ou une classe qui est à l’origine spécifique à un certain type. Ce concept abstrait est un modèle dans la STL (Standard Template Library) de C++. STL a démontré la puissance de la programmation générique et est devenue une arme puissante du C++ dès son apparition. En plus du C++, des langages de programmation tels que C#, Java et Haskell ont introduit le concept de génériques.

La programmation générique est un concept légèrement plus local, elle implique simplement comment traiter les types de manière plus abstraite, à savoir les types paramétrés. Cela ne suffit pas pour prendre en charge les concepts fondamentaux d’un langage. Nous n'entendons pas parler d'un langage de programmation comme étant une programmation purement générique sans autres paradigmes de programmation. Mais précisément parce que les génériques ne changent pas le cœur du langage de programmation, la plupart du temps, ils peuvent être bien intégrés dans d’autres méthodes de programmation. Les langages de programmation avec différents styles tels que C++, Scala et Haskell prennent tous en charge les génériques. La programmation générique offre un niveau d'abstraction plus élevé, ce qui signifie une plus grande puissance d'expression. C'est un délicieux accompagnement pour la plupart des langages de programmation.

Dans Swift, les génériques sont largement utilisés et de nombreuses bibliothèques standards Swift sont construites avec du code générique. Par exemple, les types tableau et dictionnaire de Swift sont tous deux des ensembles génériques. Des exemples comme celui-ci peuvent être trouvés partout dans Swift.

Résumé

Dans cette série d'articles, nous utiliserons principalement Swift comme exemple pour expliquer le langage de programmation multi-paradigme. La série d'articles est divisée en trois parties pour discuter des trois paradigmes de programmation pris en charge par Swift :

  • Paradigme de programmation orienté objet

  • Programmation fonctionnelle paradigme

  • Programmation générique

Pour plus de connaissances connexes, veuillez visiter la colonne FAQ !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal