Question

Il semble qu'il y ait un fort mouvement pour la convergence des mathématiques et des langages de programmation informatique, cela est notamment mis en évidence par l'influence du lambda-calcul sur les langues modernes. La plupart du temps, je ne pense pas que les mathématiques, je pense à la logique. Il me semble que beaucoup du phénomène qui peut être modélisé mathématiquement peut être modélisé logiquement aussi bien.

Je ne pense pas que nous verrons jamais un langage purement logique ou une traction de gain de langage purement mathématique pour la programmation à usage général, mais je voudrais faire un inventaire des avantages de chaque modèle. Je voudrais savoir:

  • Quels sont les avantages des langages de programmation de modélisation ou les fonctionnalités du langage sur les mathématiques?
  • Quels sont les avantages de la modélisation d'une langue sur les principes de la logique formelle?
  • Peut une langue d'usage général soit logique ou renoncer à des mathématiques?
  • Quelles sont les langues qui montrent vraiment hors les avantages de ces deux approches?
  • Quelles sont les caractéristiques du matériel permettent une approche plus attrayante que l'autre?
Était-ce utile?

La solution

Tout d'abord, je ne vois pas beaucoup de différence entre la logique et les mathématiques; celui-ci est tout simplement le premier systématiquement appliqué à des constructions spécifiques.

De plus, je ne suis pas convaincu que la beauté théorique des langages de programmation fondée sur les mathématiques / logique vaut vraiment beaucoup quand il s'agit de faire avancer les choses en écrivant du code efficace, maintenable.

Quant à vous questions.

  

Quels sont les avantages de la modélisation   langages de programmation ou de la langue   caractéristiques des mathématiques?   Quels sont les avantages de la modélisation d'une langue sur les principes de la logique formelle?

Les preuves de l'exactitude deviennent beaucoup plus facile -. Mais on peut se demander si nous allons jamais arriver au point où ils deviennent pratique pour les systèmes de la vie réelle

  

Peut-une langue d'usage général renoncer   soit la logique ou les mathématiques?

Cela dépend de ce que vous entendez par « renoncer ». Vous pouvez avoir une langue sans opérations mathématiques (bien que vous devez être assez ésotériques, les machines de Turing sont la seule que je peux penser à ne même pas augmentation ou la diminution), et vous pouvez certainement avoir un qui se soucie rien formalismes ( assembleur, C). Mais je ne pense pas qu'il est possible d'avoir un langage de programmation sans logique (bien qu'il puisse être une logique pervertie, voir Malbolge )

  

Quelles sont certaines des langues qui montrent vraiment hors les avantages de ces deux approches?

Eh bien, si l'on considère Lambda calcul d'une forme assez bien de la logique, alors Lisp a été exhibant ses avantages en étant depuis 1958 la langue dont la puissance expressive autre aspire la langue (mais ne parviennent pas) à atteindre.

Ensuite, il y a Prolog, la seule autre langue « grave » Je sais qui essaie d'être mis à la terre explicitement dans la logique formelle. Et - surprise Quelle - il est bon à des trucs logique et rien d'autre

.
  

Quelles sont les caractéristiques du matériel permettent une approche plus attrayante que l'autre?

Aucun. L'échec de prouve de façon concluante que l'OMI assez compilateurs + matériel général sont plus puissants que du matériel spécialisé. Cependant, on peut dire que la puissance brute simpe du système d'aujourd'hui font des langues complètement ne tiennent pas compte des contraintes matérielles pratique où ils étaient auparavant pas.

Autres conseils

depuis que la science informatique est un particulier de mathématiques branche - il n'y a pas convergence des mathématiques et du langage de programmation. Un langage de programmation est appliquée en mathématiques. Il est un outil créé par des personnes ayant knowlege profonde des mathématiques pour être utilisé par d'autres (la plupart du temps avec des connaissances moins profondes). Vous pouvez le comparer à un interrupteur - vous pouvez l'utiliser sans avoir étudié la physique, mais encore la physique appliquée. Parfois (surtout si vous avez un problème), il est nécessaire d'avoir la « connaissance ». Ensuite, vous devez l'arrière-plan spécial.

Eh bien, pour être honnête beaucoup de ces soi-disant « langages de programmation modernes » sont tout simplement imlpementing choses qui ont été dans divers langages de programmation depuis plus de 50 ans.

  

Quels sont les avantages de la modélisation des langages de programmation ou des caractéristiques linguistiques sur les mathématiques?   Quels sont les avantages de la modélisation d'une langue sur les principes de la logique formelle?

Ce sont la même chose: la logique formelle est juste une branche des mathématiques. Deux avantages majeurs de l'utilisation des mathématiques formelles sont l'optimisation et la sécurité. Quand un algorithme n'a pas d'effets secondaires (par exemple par renvoi transparentes), et est exprimé en utilisant uniquement les compilateurs de mathématiques pures peuvent restructurer l'algorithme selon des règles de calcul. Cela rend plus facile pour les compilateurs pour optimiser le code et d'exploiter les architectures parallèles. Un autre avantage important est la capacité de prouver certaines propriétés du code.

  

Peut-une langue d'usage général renoncer   soit la logique ou les mathématiques?

Non. Comment feriez-vous des opérations booléennes ou arithmétique sans logique ou mathématique. Vous pouvez dire quelque chose que je ne comprends pas.

  

Quelles sont certaines des langues qui montrent vraiment hors les avantages de ces deux approches?

Haskell, ML, OCaml, Miranda, Alice, Oz, Erlang, Twelf, Coq, Prolog, toutes les applications montrent plus rigoureux des mathématiques à la programmation.

  

Quelles sont les caractéristiques du matériel permettent une approche plus attrayante que l'autre?

Je ne crois pas que le matériel change les choses beaucoup plus en termes des avantages des approches mathématiques rigoureuses à la programmation. Les avantages du code référentielle transparent sont la plupart du temps au niveau du compilateur.

scroll top