Comment fonctionne « Programmation orientée langage » à comparer POO / fonctionnelle dans le monde réel

StackOverflow https://stackoverflow.com/questions/1703869

  •  19-09-2019
  •  | 
  •  

Question

J'ai récemment commencé à lire quelques F # littérature relative, en parlant de « monde réel Programmation fonctionnelle » et e « Expert F # ». g .. Au début, il est facile, parce que j'ai une certaine expérience dans Haskell, et savoir C #. Mais quand il s'agit de « langage de programmation orienté » Je ne comprends pas. - J'ai lu quelques explications et il est comme la lecture d'un document académique qui obtient plus abstrait et étrange avec chaque phrase

.

Quelqu'un at-il un exemple facile pour ce genre de choses et comment il se compare aux paradigmes existants? Il est non seulement la fantaisie académique, est-ce pas? ;)

Merci, Wishi

Était-ce utile?

La solution

F # a quelques mécanismes pour faire la programmation dans un style qu'on pourrait appeler « axée sur la langue ».

D'abord, les finesses de syntaxe (appels de fonction ne ont pas besoin entre parenthèses, peuvent définir propres opérateurs infixes, ...) faire en sorte que de nombreuses bibliothèques définies par l'utilisateur ont l'apparence de DSLs embarqués.

En second lieu, le mécanisme F # « citations » peut vous permettre de citer le code et l'exécuter avec un autre moteur sémantique / évaluation.

En troisième lieu, F # "expressions de calcul" (flux de travail aka, monades, ...) offrent également un moyen de fournir un type de smantique pour certains blocs de code.

Tous ces tombent un peu dans la catégorie EDSL.

Autres conseils

programme (LOP) orienté

linguistique peut être utilisé pour décrire une des situations suivantes.

Création d'un langage externe (DSL)

Ceci est peut-être l'utilisation la plus courante de LOP, et est l'endroit où vous avez un domaine spécifique - comme les emballages d'expédition UPS via les types de transport par routes, etc. Plutôt que d'essayer de coder toutes ces entités spécifiques à un domaine à l'intérieur du programme code, vous créez plutôt un langage de programmation distincte pour tout ce domaine. Ainsi, vous pouvez encoder votre problème dans une procédure distincte, la langue externe.

Création d'un langage interne

Parfois, vous voulez que votre code de programme pour regarder moins comme « code » et la carte de plus près au domaine du problème. C'est, ont le code 'en savoir plus naturellement. Une interface fluide est un exemple de ceci: Interface Courant . En outre, F # a des motifs actifs qui prennent en charge ce bien.

J'ai écrit un blog poster sur LOP un certain temps qui fournit des exemples de code.

Dans la programmation orientée objet, vous essayez de modéliser un problème à l'aide d'objets. Vous pouvez ensuite connecter ces objets ensemble pour exécuter des fonctions ... et à la fin résoudre le problème d'origine.

En programmation linguistique, plutôt que d'utiliser un objet existant ou la programmation orientée fonctionnelle langue, vous créez une nouvelle langue spécifique du domaine qui est le mieux adapté pour résoudre efficacement votre problème.

Le langage terme programmation orientée peut être surchargé en ce sens qu'elle peut avoir des significations différentes pour différentes personnes.

Mais en termes de la façon dont je l'ai utilisé, cela signifie que vous créez un DSL ( http: //en.wikipedia.org/wiki/Domain_Specific_Language ) avant de commencer à résoudre votre problème.

Une fois que votre DSL est créé alors vous écrivez votre programme en termes de la LIS.

L'idée étant que votre DSL est plus adapté à l'expression du problème qu'une langue d'usage général serait.

Quelques exemples seraient la syntaxe du fichier de marque ou Ruby on Rails classe ActiveRecord.

Je n'ai pas directement utilisé la programmation orientée langue dans des situations réelles (création d'une langue réelle), mais il est utile de penser et aide à concevoir de meilleurs objets axée sur un domaine.

Dans un sens, tout développement dans le monde réel en Lisp ou Scheme peut être considéré comme « langue orientée » puisque vous développez la « langue » de votre application et son arbre abstrait que vous codez le long de.

Un exemple simple d'un langage spécifique au domaine, mentionné ici , est SQL. Aussi: UNIX scripts shell.

Bien sûr, si vous faites beaucoup d'opérations de base et ont beaucoup de chevauchement avec la langue sous-jacente, il est probablement overengineering.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top