D'un autre côté l'assembleur est un langage trop proche de la machine pour un logiciel grand public. L'assembleur prend toute sa puissance quand il court-circuite le système d'exploitation pour aller titiller les composants en ligne directe. Mais pour que ça puisse se faire, il faut absolument que le programmeur sache exactement sur quel machine ça va tourner afin de développer en fonction des composants qui la euh... composent.
Amiga, Atari, et même les macs, avaient des composants au comportement identiques sur toutes les machines d'une même génération (les composants eux-même pouvaient légèrement varier d'une révision à l'autre, mais sans changer les infos requises à l'entrée et ce qu'ils fournissait en sortie). La marge d'optimisation était bien plus grande que sur nos PC actuels.
Maintenant cela n'excuse pas tout. Quant un programme passe par 4 couches logiciels pour accéder à une info qu'il pourrait obtenir en seulement 2, ça permet de gagner quelques cycles de calculs. Si c'est un calcul appelé une fois toutes les 10 secondes, le gain est négligeable ; si c'est un calcul effectué 4000 fois par seconde, là on peut espérer une réelle optimisation de la routine.
Je pense qu'ils ont cherché la stabilité plus que l'optimisation pour ce lancement. Ca permet de faire patienter, de commencer à travailler, de commencer à jouer et... de commencer à rentrer des sous !
Optmiser un programme commence bien souvent par rechercher toutes les étapes inutiles qu'il contient. Ben oui quand on programme, on a un gros cahier des charges, qui prévois 36.000 possibilités et on développe un trucs qui doit s'adapter à pleins de situations différentes. Donc on inclue dans le script tout un tas de test pour savoir si machin s'appelle Claudius ou si là on a affaire à Jacques. C'est encore plus vrai quand on importe des bouts de code en provenance d'une source extérieure.
Un forum phpBB eut fonctionner avec des base MySQL, PostgreSQL, Microsoft SQL Server, etc. Donc le code inclue des tests pour pouvoir s'adapter à chacune des spécificités de ces bases. Mais quand on l'installe, on n'a pas sur le même serveur 3 types de bases différentes pour un même forum. J'ai donc des scripts qui comportent pleins de lignes inutiles dans mon cas précis.
Ya aussi l'évolution des scripts. Si un peu plus tard on se rend compte qu'on a finalement pas besoin de Claudius parce que Elminster est passé par là et prend tout en charge, ben on peut virer tous les tests et bouts de programmes liés uniquement à Claudius. MAis faut pas se planter. Parce que si dans un cas très particulier Elminster ne peut pas remplacer Claudius, et qu'on ne l'avait pas prévu, ça peut faire planter le programme si Claudius n'existe plus...
C'est beau la programmation...
|