Comment ça marche : la programmation

Arnaud de la Grandière |
Pour beaucoup, la programmation peut sembler assez intimidante : des signes cabalistiques abscons, des formules mathématiques rébarbatives, un jargon technique incompréhensible, et le mythe du petit génie de l'informatique, ont beaucoup fait pour effrayer le commun des mortels : ces diableries ne seraient pas pour eux. Pourtant, malgré les apparences, avec un petit bagage technique la chose n'a vraiment rien de sorcier, moins encore aujourd'hui où Mac OS X facilite tellement la vie des développeurs.

Fondamentalement, un programme, réduit à sa plus simple expression, repose sur un algorithme : il s'agit des différentes étapes permettant la résolution d'un problème par le calcul. Ces étapes se résument essentiellement à des tests de conditions, et à des actions. À l'aide de ces briques, il est possible de résoudre toute sorte de problème, du plus simple au plus complexe.

Nous mettons tous au point des algorithmes au quotidien, sans nous en rendre compte. Ceux-ci sont plus ou moins efficaces, mais ils n'en fonctionnent pas moins, pour la plupart. Que ce soit pour le tri de vos papiers, le chemin le plus court entre deux points, ou toute systématisation d'une tâche répétitive, nous sommes donc tous des programmeurs en puissance, le tout étant d'apprendre à formaliser ces algorithmes, et à les découper en petites briques essentielles.

algo
L'algorithme d'un lecteur de MacG


Typiquement, un programme sera exécuté instruction après instruction, ligne par ligne. Cependant, tous les langages de programmation permettent de jouer les aiguilleurs : on demandera l'exécution ou non de telle ou telle ligne, la répétition d'une commande jusqu'à ce que des conditions soient remplies, ou le lancement d'une fonction spécifique.

On appelle ces aiguillages des structures de contrôle, puisqu'elles vont modifier la manière dont le code sera exécuté. D'autre part, le développeur peut demander à ce que certaines instructions soient exécutées à l'intervention d'un événement : un clic de souris sur un endroit donné, la frappe d'une touche du clavier, le déplacement d'une fenêtre, etc. Une autre pierre angulaire de la programmation est la variable, en fait un espace de la mémoire associé à un nom, dans lequel le développeur pourra stocker différentes valeurs. Pour faire simple, c'est comme un tiroir, sur lequel on met une étiquette, et à l'intérieur duquel on peut mettre des éléments susceptibles d'évoluer, comme le score dans un jeu vidéo.

Lorsqu'un programme sera susceptible de faire appel à un même groupe d'instructions à plusieurs reprises, plutôt que de les recopier à chaque endroit nécessaire, il vaudra mieux créer une fonction unique, qui sera appelée depuis divers endroits du code.

Ainsi, lorsque des modifications sont nécessaires sur cette fonction, il suffira de les effectuer sur un seul endroit du code plutôt qu'à chaque endroit où ces instructions sont nécessaires. La fonction peut recevoir un ou plusieurs paramètres, exactement comme en mathématiques, par exemple : f(x) = x+1, donc f(1) = 2, f(2)=3, etc. On peut donc facilement créer une fonction qui calculera la TVA, qu'on pourrait définir en pseudo-code comme suit:

CalculeTVA(PrixHorsTaxe, MontantTVA) {
PrixTTC = PrixHorsTaxe * ( 1 + (MontantTVA / 100))
Renvoie PrixTTC
}


Lors de l'exécution du programme, chaque appel à la fonction CalculeTVA, avec les paramètres associés, par exemple CalculeTVA(29,99, 19,6), sera remplacé par son résultat effectif.

Les programmes peuvent effectuer les tâches les plus simples comme les plus complexes, et naturellement tous les développeurs ne se valent pas, mais le mérite ou l'intérêt d'un logiciel ne se mesure pas nécessairement à la virtuosité de son code. D'autant que tout le sel de la chose consiste parfois à tirer le meilleur parti des ressources matérielles, grâce à un algorithme élégant, c'est à dire qui donnera naissance au plus petit programme possible pour effectuer une tâche donnée.

Un code qui sera exécuté étape par étape, ou en appelant des fonctions, relève de la programmation dite procédurale, mais Objective-C, le langage de programmation de Mac OS X, permet de faire de la programmation orientée objet. Derrière ce nom énigmatique s'abrite un concept très puissant qui permet de grandement simplifier la vie des développeurs.

L'objet est une sorte de programme dans le programme, une entité propre, avec ses propriétés et ses comportements. Par exemple, le procédé permet de définir un objet Voiture, qui aura des propriétés marque, nombreDePortes, année, etc. Ainsi, à partir d'une seule définition de l'objet voiture, le développeur pourra en créer en mémoire différentes instances, c'est à dire des émanations suivant le même gabarit mais dont les propriétés pourront être différentes.

De plus, les objets pourront interagir entre eux spontanément sans que le programme général n'ait à s'occuper d'eux, puisqu'ils disposent de leurs propres comportements. Mieux encore, les objets eux-mêmes peuvent instancier d'autres objets, créant des relations parent-enfant et transmettant leurs propriétés en héritage. Cette approche permet de rendre le code plus autonome et de ne pas avoir à faire de la micro-gestion à s'en donner des maux de tête : les problèmes complexes en deviennent autrement plus simples à résoudre, grâce à cette approche organique.

skitched

Et de fait, nombre des éléments clé-en-main fournis dans Mac OS X pour les développeurs sont eux-mêmes des objets, ce qui a permis de les intégrer dans Interface Builder, un logiciel qui permettait de créer l'interface d'une application entièrement à la souris, en liant simplement les éléments aux actions et valeurs intégrées dans le code, et qui a depuis été intégré directement dans Xcode.

Pour la petite histoire, il s'agit là directement d'un héritage de NeXT, lui-même inspiré par les travaux du Xerox Parc sur Smalltalk, comme en témoignait Steve Jobs lui-même dans le documentaire de Robert X Cringely, Triumph of the Nerds, en 1996.



Quoi qu'il en soit, Apple a toujours porté beaucoup d'attention au travail des développeurs tiers. La force du Macintosh des premières heures a été la cohésion de son interface, alors que sur Windows une tâche similaire dans deux logiciels donnés pouvait avoir des raccourcis claviers différents, par exemple. On doit beaucoup de cette cohésion à la "bible" qu'Apple fournit aux développeurs : un épais livre (à l'époque du moins) appelé Macintosh Human Interface Guidelines.

Apple ne s'est pas arrêtée en si bon chemin, puisqu'elle a intégré à chaque nouvelle version de Mac OS X de nouvelles fonctions permettant de simplifier la vie aux développeurs, et donc de créer des applications plus fiables, plus puissantes, et plus élégantes. A tel point qu'aujourd'hui, Cocoa peut pratiquement être abordé comme un langage de haut niveau, de type script. Typiquement, les langages scripts sont des langages plus faciles d'accès, car ils se vouent à commander un moteur d'exécution qui se situe au-dessus du système d'exploitation, sans avoir besoin d'une compilation. Et de fait, la création d'interfaces à la souris, et les commandes relativement simples s'apparentent beaucoup à des environnements de développement comme Flash, par exemple.

La syntaxe même en Objective-C permet d'éviter les erreurs (par exemple, les paramètres d'une fonction sont appelés nommément pour éviter les confusions), mais mieux encore, Mac OS X est livré avec une kyrielle de fonctions qu'il fallait autrefois mettre au point soi-même : ainsi, le framework Core Image dispose de tous les effets visuels dignes d'un Photoshop, qu'une seule commande permet d'activer. Core Animation gère les interpolations et variations de vitesse permettant de beaux effets dynamiques, autrefois hors de portée des développeurs les moins aguerris.

Naturellement, il est possible de plonger plus en profondeur dans les strates du système, afin, si nécessaire, de personnaliser le comportement par défaut de ces fonctions. C'est là que l'analogie aux langages scripts s'arrête, puisque c'est leur limite. Cependant cette approche haut niveau présente nombre d'avantages : offrir les clés de la programmation à un plus grand nombre de personnes, éviter le "mauvais code" susceptible de poser des problèmes, et offrir une interface cohérente, plaisante et dynamique aux utilisateurs finaux, que les développeurs des applications soient chevronnés ou non.

avatar françois bayrou | 
@monsieurben "En programmation orientée objet (...) Ca donnerait : [voiture demarrerMoteur]; [voiture avancer]; [voiture tournerAGauche];" Ca pourrait aussi donner voiture.demarrerMoteur() voiture.avancer() voiture.tournerAGauche() Bizarre ton explication ! on dirait que pas de POO sans crochets ... :)
avatar ispeed | 
Bon les gamins, la théorie c'est bien mais la pratique c'est mieux. Je viens de terminer un programme de 10 000 lignes Venez partager votre savoir
avatar Anonyme (non vérifié) | 
A quand un tuto pour creer un petit programme simple ?
avatar bigham | 
"à chaque nouvelle version de Mac OS X de nouvelles fonctions permettant de simplifier la vie aux développeurs" Vous avez jamais utilisé Xcode 4, apparemment.
avatar Gueven | 
NextStep fut quand même bien pensé pour le développement rapide. D'ailleurs IBM à voulu un temps acheter une licence de NextStep. Apple hésita entre OS2, NextStep, SunOS pour prendre la relève de MacOS 9. Je vous laisse deviner qui a gagné. Quand je pense qu'en 1995 je bavais déjà sur OpenStep ... (une implémentation d'un window manager reprenant le design et les concepts de Nextstep avec son framework de développement). Objective-C étant une évolution du C avec une couche objet s'inspirant fortement de Smalltalk (encore une invention de Xerox). On en revient toujours à Xerox .... Je comprends pourquoi ce jour la Steve a perçu l'avenir.
avatar Kubusiu | 
Hmmm, je n'y comprend toujours rien. Mais merci d'avoir essayé de vulgariser la programmation.
avatar Lemmings | 
Je regarderais la solution Delphi, j'ai déjà pratiqué ce langage et le RAD est vraiment exceptionnellement efficace ! XCode 4 a encore du boulot de ce côté là ! :)
avatar Manu | 
Pour donner une idée assez précise du développement sur iOS ou Mac OS X, le plus important c'est de partir d'une feuille blanche, et sans parler de programmation, de dessiner les fenêtres de son application, et leur enchainement. Ensuite pour chaque fenêtre ou interface (le V de MVC), définir la provenance des données qu'elle affiche donc le Modèle ( le M de MVC). Les fonctions d'affichage ainsi que les actions activées par les éléments de l'interface sont définies dans le Controleur (le C de MVC) L'avantage du développement sur iOS par exemple, c'est que le SDK fournit des squelettes d'éléments Controleur suivant le type d'interface que l'on utilise. Ex pour une interface de type Table, on a une TableViewController, etc. En fait l'élément essentiel dans le développement Cocoa c'est de bien comprendre les différents paradigmes comme la délégation, la Notification, les protocoles, le KVC et KVO etc. Ne pas oublier que l'environnement de dev Cocoa, ancêtre d'OpenStep/NeXTSTEP est le plus ancien des environnements de dev orientés objet modernes. Bien avant lieux basés sur C++ et Java dont il a d'ailleurs inspiré les créateurs. En gros développer sur iOS est un jeu de lego. On décrit son idée, puis pour la mettre en pratique, on se sert de briques offertes par les Apis cocoa que l'on utilise et/ou enrichi. C'est assez sommaire il est vrai, mais c'était jute pour vous faire une idée du développement sur iOS ou Mac OS X.
avatar diegue | 
C'est certainement très facile, mais pas autant que le "basic" de ma jeunesse (je ne parle pas du visual mais de ce vient bon : "if" "goto", etc !!
avatar bugman | 
@ diegue : "C'est certainement très facile" C'est loin d'être insurmontable. Je ne dirais pas par contre "très facile". "mais pas autant que le "basic" de ma jeunesse" C'est certain.
avatar Aurélien-A | 
[quote] malgré les apparences, avec un petit bagage technique la chose n'a vraiment rien de sorcier[/quote] De la part de quelqu'un qui fait du C++ tous les jours, je vous dit "non".
avatar grav | 
l'article contient des termes abscons: on ne parle pas d'instanciation quand on vulgarise un outil de codage, ni d'héritage. Le résumé des concepts de POO ca ne tient pas en 3 lignes. Ensuite l'introduction sur l'algorithmique est bidon. On fait des raisonnements humains, et là il faut les transposer en séquentiel. Ensuite XCode, c'est pas non plus la panacée. Eclipse est un peu plus difficile d'accès mais bien plus confortable à l'utilisation. Visual Studio est un excellent IDE. Netbeans est au même niveau qu'XCode: simple mais on en voit rapidement les limites. Et Objective-C est une horreur... comme C++. Java / C# sont plus interessant dans la syntaxe, le summum de l'apprentissage au niveau syntaxique restant pour moi... VB.NET (et ouais). Ensuite, avec les languages OOP actuels, le plus dur est de maitriser les classes fournies. Bref, difficile de vulgariser ce domaine malgré tout.
avatar BeePotato | 
@ grav : « Et Objective-C est une horreur... comme C++. Java / C# sont plus interessant dans la syntaxe » Ah, ouais, quand même… ce qu’on en arrive à lire de nos jours…
avatar BeePotato | 
@ ispeed : « Je viens de terminer un programme de 10 000 lignes » Petit joueur ! :-P
avatar kubernan | 
Je passe sur les explications sur la programmation. Le sujet est bien vaste. Ce que j'adore dans l'environnement de dev sur Mac ce sont les outils d'aide au debugging et à l'optimisation. Instruments (nom de l'outil principal) est fantastique.
avatar JLG47 | 
Merci pour ce rappel. Il est évident que la programmation est plus un problème descriptif, donc littéraire plutôt que mathématique. Pour bien écrire, il faut être logique, ordonner correctement ses phrases, respecter la syntaxe, et l'orthographe. C'est le fond de la programmation. Enfin, il faut savoir d'où on part et où on souhaite arriver. Déjà, en basic, il était possible de travail sur des objets et sur des événements, mais c'était laborieux.
avatar eled | 
[quote]ispeed [10/09/2011 11:06] Bon les gamins, la théorie c'est bien mais la pratique c'est mieux. Je viens de terminer un programme de 10 000 lignes Venez partager votre savoir [/quote] C'te perte de crédibilité sur la deuxième ligne, t'aurais mieux fait d'éviter ;) Assez bon article dans l'ensemble, malgré quelques imprécisions et ceci : [quote] Mieux encore, les objets eux-mêmes peuvent instancier d'autres objets, créant des relations parent-enfant et transmettant leurs propriétés en héritage.[/quote] qui ne veut pas dire grand chose.. De quoi s'agit-il ? D'un DP factory ? Dans ce cas pas de "relation parent-enfant" ni d'héritage. S'il s'agit de la mécanique d'héritage, là encore, la tournure est très imprécise (donc potentiellement complètement fausse). [quote] @ grav : « Et Objective-C est une horreur... comme C++. Java / C# sont plus interessant dans la syntaxe » Ah, ouais, quand même… ce qu’on en arrive à lire de nos jours…[/quote] Il faut reconnaître que le C++ (je connais mal l'objective-C) n'est pas le langage le plus simple qui existe ; de là à dire que c'est "une horreur", il y a un gouffre qu'aucune personne raisonnée ne sauterait. Des langages comme le Java font qu'on se prend moins la tête à jongler avec des éléments bas niveaux et qu'on peut [b]facilement[/b] se concentrer sur des concepts et super-structures plus complexes. Dire que la syntaxe du Java et du C# est "plus intéressante" est par contre idiot et ne veut rien dire.
avatar Anonyme (non vérifié) | 
bah... je ne suis pas plus avancé après avoir lu cet article, bien superficiel, il me semble... j'en resterais donc à mes piles Hypercard...^^
avatar Lemmings | 
@BeePotato : pour Objective C, il a raison. La syntaxe n'a rien d'évidente et de simple. Même pour un développeur expérimenté. Ces crochets imbriqués rendent rapidement la lecture complexe. Après une fois passé le cap de la syntaxe, on retrouve ses petits hein :)
avatar xatigrou | 
j'ai regardé plusieurs fois une vidéo promotionnelle de nextstep 3 faite par steve jobs himself, datée de 1992 et dans laquelle il donne une demonstration de la création d'un mini logiciel interne à une administration, rien qu'en déplaçant des objets, reliant des fenetres et fichiers entre eux et expliquant bien que pas une ligne de code n'a été écrite. very impressionnant ! la vidéo est sur youtube
avatar Un Vrai Type | 
Entre ceux qui pensent que math = chiffre, litteraire = description, ceux qui confondent le nombre de ligne de code et la qualité d'une programme etc... il y a beaucoup de réactions d'amateurs qui critiquent l'article ans être capable de se mettre à la place du lecteur de base... Moi je dis : Le seul vrai langage en programmation objet est l'Eiffel (je pourrai vous démontrer que Java, C++ et Obj-C ne sont pas 100% objet...). Voilà, moi aussi je peux me la pêter mathématiquement, litterallement* tout en affirmant des choses approximatives qui certes sont vraies dans l'absolue (les entiers ne sont pas des objets dans les langages dérivé de C, il existe un objet pour les représenter seulement...) mais qui ne changent rien dans l'industrie (c'est quoi l'intérêt d'avoir un langage 100% objet L'important c'est qu'on puisse développer avec les méthode...) Merci Macgeneration pour la vulgarisation et donc la démocratisation d'un métier mal connu**. * Si vous ne lisez pas ici un second degré, cessez de me lire à jamais ** Dire que je ne développe plus... Je ne saurai même pas expliquer mon métier à une personne qui croit que ingénieur informatique, c'est un type qui répare Windows...
avatar Un Vrai Type | 
@grav : Quand même un BON développeur c'est un développeur qui ne s'appuie pas sur la syntaxe d'un langage pour coder mais sur l'environnement du langage (Localement : quelles methodes coute moins en ressource, globalement : quel environnement, quel organisation, quel architecture...) Une syntaxe, ça s'apprend en quelques jours de pratique (disons quelques semaines pour brainfuck). Et c'est vraiment pas le plus compliqué à lire ou apprendre... (Exempel du cas d'école particulier : AppleScript. Tout anglophone comprend ce qu'un script fait en le lisant, seul un developpeur* est capable d'écrire un script qui fonctionne... ) *Y compris amateur éclairé
avatar grav | 
@eled, @BeePotato: Mais *bien sur* que java et c# sont bien plus efficace *syntaxiquement* que obj-c ou c++. La syntaxe de déclaration d'une class, l'instanciation, les structures du style foreach()... C'est simple, tu poses le même code en c# / c++ et y'en a un qui est quasi lisible, alors que l'autre t'abreuve de signe abscons tel :: ou ~destructeur(). Le language POO le plus parlant que je connaisse *syntaxiquement* est vb.net. Donc, non, ce n'est pas idiot de trouver que la courbe d'apprentissage syntaxique est plus rapide en java/c# qu'en c++/obj-c. @UnVraiType: il parait aussi que F# (implementation .net d'erlang je crois) avec son paradigme fonctionnel est excellent. Perso, en terme de language OO, je me mettrais bien à Python, parait que c'est génial. Mais là, je ne parle que de ce que je connais et pratique, c'est vrai qu'Eiffel ou SmartTalk ont une bonne réputation aussi :)
avatar grav | 
Pour argumenter sur le pourquoi je parle tant de syntaxe, c'est parce que de nos jours, il y a beaucoup d'intégration dans le développement: on utilise majoritairement des objets déjà codés. Du coup, en programmation évenementielle / RAD, on prend des composants, et on code surtout les interactions entre eux. Donc, en débutant, ca donne quoi ? on apprend à utiliser les objets du framework, à lier entrée et sortie, et on bricole avec le language pour des tâches triviales. Et c'est là que l'apprentissage de la syntaxe se fait. Du coup, hors notion de POO, l'apprentissage du language (je pense à java) est complexe à cause de son environnement (Eclipse, ses tonnes de plugins) ou de ses frameworks (jUnit, Spring... voire Android - qui sont vite complexes), pas de sa syntaxe.
avatar monsieurben | 
@francois bayrou : j'avais un projet xcode ouvert, ça m'a influencé... Et pis, j'aime vraiment pas java...
avatar BeePotato | 
@ grav : Il est tout simplement idiot de mettre, comme tu l’as fait, Objective C et C++ sur le même plan au niveau de « l’horreur syntaxique » tout en affirmant juste après que Java et C# sont « plus intéressants dans la syntaxe ». Alors que ces deux derniers langages (et en particulier Java) sont très proches, en terme de syntaxe de C++. Beaucoup, beaucoup plus qu’Objective C. Ils évitent certes certaines des « horreurs » qu’on peut trouver en C++… mais c’est tout autant le cas d’Objective C. Pour être clair : je ne remets pas en cause le gain de clarté syntaxique de Java et C# par rapport à C++ — ce que je remets en cause, c’est ce mettre Objective C dans le même panier que C++ dans cette comparaison, alors qu’il apporte encore plus de clarté que ces deux autres langages. En Java, par exemple, on se frappe la même syntaxe lourde qu’en C++ pour faire des méthodes génériques. En Objective C, non.
avatar BeePotato | 
@ Lemmings : « pour Objective C, il a raison. » Non, il a tort. « La syntaxe n'a rien d'évidente et de simple. » Évidente ? Non. Mais il est difficile de trouver un langage de programmation au sujet duquel on pourrait dire ça. Simple ? Oui, cent fois oui ! Beaucoup plus simple que la syntaxe des autres langages qu’il a cités. « Même pour un développeur expérimenté. » C’est peut-être sans doute pour un développeur accro à la syntaxe C++ (et ses dérivés) que ça paraît difficile. Juste à cause de la force de l’habitude. Et je dis bien « développeur accro à cette syntaxe » plutôt que « développeur expérimenté », car ce n’est pas forcément la même chose — au contraire, un développeur très expérimenté aura régulièrement été confronté à des syntaxes diverses et variées et aura moins de mal à passer de l’une à l’autre. « Ces crochets imbriqués rendent rapidement la lecture complexe. » Pas plus que la version C++/Java/C#. Et la forme des noms de méthodes, ainsi que les conventions de nommage de Cocoa, rendent la lecture bien plus simple.
avatar BeePotato | 
@ Un Vrai Type : « je pourrai vous démontrer que Java, C++ et Obj-C ne sont pas 100% objet... » N’oublions pas que dans le terme « POO », le O du milieu est la pour indiquer une simple orientation, hein. ;-)
avatar Manu | 
Je ne pense pas qu'il existe un langage plus objet qu'un tel autre. Elles ont toutes leur spécificité. En outre depuis la version deux, Objective-C utilise la notation syntaxique avec le point (.) . Le plus important à mes yeux c'est la richesse du framework c'est-à-dire des bouts de programme tout faits pour implémenter une fonctionnalité.. Le langage en lui même ne suffit pas. La force de Cocoa c'est qu'il est conçu par Apple. C'est-à-dire qu'on y retrouve les mêmes notions de design et d'élégance qu'Apple met dans ses produits. L'exemple flagrant est l'outil de debugging Instrument qui utilise la technologie D-trace conçue à l'origine par SUN. Apple y a ajouté une interface en utilisant le principe de garage band. En outre les apis traitant des domaines de prédilection d'Apple que sont l'Audio, la video (AVFoundation) , l'interface graphique (Core animation) sont mieux soignés que chez les autres. La programmation objet ne s'improvise pas et ne se vulgarise pas si facilement. Il faut au départ connaitre déjà ou au moins un langage de programmation comme le C. Pour finir, il faut savoir qu'Objective-C a l'avantage de donner la possibilité d'y intégrer du C++. On parle souvent d'Objective-C++. Le framework Cocoa (OpenSTEP) a également été utilisé par les auteurs du livre "Design Patterns: Elements of Reusable Object-Oriented Software" bible des développeurs objet.
avatar nico31370 | 
J'enseigne dans des classes préparatoires la programmation depuis 20 ans... Non je ne crois pas que cela soit aussi si simple de programmer que cet article veut bien le dire. La programmation n'est pas qu'une simple histoire de langage et de 'briques' réutilisables... C'est bien pourquoi il y a autant de mauvaises applications sur le Store... Chacun son métier... Un peu comme le journalisme ou la comptabilité... Posons nous une simple question : Pensez-vous que les programmeurs des logiciels qui aident le pilote d'un Airbus à le poser ne fassent qu'assembler des petites briques ? Monteriez-vous dans cet avion si le développeur n'était pas mieux formé ? Par contre il est vrai que développer une app composée de quelques objets et de copier coller un code bancale pour finalement vendre le tout à 0,79€ sur le Store n'est pas si grave... A mon gout ce genre d'article ne fait qu'entretenir le mythe.
avatar Vivid | 
@nico31370 "Pensez-vous que les programmeurs des logiciels qui aident le pilote d'un Airbus à le poser ne fassent qu'assembler des petites briques ? Monteriez-vous dans cet avion si le développeur n'était pas mieux formé ?" c'est toujours une questions de 'briques' ou routine, sous-programmes, méthodes, peut importe le nom. Tu re-utilise toujours du code, mais si tu est un gros branleur tu re-utilise une grosse routine, même si elle t'es utile a 10%. A l'inverse tu 'personnalise', tu ajuste ton bout de code a sa nouvelle future fonction. Dans l'aéronautique c'est de l'embarquer et cela demande le moins possible de 'distance' entre le programmeur et la machine tout l'inverse de la POO (une ruine), ou langage de feignasse :-) on peut comparer la POO au fastfood. Syntaxiquement quand tu vient de l'asm ou du C, la POO te donne la ger... c'est immonde !, impossible de rajouter quelques routine en asm, gestion de la mémoire automatique... Pour finir de répondre "Monteriez-vous dans cet avion" ; dans aucun! le plus dangereux dans un avion c'est bien le carburant, mais cela est un autre..... problème.

Pages

CONNEXION UTILISATEUR