0

Contexte: Eldridge m'a demandé d'expliquer quelle est la différence entre les différentes phases de temps quand il s'agit d'écrire et de déployer du code.Comment définir et décrire ces différents points dans le temps?

Il veut savoir:

  • 1) Quelle est la différence entre: 1) le temps de conception; 2) compiler le temps; 3) l'exécution?
  • 2) Quels sont les exemples spécifiques de choses qu'un programmeur ne serait pas capable d'intégrer dans son code et de ne pas savoir avant l'exécution? 3) sont des langages de script avec de nombreuses "astuces" d'exécution mieux (autres que des raisons de préférence personnelle) pour les personnes qui ont besoin de plus de souplesse de "temps d'exécution"?

Question:

Bien que j'ai des réponses pour Eldridge en fonction de mes propres vues sur la programmation, il semblait être une bonne idée d'obtenir des perspectives différentes, afin de ne pas donner une réponse « biaisée ». ... Alors, quelle réponse impartiale pouvez-vous donner pour expliquer ces choses (en supposant que la langue [s]).

+0

Trop de questions, pas assez de spécificité. – bmargulies

+0

Pour une réponse verbeuse à la question 3, regardez http://stackoverflow.com/questions/125367/dynamic-type-languages-versus-static-type-languages ​​ – Pace

Répondre

2

D'accord, puisque personne d'autre n'a essayé, je vais prendre une fissure à ce sujet.

Le temps de conception est le temps passé à créer les fichiers source. Code dans les fichiers texte, définitions de formulaire, etc.

Temps de compilation est le temps passé dans les différentes phases de compilation. Pré-traitement, lexique/analyse syntaxique, création et optimisation d'AST, génération de code et liaison.

Le temps d'exécution est le temps écoulé depuis le chargement de l'exécutable jusqu'à la libération de la mémoire utilisée pour les pages de texte.

Un programmeur peut câbler tout ce qu'ils aiment, mais il a peu de sens pour certaines choses:

  • accueil de l'utilisateur Directoy
  • Situation des ressources de base de données externes
  • configuration matérielle prévue de la machine en marche l'exécutable
  • etc.

Les deux langages statiques et dynamiques (je personnellement haine la description "langages de script") ont une place dans l'informatique. Il n'y a rien qu'un langage dynamique puisse faire qu'un langage statique ne puisse pas faire; la seule différence est dans la quantité de code nécessaire pour implémenter la fonctionnalité.

+0

Bonne réponse, même si je pense que "Design Time" devrait être divisé en "Temps de planification" et "Temps de développement". La planification de l'heure est la phase avant l'écriture du code lorsque vous planifiez l'architecture, l'API et les principales fonctionnalités. – Pace

+1

@Pace: Vous êtes fondamentalement correct, mais c'est stackoverflow.com, pas overbudget.com, alors j'ai gardé ma réponse axée sur la programmation. –

1

Temps de conception - Je dirais que c'est lorsque vous utilisez des outils automatisés et des concepteurs graphiques pour générer votre code source. Des choses comme des valeurs valides pour la propriété d'un contrôle peuvent être déterminées à 'design-time'

Compile-Time - Est-ce que les choses peuvent être déterminées par le compilateur lors de la compilation, par ex.le compilateur peut déterminer que l'expression suivante contiendra toujours la valeur constante de '86400'.

const int SecsInDay = 60 * 60 * 24; 

Run-Time - sont des choses qui ne peuvent être déterminées alors que le programme est en cours (par exemple par la machine virtuelle).

Les langages de script sont plus flexibles pour créer une logique de mutation car ils peuvent contourner la compilation et créer un nouveau comportement basé sur l'entrée et la logique au moment de l'exécution, par ex. L'instruction eval() de Java Script peut exécuter n'importe quel javascript arbitraire entré par un utilisateur ou retourné via un service web, etc.

Questions connexes