langue dépendamment typée le mieux adapté à la programmation du « monde réel »? [fermé]

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

Question

Ce qui dépendamment typé langages de programmation pourrait être utilisé pour le développement d'applications du monde réel?

Voici quelques points que je pense sont importants:

  • Documentation
  • programmes exemple
  • une bibliothèque standard
  • ou au moins une interface facile à utiliser la fonction étrangère
  • une communauté de personnes qui utilisent la langue pour les tâches du monde réel
  • support d'outil
Était-ce utile?

La solution

Je suggère Agda , car il a d'appeler la compatibilité avec Haskell. En tant que tel, il est probablement la langue dépendamment tapé avec les meilleures bibliothèques. Documentation et tutoriels sont un peu terne cependant, et le soutien de l'outil est trop grand non plus. Pour être honnête, les langues les plus typés ne sont pas dépendamment très bien développé au moment.

Si vous plutôt allé à la demande légèrement plus faible que votre langue devrait avoir GADT, il y a deux options très bien entretenues: Scala et Haskell. À mon humble avis, vous obtenez la plupart des avantages des types dépendants à l'aide GADT de, et vous gardez décidable pour démarrer la vérification du type.

Scala et Haskell ont tous les deux grandes et bien documentées bibliothèques, une chaîne d'outils de travail, ainsi que de FFI (à Java et C respectivement). Tous les deux ont aussi des communautés les utiliser pour résoudre des problèmes réels, comme analyse syntaxique et href="http://liftweb.net/" rel="noreferrer"> développement.

Autres conseils

La réponse acceptée contient la désinformation. TypeChecking à Agda est décidable, sauf si vous éteignez la positivité / résiliation / vérification de l'univers. De plus, les processus infinis sont programmables en Agda, tout comme les processus IO sont programmables en Haskell: la seule restriction est que les processus infini ne peut être déplié indéfiniment lorsqu'il est exécuté au cours de vérification de type . Vous pouvez mettre en œuvre un simulateur machine à Agda Turing. Vous ne pouvez pas dire le mensonge qu'il est garanti de mettre fin ou persuader le typechecker de l'exécuter de manière illimitée

Je fais cependant d'accord que les langues dépendamment sont tapés encore au stade expérimental en matière de programmation « monde réel ». Nous ne pouvons pas soutenir encore le développement robuste, mais nous pouvons soutenir un passe-temps important parmi ceux qui ont un regard sur l'avenir, plutôt comme langages fonctionnels dans les vieux jours.

Idris, comme le suggère Twey, est le candidat le plus proche à un « monde réel » de la langue dépendamment typée. Il est beaucoup plus axé sur l'obtention pui que Agda est. Je recommande Agda que le meilleur véhicule pour se familiariser avec les idées derrière la programmation tapées dépendamment, mais Idris est l'option la plus pratique.

Il est, je suis heureux de dire, à considérer les versions récentes de Haskell en tant que candidat dans cette discussion. Depuis GHC 7.4, Haskell a commencé à soutenir une notion utile de données de niveau du type, et avec au moins singleton technique (une bidouille bien que ce soit), nous pouvons vraiment avoir des types en fonction des valeurs d'exécution ( en les rendant dépendent de variables statiques limitées à des valeurs égales d'exécution). Haskell est donc une vraie langue du « monde réel » dans la première phase d'expérimentation avec des types dépendants.

Agda n'est pas conçu pour être un langage informatique de programmation. ATS est un langage dépendamment typé qui est conçu pour la programmation de bas niveau, mais il est un peu moins élégant que Agda. Idris est un langage fledgeling dépendamment typé conçu pour les programmes d'applications niveau performant.

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