2010-11-26 33 views
0

Une chose qui m'arrive toujours quand j'utilise des langages compilés, (j'utilise Delphi et FreePascal), c'est le fastidieux montage, la compilation, le cycle de débogage. Il a été de plus en plus mal en retard que maintenant je commence à redouter le processus entier chaque fois que je dois faire quelques changements, particulièrement quand ils sont juste des changements mineurs d'interface utilisateur graphique.Comment puis-je réduire le cycle d'édition, de compilation et de débogage?

Je dois attendre que ce qui se rapproche maintenant de 60 Mo d'exe activés pour le débogage soit généré à chaque fois avant que le débogage puisse commencer et j'ai peur de commencer à montrer des signes d'ADD. J'ai tendance à aborder le développement avec ce que je peux faire en même temps pendant que je cuisine. Le problème est que la durée est trop longue pour regarder à l'écran, et trop courte pour donner quelque chose d'autre à votre attention avant de revenir à l'écran.

Je suppose que pour les langages compilés ObjectPascal n'est pas mauvais, je crois que c'est encore pire pour les programmeurs C++.

Je devrais peut-être obtenir un processeur hexadécimal avec 24 Go de RAM, et les SSD les plus rapides pour rendre le processus tolérable. Certains hébergeurs les font pour environ 100 euros par mois.

Maintenant Business

Tout simplement je pense à un moyen de créer l'application dans certaines parties, de sorte que les parties contenant les nouvelles fonctionnalités peuvent être développées séparément en tant que programmes autonomes, peut-être même des programmes console. Cela soulève la question de savoir comment les paramètres de procédure et les résultats peuvent être transmis, et ce sont les options qui sont initialement venues à l'esprit. Permet de traduire automatiquement des variables simples, des structures d'enregistrement ou des objets en texte et de les transmettre via la ligne de commande ou les tuyaux. Peut-être que des paires JSON, XML ou simples nom-valeur peuvent être utilisées ici. Concevoir les paramètres comme des objets TPersistent qui sont streamés sous forme de texte peut être une meilleure option ici. Plutôt que d'utiliser la ligne de commande, faites-leur des services réseau et transmettez les paramètres de cette façon, ou faites-les RESTful/XML-RPC avec tous les nouveaux trucs webby (je prends maintenant quelque chose comme ça)

  • Concevez-les en tant que DLL initialement - je soupçonne que cela apportera un ensemble différent de problèmes. Une fois qu'ils sont bien testés, je peux les incorporer dans les exécutables principaux.

    Je soupçonne que d'autres ont déjà rencontré ce problème, avec ObjectPascal et peut-être d'autres langages et ont trouvé un moyen d'atténuer le problème.

    Si je dois continuer à travailler comme d'habitude, est-ce que l'utilisation de choses comme les interfaces vous aidera?

    J'ai vraiment besoin d'aide ici ou bien j'avoir recours à PHP (GASP !!) ou même Java (plus gasp !! choc !! horreur!) Ou Zen (pas le langage de programmation)

  • +0

    N'est-il pas possible de recompiler uniquement les parties modifiées? Au moins en Java, c'est possible: P – thejh

    +0

    La compilation incrémentale est présente dans C# ainsi que http://en.wikipedia.org/wiki/Incremental_compiler. Aussi les dossiers de débogage pour C#/JAVA un années lumière plus petit que C++ exes. C'est parce que la sortie C++ est raw asm et a besoin de beaucoup de choses dans le fichier exe pour être décodée avec succès par le débogueur. – basarat

    +0

    Tout le monde va me critiquer maintenant: j'utilise Smalltalk/X: il combine une compilation interactive juste à temps de bytecode de méthodes individuelles avec une compilation par lots pour générer des exes autonomes. Et ils fonctionnent identiques sur Linux et Windows. – blabla999

    Répondre

    0

    Intégrez un langage interprété dans votre application. Si vous avez un langage compatible C (je ne suis pas expert sur Delphi ou FreePascal), vous pouvez facilement intégrer un certain nombre de langages interprétés courants, comme Lua, Python ou JavaScript.

    De même, je dirais que si vous recompilez le tout parce que vous avez fait une modification de l'interface graphique, alors il est temps de modifier votre processus de construction. Compilez les différents modules dans différentes bibliothèques et ne recompilez que la bibliothèque en question. Cela permet également de renforcer l'encapsulation, car il est impossible pour une DLL d'appeler une autre DLL avec une fonction non exportée.