JAVA vs C vs C++

JAVA vs C vs C++ - Programmation

Marsh Posté le 13-04-2001 à 21:01:28    

Quels sont leurs avantages, les plus faciles, leurs ressemblances/différences ??????

Reply

Marsh Posté le 13-04-2001 à 21:01:28   

Reply

Marsh Posté le 14-04-2001 à 00:10:20    

C++ est un sur-ensemble de C, ce qui signifie qu'un programme C doit pouvoir compiler en C++. Java a une syntaxe "à la C++", mais philosophiquement, c'est un langage très différent.
 
Le plus facile des 3 ? Du point de vue pur langage, sans doute C, car c'est un langage assez pauvre : il n'a que peu de concepts. Maintenant du point de vue programmation, c'est très différent, et là, je dirais Java, car c'est de loin le langage le plus sûr des 3.
 
C et C++ étant compilés de façon native, les programmes écrits dans ces langages sont plus rapides à s'exécuter. Leur gros défaut (à tous les 2), c'est de mettre des pointeurs à toutes les sauces. C'est extrêmement dangereux, et très difficile à déminer à 100%. Java a des mécanismes équivalents, mais ils sont plus ou moins rendus abstraits, ce qui rend leur manipulation beaucoup moins dangereuses.
En fait, même un langage comme Pascal possède les concepts de C, mais il en possède d'autres, plus sûrs, qui rendent l'utilisation des concepts "bombe atomique" (très puissants, donc très dangereux aussi si on les utilisent mal), genre pointeurs inutile dans beaucoup de cas. Résultat : on ne les utilise que quand on en a vraiment besoin.

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

Reply

Marsh Posté le 14-04-2001 à 00:13:19    

le mieux pour un débutant, c donc le JAVA ?

Reply

Marsh Posté le 14-04-2001 à 00:19:03    

funwebmax a écrit a écrit :

le mieux pour un débutant, c donc le JAVA ?




Tu te feras sans doute moins suer au début avec Java, ou encore mieux Pascal, oui, clairement.

Reply

Marsh Posté le 14-04-2001 à 15:07:50    

Tu vois funwebmax, j'ai bien fait de poser ste question

Reply

Marsh Posté le 15-04-2001 à 01:31:52    

Pour moi le C c'est la base...
Apres tu peux t'orienter vers d'autres langages sans trop de difficulté!
;)


---------------
the theory of the greater fool
Reply

Marsh Posté le 15-04-2001 à 10:35:15    

Je@nb a écrit a écrit :

Tu vois funwebmax, j'ai bien fait de poser ste question




 
tu vas prendre koi alors ?
moi le JAVA

Reply

Marsh Posté le 15-04-2001 à 11:09:28    

Je ne sais pas mais j'ai une grande envie pour le C.
En plus je pourrais programmer pour la Ti89.
Mais j'hésite.

Reply

Marsh Posté le 15-04-2001 à 19:18:56    

Faut pas oublier la grosse différence c'est que Java et C++ sont des programmes orientés objets (le c++ le permet et java est 100% orientée objet) à la différence du c qui est procédurale (bien que le c++ l permet) ! Bon le problème c'est que la POO est à la mode aujourd'hui et demandé partout à cause de son efficacité et c'est surtout un mode de pensée totalement différent obligeant à certaines rigueur, à la différence du c ! ! !
 
Bon maintenant c'est sur Java est moins proche du code machine que c ou c++ (toutes les gestions de mémoires ou libérations des ressources sont faîtes automatiquement) ! En faite Java est un langage 100 % objets avec une giga-immense librairie qui te permet de faire plusieurs chose, maintenant faut voir ce que tu veux faire avec, pour l'instant c'est surtout pour faire des applets, ou bien base de données (JDBC, JSP) pour ce qui est des programmes autonomes C et C++ sont plus rapides à l'éxecution, dernièrement java permet d'accelérer ses applications mais on y perd en portabilité, qui n'est pas déjà stable, java n'est pas le langage 100 % universelle dont-on parle !
 
Bon moi je me dis que tu fais du C++, y'a de tout objet, procédural c'est le plus puissant, ensuite tu passes à Java et C (bien que différent et largement utilisé aujourd'hui exemple : OpenGL) sans aucun problème ! ! !


---------------
On est pas le meilleur quand on le croit mais quand on le sait.
Reply

Marsh Posté le 16-04-2001 à 12:31:50    

Merci pour ces infos.
Si d'autre pers ont des choses à dire, continuez.
Le problème est que je n'est pas vu des livres du genre Le C++, votre plemier language or que G vu pour le C et le Java.
Si qqn a des références ??
Merci et continuez

Reply

Marsh Posté le 16-04-2001 à 12:31:50   

Reply

Marsh Posté le 16-04-2001 à 18:06:46    

le premiere chose a se demander et de savoir ce que tu veux faire.
Si t'on but et de piloter ton imprimante, mieux vaut utliser le C
que java.
 
Se lancer dans le C++ sans avoir fais du C n'est pas forcement une bonne chose , je veux dire par la que commencer par le C pour ensuite se mettre au C++ n'est pas une perte de temps et permet de se consacrer a des concepts de programmation indispensable , notamment dans l apprentissage de la gestion de la memoire . Tout cela sans avoir en plus des problemes qui concerne la POO (classe,polymorphisme,.............).
 
une fois ces concepts de programmation acquis , il sera tres simple d'utiliser des langages comme pascal (ou est linteret ?)
et surtout de migrer vers le C++ et ses concepts objets puis vers java et PHP.
 
Une chose est sure un programmeur C puis C++ pourra assez facilement faire du JAVA.
 
En fait je pense que commencer par le JAVA peut facilement decontenancer un programmeur debutant , avis personnel.
 
Pour etre clair , commence par le C . :wahoo:

Reply

Marsh Posté le 16-04-2001 à 22:30:36    

Ne vous focalisez pas sur l'objet quand un langage est objet ! En Java, on peut tout-à-fait se contenter de programmer avec des méthodes statiques ! Ainsi on se retrouve avec un bon vieux langage procédural.
 
Pour un débutant en programmation, le plus important, ce n'est pas le langage ; le plus important, c'est l'algorithmique.
Et le choix du langage ne doit pas être dirigé par le fait que c'est le langage le plus puissant, le plus utilisé dans l'industrie, ou bien qu'il offre telle ou telle interface de programmation. Le choix du langage doit être dirigé par le fait qu'il permet de transcrire facilement (ou pas) un algorithme écrit en langage algorithmique (qui comme tou bon programmeur sait, est un langage qui n'existe pas car généralement un peu trop abstrait pour la machine).
 
Et de ce point de vue, C et C++ sont littéralement cauchemardesques pour les débutants. Les meilleurs langages pour l'apprentissage sont (de loin) Pascal et Ada. Testé et éprouvé sur des centaines d'étudiants.
 
Maintenant, je ne peux obliger personne à apprendre ces langages-là, donc j'en reviens à la question initiale : si on restreint le choix à C, C++ et Java pour savoir quel est le langage le plus approprié pour apprendre à programmer, je dis : Java est (de loin) le moins mauvais des 3.

Reply

Marsh Posté le 16-04-2001 à 22:57:39    

vous avez des références pour des boukins d'algo ??
 
ceux dont vous etes content

Reply

Marsh Posté le 16-04-2001 à 23:05:20    

To BifaceMcLeOD :
Ne vous focalisez pas sur l'objet quand un langage est objet ! En Java, on peut tout-à-fait se contenter de programmer avec des méthodes statiques ! Ainsi on se retrouve avec un bon vieux langage procédural.  
 
Ah nan en java toutes les méthodes sont des méthodes provenant d'autres objets, y'a pas une seule méthode déclarée comme ca qui n'est pas attaché à un objet ! Toutes les applets dérive d'une classe applet et tous les objets java dérive de la classe objet ! Ce qu etu dis est possible qu'en C++ qui est à la fois procédurale et orientée objet ! Néanmoins tu as raison la base de tout c'est l'algorithmique la base de tous langage ! ! !


---------------
On est pas le meilleur quand on le croit mais quand on le sait.
Reply

Marsh Posté le 16-04-2001 à 23:35:28    

je vois pas ce qui a de vraiment dur en C ... par rapport a du pascal , bof .
 
commencer a programmer en pascal c'est avoir la certitude un jour ou l autre de devoir se mettre a un autre langage , un langage qui a de forte chance ,  
1- soit de ressembler au C  (c++ , php , java , perl, javascript ..)
qui offre ensuite des outils comme visual c++ ou c++ buider
 
2- ou au vb (asp , vb script)
 
C   rulezzzzzzzzzz

Reply

Marsh Posté le 17-04-2001 à 00:20:38    

Sayajin> Je programme en Java depuis plusieurs années, je sais de quoi je parle... ;)
 
En Java, tu peux définir des méthodes de classes, dites "méthodes statiques". Ces méthodes ne sont pas invoquées sur un objet receveur, pour parler dans le jargon, car elles appartiennent à la classe. Typiquement, le main d'une application : c'est une méthode statique, et il n'y a pas de "this" à l'intérieur (et si jamais tu essaies d'utiliser "this", le compilateur va te jeter...).
 
JosyX> Les pointeurs, Josy, c'est ça qui est le plus compliqué en C et en C++. Une fois que tu as pigé le truc, bien sûr, ça va, mais pour un débutant, crois-moi, c'est incroyablement complexe et difficile à comprendre et à maîtriser.
 
De façon générale, moins il y a de pointeurs à manipuler, mieux on se porte. C'est pour cela que les langages où l'usage des pointeurs est réduit à ceux où l'algorithmique les utilise (typiquement les structures de données copmlexes genre liste ou arbre) sont nettement plus adaptés à l'apprentissage.
 
Tu remarqueras aussi qu'en algorithmique, le dernier outil que l'on apprend (après les fonctions, les tableaux, les structures, ...), ce sont précisément les pointeurs. Parce que c'est un outil à la fois très puissant et très complexe à maîtriser. Or programmer en C sans pointeurs, c'est presque mission impossible : les pointeurs sont à la base de ce langage.
 
Les pointeurs, c'est un peu comme le goto. C'est extrêmement puissant, c'est très efficace, mais mal utilisé, ça devient très vite indigeste. Voilà pourquoi je pense qu'il vaut mieux aborder la programmation avec un langage qui masque les pointeurs partout où ils peuvent être masqués. Ce qui est le cas de Pascal, Ada, et aussi Java.
 
PS: Au passage, ce n'est pas parce que la syntaxe de 2 langages se ressemble au premier abord que ces 2 langages se ressemblent : JavaScript et C++ n'on absolument rien à voir, même si on utilise les mêmes symboles pour ouvrir ou fermer un bloc, ou bien écrire une instruction conditionnelle...

Reply

Marsh Posté le 17-04-2001 à 01:00:14    

C'est pas ca ce que je voulais dire : en java t'a pas de méthode du genre void Toto(); comme ca sorti de nulle part, ou c'est une méthode de la classe ou d'une autre objet ! ! !


---------------
On est pas le meilleur quand on le croit mais quand on le sait.
Reply

Marsh Posté le 17-04-2001 à 01:05:02    

Oui mais entre void classeA::toto() et void toto() y a pas bcp de différences.

Reply

Marsh Posté le 17-04-2001 à 01:08:27    

Ah bon ?


---------------
On est pas le meilleur quand on le croit mais quand on le sait.
Reply

Marsh Posté le 17-04-2001 à 01:18:01    

Dans ce cas, nous sommes d'accord. Mais je maintiens ce que j'ai dit : n'écrire que des fonctions statiques en Java revient à faire des procédures et des fonctions.
 
Ou, si tu préfères, il n'y a besoin de pouvoir exprimer des fonctions et des procédures toutes bêtes en Java, car les méthodes de classes remplissent parfaitement cet office.
 
D'ailleurs, C++ n'autorise les fonctions hors des classes que pour assurer une compabilité ascendante avec les programmes C. Sans cette "obligation de compatibilité", les fonctions auraient été purement et simplement supprimées du langage (c'est d'ailleurs ce qu'ont fait la plupart des créateurs de nouveaux langages à objets qui n'avaient pas cette contrainte).

Reply

Marsh Posté le 17-04-2001 à 01:19:02    

"Un peu lent, petit scarabée..."
 
Il faut dire que Verdoux a écrit une seule ligne et moi une douzaine...

Reply

Marsh Posté le 17-04-2001 à 01:21:01    

Verdoux a écrit a écrit :

Oui mais entre void classeA::toto() et void toto() y a pas bcp de différences.




La seule différence, pour C++, c'est la visibilité : la méthode toto() dispose du "contexte" de la classe, c'est-à-dire qu'elle a accès aux champs protégés et privés de la classe. La fonction étant hors de tout contexte de classe n'a accès à rien du tout.

Reply

Marsh Posté le 17-04-2001 à 01:32:43    

En tout cas de toute façon, au-delà de l'algorithmique tout dépends de ce qu'on veut en faire ! Si c'est pour le net autant allez vers le java (bien que le php, asp, cgi, html sont à connaitre aussi) ! Pour des applications autonomes C/C++, basic, delphi s'imposent ! ! ! Ah la la la on tourne toujours autour du pot quand on veut savoir par quel langage commencer !
 
Mais que pensez vous de l'adage "qui peut le plus peut le moins" ?


---------------
On est pas le meilleur quand on le croit mais quand on le sait.
Reply

Marsh Posté le 17-04-2001 à 01:54:44    

Sayagin> Là je ne suis pas d'accord. Si tu as le choix entre une Ferrari et une 2 CV, laquelle vas-tu prendre si tu ne sais pas conduire ?
 
En programmation, apprendre les bases de l'algorithmique, c'est comme apprendre à conduire. C'est un préalable. Sans ça, tu n'arriveras à rien. Alors bien sûr, étudier les B-trees ou la complexité des principaux algorithmes de tri, c'est plus apprendre à piloter une F1 qu'une voiture de série, mais quand tu en es là, tu sais déjà conduire la voiture de série. Par contre, apprendre à maîtriser les boucles, les instructions conditionnelles, les fonctions et les procédures, ça oui, c'est apprendre à conduire.
 
Quant à ton adage, tu connais sans doute Cobol (au moins en as-tu déjà entendu parlé) ? Je connais le cas d'un étudiant à qui, en stage, on a demandé de faire une application qui manipulait des fichiers, et, en particulier, qui triait leur contenu. L'étudiant s'est dit "hof, je vais faire ça en C, ça va être torché !". Il a passé 3 mois à souffrir comme un taré, et à la fin de son stage, son programme ne marchait pas dans tous les cas. Il l'aurait écrit en Cobol (lanage que pourtant, je ne recommande vraiment pas du tout...), il l'aurait écrit en une semaine ou 10 jours, et le programme aurait marché sans erreur.
 
Pourquoi : parce que le boulot est déjà fait en Cobol : la fonction de tri externe est déjà implémentée et fait déjà partie du langage. Pourquoi s'acharner à réinventer la roue ?
 
Enfin, pour finir, ton adage ne s'applique pas à l'apprentissage : ce n'est pas parce qu'un langage "peut tout faire" qu'il est facile à apprendre. En disant cela, tu es à côté du problème.
 
Tu sembles croire que, parce que C est le langage le plus généraliste (ce qui est pas vraiment le cas, soit dit en passant), il vaut mieux commencer par lui ; et qu'apprendre un autre langage avant, c'est une perte de temps.
Et bien c'est faux : apprendre un langage adapté (qui ne sert qu'à apprendre à programmer), puis passer au langage C une fois tous les concepts bien assimilés, cela demande nettement moins de temps qu'apprendre à la fois à programmer et le langage C.
 
Peut-être cela te surprendra-t-il, mais j'ai pu l'observer plusieurs années durant, sur des centaines d'étudiants, à l'université. Et en plus (cerise sur le gâteau), ceux qui n'avaient pas commencé par le langage C rendaient des programmes beaucoup plus propres et beaucoup plus lisibles... Bref, ne pas commencer par C ou C++ n'a que des avantages à mes yeux, sans en avoir aucun inconvénient véritable (et vérifiable).

Reply

Marsh Posté le 17-04-2001 à 02:03:11    

Entièrement d'accord avec toi ! Je parlais bien sur du novice qui a les bases de la programmation ! Il est claire que le C/C++ sont avant tous des langages informatiques de bas niveau (très proche du code machine), et donc à la base ils ne sont pas fait pour simplifier les tâches et donc n'aide pas forcément au début à se concentrer d'abord sur l'algorithmique bien plus importante ! Donc autant commencer par un langage propre à la base (déjà simplifié) et après par la suite s'intéresser au niveau inférieure (si envie il y'a) avec de bonnes bases !
 
Bon Je@nb j'espère que ce topic (comme tant d'autres sur le sujet) t'a ouvert l'esprit ! ! !


---------------
On est pas le meilleur quand on le croit mais quand on le sait.
Reply

Marsh Posté le 17-04-2001 à 08:47:30    

Moi j'ai fait Pascal, C, Java puis C++.
Franchement java au debut c'était un peu dure. Le temp de comprendre les principes de base de la POO et puis je me perdais devant l'étendue des classes existantes (faut savoir utiliser l'API ref).
Ca m'a bcp surpris par rapport au C.
Mais c'est vrai que pour commencer il vaut mieux un language rigoureux (pour ça ke java est tres bien) et se concentrer sur les bases de l'algo.
J'hésite... pascal est pas si mal même si on s'en sert pas apres..


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 17-04-2001 à 10:18:04    

Est ce ke vous avez des sites français sur l'ADA ?
je v commencer par la

Reply

Marsh Posté le 17-04-2001 à 13:06:35    

up

Reply

Marsh Posté le 17-04-2001 à 13:13:37    

L'ADA est rop rigoureux.
A mon avis le pascal est ideal, pas trop rigoureux, pour vous dégouter de la programmation, mais assez pour prendre de bonne habitudes.
 
L'ADA c'est bien que pour ceux qui ont deja programmé et qui veulent faire des programme dans des secteurs critiques , ou les erreurs doivent etre proches de nul (typiquement l'aeronautique), le developpement en ADA de logiciel est aussi plus rapide, et il y a des ressemblance avec un langage objet. Mais à mon avis il rebuterait tout débutant à la programmation tellement c'est chiant !!!
L'ADA te donne la permition de ne faire que des choses très propres, mais des que tu veux faire un truc un peu hors norme tu peux t'y arracher les cheveux. Même si ton algo est bon..
Moi je conseil dans l'ordre pascal, C, java puis C++.
Il vaut mieux faire du c que du java sans objet à mon avis.
 
Et surtout en defaveur de l'ADA, c'est que tu trouveras beaucoup moins de doc dessus que dans les autres langages.


---------------
Ils veulent la jouer hard, on va la jouer hard  
Reply

Marsh Posté le 17-04-2001 à 13:54:03    

et delphy, c cconseillé de commencer par ?

Reply

Marsh Posté le 17-04-2001 à 14:45:52    

funwebmax a écrit a écrit :

et delphy, c cconseillé de commencer par ?




C'est pas du Pascal delphi ?
 
Pour moi le C est presque mort et ne survit que par le C++, le code deja ecrit et sa portabilite.
 
Du Java sans objets pourquoi pas ? n'est ce pas dommage ? ou alors juste pour apprendre au debut...
 
J'avoue ne pas etre fana de Java, il faut dire que ce n'est pas adapte a ce que je fais.
 
Par contre, connaite pluiseurs langages apporte une richesse incomparable. et bien souvent, je fait en C++ des choses qui existent plus ou moins en Java, et je m'inspire de l'interfaces des classes Java...

Reply

Marsh Posté le 17-04-2001 à 19:03:38    

Merci de toutes vos réponses.
G déjà qq notions en Pascal mais les bouquins ne m'ont pas aidé.
J'avais pris un bouc de Delannoy sur Eyrolles "Initiation à la programmation" où les choses sont rentrer assez facilement.
Mais quand je me suis mis sur le Pascal avec un bouc trop compliqué et pas du tout pédagogique, ça ma un peu dégouter.
Alors si qqn veut me donner des références de livres (de préférence de Delannoy car son style et ses ouvrages sont bien compréhensible, mais si vous connaissez d'autres auteur du même genre, dites).
Par ailleurs, j'avais lancé ce sujet car j'avais vu sur la librairie <a href="http://www.eyrolles.com">Eyrolles</a> 2 livres : "Le livre C du premier language" et "Java premier language" aussi.
C pour cela que je pensais que ces languages étaient abordables pour un débutant (funwebmax et moi sommes en 2de (15ans)).
Sinon pour ce qui est de l'algoritmique, je suis prenneur de tous conseils, que ce soit des ouvrages ou des sites ou même un prof même si ce dernier cas est plus une part de rêves car nous sommes obliger de faire preuve d'autonomie.
Au fait qu'utiliser comme compilateur (de préférence sous Windows car le Dos me gave) et où le trouver.

Reply

Marsh Posté le 17-04-2001 à 19:54:46    

Hercule> Je n'ai jamais eu de problème pour trouver des docs très détaillées sur Ada. Et je connais des écoles d'ingé et des formations (type IUT) qui utilisent Ada comme premier langage pour apprendre. Et à la fin de l'année, crois-moi, les étudiants remercient leurs profs... et râlent devant leur compilateur C qui détecte la moitié des erreurs qu'un compilateur Ada aurait trouvé (la différence, c'est que c'est le programmeur, en déboguant, qui doit les trouver, et c'est nettement plus long et nettement plus pénible !)
 
Sinon, j'ai déjà fait des drivers en Ada (si, si, c'est tout à fait possible ! Et c'est assez bien optimisé, en plus...).
Bon, c'est rigolo à faire, mais c'est sûr que c'est limite pénible. En fait, ce que tu décris, c'est la philosophie même de ce langage. Quand j'en étais à la fin de mes études, je disais régulièrement aux plus jeunes : "la différence entre C et Ada, c'est qu'en C, pour programmer propre, il faut vraiment le faire exprès ; alors qu'en Ada, c'est pour programmer crade qu'il faut le faire exprès..."
 
Bon, maintenant, vous avez demandé de la doc, ne quittez pas...
Pour Ada, le site Web de référence, c'est "the Home of the Brave Ada Programmers". Il est très complet, mais son principal inconvénient étant qu'il est entièrement en anglais.
 
Sinon, il y a les bouquins. Celui écrit par John Barnes est très complet (Barnes a participé à la conception du langage), et est souvent considéré comme LA référence papier sur Ada. Je ne conseille pas le manuel de référence du langage (je l'ai lu, heu, disons... un peu :D ) : tout y est, mais c'est vraiment indigeste ! ;)
 
Sinon, j'avais beaucoup aimé "Ada avec le sourire" : il est nettement plus facile à lire que le Barnes (qui a tendance à être un peu trop sérieux parfois...), mais il est moins détaillé.
 
funwebmax> Delannoy a aussi écrit des bouquins sur Pascal. C'est même probablement par Pascal qu'il a commencé. Tu devrais pouvoir facilement trouver son ou ses bouquins sur le sujet. Sinon, si Delphi te tente, vas-y, en fait, c'est du Pascal (avec des extensions objet). Et l'environnement de développement qui est fourni avec est de très bonne facture.

Reply

Marsh Posté le 17-04-2001 à 21:29:07    

alors, ok merci
 
Pouur ton boukin ADA avec le sourire, c simple ?
kel éditions ?
 
ou sinon, le delphy a l'air cool aussi, vous avez des références de BONS boukins ?
merci

Reply

Marsh Posté le 17-04-2001 à 22:57:47    

Ada avec le sourire: Editions suisses romandes, si je me souviens bien.

Reply

Marsh Posté le 17-04-2001 à 23:00:35    

et c t simple ?

Reply

Marsh Posté le 18-04-2001 à 00:56:45    

Ben le titre est bien choisi. Maintenant, quant à savoir si c'est simple, à mon avis, non, cela reste de la programmation... Mais c'est toujours plus agréable d'apprendre dans la bonne humeur.

Reply

Marsh Posté le 18-04-2001 à 09:25:45    

L'humour et la prog ... une grande histoire d'amour.


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed