OVH Cloud OVH Cloud

Migration vers c++

19 réponses
Avatar
Averroes
Bonsoir ou bonjour,

Je suis un inconditionnel du java( la hache de guerre java vs c++
déterré? heureusement que c'est pas encore intel/amd ou ati/nvidia).

Le plus grand avantage du java est la programmation objet, la rapidité
de programmation et surtout le framework enorme de sun.

Mon probléme en c++ c'est "comment on fait les interfaces (pas
graphique) en c++?" es ce quelqu'un pourrait il m'expliquer?

Si y a des personnes qui ont des liens qui concerne "du java à c++" ou
"c++ totalement orientée objets" ou "comment organisé un projet entier
en c++"

Merci beaucoup.
--
Moi : "L'ignorance n'est pas une excuse."

9 réponses

1 2
Avatar
Averroes
Merci, je pense que ce qui pourrait compenser mon idée d'interface
serait un Template je verrais au cas par cas.
Merci beaucoup.

--
Moi : "L'ignorance n'est pas une excuse."
Avatar
loufoque

Je vais utiliser opengl.


OpenGL est du C.
On peut choisir de l'utiliser tel quel ou utiliser un wrapper C++ qui
sera plus orienté objet.

Mais bon, la plupart des tutoriaux qu'on trouve sur le net sont pour
OpenGL lui-même donc c'est peut-être plus intéressant de l'utiliser
directement.

Enfin bon c'est pas bien gênant de mettre du code procédural au milieu
de code objet.

Avatar
Averroes
OpenGL est du C.
On peut choisir de l'utiliser tel quel ou utiliser un wrapper C++ qui
sera plus orienté objet.

Mais bon, la plupart des tutoriaux qu'on trouve sur le net sont pour
OpenGL lui-même donc c'est peut-être plus intéressant de l'utiliser
directement.

Enfin bon c'est pas bien gênant de mettre du code procédural au milieu
de code objet.



J'ai aussi entendu parler de ogre3d qui est un wrapper dx/ogl totalement
orientée objet ou du moins m'en inspirer grandement.

Car moi je veux juste representer un espace plus ou moins reduit, me
deplacer dedans et ne pas traverser les murs.

--
Moi : "L'ignorance n'est pas une excuse."

Avatar
loufoque

J'ai aussi entendu parler de ogre3d qui est un wrapper dx/ogl totalement
orientée objet ou du moins m'en inspirer grandement.


Ogre est un moteur de jeu 3D, c'est différent.
Enfin cela peut correspondre à tes besoins.

Avatar
Fabien LE LEZ
On Sun, 18 Dec 2005 16:01:22 +0100, loufoque
:

On peut choisir de l'utiliser tel quel ou utiliser un wrapper C++ qui
sera plus orienté objet.


Je me vois mal utiliser directement une bibliothèque en C dans un
programme en C++. De toutes façons, il faudra un wrapper, quitte à
l'écrire soi-même.

Avatar
James Kanze
Fabien LE LEZ wrote:
On Sun, 18 Dec 2005 00:56:44 +0100, Averroes
:


Le plus grand avantage du java est la programmation objet, la
rapidité de programmation et surtout le framework enorme de
sun.



Euh... ça fait trois.


Pour le framework, je veux bien. Il est vrai que la relation
du programmeur avec les bibliothèques doit être assez
différente en C++ et en Java.


Pour la rapidité de programmation, j'ai des doutes. C'est
surtout qu'on n'utilisera pas forcément C++ et Java pour le
même type de programmes. À chaque langage ses applications.


Si le but est d'écrire un programme qui se compile et qui ne
provoque pas de core dump, on y arrive bien plus vite en Java
qu'en C++. Si les exigences de correction dépasse simplement
« ne pas faire de core dump », c'est moins évident.

Mais pour la "programmation objet", je ne vois pas bien en
quoi Java a l'avantage sur C++. À part peut-être que (AFAIK)
Java a tendance à imposer un paradigme, alors que C++ laisse
le choix au programmeur.


Il y a autant de définitions de « programmation objet » qu'il y
a des programmeurs qui la pratiquent. Selon la définition de
certains (et y compris la définition que je trouve le plus
utile), c'est impossible de faire de la programmation objet en
Java. En fait, le Java impose non seulement la programmation
objet (y compris quand il ne convient pas), mais SA définition
de la programmation objet, qui n'est peut être pas TA
définition, ou la définition qui convient à l'application en
question. (En fait, d'après mon expérience -- et ça n'engage que
moi -- la définition imposée par Java convient assez bien pour
des programmes d'affichage pûr, mais pas pour grand chose
d'autre.)

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34


Avatar
James Kanze
Fabien LE LEZ wrote:
On Sun, 18 Dec 2005 12:34:45 +0100, "ByB" :


http://www.fnac.com/Shelf/article.asp?PRID38697&Or[...]




http://www.eyrolles.com/Informatique/Livre/9782212113273/livre-apprendre-java-et-c-en-parallele.php


"Apprendre Java et C++ en parallèle", par Jean Bernard Boichat.


Deux chapitres sont disponibles en téléchargement : 1 et 9.


Le chapitre 1 me paraît un peu bordélique, mais je suppose
qu'il est toujours difficile d'écrire une introduction à un
langage (ou deux).


J'y ai relevé une perle :
"Avec un int main() en C++, il est nécessaire de retourner
une valeur qu'il est judicieux de définir négativement en
cas d'erreur."


Passons sur le "nécessaire" erroné ; mais quelqu'un
pourrait-il m'expliquer ce que signifie le "négativement" ici
? :-/


Que la valeur doit être négative ? Mais alors, on effreint aux
conventions de Unix, au moins.

Dans le code portable, il y a EXIT_SUCCESS et EXIT_FAILURE. Et
c'est quasiment tout. Dans le code moins portable, il convient à
s'aligner sur les conventions du système : sous Unix, par
exemple, un entier entre 0 et 127. (En passant, les conventions
d'Unix marchait assez bien sous MS-DOS. Je ne sais pas ce qu'il
en est pour Windows.)

Est-ce qu'on pourrait dire que c'est carrément faux ?

Dans le chapitre 9 (qui traite des iostream), il ose proposer
le code suivant :


void Lecture_texte::lecture() {
ifstream ifichier(nom_fichier.c_str());
[...]
char une_ligne[1024];
int numero_de_ligne = 1;
while (ifichier.getline(une_ligne, 1024)) {
cout << numero_de_ligne << ": " << une_ligne << endl;
numero_de_ligne++;
}
}


Un comble pour un livre dont on aurait pû penser qu'il
éviterait les ornières du C, alors même qu'il donne, quelques
lignes plus loin, une version Java correcte :-/


La première question serait peut-être sur la date de
publication.

Pas que ça change grand chose. Avant la disponibilité de
std::string, on utilisait sa propre classe de string.

À noter que le PDF disponible en téléchargement doit être un
brouillon, et pas la version corrigée. On peut notamment y
lire "librairie" à la place de "bibliothèque".


À noter aussi qu'il utilise des fonctions non portables (comme
opendir()) sans trop prévenir qu'elles ne font pas partie du
C++, et qu'il s'étend sur la syntaxe de sprintf, et qu'il a
d'une manière générale une forte tendance à préférer char[] à
std::string.


Le deuxième peut être un effet de l'âge, bien que comme je
disais avant... Je ne me suis plus servi de char[] dans les
programmes C++ depuis 1990. À une époque où je ne savais même
pas qu'il y avait une norme C++ (ni un comité de normalisation).

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34


Avatar
Fabien LE LEZ
On Mon, 26 Dec 2005 22:27:55 +0100, James Kanze :

La première question serait peut-être sur la date de
publication.


D'après l'éditeur : "Parution : 11/09/2003".

Le deuxième peut être un effet de l'âge


Ben non.

En plus, il me semble que std::string est au moins aussi vieux que
Java, non ?

Avatar
kanze
Fabien LE LEZ wrote:
On Mon, 26 Dec 2005 22:27:55 +0100, James Kanze :

La première question serait peut-être sur la date de
publication.


D'après l'éditeur : "Parution : 11/09/2003".

Le deuxième peut être un effet de l'âge


Ben non.

En plus, il me semble que std::string est au moins aussi vieux
que Java, non ?


Il date très exactement du 1-9-1998. Comme toute la norme.

Il y a eu une proposition d'une classe string déjà depuis mes
premiers contacts avec le comité -- 1992 ou 1993, si mes
souvenirs sont exact. Une proposition qui s'est pas mal modifiée
avec le temps -- la première version que j'ai vu n'était pas un
template, par exemple, et l'addition de la fonction push_back et
la spécification de la validité des références et des itérateurs
sont une réaction aux commentaires (surtout du French National
Body) au CD2.

Comme d'habitude, les implémentations réeles étaient à la
traine. Pas autant que pour export, évidemment, mais il y a eu
de la variation dans les implémentations jusqu'à une date assez
récente.

L'écriture du texte en question précède forcément la date de
parution ; de combien, nous n'en savons rien.

Ceci dit, vue les autres problèmes, je doute que ce soit la
véritable raison pour l'absence de std::string. Mais l'absence
en elle-même n'est pas forcément une indication d'un problème.
L'utilisation de char[] à la place d'une classe, oui, mais selon
la date où le texte a été écrit, cette classe ne serait pas
forcément std::string.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


1 2