Ce qui qualifie un langage de programmation dynamique?
Ce qu'est un langage de programmation pour être appelé dynamique de la langue? Quel genre de problèmes que je dois utiliser un langage de programmation dynamique pour résoudre? Quelle est la principale différence entre les langages de programmation et les langages de programmation dynamiques?
- (1) Dynamique De La Langue != La Programmation Dynamique. (2) Wikipédia ou plusieurs questions.
- Cette question n'a rien à voir avec la Programmation Dynamique que ce soit.
- @Huzaifa, j'ai mis à jour votre question du titre; comme ci-dessus les commentaires de l'état, "programmation dynamique" a une signification toute différente de "programmation avec un langage de programmation dynamique".
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas qu'il est noir et blanc - il y a tout un spectre entre statique et dynamique.
Prenons deux exemples extrêmes de chaque côté du spectre, et voir où cela nous mène.
Haskell est un extrême dans la statique de la direction.
Donc pour les langages statiques j'ai l'habitude de penser: assez long moment de la compilation d'analyse nécessaires, le type de système va m'empêcher de faire des bêtises, mais aussi de faire des choses qui sont réellement valable, et si je veux faire toute manipulation d'un programme au moment de l'exécution, ça va être un peu d'une douleur, parce que l'exécution de la représentation d'un programme (c'est à dire sa forme compilée) est différente de la langue elle-même. En outre, il pourrait être une douleur à modifier les choses par la suite si je n'ai pas le prévoir.
Clojure est un extrême à l'orientation dynamique.
Pour les langages dynamiques, j'ai l'habitude de penser: courte étape de compilation (fondamentalement juste la lecture de la syntaxe), de façon rapide et de développement incrémental, pratiquement aucune limite à ce qu'il va me permettre de le faire, mais ne m'empêchera pas de bêtises.
Que les autres postes ont indiqué, d'autres langues essayer de prendre plus d'un milieu, par exemple, langages statiques comme F# et C# offre des capacités de réexion par l'API, et de cours peut présentent de développement par l'utilisation d'outils intelligents comme F#'s REPL. Les langages dynamiques offrent parfois de l'option de frappe (comme la Raquette, Strongtalk), et de manière générale, il semble, avoir plus de tests avancés cadres pour compenser l'absence de vérifications au moment de la compilation. Également type conseils, tout n'est pas vérifié au moment de la compilation, sont des conseils utiles pour générer du code plus efficace (par exemple, Clojure).
Si vous êtes à la recherche pour trouver le bon outil pour un problème donné, alors c'est certainement l'une des dimensions que vous pouvez regarder, mais en lui-même n'est pas susceptible de forcer une décision à l'autre. Demandez-le à d'autres propriétés des langues que vous envisagez - est-il fonctionnel ou OO ou de la logique ou de la ... de la langue? Faut-il avoir un bon cadre pour les choses dont j'ai besoin? Ai-je besoin de stabilité et de rétro-compatibilité binaire, ou puis-je vivre avec un certain taux de désabonnement, le compilateur? Dois-je besoin d'une vaste outillage?Etc.
Dynamique de la langue n'a de nombreuses tâches à la runtime où un langage statique ne leur ferait à au moment de la compilation.
Les tâches en question sont généralement un ou plusieurs des éléments suivants: type de système, la méthode d'expédition et de génération de code.
Qui à peu près également les réponses aux questions à propos de leur utilisation.
Il y a un beaucoup de définitions différentes de l'utiliser, mais un différence possible est:
Certaines langues sont difficiles à classer comme statique ou dynamique tapé. Par exemple, le C# est traditionnellement considéré comme un langage statiquement typé, mais C# 4.0 a introduit un type statique appelé
dynamique
qui se comporte d'une certaine façon plus comme un type dynamique que statique type.pyc
fichiers sont les fichiers compilés. Donc je pense que cette définition est impropre puisqu'il impliquerait que Python est un langage statique. Puisque les termes ont pas de définition officielle je suppose que vous ne pouvez pas vraiment dire qui est bon ou mal.Langages dynamiques sont généralement considérés comme ceux qui offrent de la flexibilité au moment de l'exécution. Notez que cela ne signifie pas nécessairement en conflit avec statique type de systèmes. Par exemple, F# a récemment été élue "coup de coeur langage dynamique sur .NET" lors d'une conférence, même si elle est statiquement typé. Beaucoup de gens considèrent F# pour être un langage dynamique, car il offre au moment de l'exécution des fonctions comme méta-circulaire de l'évaluation en Lecture-évaluation-Impression-Boucle (REPL) et typage dynamique (de toutes sortes). Aussi, l'inférence de type F# code n'est pas jonché de déclarations de type comme la plupart des langages à typage statique (ex: C, C++, Java, C# 2, la Scala).
En général, à condition que le temps et l'espace ne sont pas d'une importance cruciale probablement, vous voulez toujours utiliser les langues avec le moment de l'exécution de la flexibilité et des fonctionnalités telles que le moment de l'exécution de la compilation.
Ce fil couvre la question plutôt bien:
Statique/Dynamique vs Forts/Faibles