Question

Comment choisir si quelqu'un justifie ses compromis de conception en termes de code optimisé, de clarté de mise en œuvre, d'efficacité et de portabilité?

Un exemple pertinent aux fins de cette question pourrait être la gestion de fichiers volumineux, où un "fichier volumineux" est " pas mal de Go " pour un problème qui serait simplifié à l’aide de méthodes à accès aléatoire.

Les approches pour lire et modifier ce fichier peuvent être:

  1. Utilisez quand même les flux et cherchez l’emplacement souhaité (portable, mais potentiellement lent et peu clair), cela fonctionnera pour pratiquement tous les systèmes d’exploitation.
  2. mappez la partie pertinente du fichier sous forme de gros bloc. Par exemple, mmap un bloc de 50 Mo du fichier à traiter, pour chaque bloc - cela fonctionnerait pour de nombreux systèmes d’exploitation, en fonction des subtilités de l’implémentation de mmap pour ce système.
  3. Mappez simplement le fichier entier - cela nécessite un système d’exploitation 64 bits. C’est le moyen le plus efficace et le plus clair de le mettre en œuvre, mais cela ne fonctionne pas sur les systèmes d’exploitation 32 bits.
Était-ce utile?

La solution

Vous n'êtes pas sûr de ce que vous demandez, mais une partie du processus de conception consiste à analyser les exigences de portabilité et de performance (entre autres facteurs).

Si vous savez que vous n'aurez jamais besoin de porter le code et que vous avez absolument besoin des meilleures performances, vous ajustez votre implémentation en conséquence. Il ne sert à rien d'être portable juste pour son propre intérêt.

Notez également que si vous voulez à la fois performances et portabilité, rien ne vous empêche de fournir une implémentation pour chaque plate-forme. Bien sûr, cela augmentera vos coûts, alors, c’est vraiment à vous de hiérarchiser vos besoins.

Autres conseils

Sans contraintes, il est rationnellement impossible de répondre rationnellement à cette question.

Vous vous demandez quelle est la meilleure couleur " sans nous dire si vous peignez une maison ou une voiture ou une image.

Les contraintes incluraient au moins

  • Langue de choix
  • Plateformes cibles (serveur multi-UC ou iPhone?)
  • Optimisation pour la vitesse par rapport à la mémoire
  • Coût (qui finance cela et y a-t-il une contrainte de livraison?)

Aucun logiciel ne peut avoir "ultime". portabilité.

Voici un exemple de ce type de problème traité à l'aide de diverses méthodes, mais avec une contrainte stricte, à la fois sur l'entrée / la sortie spécifique requise et sur la mesure du "meilleur" serait le projet WideFinder .

En gros, vous devez réfléchir avant de coder. Chaque projet est unique et une analyse des besoins pourrait aider à décider de ce qui est primordial pour lui. Ce qui fera la meilleure solution pour tout projet dépend de quelques choses ...

Tout d’abord, ce projet devra-t-il être ou éventuellement multiplateforme? Selon votre choix, choisir le bon langage de programmation devrait être plus facile. Là encore, vous pouvez également utiliser plusieurs langues dans votre projet, ce qui est tout à fait normal. La portabilité ne signifie pas nécessairement moins de performance. Tout ce que cela implique, c'est que cela demande plus de travail pour atteindre vos objectifs, car vous aurez besoin d'un code de qualité. De plus, chaque langage de programmation a sa propre philosophie. Apprenez ce qu'ils sont. Une chose est sûre, certains problèmes reviennent souvent. C'est pourquoi connaître les différents modèles de conception peut parfois faire une différence, mais certaines langues ont leur propre idiome et peuvent être très pertinentes lors du choix d'une langue. Une autre chose qui mérite réflexion est les différentes approches que vous pouvez avoir pour votre projet. Le multithreading, les sockets, les systèmes client / serveur et de nombreuses autres technologies sont tous là pour vous. Choisir la bonne technologie peut aider à améliorer un projet.

Connaître les besoins et les différentes solutions disponibles aujourd’hui est ce qui aidera à décider du moment opportun pour choisir les différents compromis.

Cela dépend vraiment des pilotes du projet. Si vous faites du développement d’entreprise en interne, faites la chose la plus simple qui puisse fonctionner sur votre cible cible. Mod pour les demandes de performances selon les besoins.

Si vous savez que vous devez prendre en charge différentes plates-formes matérielles dès le premier jour, vous devez clairement choisir une implémentation portable ou utiliser plusieurs approches.

La portabilité pour des raisons de portabilité est un concept marketing pour Java depuis sa création et fait partie intégrante de la vie de C, comme le veut la convention. Je pense que la plupart des gens qui la respectent "ont grandi". avec Java ou C dira ça.

Aussi vrai que possible, la portabilité absolue ne sera valable que pour les applications les plus triviales à les plus complexes à moyenne complexité - tout ce qui est très complexe nécessitera des ajustements spécialisés.

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