Cpl.Bator a écrit :le code de rastérization que j'ai chopé contenait un bout d'asm ( code d'origine en c / watcom ). pour le moment , mon code purebasic ne contient 0 lignes d'asm , et j'arrive à afficher en 1680x1050x32 un rendu 100% software avec + de 100fps !
avec une astuce toute bête ^^ , je ne cherche pas l'optimisation pour le moment , mais une organisation générale dans mon code purebasic , c'est là que je regrette la poo.
Pas mal!
Oui la POO a des avantages, c'est certain! Rationaliser est le travail le plus délicat du programmeur : éviter les doublons dans son code, penser général plutôt que particulier, avoir une vue d'ensemble, créer des procédures "atomiques", sortes de briques qui pourront resservir sans aucune modification. Il faut être clair, précis, pour soi-même et pour les autres. Ce n'est pas évident, car d'un jour à l'autre le travail que l'on est capable de fournir est très différent, surtout pour des amateurs!
La POO oblige le (bon) programmeur à fabriquer des modules compacts dédiés, coupés du monde extérieur. Elle cache la réalité des choses afin d'effectuer des travaux à la complexité croissante (il suffit par exemple d'imaginer tout ce qui est caché à la personne qui tourne la clé de contact de sa voiture). Mais dans l'idéal, il faut que toute l'équipe qui a conçu chacun des objets soit toujours là à affiner leur design. La nature avait fait cela avant nous, et sur des milliards d'années le résultat est impressionnant.
Ainsi, la vie repose sur quelques briques essentielles, les acides aminés. Ce sont des sortes de "super-objets", qui a priori n'ont pas de vie propre. Pourtant, leurs propriétés physiques sont à ce point optimisées qu'il est possible avec un nombre restreint d'obtenir des millions de combinaisons, qui se combinent encore entre elles, etc. C'est pour cela qu'avec finalement peu d'instructions, l'ADN et l'ARN arrivent à coder des êtres particulièrement complexes, et même certains de leurs comportements!
Bon, je m'égare un peu! Tout ça pour dire que ces notions sont très importantes, oui. Par contre, la syntaxe utilisée par tel ou tel langage n'est qu'un outil pour réaliser cet objectif. J'ai programmé un petit moment en Java, avec beaucoup de plaisir! Mais l'ennui est que je perdais énormément en vitesse à cause des couches d'abstraction auxquelles je n'avais pas accès. On a le même problème avec DirectX et l'archi .Net. Chaque nouvelle couche encapsule les routines des couches inférieures, rajoutant des milliers de lignes de code inutiles, de vérification, de validation. Les erreurs (inévitables) commises lors de la conception mettent des années à se corriger, ou pas (je pense par exemple au garbage collector du java, ou à la compil jit qui fait ramer ton appli la première fois!). Et l'on peut commettre des erreurs dans chacune de ces couches, car il y a toujours des sections critiques (voir les threads!).
Ce qui m'énerve le plus, ce sont ces cours donnés à la fac où ces notions sont abordées dans un sens quasi religieux. Les étudiants se mettent à délirer sur les objets et les classes et perdent tout sens de la réalité! Enfin bon, s'ils font de la gestion, ce n'est pas trop grave... Mais qu'ils ne prétendent pas faire du temps réel comme ça! Déjà que je trouve qu'on devrait avoir honte de faire des jeux sous Windows!