• [^] # Re: Pourquoi C ?

    Posté par (site web personnel) . En réponse à la dépêche Veracity, un nouveau gestionnaire de versions décentralisé. Évalué à 10.

    Tout à fait d'accord... d'après mon expérience au boulot: nous avons deux modules logiciels qui se développent et sont maintenant très complémentaires. L'un (dont je m'occupe et dont j'ai fait quelques annonces ici) est sous forme d'une librairie C++, pour laquelle je passe mon temps a "réinventer la roue": je cherche les algorithmes standards pour un problème donné, puis je les réimplémente en C++. L'autre projet délègue à des librairies tierces dès que cela pourrait faire économiser 3 lignes de code (véridique!). Et évidement, ne "réinvente pas la roue"!

    Au final, après deux ans et demi de développement intense (avec quelque chose comme 1.5 personnes à temps plein dessus), la librairie compile sous Linux, osX et Windows, sans aucunes dépendances obligatoires (certaines dépendances optionnelles peuvent ajouter des fonctionnalités, comme le support de plus de systèmes de coordonnées géographiques via libproj), je peux très facilement fournir des paquets pour toutes ces plateformes, qui s'installent sans problèmes, et bonus supplémentaire, les fonctionnalités offertes par la bibliothèque sont cohérentes et suivent la même logique.

    Du coté du projet qui ne réinvente pas la roue, les dépendances multiples sont tellement simple à gérer que mettre à jour vers une version plus récente avait pris (la dernière fois que je l'avais fait) 3 jours à 3 personnes (dont 2 des développeurs du projet). Et ils voudraient maintenant distribuer une image de machine virtuelle afin de rendre "l'installation" plus aisée... Et il ne faut pas oublier le temps passé à débugguer les questions d'intégration, les changements dans les multiples librairies externes, etc. Donc on final, on obtient un monstre pas portable, indéployable, dont le moindre ajout de fonctionnalité demande beaucoup de temps et qui n'a pas de cohérence interne...

    Alors si réimplémenter des algos standards pour les intégrer dans un projet c'est "réinventer la roue", je préfère réinventer la roue...