Question

De nombreux langages de programmation partagent des caractéristiques génériques et même assez universels. Par exemple, si vous compariez Java, VB6, .NET, PHP, Python, vous trouverez des fonctions communes telles que les structures de contrôle, manipulation numérique et la chaîne, etc.

Qu'est-ce qui a été fait pour définir ces caractéristiques à un niveau méta-langue (ou langue agnostique)?

UML propose une référence descriptive du logiciel dans tous les aspects, mais l'accent dans le monde réel semble être des processus de données. UML est-il pertinent?

Je ne demande pas: « Pourquoi nous n'avons pas une seule langue qui remplace la pléthore actuelle. » Nous avons besoin de nombreux outils différents (au moins dans ce eon).

Je ne demande pas que toutes les langues correspondent à un modèle - assemblage par rapport à des langages compilés sont suffisamment différents pour faire ce infaisable (et certaines personnes appeler HTML une langue, mais je ne veux pas). Toute tentative commencerait par une portée bien étroite. Conformément à cela, je ne serais pas attendre le modèle pour couvrir même une petite sélection avec la pleine validité.

J'attendre cependant qu'un tel modèle pourrait être utilisé pour transposer d'une langue à l'autre (avec des objectifs limités - penser la traduction de jist).

Était-ce utile?

La solution

Qu'est-ce que vous décrivez les sons comme les sémantique formelle des langages de programmation . Il existe une variété d'approches et chacun donnera un moyen de spécifier formellement le sens d'un programme dans un langage de programmation. Dans certains cas, cette spécification est essentiellement une traduction dans une autre langue, comme le calcul lambda, ou la compilation d'une machine abstraite formellement spécifiée, comme SECD.

Il y a tellement de travail ici, il est difficile de choisir une référence spécifique. Mais j'espère que je vous ai donné quelques mots-clés utiles pour continuer votre recherche.

Autres conseils

Il y a eu de nombreuses tentatives, mais aucun n'a été un grand succès. Le plus tôt que je suis conscient est UNCOL il y a plus de 50 ans.

Vous avez donné une liste des langues qui ont beaucoup en commun parce qu'ils sont assez semblables - ils sont toutes les langues de procédure avec des racines communes et quelques extensions OO jetés, donc ce n'est pas trop surprenant. Si vous commencez à regarder différentes langues comme Lisp, Haskell, Erlang, Prolog, ou même vous commencez à voir SQL choses très différentes.

UML est généralement utilisé pour définir des algorithmes / code en termes plus simples avant de passer au code réel.

Pour répondre à ce que je suppose être votre question, il existe déjà un ensemble défini de parties requises de langues tout, pour, si, sinon ... Est-ce que ce jamais être défini comme un standard, ou dans une bibliothèque de base qui est utilisé par toutes les langues. non, cela est parce que les différents développeurs de langues comme le faire eux-mêmes

Je pense que le plus proche vous pouvez arriver à cela sans perte de généralité est une machine de Turing, ce qui est très utile pour des raisons pratiques. Mais si vous permettez langages machine de Turing être « étiquetés » et réutilisés, vous pourriez construire les concepts dont vous avez besoin, travailler de faible à haut niveau.

Je pense que MOF est le langage universel. Vous pouvez par exemple créer des diagrammes UML de MOF via un métamodèle UML. Si vous enregistrez ces informations dans métamodèle XMI alors vous pouvez enregistrer ce que jamais l'information dont vous avez besoin et même plus que dans toutes les langues. XMI sémantique est si riche qu'il n'y a pas de limite à son utilisation. Si vous associez UML XMI sur le dessus d'un métamodèle Synchronize en temps réel avec MOF alors ceci est pour moi le langage universel.

L'auteur de Motif Calcul semble proposer un tel modèle universel. Je pense qu'il va se révéler tout aussi utile que les tentatives précédentes pour définir un modèle universel, c'est-à-dire, bon dans certaines régions, mais pas le dernier mot.

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