Very beginer

[Résolu]
Signaler
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
-
Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
-
Bonjour,

Voila, j'ai passé mon BTS Informatique l'année derniere, avant de commencer, je maitrisait deja le VB6.0 (je fais du Basic depuis les Amstrad et j'ai suivi a peu pres l'évolution du bazard avec le QBasic et les versions successives de VB). Au cours de ma formation, je me trouvais dans un établissement (Greta Richemieu a Rueil pour ne pas le citer) assez mal organisé au niveau des cours. A ce moment la, on m'a expliqué qu'il y avait d'autre languagues, nottament le Java et le C++ (dont on m'a dit que c'était proche mais j'ai toujours pas vu en quoi...). Voila ma question et elle est surement tres vaste donc meme des fragments de reponse s'il sont suffisant pour etre compris m'interressent:
-C'est quoi la différence entre le C++ et le Visual C++ ? (d'autant plus que j'entend parler de C#, C+, .Net?,...) je m'y perd...

moi j'ai un compilateur Borland C++ qui resemble tres franchement au compilateur de QBasic (il y a dix ans donc)... c'est ca l'univers du C++ ?

Merci pour ceux qui auront eut la patience de lire ce topic jusqu'au bout et encore plus merci a ceux qui me mettront sur la voie...

AbriBus...

11 réponses

Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
2
Bon alors voilà, pour dégrossir un peu.
Le Visual Basic 5 ou 6 est un langage 32 bits permettant de créer des programmes sous Windows en utilisant l'API de Windows et/ou les bibliothèques spéciales Visual Basic (VBRUN500 ou 600). Ainsi, un programme Visual Basic est rapidement codable, mais reste un langage plutôt interprêté bien qu'on puisse créer des EXE.
Le C est un langage de Base. Il permet de coder des programmes sous DOS et sous Windows. Pour Windows, un Programme écrit en C se fait exclusivement en appelant des fonctions de l'API de Windows. Ce sont ces fonctions qui permettrons de faire apparaitre une fenêtre, un bouton, gérer des évènements ...
Le C++ est une forme améliorée du C, plus orienté objet. Les programmes C sont compilable par le C++ car le C++ complète le C.
Le Visual C++ quant à lui a été créé par Microsoft. Il s'agit d'un IDE C et C++. Il permet de créer des applications DOS, et Windows de la même façon qu'un autre compilateur C ou C++ c'est à dire pour ce qui est de Windows en utilisant les fonctions API, mais en plus, il dispose de bibliothèques spéciales contenant des objets directement appelables et gérables. Ces bibliothèques sont appelées MFC. Elle permettent de créer par exemple un bouton simplement en le déclarant puis de le gérer en indiquant bouton.Text par exemple, un peu comme dans Visual Basic, à la différence près que dans Visual C++, on ne dessine pas les contrpoles, ils s'affichent une fois qu'ils sont déclarés.
LE C et le C++ sont des langages entièrement compilés.

Vienent d'apparaître depuis quelques années les langages que je viens de citer sous une forme appelée .NET. Existe ainsi Visual Basic .NET, C++.NET et C#.NET pour citer ceux que je connais le plus. Le C# est une sorte de C++ revu et corrigé, peut être plus conviviale pour l'avoir testé.
Ces langages permettent l'écriture de programmes qui ne seront compilés qu'une fois lancés. Il nécessitent la présence sur l'ordinateur d'une bibliothèque appelée .NET FRAMEWORK. L'Avantage, c'est que le programme une fois compilé le sera en fonction de la machine sur laquelle il tourne. Ainsi on n'aura pas besoin de coder des fonctions spécifiques que l'on soit sous Windows XP, ou Windows NT par exemple comme cela aurait pu être le cas en Visual C++ par exemple ou l'évènement SELECT MENU se déclenchait sous Windows98 lors de l'ouverture d'un menu alors que sous XP il se déclenchait à la sélection d'un menu. Un autre avantage, c'est que les programmes .NET sont utilisables ensembles. Honnêtement, je n'ai jamais essayé de marier un Programme Visual Basic . NET avec un C++.NET
Cependant, cette compilation en directe se fait au détriment de la vitesse d'exécution. Ceci se voit déjà lors du lancement du programme. On a l'impression que la bécane a planté (Pas de barre de progression, le système reste en attente un paquet de temps des fois).
L'autre inconvénient, enfin c'st moi qui le dis surtout, c'est la mie à la sauce objet de tout et n'importe quoi.
Je m'explique, dans un programme Windows écrit en C++ ou même en Visual Basic, un module ou une routine était une routine c'est à dire une fonction commune à tout le programme pouvant être appelée. Dans les langages.NET, on appelle objet tout ce qui est routine comme tout ce qui est controle. JE trouve ça un peu zarbi.
Nota, dans les langages.NET, le C++.NET reste compilable entièrement je crois, les autres, se compile partiellement non pas en un fichier EXE pure, mais dans un fichier EXE hybride (un peu comme l'EXE du Visual Basic je crois).
Voilà, pour résumer, c'est à toi de faire ton choix de langage.
De mon expérience d'amateur, lorsque je veux créer un programme sous Windows rapidement , j'utilise en général Visual Basic. La Programmation C ou C++ est très intéressante. Cependant, elle demande beaucoup de patience lorsqu'on veut programmer sous Windows, surtout lorsqu'on le fait uniquement en faisant appel à l'API.
J'ai testé la programmation .NET. Pour Visual Basic, je n'ai pas vu d'intérêt de passer du 6 au .NET (si ce n'est que les bibliothèques DirectX9 par exemple n'existent que pour VB.NET mais bon, c'est mon prob). Le C# sous Dos il est sympa. Sous Windows si tu utilise un IDE ne te permettant pas le dessin des contrôles directement (comme le fait Visual C#.NET), je pense qu'il vaut mieux rester à Visual C++.

Voilà, tout ce que je peux dire si cela peut t'aider. D'autres lecteurs te doneront peut être un point de vue différent, et apporterons des corrections à cet exposé (Je n'ai pas la science infuse, et je code en amateur).

LaPatoshe
Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

Salut,

Je complete un peu ...
"Le C est un langage de Base. Il permet de coder des programmes sous DOS et sous Windows."
Le C a été inventé (Ritchie , Kernighan) pour créer UNIX. Le C s'interface également plutot bien avec les systemes UNIX like !

"un Programme écrit en C se fait exclusivement en appelant des fonctions de l'API de Windows."
C'est pas du tout obligatoire, chacun son avis la dessus ...

"Les programmes C sont compilable par le C++ car le C++ complète le C."
C'est faux en général, mais la norme C s'orientera peut-etre un jour vers ceci.

Pour les langages .NET, ou java, ce sont des langages pseudo compilés, la pseudo-compilation produit du "byte-code" comme on dit, qui est interprété à l'exécution. C'est une sorte d'hybride entre langage compilé et langage interprété. L'intéret est dans la portabilité (Java) et dans la portabilité sous plateforme m$ pour *.NET.

Sinon, technologie objet, ça fait vendre (pour les entreprises), et ça fait "très" professionnel ! Et créer ce genre de langage, ça correspond à une demande ...
Mais que tout soit objet, c'est lourd ! Meme les types de base pour C# hérite d'une classe de base ! Pour faire n'importe quel calcul, on se paye le surcout de la fonction virtuelle ... la c'est trop. Java pour l'objet et la portabilité, c'est pas mal.

"le Java et le C++ (dont on m'a dit que c'était proche mais j'ai toujours pas vu en quoi...)"
Ce sont deux langages objet. Le Java est plus objet que le C++. Le C++ a disons une philosophie objet.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Bien entendu que les APIs sont dependants de l'OS.
Pour autant si tu veux un prog fini et distribuable, faudra bien cibler une plateforme.

ciao...
BruNews, MVP VC++
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
oui moi ;)

ceci dit, certaines dlls (je pense en particulier a la SDL) sont portable sur la totalité des OSes connus. pas mal non? cependant le code que tu utilisera pour appeler les fonctions de la dll dépendra de l'OS
Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
2
Pour synthétiser un peu : Les langages qu'ils soient visual basic, C, C++, sont des langages au fonctionement commun. On déclare des variables, et on lance avec ou sans ces variables des fonctions. Ces fonctions peuvent être soit fabriquée par le programmeur lui même, soit incluses dans des bibliothèques telles que par exemple l'API de Windows (Windows.h) ou DirectX.
Losrqu'on programme avec Visual Basic, les contrôles ActiveX que l'on crée en les dessinant provienne de bibliothèques spécifiques (VBRUN500.DLL). le Visual C++ connait également des bibliothèques spéciales appelées MFC permettant également la création de contrôles. Ces bibliothèques sont spécifiques car elles permettent d'utiliser les contrôles créés en tant qu'objets, et pas en tant qu'instance. Pour être plus explicatif, en C lorsqu'on programme avec les fonctions API un petit programme comportant une fenêtre contenant des contrôles, chaque controle se trouve référencé à l'aide d'une variable que Windows apelle HANDLE. Il s'agit d'un numéro attribué par Windows. Lorsqu'on veut agir sur ce contrôle, on doit systématiquement passer par ce HANDLE. Ainsi, si on veut donner un ordre à un contrôle, notre ordre sera de la forme FONCTION (HANDLE, Paramètres, ORDRE A DONNER, Paramètres). La difficulté c'est que les fonctions selon qu'on s'adresse à un contrôle List ou edit, ou feuille... n'aura pas la même forme ni le même nombre de paramètres. Les fonctions API sont intéressantes à utiliser car elles font généralement partie uniquement du fichier Windows.h, ainsi, pour des petits programmes, pas la peine de faire appel à d'autres bibliothèques. La difficulté c'est que pour savoir comment exploiter pleinement les contrôles sous windows (Changement de la couleur, de la propriété de Caption, la réaction..., il faut chercher ces infos une par une dans le SDK de Windows ou sur le Site Code Source qui je dois le reconnaitre m'aide énormément).
L'autre méthode de programmation sous Windows, c'est la programmation Objet telle qu'on la retrouve dans Visual Basic ou Visual C++ avec les MFC. Ce style de programmation permet au programmeur de créer des contrôles qui se comporterons comme des objets. Ils auront des propriétés, des méthodes, et réagirons à des évènements avec cette circonstance, que l'écrture de tout ce code sera plus structuré. Par exemple, pour changer une propriété de controle on écrira CONTROLE->Propriété VALEUR. En Visual Basic on écrira CONTROLE.Propriété VALEUR. En C++ il me semble que les contrôles MFC sont des pointeurs d'où le '->'. L'inconvénient des MFC c'est l'utilisation de bibliothèques autres que Windows.h nécéssitant pour programer sous Windows l'utilisation quasi obligatoire de Visual C++. Borland C++ Builder ressemble au Visual C++ car il possède également des bbliothèques de contrôle.
Que ce soit avec les MFC ou directement en programmant l'API de Windows, un programme écrit en C ou C++ peut être entièrement compilé (utile si on cherche de la rapidité).
Pour ce qui est des langages .NET, franchement, je suis un peu comme les copains. Je pense que ça a été créé pour Vendre du Langage nouveau avec ORIENTE OBJET comme slogant d'appel.
Pour avoir tatonné un peu dans ces langages notamment dans C#, On a à faire à des langages assez lents une fois compilé en Pseudo Code, nécessitant le .NET FRAMEWORK, et dont la structure doit être entièrement configurée à la Sauce Objet.
Pour détailler, un objet est une instance d'une classe. Une classe peut être par exemple un personnage contenant des propriétés taille, poids, et des méthodes come avancer, parler... Dans un programme Visual Basic ou C++ on retrouve des classes. Les contrôles sont eux même des instances de classe. Cependant, le reste du code se trouve être à partir du pont d'entrée du programme un module contenant une fonction principale appelant d'autres fonctions.
Dans les langages .NET, tout est objet. Cela veut dire bien que cela paraissent complètement inutile qu'il faut déclarer les fonctions telles que la fonction principale d'entrée du programme (WinMain) dans une class qu'il faudra déclarer d'une façon spécifique (Static) car elle ne doit bien entendu pas être instanciée. Ainsi on aura : Class Principale { Static WinMain(....) return 0;}
Cela n'a à mes yeux aucun sens mais bon, peut être que dire que tout est objet fait vendre.
Sinon, c'est vrai qu'un programme écrit en .NET est super portable. En C lors de la programation API, si on touche à certaines fonctions spécifiques, il faut vérifier qu'elles soient portables, mais l'Aide du Visual C++ ou du SDK indique en général avec quelles version de Windows une fonction est compatible.
Voilà, en espérant que cela a pu éclairer ta lanterne.
La Patoshe

PS : Je suis loin d'être un Prof, je poste au moins une question par jour en ce moment sur la programmation API. Mais merci quand même du compliment.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Visual C++ est un IDE (Visual Studio) et non un langage.
Dans VS on ecrit dans le langage qu'on veut, du VB.NET au fortran en passant par C/C++ et ASM.

ciao...
BruNews, MVP VC++
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
super réponse. c'et pas mon topic, mais merci qd meme.

PS our abribus, IDE =compilateur (bon pas tout a fait mais bon)
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
Merci beaucoup LaPatoche er plus_plus_fab, je vais bientot pouvoir vous appeller "professeurs" ;) .
Une derniere petite question... comme je vous disais je fait du VB et à ce qu'on m'a dit, le coup d'utiliser des Api supprime la portabilité du language car les Api sont pas les memes selon l'OS. Est-ce vrai ? Cela signifie t if qu'un code en C va fonctionner OU sous windows OU sur unix par exemple ?

Merci vraiment tres profondément, vous avez comblé mon inculture :big)

Que la prog soit avec toi...

AbriBus...
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
...okay... merci a vous tous pour votre partage de connaissances... ;) . J'ai appris plus en deux jours sur ce topic qu'en deux ans dans ma M€#D€ d'établissement... (vous devriez monter une team genre "Web Teatchers"...

Bon, je passe au reponses acceptée maintenant... elle sont nombreuse... Votre science m'a été d'un grand secour pour comprendre un peu mieu l'univers du C en particulier... j'espère que toutes ces informations seront un jour peut etre utiles a quelqu'un d'autre...

BriBus...
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
oui, excuse moi mais j'y pensé à ton post juste apres avoir posté le mien... :)

Ce que tu presise la mérite la reponse acceptée... et me donne définitivement envie d'approfondir mes connaissance en CPP... ce qui m'amène a une nouvelle question... (j'espère que je n'exagère pas trop :big) )
Voila, pour mon BTS, j'ai fait un répertoire en CPP (borland) avec une structure de donnees, ue liste double chaine et pis deux trois trucs sympa pour que ca soit présentable (d'ailleur ca à été bien noté....mais pas pour moi lol). J'ai posté ce source il y a quelques semaines ici meme. Bref, j'ai beaucoup travaillé pendant quelques moi sur ce "Borland C++" et je me demandait si ces connaissance me serait d'une quelconque utilité pour passer au Visual C++ (ou .NET ?), d'ou l'interet de mon tout premier post.
J'ai pas encore osé... vous penser que je pourrais me lancer a corps perdu dans le Visual C++ juste avec ces quelques connaissances (peut etre recyclable ?), et quelque conseil ou dois-je reprendre depuis le debut (bouquin a l'appui donc).

N.B: je reprécise que j'ai de bonnes connaissances en Basic et ca commence a etre pas mal en Java aussi... je sais pas... ca peux aider un language objet et un evenementiel...?
Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

le visual C++, c'est un IDE !
on assimile aussi le compilateur de cet IDE sous ce nom la.

le C++ utilisé sous Visual, g++, borland, ... c'est toujours du C++ !
rien à apprendre sur le langage lui meme en passant à visual.
C# par contre, c'est un autre langage.