PDA

Afficher la version complète : [Réglé] Programmation OBJET sous Linux.



jacqueline
05/10/2004, 14h16
Je découvre, la programmation sur le PC avec Linux, avec mon expérience dans d'autres domaines.. pas facile de s'y retrouver vu la multiplicité des langages et des outils.
sous windows , j'avais aucun outil ! lol, et c'est tout de même tentant avec tout ce qu'on a dans la pack Suse.

Je vous fais part de cette première éxpérience, si jamais je pars sur de fausses pistes, j'en suis au stade "découverte" ! Je compte sur les spécialistes pour me dire où je me plante. Notamment sur les logiciels que j'utilise.

Peut être que ceux qui hésitent encore à se lancer dans la programmation sous Linux parce qu'ils rencontrent les mêmes difficultés y trouveront ne serait ce qu'une idée... on une motivtion pour se lancer dans la programmation objet, parce que généralement lorsque vous demandez de l'aide on vous répond qu'il faut utiliser tel langage plutot que tel autre ou tel outils, sans vous donner la raison, et c'est juste celui que vous n'avez pas !


Généralement, on aborde la programmation par ses contraintes syntaxiques et on est content d'avoir fait un prog qui fait un print "hello "... et faute d'exemples concrets à résoucre, hors l'exemple des fenêtres qui était encore très vague pour moi, la notion d'objet... me semblait plus une contrainte qu'un avantage.

Lorsque j'ai lu la doc du C++ sur le site de CCCM, j'ai failli leur dire. .. "c'est bien de savoir programmer en C++, mais ça ne sert à rien car on ne peut rien faire si on aborde pas les notions d'interfaces avec le monde extérieur, même si on fait des calculs géniaux à l'intérieur... "
Généralement ce point n'est pas abordé dans les cours sur les langages... (enfin ceux pour débuter ) faire un prog qui tourne dans un terminal en mode texte : beurk !
On manque cruellement de doc à ce niveau. J'ai failli laisser tombre les mlanges objet tant ça me paraissait compliqué lorsqu'on lit le cours de C++



Un petit exercice hier, avec QT Désigner.


Si on voulait programmer l'affichage d'une fenêtre, il y en aurait pour trois jours, sinon un mois pour peaufiner la présentation. ( Mais à première vue, ce n'est pas du langage C++ ).


La notion d'OBJET, concept complètement théorique permet de s'affranchir de toutes les contraintes des tableaux. Ca me semble hyper puissant.

Ce petit tour dans QT designer, même si je n'ai pas encore réussi à compiler une fenêtre, (faute d'avoir tout bien défini au niveau des variables et des évenements ) m'a permise de mieux intégrer cette notion d'objet et un peu l'interface graphique. Je me suis bien amusée. ( j'avais essayé Glade aussi l'autre jour, mais j'ai un peu galéré pour "dessiner" ce que je voulais. )

Une fenêtre c'est une structure OBJET fixée à sa création ! Elle traite les données à afficher, et les éléments graphiques..

Elle est composée de multiples objets élémentaires, qui vont être inséparables et une fois que la structure de la fenêtre est fixée, c'est toujours l'objet "fenêtre x " : la même structure unique qui va pouvoir afficher des valeurs différentes.

Autre découverte.. losrqu'on crée la fenêtre on définit un certain nombres d'évènements ( clic sur un bouton, saisie au clavier etc.. et tout celà est géré.. par l'inteface graphique.

Le code est automatiquement généré dans un fichier par QT designer. Je vous laisse imaginer , s'il fallait programmer tout ça à la main... Ne serait ce que pour peaufiner la présentation. j'ai tout de même parcouru le code généré qui me rappelait ce que j'ai entrevu sur le C++, et retrouvant le nom de mon icone à moi ....

C'était la démarche inverse : générer du code compilable à partir d'une image au lieu d'écrire du code pour construire une image.

Mais bien plus encore : si on programmait ça avec un langage qui ne sait pas traiter les objets, ce serait carrément l'enfer. Donc c'est un élément déterminant pour le choix du langage dans lequel on va se lancer.

Si la programmation se résumait à tapper des milliers de lignes de codes (avec une syntaxe rigoureuse ), ça n'a rien de réjouissant ( je rapelle que je suis fainéante ! ). un bon programmeur en fait toujours le moins possible, et si on fait des fautes de frappe dans les commentaires , c'est pas génant !


En oubliant l'affichage , parce qu'un programme ce n'est pas qu'afficher :


Je pensais résoudre le cas qui m'intéresse avec des tableaux, parce que je maitrisais bien ça, et je m'en serais sortie, mais je ne savais comment afficher.


Il y a trois problèmes aux tabeaux : leur structure, l'homogénéité des données qu'ils contiennent, et ça se gère avec des pointeurs... lorsque ce qu'on à y faire dedans est compliqué , je ne vous dis pas les boucles de "tant que x< à " imbriquées les unes dans les autres et cela demande multitude de pointeurs à gérer.

La notion d'objet, c'est carrément du sur mesure, et on oublie les pointeurs.

C'est là que je trouve que la notion d'objet est carrément géniale.

Je ne connais pas encore la syntaxe, du C++, mais je déteste apprendre un langage en commençant par les contraintes de sa syntaxe, sans savoir à quoi ça peut servir, ( les programmes print hello et compagnie... ).

Maintenant que j'ai pigé la structure objet, je vais pouvoir me lancer dans la syntaxe avec plus d'entrain que je ne l'aurais fait autrement, parce que j'ai pigé la simplification qu'ils apportent dans la programmation, par rapport à la façon dont j'envisageais de faire mon programme.

Je me moque bien que l'affichage que je veux faire soit traité en XML : Un passage de données de données à une routine d'affichage imposée par le sytème graphique, avec la structure de l'objet fenètre.. pour ça je n'ai pas besoin d'apprendre à fond le XML et d'être esclave de ce langage. Et puis ça apprend, parce ça permet de résoudre plein de situations. Non mais ! On ne va pas se laisser emm... par des trucs pareils....


En amont, je vais faire mon programme en C++, parce que c'est universel.

Le jour où l'interface garaphique change , ( un nouveau paquetage... dans un autre langage.. ) je n'aurais pas à refaire tout mon programme, mais seulement le module d'affichage des fenêtres..


Pour l'instant, le problème est comment faire cette interface., mais je vais trouver !
Une piste ce matin.. ( pour moi, c'est encore de l'hébreu. )

Une fois qu'on sait faire ça, on s'affranchit complètement du sytème sur lequel tournent ses programmes. Celà impose une conception modulaire des programmes qu'on réalise, mais qui évite de retoucher l'ensemble de son prog pour l'adapter à une autre bécane ou un autre système (on ne modifie que les interfaces ).


J'ai testé aussi Kdevelop !!!!

Sur le coup je ne comprenais rien ! je n'avais pas encore fait un programme, et seulement initialisé un projet que, déjà il m'avait sorti une douzaine de fichiers et millier de lignes de codes ( bien commenté ).

LES LIBRAIRIES :

Dans mon job , je ne m'en suis jamais préoccupée pour faire du Fortran , j'avais un système homogène , et tout était prévu.


Ce que j'ai cru comprendre avec Kdevelopp, par rapport à un système informatique homogène et invariable, c'est qu'il intègre dans votre fichier programme, les librairies qui seront nécessaires à son éxécution sur la machine. Déjà ça évite d'aller les chercher et d'écrire toutes ces lignes. Il ne reste plus qu'à incorporé votre programme au bon ne droit. mais il me semble que c'est Kddevelop qui s'en charge au moment où on lance la compilation.

Enfin il permet de lancer plusieurs assistants graphiques, différents..


J'avais un truc à peu près équivalent pour faire les assemblages de mes progs. On lançait un prog qui éditait le fichier batch qui lançait l'assemblage complet et qui permettait d'éditer les fichiers d'option (un seul source pour une vingtaines de configs différentes. )


Si j'écris un programme en C++, il ne va jamais tourner ! Il faut lui mettre les bonnes librairies.. ( entre autres pour faire l'interface avec un SGBD , les fichiers, etc..) Et si jamais il tournait sur ma bécane, il ne tournerait pas sur une autre.


Ce qui rend "portable " un programme en Fortran ou autre , c'est le compilateur qui varie d'une bécane à l'autre , et d'un OS à l'autre, et les librairies, avec des noms standards (mais ça pose parfois des problèmes.

L'intêret d'avoir fait de l'assembleur, c'est de comprendre ce que fait un compilateur et comment il peut marcher. D'ailleurs si on compare, le code machine qu'on peut écrire direct en assembleur et celui que génère un compilateur, il n'y a pas photo à l'arrivée., le rapport est de cent en vitesse d'éxécution, par contre il faut tout écrire.... .et ce n'est pas portable.

Un autre avantage d'utiliser Kdevelop (mais hier je n'ai eue le temps que d'effleurer le problème ) . Lorsque vous créez un pojet : il peut être en C++, mais ce n'est pas nécessaire, si vous ne faites que de l'affichage, on choist l'option "dialogue", et il doit y avoir huit options différentes pour lancer un projet..

Il me semble qu'on crée son programme et lui le compile avec le fichier qu'il a créé et qui gère les bonnes librairies : ça de moins à faire parce que si on en oublie.. et il gère toute la documentation et les différentes versions du projet.

Comment ? C'est ce qu'il faut comprendre, pour bien l'utiliser. Hier je n'ai rien pu faire marcher avec, Je me suis lancée directement là desusus pour essayer, sans lire la doc.. ( en anglais), mais ça va me permettre de l'aborder plus sereinement aussi.

On est pas obligé d'utiliser kdevelop ,, et c'est vrai qu'au début ça complique un peu les choses, mais une fois qu'on maitrise, ça les simplifie énormément.




Revenons à la notion d'OBJET

Je suis restée sur l'idée de mon programme d'analyse des tables de partitions.. Non , ce n'est pas une obsession, mais partir d'un exemple concret à résoudre, ça me permet de faire le tour du sujet sur la programmation sous Linux avant même d'avoir écrit une seule ligne..et même d'avoir appris la syntaxe..

Par exemple , je pouvais écrire ça avec des tableaux, mais je me serais emmerdée : une partition c'est un tableau à deux dimensions. La table des partitons, c'est un tableau à trois dimensions, mais j'étais obligée de gérer différents tableaux avec les formats différents ( ce qu'on lit sur le disque, ce qu'on calcule en hexa en extrayant tel paquet d'octets, pour décoder la table et des tableaux en ASCII pour afficher le résultat ).

Si c'était organisé en tableaux, comment assurer l'affichage, et comment rendre ça interactif avec l'affichage ce serait indémerdable...et si ça ne marche pas ! pour trouver le problème ...

Là notion d'objet n'est pas réservée à l'affichage !

On peut l'utiliser pour le traitement de données. Elle est beaucoup plus simple car elle ne comporte pas tous les éléments grahiques, et noms de valeurs : il n y a que les valeurs ( pour faire des extractions, des calculs des comparaisons, des modifications )

J'ai capté ça en peleine nuit : tout d'un coup la lumière. !!!


Mais hier j'ai quand même cherché pendant deux heures comment afficher un tableau avec des valeurs de nature différente, dans une fenêtre, j'en ris encore.


J'oublie les tableaux, ça va tout simplifier !


Si j'avais voulu écrire ça avec un programme linéaire, même structuré, je pense que j'aurais abandonné vu l'ampleur de la tâche... ( d'ailleurs c'est pour ça que je n'ai pas commencé )




Je vais donc tout faire avec la notion d' OBJET.

Une table de partition , qu'on la lise sur le disque ou sur une disquette, ou qu'on veuille en créer une nouvelle pour partitionner, a toujours la même structure : celle imposée par le BIOS et le PC. ( seules les adresses des partitions changent. ) donc c'est on OBJET unique pour un disque.

Dessous il est décomposé en autant d'objets qu'il y a de partitions, mais ils ont tous la même structure.. et chacun est une suite d' objets élementaires , taille, type, début fin, composés de variables, selon ce qu'on lit sur le disque,

Avec des tableaux, il aurait été impossible de les imbriquer ainsi et de créer cette "structure objet" ( qu'on peut adapter à n'importe quel problème, c'est pour ça que je m'acharne sur cet exemple lol ! ). A la fin on aurait tellement de tableaux et de pointeurs à gérer qu'on s'y perd.


On peut faire toutes les manips qu'on veut sur ces objets dans le programme principal. Avec des données internes, des données externes. à ces objets. etc..


A l'intérier des objets on peut faire des manips sur les variables , ce qu'on ne peut pas faire dans un tableau.


Mieux que ça , la même variable dans deux objets identiques ( mais avec des valeurs différentes ) peut avoir le même nom si elle est déclarée interne. donc j'ai excartement le m^me objet avec les mêmes noms de variables ( copier collerd es lignes autant de fois qu'il le faut ! !!, rien à changer. Il suffit pour des partitons différentes, de donner la valeur de l'offset (adresse de début de la partition ) avec une variable externe et de faire l'addition à l'intérieur de l'objet. Là j'ai gané quelques tours de moulinettes d'un sous programme pour faire ça.


Dans le programme principal, je n'aurais que des données organisées en objets, selon la structure standard d'une partion.


Le décodage en clair avec leur nom réél des valeurs n'est utile qu'à l'affichage, pour analyser les choses et donc pourquoi le traiter dans le programme principal. ?

Pour l'affichage j'aurais une structure type "d'affichage d'images" pour l'interface graphique ,et c'est elle qui va faire le décodage en clair. Il suffit que je lui passe les données, qui seront des variables numériques, affichées en tant que valeur (représentant, le numero de tête, de cylindre, etc.. tout ce qu'il y a à afficher. Mais le nom en clair de chaque valeur sera une zone texte fixe dans la fenêtre , utile uniquement à l'affichage. Ce n'est même pas une donnée type "chaine de caractère" à gérer dans un tableaux associé, et le programme principal s'en trouve simplifié, presque squellétique.

Cette organisation en objets me divise le nombre de lignes à écrire par plus d'une centaine, par rapport à ce que j'avais imaginé.

Si je veux afficher cote à cote sur l'écran, le contenu de la partition disque et celui de la sauvegarde. ; dans une fenêtre et donc dans l'interface d'affichage il y a deux fois la même structure : un copier coller à l'intérieur de l'objet fenêtre ( je ne veux pas faire deux fois la mëme chose ) : une grande fenêtre qui englobe deux sous objets graphiques "partition", et si j'ai bien pigé , je n'ai qu'à changer les coordonées de leur pôsition pour que tout ce qu'il y a dedans suive.

Je veux afficher chaque partition avec son type et autres caractéristiques ( une variable cette fois : donc une valeur à transmettre et on résoudra ça à l'affichage, pour mettre le bon texte ( primaire etendue logique ) Idem pour sa numérotation et le type de fichiers.

Si je veux afficher cote à cote les deux tables de partitions entiètres, je crée un nouvel objet fenêtre et j'y colle les deux objets table de partitons , eux mêmes composés des objets partitions, etc... Pour la place , je n'ai pas à m'occuper de l'ascenceur, génial.

Pour faciliter l'analyse, j'avais en tête l'idée d'afficher en rouge les données qui sont discordantes entre la référence et ce qu'il y a sur le disque suite à un problème, pour mrsuere l'étendue des dégats.. La couleur des polices est fixée à la création des fenêtres. j'ai pigé qu'il fallait la mette en varaible et changer la vealeur de la variable en fonction d' un bit traité au sein de l'objet à l'affichage, mais il faut bidouiller le source fait par l'dieteur d'images et rajouter une variable. .

Une autre chose que j'ai pigée , hier; pas besoin de recopier les images ; dans le fichier de hiérarchie des objets graphiques créés , il suffit de copier l'entête du sous objet et de le coller à la suite, puis de modifier sa position horizontale pour que tou le reste suive.





Ce genre de trucs de fainéants , me convient tout à fait : imaginez le nombre de lignes de codes économisées et la simplification du programme.


Ca demande un effort intellectuel pour piger cette notion de programmaation OBJET, il faut réfléchir en "structures imbriquées ".. mais alors quelle simplification et beaucoup moins de risque d'erreurs. Et quelle liberté !


Et puis si je veux faire évouler mon programme principal plus tard, ce sera beaucoup plus simple. Toute une partie du boulot sera faite. Surtout ça me permet de commencer progressivement parce que l'objet "partition" garde toujours la même structure.

Mais je dois résoudre cet interfaçage entre le C++ du programme principal et les langages utilisés par les interfaces graphiques avec lesquels je ne veux échanger que des variables. ( valeurs et quelques évènements ) La simplicité serait de tout programmer dans le même langage que l'interface graphique, mais je n'aime pas les chose simples et me faire cloisonner dans un langage imposé.


Ca m'oblige à le structurer un peu différemment, de façon beaucoup plus modulaire : des fichiers différents et faire l'édition de liens kdevlopp s'en charge .. lol !

( je n'ai jetté qu'un coup d'oeil sur les fichiers qu'il générait au lancement d'un nouveau pprojet, mais ça doit le faire ! Alors que si j'avais occulté cette notion j'aurais tout mis dans le même fichier source.

Je le soupconne même de pouvoir faire l'interfaçage, entre le C++ et l'XML, puisqu'il permet de faire un projet en C++ et de lancer les éditeurs graphiques qui doivent sortir des fichiers en XML. Donc il doit gérer les deux types de langage et lancer les deux compil adaptées et faire cette édition de lien. Juste besoin de déclarer les variables échangées en externe au module.. si je me souviens et c'est l'édition de liens qui résoud ça. sinon le C++ peut faire des tableaux en mémoire, dans une zonze réservée et si le xml peut aller lire, le transfert de données est presque fait !

Enfin avec tous les rep et fichiers que ça crée , je ne regrette pas d'avoir un utilisateur déclaré pour faire de la programmation, Parce qu'en deux ou trois essais , j'ai un paquet de fichiers complètement mélés aux autres..


Si vous avez des idées pour interfacer deux langages si vous avez déjà fait ce genre de truc.. ou des conseils pour mieux utiliser kdevelop autrement qu'un simple compilateur.. elle seront les bienvenues.
l

La programmation objet et QT designer, ça commence à me plaire.....


Jacqueline

devloop
05/10/2004, 14h48
J'ai fait du Qt à une époque...
Ce n'est pas si difficile de faire du "tout Qt", on avait réussi à faire des "simulations de vie" (un classique pour les études).
On avait fait la simulation de vie cellulaire (le plus connu), les fourmis, les termites et "les lapins & les renards" (costaud celui là).

Je ne me souviens plus très bien du fonctionnement avec Qt mais il doit y avoir des classes EventListener (QEventListener, QMouseListener ?)
mais j'ai peur de confondre avec d'autres langages de programmation.

Tu peux aussi essayer le wxWidgets qui est un concurrent totalement libre de Qt.
Sinon Java est de loin le langage qui permet de créer et gérer une interface le plus facilement. (en 2 heures on fait ce qu'il aurait fallut 2 jours avec Visual C++)
par contre Java nécessite la machien virtuelle pour fonctionner sur une machine

En général le principe est toujours le meme :
tu as un élément graphique et tu veux que le logiciel réagit aux interactions avec l'utilisateur
l'élément graphique est dérivé d'une classe graphique spéciale qui permet cette intéraction (QWidget pour Qt probablement)
tu vas faire monObjetGraphique.addActionListener(al);

qui permet de faire le lien entre l'événement (ici ActionListener) et une fonction (al) que tu implémenteras plus loin...

Bon c'est un peu vague parce que j'ai du mélanger tout et n'importe quoi mais le principe est toujours le meme : associer un objet graphique avec un objet de type évennement...

molodoi
05/10/2004, 15h02
Originally posted by jacqueline@Mardi 5 Octobre 2004 13:16
Si la programmation se résumait à tapper des milliers de lignes de codes (avec une syntaxe rigoureuse ), ça n'a rien de réjouissant ( je rapelle que je suis fainéante ! ). un bon programmeur en fait toujours le moins possible, et si on fait des fautes de frappe dans les commentaires , c'est pas génant !
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/cray.gif

je dois t'avouer, jacqueline, que si je t'avais comme étudiante et que tu me sortais ça à un examen, je n'aurais aucun scrupule à te "descendre".

C'est la pire abomination pour un développeur de dire cela.

La programmation, c'est avant tout de la rigueur, de la méthode et de la réflexion (on bosse d'abord avec une feuille de papier, un crayon et une gomme).

En faire le moins possible ne se résume en aucun cas à taper le moins de lg de code mais plutôt à diviser les problèmes en sous-problèmes plus simples (divide ut regnes), à faire en sorte que certains éléments soient réutilisables (un des grands intérêts du paradigme Orienté Objet).

Souvent, c'est ce qui est paradoxal, en faire le moins possible implique de réfléchir bcp plus...

lucienmathieu
05/10/2004, 15h12
Il faudra que je revois mes classiques, mais je pense que QT est en c++ ou du moins en c.

Pour la programmation objet, il faut bien comprendre le polymorphism, l'heritance et l'encapsulation.

L'heritage, c'est ce que je prefere... une classe fille recoit toutes les capacites de sa classe mere...

Le polymorphism est l'abilite d'identifier un type de fonction par rapport au(x) type(s) de son ou ses parametres...

L'encapsulation est la possibilite de cache les attributs d'un classe et eviter l'acces a l'utilisateur de cette classe, ou du moins limiter l'acces via des methodes specifiques...

lucienmathieu
05/10/2004, 15h19
Effectivement, il faut reflechir pour creer quelque chose de reutilisable. Comme un classe TString ou encore une classe TList <T>.

Par contre l'OOA (Object Oriented Analysis) et l'OOP (Object Oriented Analysis) doivent representer la meme chose. C'est a dire que si on parle de tel objet dans l'OOA, il doit se retrouver dans l'OOP.

Une sorte de revolution qui n'en est pas une, c'est de pouvoir faire un programme qui suit scrupuleusement ce qui a ete defini pendant la phase d'analyse.

Il ne faut pas rever, une bonne doc derriere le pouquoi/comment d'une telle classe ou d'une autre est primodiale.

Et in fine, l'OO, c'est bien pour jouer a legoland qu'on l'a invente... enfin la programmation deviendrait aussi facile que de mettre des blocs en place...

Molodoi, tu devrais me descendre aussi, car sur le terrain, on a tous perdu la rigeur de nos etudes... c'etait pour avoir de beaux points en fin d'annee ;-P

molodoi
05/10/2004, 15h38
Originally posted by lucienmathieu@Mardi 5 Octobre 2004 14:19
Et in fine, l'OO, c'est bien pour jouer a legoland qu'on l'a invente... enfin la programmation deviendrait aussi facile que de mettre des blocs en place...
arf, ça aussi, c'est un peu une légende de l'OO http://www.alionet.org/style_emoticons/<#EMO_DIR#>/mad.gif

Disposer d'une immense bibliothèque qui contient la solution à tous les problèmes http://www.alionet.org/style_emoticons/<#EMO_DIR#>/rolleyes.gif

T'inquiète pas lulu, je t'aurais accepté en seconde sess' où j'aurais été encore plus dur... http://www.alionet.org/style_emoticons/<#EMO_DIR#>/ohmy.gif

Quant à la doc, tu as raison, c'est primordial... Mais va faire comprendre ça à des étudiants pour qui un projet se limité à qq milliers de lg de code sans avoir à le maintenir par la suite http://www.alionet.org/style_emoticons/<#EMO_DIR#>/sad.gif

molodoi
05/10/2004, 15h44
Originally posted by lucienmathieu@Mardi 5 Octobre 2004 14:12
Le polymorphism est l'abilite d'identifier un type de fonction par rapport au(x) type(s) de son ou ses parametres...
le polymorphisme est bien plus complexe que cela...

Il peut se décliner en tant surcharge -> surcharge de méthodes (elles ont le même nom mais une signature différente)
redéfinition/spécialisation -> lié à l'héritage
généricité -> utilisation de type "générique" (les templates en C++ - qui existent aussi maintendant dans Java dps le JDK 1.5, même si c'était déjà faisable avant à l'aide des classes abstraites).

jacqueline
05/10/2004, 16h55
Molodoi

Je me suis sûrement mal exprimée dans ma remarque que tu as reprise. si j'avais été un forçat de la programmation, j'aurais passé des semaines à ta^pper du code pour faire mon programme. disons qu'en une journée de rfélexion sur l'utilisation du langage objet que je découvre, j'ai gagné beaucoup de temps... et le programme sera plus facile à structurer.


Il a fallu que je fasse cette petite expérience hier pour capter une partie de ces notions..

Moi je n'ai pas de prof qui m'explique et me fait faire des TP...

J'ai par fois bien ri au boulot quand des gens faisaient des tableaux de mise en page avec excel parce qu'ils ne savaient pas le faire avec word.

Pour les langages de programmation, c'est un peu pareil. Il faut prendre le plus adapté à son problème.. et toujours réfléchir à la structure de son programme.

C'est bien ça perdre du temps à réfléchir avant de se jetter sur le clavier...


Dans mon boulot : le temps réel , ce n'était pas par fainéantise qu'on économisait les lignes de programmes : il y avait toujours cette notion de temps d'éxécution et de priorité des taches. Donc il ne fallait pas non plus abuser des lignes et des sous programmes.. La srtructure était vraiment importante.


Ce que Lucien a dit sur les commentaires des sources, c'est essentiel pour d'y retrouver plus tard... ( dailleurs QT designer permet de rajouter des commentaires, sur les variables et un commentaire global sur les objets.

Pour developp, oui j'ai aperçu qu'on pouvait se rajourer un ou des widgets personnalisé..

Quelqu'un m'a conseillée java aussi, en me disant que ça deviendrait le langage universel.. la notion de machine virtuelle, je ne connais pas... et je garde ça pour plus tard.


Je fais ça pour m'amuser aujourd'hui, c'est vraiment plus passionnant que n'importe quel autre jeu, en plus on apprend des choses et ça fait marcher les neurones.. . Seule, ce n'est pas toujours facile.. ( j'ai apprécié ma première années de vacances totales, mais j'avoue que ça me manque)

Vos remarques étaient intéressantes. et si j'ai besoin de conseils.... je ferais appel à vous.

Jacqueline

lucienmathieu
05/10/2004, 18h42
Etant adepte de Java, il y a quelques annees, je vais malheureusement te dire que tu devrais faire du php...

Et si on suit l'actualite, nos amis de l'IT aimeraient bien revenir au bon vieux cgi-bin fait en C ou C++, par soucis de budget et de performance...

Java est surtout utilise en solution web, petite applet bien sympathique mais qui parfois bouffe en ressources. Par contre, je felicite ceux qui font des site en flash, c'est vraiment bien foutu.

Pour ce qui est du development d'appli, c'est vrai que Java est portable sur toute platforme, excepte le Java de Bill... Mais bon si tu dois faire une serie d'interuptions, il faudra obligatoirement passer par du C.

Tu as raison molodoi, le polymorphism s'applique bien a l'objet, la variable ou la fonction, je n'avais decrit que la fonction parce que la plus part du temps, on parle de template pour l'object et de virtual instance pour la variable. Mais bon ce sont certainement des defauts de language.

En ne parlant pas d'OO, mais plus en general, il n'est pas faut de croire qu'une gestion centralisee des resources permet de reduire le temps de development de 80%. J'ai deja vu des societes developper le meme programme dans des departements different, c'est ce genre de chose qu'on a essaye d'eviter en creant l'OO, c'est un concept qui existait deja meme avant les languages dit "OO". Mais c'est seulement dans les annees 90 qu'il a fait un petit boum... et puis c'etait bien de s'amuser avec Flowchart 4...

Que je pense a ca, le tableur c'est excel, le traitement de text c'est word, on devrait pas pouvoir faire de table dans word vu que excel le fait ;-P

molodoi
05/10/2004, 19h15
Originally posted by lucienmathieu@Mardi 5 Octobre 2004 17:42
Java est surtout utilise en solution web, petite applet bien sympathique mais qui parfois bouffe en ressources. Par contre, je felicite ceux qui font des site en flash, c'est vraiment bien foutu.
je ne sais pas trop dans quelle boîte tu bosses lulu, mais je pense que résumer l'utilisation de Java aux solutions Web/petites applets est fort restrictif.

Pas mal de solutions dans le monde bancaire et des assurances sont développées en Java.

Des appli modernes (BD génétiques) sont aussi développées en Java.

Et, last but not least, l'argument ultime: l'année académique passée, j'enseignais Java http://www.alionet.org/style_emoticons/<#EMO_DIR#>/cool.gif Ce lgge ne peut donc être que d'une formidable utilité http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif

lucienmathieu
05/10/2004, 19h35
J'avoue que j'aime bien Java, mais le petit est malheureusement en perte de vitesse... la boite, on fait de la consultance, SAP HR... pour tout dire...

Oui, pour le banquaire, l'applet de connection est en Java... mais le reste, ce n'est plus du Java...

La percee du web, c'est php/mysql pour le moment... Microsoft essaye bien de venir avec #C et .Net

Je sais, c'est dur de maintenir le rythme academique contre un rythme totalement fluctuant d'un mois a l'autre des entreprises... je l'ai remarque quand j'ai demarre, j'en tenais pas bien long avec mon PL/1, COBOL sur OS370... je rigole, j'ai appris aussi le C et le SQL a l'ecole...

Je vois encore mon premier boss: "Petit on a besoin de toi ici"
moi: "Ah bon!"
mon boss: "Tu vas faire du C++, tu connais le C++?"
moi: "Vaguement entendu parler du C"
mon boss: "C'est rien lit ces 10 bouquins, et ca devrait passer, on en reparle la semaine prochaine"

Semaine d'apres, le boss revient: "Petit, tu connais les telecoms"
moi: "J'ai un telephone a la maison"
mon boss "Tu vas faire des telecoms, tiens lit ces 10 bouquins, et ca devrait passer, on en reparle la semaine prochaine"

C'est comme ca que j'ai commencer a programmer en Windev... il y a a peu pres 10 ans...

Windev n'a rien a voir avec le C++, ni meme les telecoms... mais c'etait le cheval de bataille de ma boite, ils ont trouve un projet ou il fallait faire du Windev... j'ai appris sur le tas... y a pas de miracle...

abgech
05/10/2004, 20h26
À la le beau serpent de mer que la programmation OO ! J'ai derrière moi une quarantaine d'années de programmation (essentiellement en info industrielle). J'enseigne l'algorithmique et la prog temps réel en école d'ingénieurs.
Franchement, la prog OO, vraiment rien de nouveau. Cela fait très très longtemps que les bon développeurs, comme M. Jourdain, font du dévelopement OO sans le savoir.
Encapsulation:
----------------
Le premier compilateur FORTRAN (1959 si je me souviens bien) permettaient de faire de l'encapsulation: notion de subroutines et les variables locales. Depuis les langages ont bien évolués, heureusement, et le C permet totalement d'encapsuler, sans parler des assemblers.
Héritage:
----------
C'est un autre mot pour parler de l'arborescence des modules.
Polymorphisme:
------------------
C'est peut-être le seul point un peu nouveau. Enfin la seule chose vraiment nouvelle, c'est qu'un objet "sait" qui il est et peut "choisir" sa méthode de traitement. Cela dit, il existe de multiples façon de faire la même chose avec un langage procédural.

Non, définitivement NON, l'important ce n'est pas le langage mais la la méthodologie de développement. Dans la phase d'étude, on commence par définir l'objectif, ce que l'on veut faire, les résultats que l'on veut obtenir, puis les données disponibles et enfin, les traitements qui permettent de passer des données aux résultats, oui, oui, c'est de la bonne vieille analyse par les "output", mais elle a au moins le mérite de marcher sans se perdre dans de multiples avatars. Après tout, ce que l'on demande à un ingénieur, c'est que son "bidule" fonctionne, de façon économique et fiable et non pas de disserter sur la couleurs de bits. On établit ensuite une arborescence des traitements, en OO on parle de relations de généralisation/spécialisation (héritage), puis on commence par coder les modules de bas niveau et on remonte l'arbre. Certains trouvent plus commode de commencer en haut de l'arbre et d'appeler des modules non encore programmés, c'est une simple question d'habitude. J'ai vraiment beaucoup simplifié, mais je voudrais ne pas être trop long.

Les produits de style Qt permettent de définir des interfaces graphiques facilement, c'est une bonne chose dans la mesure ou la réalisation d'interfaces est certainement la chose la plus chian... de la programmation et qui n'offre strictement aucun intérêt (enfin, à mon avis). Ce genre de produit offre aussi la programmation réactive ou événementielle, par opposition à la programmation prédictive. Là encore, rien de nouveau, c'est tout simplement de la gestion d'interruption, les interruptions étant entourées d'une couche logicielle, avec pour effet un "overhead" extrémement important, tant en terme de place que de rapidité.

Voila, j'aurais encore bien de choses à dire, mais je ne veux pas abuser, et j'ai un "bidule" à faire marcher pour une démo demain.
Bonne soirée à tous

lucienmathieu
05/10/2004, 20h45
Bel effort pour un premier message, bienvenue.

Et oui, on va pas reinventer la roue ;-P

Par contre, apres autant d'annees, les entreprises se cherchent encore en informatique, a savoir ce qui sera le plus performant, ce qui vendra le plus... y a pas photo, on est informaticien, pas commercial... donnez moi des donnees, je vous fait un programme et je vous les retournent toutes scribouilliees...

Ah, ce ballader de meeting en meeting pour savoir ce que veulent les utilisateurs finaux. On revient avec une sorte de prototype, soit ce n'est pas ca, soit ca leur donne des idees pour ajouter telles ou telles fonctionnalites... On est reparti pour changer le prototype... de nouvelles idees, de nouveaux changements... on en oublie la deadline... on s'engeule, on fait un passage en production d'une soupe, et la maintenance est pourrie... Tout ca a cause de mon manager qui me demande l'impossible...

Et moi je dis a l'impossible, nul n'est tenu...

Et la theorie, c'est bien, mais en pratique ca marche? Je dirai, oui ca pourrait marcher... pour ceux qui connaissent, CORBA ca marche tres bien... je me demande si ils l'utilisent encore dans les telecoms...

lucienmathieu
05/10/2004, 20h48
Finalement en me relisant, je me demande si je ne devrais pas elever des moutons...

chamaeleo
05/10/2004, 23h57
Originally posted by lucienmathieu@Mardi 5 Octobre 2004 19:48
Finalement en me relisant, je me demande si je ne devrais pas elever des moutons...
Et tu vas utiliser quel langage pour les compter ? http://www.alionet.org/style_emoticons/<#EMO_DIR#>/laugh.gif

jacqueline
06/10/2004, 00h46
Le débat est passionnant et passionné... lol !

Pour ce qui est de l'apprentsiisage d'un langage. j'ai appris le fortran dans un stage, avec deux profs de fac, complètement opposés sur le plan de leur personnalité : un "jésuite" pour la syntaxe et la structure des programmes, et un "babacool" fou des maths pour les calculs, qui nous montrait les astuces et les pièges du calcul numérique..


Lorsqu'on apprend seule, le danger c'est dès qu'on a capté un truc, trouvé une combine pour résoudre un problème : on y reste un peu accrochée au détrlment de la compréhension globale.


Je suis bien d'accord avec agrfr, , Dans l'industrie , par rapport à la fac , il y a les côuts de développement et de maintenance, et les gains espérés qui priment (cependant il faut qu'il y ait les deux !) Mon chef de projet aimait dire : mon métier d'ingénieur c'est de dire aux gens s'il leur faut un stylo ou un ordinateur pour résoudre un problème.


Un autre point important, c'est la compatibilté avec le reste de son sytème et la performance des outils de développement ( j'ai refait un essai avec glade, y a pas photo, même si je ne maîtrise pas bien le sujet , Qt designer est plus complet, plus clair, et m'invite à me poser les bonnes questions, à approfondir la théorie. Je préfère passer du temps à ce genre de choses que de programmer des fenêtres à la main.. ce n'est pas parcequ'un utilise un assitant , qu'on est dispesé de s'intéresser à ce qui est le plus important, au contraire ça laisse du temps pour s'y pencher.

Buenas noches !


Jacqueline.

lucienmathieu
06/10/2004, 11h19
Finalement, on peut t'aider a faire un programme en C pour lire les informations sur ton disque ;-P

Par exemple comme tout est fichier sous unix, il serait je suppose possible de lire /dev/hdd pour en retirer blocks a blocks l'information que tu recherches.

Est-ce que tu connais la structure d'entete standard des partitions?

jacqueline
06/10/2004, 15h51
bonjour Lucien mathieu

Non , je ne connais pas du tout l'entête d'une partition Linux.

Pour l'instant : ouh je suis moins optimiste qu'hier...

En effet , en allant plus loin dans les boutons avec les actions et les slots, sur un projet de type "DIALOG", je me suis rendue compte qu'on pouvait faire pas mal d'interactions entre les fenêtres et que c'était un truc qui tournait tout seul dans son coin.

Je ne vois pas comment je pourrais l'intégrer dans un programme en C++, et je veux que ce soit lui qui gère mes fenêtres et les évènements des boutons...

J'ai essayé de repartir de zéro avec Kdevelop, j'ai essayé de créer plusieurs types de projets... j'ai fait des captures à chaque manip pour pouvoir vérifier ce que j'ai fait et où ça coince...


J'ai noté tous les fichiers créés au fur et à mesure .


Apparemment , j'ai réussi à faire la CREATION d'un projet en C++, ( sauf que ça m'a shooté la création de la doc et de la notice d'utilisation.. (manque des fichiers html )

Ca m'a créé plein de fichiers. ( j'ai tout capturé et enregistré leurs contenu )


A tout hasard, après avoir fait la CREATION DU PROJET J'ai essayé de lancer la CONSTRUCTION DU PROJET puisque mon fichier main ccp de base généré par kdevelop est initialisé sauf que je n'ai rien incorporé, idem dans celui de l'application ;

comme ça prépare la compile , ça devrait sortir sans erreur, or j'en ai un sacré paquet. en voici le début.

<div class='quotetop'>Citation </div>
g++ -O0 -g3 -Wall -c -o main.o main.cpp
main.cpp:18:26: kcmdlineargs.h : Aucun fichier ou répertoire de ce type
main.cpp:19:24: kaboutdata.h : Aucun fichier ou répertoire de ce type
main.cpp:20:21: klocale.h : Aucun fichier ou répertoire de ce type
Dans le fichier inclus à partir de main.cpp:22:
jackie.h:27:22: qstrlist.h : Aucun fichier ou répertoire de ce type
jackie.h:28:24: qworkspace.h : Aucun fichier ou répertoire de ce type
jackie.h:31:18: kapp.h : Aucun fichier ou répertoire de ce type
jackie.h:32:25: kmainwindow.h : Aucun fichier ou répertoire de ce type
jackie.h:33:21: kaction.h : Aucun fichier ou répertoire de ce type
jackie.h:34:18: kurl.h : Aucun fichier ou répertoire de ce type
In file included from main.cpp:22:
jackie.h:58: error: erreur d'analyse syntaxique before `{' token
jackie.h:66: error: destructors must be member functions
jackie.h:69: error: erreur d'analyse syntaxique before `&' token
jackie.h:85: error: virtual outside class declaration
jackie.h:90: error: `KConfig' was not declared in this scope
jackie.h:90: error: `_cfg' was not declared in this scope
jackie.h:90: error: virtual outside class declaration
jackie.h:90: error: variable or field `saveProperties' declared void
jackie.h:95: error: `KConfig' was not declared in this scope
jackie.h:95: error: `_cfg' was not declared in this scope[/b]

J'ai cru que kdevelop allait me simplifier la vie .... c'est pas gagné !!!




( j'ai fait une copie des fichiers générés par kdevelop au lancement de l'application.)
là dedans j

Je retrouve des trucs du style " include openfile", "include close file" etc....

donc on devrait dans l'application pouvoir lire et écrire dans des fichiers.




J'ai laissé tomber pour continuer à partir de kdevelop sur la création de l'interface graphique, en espérant qu'elle soit intégrée dans mon projet en C++

Donc là j'ai choisi CREATION d' un WIDGET donc avec ça j'ai pu faire une FORM qui me permattra de mettre des boites et des boutons et des listes... ( j'en suis là , et je ne sais pas encore ce que ça va donner j'ai trouvé un fichier tout seul form1.ui dans le répertoire principal de mon projet en C++, et là je ne vois pas comment kdevelopp va pouvoir intégrer ça dans mon PROJET en C++

La doc de kdevelop est en anglais, elle est sommaire et comme d'hab on part dans les délires vant de t'expliquer le principe et on ne trouve rien de plus sur le net.,

je crois avoir capté que kdevelop te génère des fichiers pour préparer un compil
avant de lancer la compilation ( qui n'a pas marché non plus... pour un truc qui prépare la compil , c'est pas terrible )


J'aimerais bien comprendre à quoi sert chacun des fichiers que kdvelopp génère. c'est une vraie usine à gaz et il ya du boulot. ( déjà il lui manqaue les fichiers de doc et de la notice d'utilisation. pour quoi ils n'y sont pas ? )

Comme j'ai tout enregistré , je vais me faire une "doc kdevelop" à moi., " j'aurais la peu de cette usine à gaz , promis, juré craché ! " alors que je pensais pouvoir faire une fenêtre et un bout de prog en C++ pour l'afficher. pour vérifier que l'intégration du graphique se faisait bien dans le C++ avec kdevelop

Idem pour les menus, ce serait un minimum de dire à quoi sert chacun..


Plus hermétique tu meurs ! ca ne s'adresse qu'aux spécialistes. c'est h.I.é je suis en colère ! (lol !)

Autre genre de question que je me pose pour la suite : est ce que dans un fichier en C++ on peut aller lancer un fichier bash, que l'on a créé ?


Jacqueline

molodoi
06/10/2004, 16h03
Originally posted by jacqueline@Mercredi 6 Octobre 2004 14:51
Autre genre de question que je me pose pour la suite : est ce que dans un fichier en C++ on peut aller lancer un fichier bash, que l'on a créé ?
en principe tu peux.

C++ est compatible vers le C. Et comme en C, tu peux faire des appels vers des appli extérieures (comme un script, par ex), ça devrait rouler.

devloop
06/10/2004, 16h08
pour ton erreur tu as peut etre des options de compilation à rajouter comme les -I/chemin/vers/include, -L/chemin/vers/librairies ou -l{nom_librairie}

si tu lances la compilation à partir de Kdevelop (c'est possible ?) il dois y avoir un paneau de config pour fixer les répertoires où fouiller les librairies et les entetes...
c'est peut etre la d'où vient ton problème

jacqueline
06/10/2004, 17h17
Merci à vous deux
la réponse de molodoi me rassure



deveoop : je chercherais de ce coté.




Bon j'ai fini par trouver un bout de doc en français pour le début :


Une fois qu'on a fait un projet en C++, il faut :

avec le menu fichier et new on a une nouvelle boite de dialogue

on choisit : Fichier de Qt designer++

et cette fois , ça le crée dans le rep INTERFACE UTILISATEUR dans le premier "projet C++"
avec le "nom du projet QT" sinon il se crée ailleurs sous le nom de form1.


J'ai trouvé dans une doc , que QTdesigner générait bien du langage XML , mais lorsqu'il est intégré dans un projet en C++, il y a un prog qui le convertit en C++ avant de compiler, donc ça me semble logique, et l'intégration se fait comme ça.


J'ai peut être lancé la construction du projet trop tôt.

Je vais faire le wiget et mettre des noms banals aux variables d'entrée et des sortie et on verra si ça me les sort quelque part dans le listing XML, ce que je n'ai pas encore fait.


Manip à refaire à partir de zéro avec les captures, parce que demain , je ne m'en rapellerais plus.



Coté CONFIG de kdevelop.

Effectivement, il y a des chemins qui n'étaient pas définis..ou alors des rep vides.

et puis dans les message d'erreur , à la CREATION du projet : pas la permission pour /bin/sh

Je lance kdevelop en tant qu'utilisateur qui lance le /bin/sh qu appartient à root et les droits sont : rwx r-x r-x normalement on a pas à toucher les droits de /bin

"courses et peti dej " après je essayer de trouver le lib HTML dans les paquetages et puis le Qt lib et d'autres trucs. la doc de Kde... Epuisant !

lucienmathieu
06/10/2004, 18h22
salut,

pour executer un script externe, c'est la fonction system si mes souvenirs sont bons.

par contre pour ton probleme de compil, tu devrais avoir un Makefile genere par kdevelop, et donc tu devrais pouvoir utiliser la commande make.

par contre, kdevelop devrait pouvoir faire ca pour toi... surtout si tu n'aime pas la ligne de commande ;-P

pour ce qui est de la lecture des disques, c'est du cote de mntent que tu pourras avoir de l'info... normalement un simple fopen, fread, fclose te donnera deja pas mal d'info.

par contre, les fichier ui, doivent etre compile avec uic ;-P

Si tu n'aime pas kdevelop, regarde du cote de glade... il te genere aussi du code C++

jacqueline
06/10/2004, 18h39
lucien , j'aime pas glade, c'est trop simplifié on a pas les propriétés des objets et c'est galère.

Le probleme c'est déjà la config de kdevelop et la permission pout /bin/sh et les libs et docs qui manquent.

lucienmathieu
06/10/2004, 20h39
bon, je vais installer kdevelop, histoire de voir ou ca coince...

jacqueline
08/10/2004, 03h30
C'est bon , j'ai a peu près pigé la séquence de création d'un projet avec kdevelop... on est à donf , dans les scripts GNU : makeconf, makefiles ..; ( j'ai trouvé comment on les écrit et comment on les compile...

Trois lignes et un synoptique sur un site , sans rapport avec kdevelop, m'ont permise de capter le truc, comme les dates de création des fichiers lol ! ( ce n'est pas glorieux, mais efficace ! J'ai au moins quatre make file et quatre "configure" créés par kdevelop.. )

Je me suis tapée deux docs complètes en anglais sur le bash, sa config, jusqu'au fond de ses tripes , ce qu'il retourne : de quoi me farcir l'erreur " too many arguments" sur une commande de test après une commande avec grep ( le mien est trop bavard ! ), ce qu'il comprend comme caratères... Cette fois j'ai capté pourquoi il fallait le reconfigurer . 5 l'install des paquetages automatique, ça craint un peu..... ( déjà avec les docs HTML et les libs ...)


J'ai aussi capté pourquoi la commande ./configure -- help, dans un terminal en root me répond " command not found ! " et lu d'autres documents sur les compils, les scripts, les librairies , qui vont m'ont aider à décoder les fichiers qu'il crée.

Encore quelques vérifs, un peu de lecture pour recouper les infos... Je ne pensais pas rentrer là dedans , mais finalement c'est le pied ... et je m'amuse bien.

.

Jacqueline http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif

alexmic
18/10/2004, 17h10
Bonjour

J'avoue que j'ai pas lu l'enemble du Thread, tout simplement parce que je ne connais rien au c, c++, et autres.

J'ai toutefois fait de la programmation objet sous java, et j'ai installé (pas programmé bien sur) un programme (Azureus) en java qui fonctionne parfaitement sous linux.

Java est un language de programmation orienté objet.

java contient des bibliothèques de contruction de fenetres (swing) et semble particulièrement bien adapté à linux.

Des livres entiers de cours sont disponibles sur le net, et il est multiplateforme tout en étant particulièrement bien adapté à linux.

Voici un lien qui comporte les cours de mon prof de fac de l'époque Facrice Rossi, qui est un véritable acteur du monde libre doublé d'un excellent pédagogue.
Cours de java (http://docs.ufrmd.dauphine.fr/java/)
(Il est notamment à l'initiative du développement de freecraft)

En espérant apporter une alternative à Jacqueline
Amicalement

lucienmathieu
18/10/2004, 17h26
On peut faire des fenêtres sans pour autant utiliser swing ;-P

On peut même compiler du Java pour en faire un exe propriétaire... mais rien de tel que le C ou C++ pour compiler... C et C++ sont normalement aussi "portable" que Jave ;-P

Par contre si tu connais Java, tu n'auras aucun mal à comprendre le C++, voir le C...

jacqueline
18/10/2004, 18h52
Merci alexmic, surtout pour le cours, j'y jetterais un oeil pour me faire une idée.

On m'a aussi parlée de python, dont la syntaxe est beaucoup plus simple.

Là je découvre en plus les interfaces graphiques et les assistants.. il y a de quoi faire avant d'écrire la moindre ligne de programme.. Mais tout celà est très amusant... un peu long, mais puisque l'hiver approche.

Jacqueline

molodoi
18/10/2004, 19h18
Originally posted by alexmic@Lundi 18 Octobre 2004 16:10
java semble particulièrement bien adapté à linux.
peux-tu expliquer pourquoi tu avances cela?

Sinon, en ce qui concerne Java, il faut bien comprendre que c'est un langage qui n'a pas la même portée que le C++, par ex.

Il faut voir le Java comme une sorte de Black Box, un langage de très haut niveau qui dégage le programmeur de démarches fastidieuses.

Ca lui donne une certaine puissance mais aussi certaines limitations...

molodoi
18/10/2004, 19h23
Originally posted by lucienmathieu@Lundi 18 Octobre 2004 16:26
Par contre si tu connais Java, tu n'auras aucun mal à comprendre le C++, voir le C...
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/blink.gif j'ai failli attraper une attaque cardiaque...

Tu ne peux en aucun cas comparer un lgge 100% orienté objet (Java) à un langage hybride (C++ garde des possiblités impératives) ou encore 100% impératif ©.

Qui plus est, comme indiqué supra, la portée des lgges et l'utilisation qu'on en fait sont sensiblement différentes.

Si jamais tu venais à admettre l'assertion suivante (qui est fausse, bien sûr): C++ est un lgge orienté pur, tu ne pourrais tjrs pas passer de l'un à l'autre "sans difficultés".

Au niveau syntaxique, je veux bien l'envisager.

Mais au niveau sémantique, il y a trop de différences.

alexmic
18/10/2004, 19h44
Originally posted by molodoi+Lundi 18 Octobre 2004 18:18--><div class='quotetop'>Citation (molodoi @ Lundi 18 Octobre 2004 18:18)</div>
<!--QuoteBegin-alexmic@Lundi 18 Octobre 2004 16:10
java semble particulièrement bien adapté à linux.
peux-tu expliquer pourquoi tu avances cela?

Sinon, en ce qui concerne Java, il faut bien comprendre que c'est un langage qui n'a pas la même portée que le C++, par ex.

Il faut voir le Java comme une sorte de Black Box, un langage de très haut niveau qui dégage le programmeur de démarches fastidieuses.

Ca lui donne une certaine puissance mais aussi certaines limitations... [/b]
Je dis tout simplement cela parce que j'ai fait tourner mes propres programmes avec affichage graphique simple (sans swing http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif ) et qu'ils tournent de manière plus fluide et plus rapidement sous linux, gèrent mieux mon clavier etc...

Pas une affirmation: juste une sensation (comme une bulle de savon http://www.alionet.org/style_emoticons/<#EMO_DIR#>/whistling.gif )

alexmic
18/10/2004, 19h46
D'autre part pour reprendre Molodoi, java est un langage 100% orienté objet ce qui était le titre du sujet. Mais bon, ne connaissant ni le C ni le C++ j'ai donc émis des réserves quand à la qualité de mont témoignage.

alexmic
19/10/2004, 13h35
Alexmic vous prie de bien vouloir accepter ses excuses pour avoir répondu à un thread sans l'avoir lu en entier, et regrette que son intervention sur Java n'apporte strictement rien à ce qui a déjà été dit... hormis les liens de cours.

Pour en revenir au sujet j'ai pu observer qu'en ce qui concerne les applications faisant appel à l'affichage grapique (fenetres) et au raffraichissement de fenêtres (j'ai moi aussi eu un projet de cycle de vie de céllules pendant mes études) Java n'est pas performant.

Jacqueline, si pour toi l'affichage et la cosmétique sont importants (tout comme pour moi je te rassure), je me range du coté dede Moldoï et Lulu pour te conseiller d'y préferer le C++ (après tout, la plupart des jeux 3D sont programmes dans ce langage).

Petite question à nos profs : C++ est-il multiplateforme dans la mesure où une fois bien compilé il tourne sous linux et sous windows?

@++ http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

lucienmathieu
19/10/2004, 13h42
Oui comme le C est multiplatforme... certains diront que ce n'est que l'ANSI C qui soit multiplatforme.

Par contre il existe des librairies graphiques qui ont ete portee sur tout les systemes, GTK par exemple ;-P

Pour ce qui est de l'oriente objet, on va dire que C ou C++ ou Java permettent tres bien de faire de l'oriente objet.

Pour rappel, les kernel de Linux, Unix et Windows sont fait en C

molodoi
19/10/2004, 13h53
Originally posted by lucienmathieu@Mardi 19 Octobre 2004 12:42
Pour ce qui est de l'oriente objet, on va dire que C ou C++ ou Java permettent tres bien de faire de l'oriente objet.
tu cherches vraiment la bagarre? http://www.alionet.org/style_emoticons/<#EMO_DIR#>/diablo.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/angry.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/bang.gif :ph34r:

Le C n'est PAS un langage orienté objet mais bien un langage impératif!

C++ est hybride car il garde une compatibilité "backward". On peut donc écrire une application en C++ qui est totalement "impérative".

A contrario, en Java, on ne peut faire QUE de l'orienté objet.

Forumeur LucienMatthieu, la seconde sess' vous guette! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/unsure.gif

molodoi
19/10/2004, 13h55
Originally posted by alexmic@Mardi 19 Octobre 2004 12:35
Alexmic vous prie de bien vouloir accepter ses excuses pour avoir répondu à un thread sans l'avoir lu en entier, et regrette que son intervention sur Java n'apporte strictement rien à ce qui a déjà été dit
Après une longue délibération dans l'équipe de modération, nous avons décidé que le forumeur répondant au pseudo de Alexmic serait pardonné à la condition sine qua non qu'il paie la tournée à cette même équipe de modération.

Allez, Alexmic, fais péter la http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

jacqueline
19/10/2004, 14h38
Et pour ma pomme àl'origine de ce sujet, il en résulte quoi...

Le C++ est mieux ? ( je peux programmer comme avant en fortran et en plus programmer en langage objet ? Je peux me faire mes petites routines et les incorporer à discrétion... J'ai l'interface XML et autres il me semble, "y todo es compatible !" )

Tant pis si d'avoir dit une connerie me coûte une Späten, mais j'aimerais bien savoir....


Jacqueline

Question subsidiare : linux a beaucoup de scripts perl : un petit mot là dessus peut être ..

lucienmathieu
19/10/2004, 14h49
Lol, on doit pas parler de la meme chose... il est toujours possible de creer des entites avec des attributs et des fonctions pour acceder ou traiter ces attributs.

Ne voulant pas prendre une vue simpliste de la chose, on peut tres bien creer un classe bidon avec la methode main, faire des appels du style system.printf, et ne faire que des iterations pour construire un programme en Java... ce n'est pas ce que je peux appeler de l'oriente objet ca!

Je comprends ton point de vue, il est plus facile de faire de l'oriente objet en Java quand C++, et certainement en C++ plus qu'en C... il va etre difficile de trouver un langage ou l'entree se fait directement via un objet ;-P

molodoi
19/10/2004, 14h57
Originally posted by lucienmathieu@Mardi 19 Octobre 2004 13:49
Lol, on doit pas parler de la meme chose... il est toujours possible de creer des entites avec des attributs et des fonctions pour acceder ou traiter ces attributs.




Ne voulant pas prendre une vue simpliste de la chose, on peut tres bien creer un classe bidon avec la methode main, faire des appels du style system.printf, et ne faire que des iterations pour construire un programme en Java... ce n'est pas ce que je peux appeler de l'oriente objet ca!

point 1: la sémantique n'est en aucun cas la même (entre le C et un lgge OO)...
point 2: et pourtant, ça reste de la progra OO (d'une débilité et inutilité affligeante, j'en conviens).

alexmic
19/10/2004, 17h15
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif Youpla ! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif Tournée http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif Générale http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif

lucienmathieu
19/10/2004, 18h05
On a vraiment pas la meme vue de l'OO, c'est marrant ca ;-P
Alle Christine, fait peter la poire http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif

molodoi
19/10/2004, 20h11
Originally posted by alexmic@Mardi 19 Octobre 2004 16:15
http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif Youpla ! http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif Tournée http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif Générale http://www.alionet.org/style_emoticons/<#EMO_DIR#>/beer.gif
tu es pardonné http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif