7
votes

Convergence des mathématiques et des langages de programmation

Il semble que la convergence des langages de la programmation des mathématiques et de la programmation informatique est particulièrement évoquée par l'influence du calcul de la Lambda sur les langues modernes. La plupart du temps, je ne pense pas avec des mathématiques, je pense avec la logique. Il me semble que beaucoup de phénomènes pouvant être modélisés mathématiquement peuvent également être modélisés logiquement.

Je ne pense pas que nous verrons une langue purement logique ou une traction de gain de langage purement mathématique pour la programmation générale, mais j'aimerais prendre un inventaire des avantages de chaque paradigme. J'aimerais savoir:

  • Quels sont les avantages de la modélisation des langages de programmation ou des caractéristiques de la langue 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 générale pour la logique ou la mathématique?
  • Quelles sont certaines langues qui montrent vraiment les avantages de l'une ou l'autre des approches?
  • Quelles fonctionnalités matérielles font une approche plus attrayante que l'autre?

4 commentaires

La logique est la mathématique. En fait, c'est un élément clé des mathématiques discrètes. Et si vous êtes un scientifique informatique ou un ingénieur logiciel, vous devriez avoir au moins un peu à l'aise de travailler avec des mathématiques discrètes.


Je comprends la relation au niveau le plus fondamental, je suis vraiment plus curieux de l'expression au niveau de l'utilisateur.


Je ne vois pas la distinction claire entre la logique et les mathématiques que vous voyez clairement. Évidemment, des trucs banaux impliquant des calculs numériques sont plus mathématiques que logiques, mais pour des sujets plus avancés, où les éléments d'étude sont des abstractions complexes, les mettent dans les paniers «logiques» ou «mathématiques» ressemblent à un choix arbitraire.


@harms je suis en désaccord, car la logique en tant que champ inclut beaucoup plus que ce qui est pertinent pour les mathématiques. En fait, la logique historiquement a été développée en grande partie en dehors des mathématiques. Ce n'était pas avant le milieu du XIXe siècle que les deux sont devenus liés et le lien n'est devenu fort que du début du 20e siècle. De plus, je pense que ces dernières années, le lien s'est affaibli et de nombreux principaux logiciens sont dans des départements informatiques au lieu de mathématiques. Je serais tout ce que la pertinence des mathématiques est essentiellement due à la pertinence de la logique mathématique.


4 Réponses :


2
votes

Étant donné que l'informatique est une branche spéciale de mathématiques - il n'y a pas de convergence de mathématiques et de langage de programmation. Un langage de programmation est appliqué en mathématiques. C'est un outil créé par des personnes ayant une profonde connaissances de mathématiques à utiliser par d'autres (la plupart du temps avec une connaissance moins profonde). Vous pouvez le comparer à un commutateur de lumière - vous pouvez l'utiliser sans avoir étudié la physique, mais il est toujours appliqué de la physique. Parfois (surtout si vous avez un problème), il est nécessaire d'avoir la "connaissance". Ensuite, vous avez besoin du fond spécial.


1 commentaires

Mais ceux qui allument des lumières (écrire PHP) ne seront pas également embauchés de travailler comme scientifiques de fusées (écrire Haskell), et je pense que cette scission augmentera de la manière dont il affecte l'industrie à l'avenir, tout comme les Cavemen avaient des médecins mais Maintenant, ils ont besoin de degrés et de plus de 9 ans - je suppose que la convergence signifie ici signifie la convergence de la profession avec des mathématiques pas tellement CS (car cs déjà est Mathématiques).



1
votes

Eh bien, pour être honnête, beaucoup de ces soi-disant "langages de programmation modernes" sont simplement imlipément des choses dans diverses langues de programmation depuis plus de 50 ans.


2 commentaires

En effet. Lisp a été spécifié à l'origine en 1958, basé sur Calmbda Calculus. APL, qui est fortement orienté vers les opérations matricielles, est devenu disponible pour l'IBM 1130 en 1967.


Quelles parties des systèmes de type HASKELL, OCAML et d'autres systèmes de type OCAML étaient disponibles il y a 50 ans ou n'importe où même près?



9
votes

Tout d'abord, je ne vois pas beaucoup de distinction entre la logique et les mathématiques; Ce dernier n'est que le premier appliqué systématiquement à des constructions spécifiques.

En outre, je ne suis pas convaincu que la beauté théorique des langages de programmation fondée en mathématiques / logiques vaut vraiment beaucoup quand il s'agit d'obtenir des choses en écrivant un code efficace et maintenu.

Quant à vos questions spécifiques.

Quels sont les avantages de la modélisation Langues de programmation ou 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 faciles - même si elle est discutable si nous allons jamais arriver au point où ils deviennent pratiques pour des systèmes réels.

Une langue générale peut-elle forgir une logique ou des mathématiques?

dépend de ce que vous voulez dire avec "forgo". Vous pouvez avoir une langue sans opérations mathématiques (bien que vous deviez obtenir de jolies esothériques; Turing Machines est la seule à laquelle je peux penser que cela n'a même pas d'incrément ou de décrément), et vous pouvez certainement en avoir un qui ne se soucie rien des formalismes ( Assembleur, c). Mais je ne pense pas qu'il soit possible d'avoir un langage de programmation sans logique (bien que cela puisse être une logique pervertie, cf. Malbolge )

Quelles sont certaines langues qui montrent vraiment les avantages de l'une ou l'autre des approches?

Eh bien, si vous envisagez de la Lambda Calculus, une forme de logique, alors Lisp affiche assez bien ses avantages en étant depuis 1958 la langue dont le pouvoir expressif d'autre langue aspire (mais ne gère pas) à atteindre.

Il y a Prolog, la seule autre langue "sérieuse" que je sais que tente d'être explicitement fondée sur une logique formelle. Et - la surprise de la quelle - c'est bon dans des trucs logiques et peu d'autre.

Quelles fonctionnalités matérielles rendent une approche plus attrayante que l'autre?

aucun. L'échec de Les machines LISP prouvent l'OMI de manière à ce que les compilateurs + matériels généraux sont plus puissants que le matériel spécialisé. Cependant, on pourrait dire que la puissance brute SimPe du système d'aujourd'hui fait des langues qui ignorent complètement les contraintes matérielles pratiques où elles n'étaient pas nombreuses.


1 commentaires

Je dirais que Haskell est tout aussi sérieux d'être explicitement mis à la terre de la logique, de même que (standard) ml. Sinon, très bon commentaire.



1
votes

Quels sont les avantages des langages de programmation de modélisation ou des caractéristiques de la langue 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 n'est qu'une branche de mathématiques. Deux avantages majeurs d'utiliser des mathématiques formelles sont l'optimisation et la sécurité. Lorsqu'un algorithme n'a aucun effet secondaire (c'est-à-dire transparent de manière référentielle) et est exprimé uniquement à l'aide de compilateurs de mathématiques pure peut restructurer l'algorithme en fonction des règles de mathématiques. Cela facilite la possibilité d'optimiser le code et d'exploiter des architectures parallèles. Un autre avantage important est la possibilité de prouver certaines propriétés du code.

Une langue générale peut-elle forgir une logique ou des mathématiques?

non. Comment feriez-vous des opérations booléennes ou des arithmétiques sans logique ni mathématiques? Vous pouvez signifier quelque chose ici que je ne comprends pas.

Quelles sont certaines langues qui montrent vraiment les avantages de l'une ou l'autre des approches?

Haskell, ML, Ocaml, Miranda, Alice, Oz, Erlang, Dwelf, Coq, Prolog, tous démontrer des applications plus rigoureuses de mathématiques à la programmation.

Quelles fonctionnalités matérielles rendent une approche plus attrayante que l'autre?

Je ne crois pas que le matériel change beaucoup de choses en termes d'avantages d'approches mathématiques rigoureuses de la programmation. Les avantages du code transparent de référence sont principalement au niveau du compilateur.


0 commentaires