Les «théorèmes gratuits» de Wadler sont-ils aussi généraux que la conception par contrat pour établir l'exactitude?

cs.stackexchange https://cs.stackexchange.com/questions/19135

  •  30-10-2019
  •  | 
  •  

Question

Philip Wadler a écrit un papier brillant appelé «théorèmes gratuitement». La grande idée est que vous pouvez utiliser des types pour raisonner sur votre programme, et même prouver des théorèmes simples sur votre programme.

Nous voyons ces idées sur les types appliqués dans la langue Haskell.

À peu près à la même période - nous avons un Idée de Betrand Meyer appelée «Design par contrat»- qui est notamment mis en œuvre dans le Langue eiffel. Cela a les fonctionnalités suivantes:

  • Conditions préalables de routine
  • Postconditions de routine
  • Invariants de classe
  • Vérifiez les instructions (comme affirmer)
  • invariants de boucle

L'idée derrière le design par contrat est Les concepteurs de logiciels doivent définir des spécifications d'interface formelles, précises et vérifiables pour les composants logiciels, qui étendent la définition ordinaire des types de données abstraits avec des conditions préalables, des post-climinages et des invariants.

Maintenant, beaucoup affirment que l'utilisation de «types» dans vos programmes mène à des «programmes plus corrects» (via le Correspondance Howard Curry). D'après ce que je peux voir - même l'utilisation la plus avancée de Typage dépendant d'Idris et de Scala est limité aux types de somme et aux longueurs de liste (corrigez-moi si je me trompe).

En revanche - la puissance de la «conception par contrat» dans l'établissement de l'exactitude de mon programme est plus générale et plus puissante. (Bien que pas nécessairement au temps de compilation - mais au moment du test). Je peux par exemple établir dans mon programme bancaire que tous les dépôts sont positifs, et tous les soldes de compte signalés sont positifs.

Le point étant - les types ont un avenir fascinant des possibilités, et sont extrêmement puissants et compilent le temps - mais en ce moment, leur application pratique semble limitée.

Ma question est: La conception par contrat d'une application plus générale est-elle que l'utilisation des théorèmes de types à la raison de l'exactitude de mon programme actuellement? (Ou parlons-nous de deux choses différentes)

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top