Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1100 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  C vs Java > c ti quoi dont la différence

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

C vs Java > c ti quoi dont la différence

n°239428
MrX
Posté le 04-11-2002 à 20:22:55  profilanswer
 

euh, veux pas ranimer d'anciennes flames , reveiller des conflits, voir des gens se tuer, plein de sang partout et le sol jonchées de membres divers... pays neutre plz
 
Juste en quelques mots, d'un point de vue debutant, qu'est ce qui fait que l'on distingue java de c lorseque ces langages on une syntaxe si proche ?

mood
Publicité
Posté le 04-11-2002 à 20:22:55  profilanswer
 

n°239433
chrisbk
-
Posté le 04-11-2002 à 20:24:42  profilanswer
 

java = objet
C = pas objet
 
 
c'est tout ce que je dirais a ce sujet :D

n°239435
MrX
Posté le 04-11-2002 à 20:26:27  profilanswer
 

euh.... object c koi exactement (j'ai mes idées mais c encore floux)? et pi c++ c'est dis etre un langage object, alors dans ce cas ?

n°239453
lorill
Posté le 04-11-2002 à 20:40:24  profilanswer
 

chrisbk a écrit a écrit :

java = objet
C = pas objet




 
notons qu'on peut presque faire de l'objet en C (manque juste l'encapsulation), mais faut le vouloir :D

n°239479
chrisbk
-
Posté le 04-11-2002 à 21:14:18  profilanswer
 

lorill a écrit a écrit :

 
 
notons qu'on peut presque faire de l'objet en C (manque juste l'encapsulation), mais faut le vouloir :D




 
oui, bon, BREF :D

n°239482
lorill
Posté le 04-11-2002 à 21:15:23  profilanswer
 

chrisbk a écrit a écrit :

 
 
oui, bon, BREF :D
 




stait juste histoire de foutre ma merde et de rajouter encore un peu de confusion  :hello:
 
Edit: pis avec un peu de chance, ca va partir en troll "faire de l'objet en C c'est pas possible", ca nous changera de Java vs C++ vs C


Message édité par lorill le 04-11-2002 à 21:16:01
n°239517
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-11-2002 à 21:33:29  profilanswer
 

chrisbk a écrit a écrit :

java = objet
C = pas objet



Si tu le prends comme ça... tu l'auras voulu  :kaola:  
 
Java == lent
C == rapide
 
 :hello:


---------------
J'ai un string dans l'array (Paris Hilton)
n°239518
MrX
Posté le 04-11-2002 à 21:33:38  profilanswer
 

nan , j'ai dit pa de mort! (mais je reve pas la dessus)  
enfin au moins avant ke les hostilités ne debutent pourrait ton repondre a ma question (a savoir dans le mesure ou c++ est object alors k'es ki change entre c++ et java, et l'object en precis c koi ?)

n°239520
barbarella
Posté le 04-11-2002 à 21:35:02  profilanswer
 

MrX a écrit a écrit :

euh, veux pas ranimer d'anciennes flames , reveiller des conflits, voir des gens se tuer, plein de sang partout et le sol jonchées de membres divers... pays neutre plz
 
Juste en quelques mots, d'un point de vue debutant, qu'est ce qui fait que l'on distingue java de c lorseque ces langages on une syntaxe si proche ?




 
:lol: y en a qui font une fixation sur l'objet. 'C' est un langage compilé, et java heu ... semi-interprété il me semble. oh, les spécialistes java cessez votre contemplation devant les beaux objets et venez répondre ;)
 

n°239523
lorill
Posté le 04-11-2002 à 21:35:57  profilanswer
 

MrX a écrit a écrit :

nan , j'ai dit pa de mort! (mais je reve pas la dessus)  
enfin au moins avant ke les hostilités ne debutent pourrait ton repondre a ma question (a savoir dans le mesure ou c++ est object alors k'es ki change entre c++ et java, et l'object en precis c koi ?)




 
C++ :
compilé, normalisé par un comité, plusieurs implémentations pas toutes compatibles
 
Java :
semi compilé, semi interprété, géré principalement par SUN, pas vraiment libre
 
Objet :
va plutot lire une doc, ca sera plus simple http://commentcamarche.com/poo/poointro.php3

mood
Publicité
Posté le 04-11-2002 à 21:35:57  profilanswer
 

n°239524
MrX
Posté le 04-11-2002 à 21:35:59  profilanswer
 

ouin kan c kon repond  :(

n°239526
kadreg
profil: Utilisateur
Posté le 04-11-2002 à 21:36:09  profilanswer
 

Demander comment on distingue java de C++ parcequ'ils ont une syntaxe proche, c'est comme demander comment on distingue le français de l'anglais, parcequ'ils utilisent les mêmes lettres.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°239528
lorill
Posté le 04-11-2002 à 21:36:34  profilanswer
 

barbarella a écrit a écrit :

 
:lol: y en a qui font une fixation sur l'objet. 'C' est un langage compilé, et java heu ... semi-interprété il me semble. oh, les spécialistes java cessez votre contemplation devant les beaux objets et venez répondre ;)




 
objets roxorent, classes suxorent  :na:

n°239536
barbarella
Posté le 04-11-2002 à 21:39:29  profilanswer
 

lorill a écrit a écrit :

 
 
C++ :
compilé, normalisé par un comité, plusieurs implémentations pas toutes compatibles
 
Java :
semi compilé, semi interprété, géré principalement par SUN, pas vraiment libre
 
Objet :
va plutot lire une doc, ca sera plus simple http://commentcamarche.com/poo/poointro.php3
 




 
java n'est peut-être pas libre, mais ça n'en fait pas un mauvais truc. la preuve, java n'étant pas dépendant de la plate-forme utilisé, il peut s'executer ou il veut, si bien sur il y a un moteur java et ça ça fait chier MS, et moi ça j'adore :D

n°239539
barbarella
Posté le 04-11-2002 à 21:40:29  profilanswer
 

lorill a écrit a écrit :

 
 
objets roxorent, classes suxorent  :na:  




 
en traduction programmeur C, ca donne ? :D ;)

n°239541
lorill
Posté le 04-11-2002 à 21:40:47  profilanswer
 

barbarella a écrit a écrit :

 
java n'est peut-être pas libre, mais ça n'en fait pas un mauvais truc. la preuve, java n'étant pas dépendant de la plate-forme utilisé, il peut s'executer ou il veut, si bien sur il y a un moteur java et ça ça fait chier MS, et moi ça j'adore :D




j'ai pas dit le contraire, je réponds juste a la question...
n'empeche que s'il était libre, il ralerait plus pour un symbole non trouvé dans ma libc depuis ma mise a jour, car j'aurais pu le mettre a jour avec  [:sinclaire]

n°239547
kadreg
profil: Utilisateur
Posté le 04-11-2002 à 21:44:02  profilanswer
 

Le JCP est-il un comité ...
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°239550
lorill
Posté le 04-11-2002 à 21:45:50  profilanswer
 

kadreg a écrit a écrit :

Le JCP est-il un comité ...




 
je dirais que oui, mais a t'il une reelle incidence sur les décisions de SUN ? et qui y participe a part sun et apache (question réelle) ?

n°239552
MrX
Posté le 04-11-2002 à 21:46:25  profilanswer
 

kadreg> demander la difference entre le francais et le jap reviendrai au meme, ou le breton et le celte, peu importe, il n'y a pa de distinction sur les langues car elle sont encapsulé par le terme assez de vague de nation , qui ne serait relevé les plus profond (debile aussi ?) sentiments. Si le langage serait le rejetons exclusif de la science , on en serait tous a l'ispano ou indago machin (l'espece de langue creer a partir de tout les idiomes actuels et passés)
 
La programation vu ici ca ne releve ke d'une machine , donc a priori c du determinise et de la loi au galons, ce ki defini de facon necessaire et sufisante le fruit de la recherhce scientifique (ok je sais c chiant mais la veux ma satanée reponse!), alors a moins k'il y est un tas d'exclus dans ce monde ki soit suffisament glandu pour pondre un langage ki pompent tous jusqu'a la syntaxe sur son predecesseur pour le plaisir, pourquoi au monde c t'on fatigué a faire 2 facon de programmé comme java et c++ ?

n°239555
lorill
Posté le 04-11-2002 à 21:48:32  profilanswer
 

MrX a écrit a écrit :

alors a moins k'il y est un tas d'exclus dans ce monde ki soit suffisament glandu pour pondre un langage ki pompent tous jusqu'a la syntaxe sur son predecesseur pour le plaisir, pourquoi au monde c t'on fatigué a faire 2 facon de programmé comme java et c++ ?




 
pour exprimer des choses identiques de manière différente ? oh, ben ca marche aussi avec l'exemple des langues, tiens !

n°239560
MrX
Posté le 04-11-2002 à 21:50:04  profilanswer
 

merci barbarella (put1 15 post pour l'avoir c'te foutu reponse , fo vraiment vous taner les gars!)
 
bon ben ca sert pa a grand chose de le dire mais maintenant pouvez tuer ki vous voulez

n°239563
MrX
Posté le 04-11-2002 à 21:51:16  profilanswer
 

lorill> arf les langues ca engage des debats passioné sur l'appartenance a un groupes ou un autres,  rien a voir avec la science ki ne recherche ke l'efficience....

n°239565
lorill
Posté le 04-11-2002 à 21:53:52  profilanswer
 

MrX a écrit a écrit :

merci barbarella (put1 15 post pour l'avoir c'te foutu reponse , fo vraiment vous taner les gars!)
 
bon ben ca sert pa a grand chose de le dire mais maintenant pouvez tuer ki vous voulez




parce que ma réponse te plaisait pas ?  :kaola:

n°239566
kadreg
profil: Utilisateur
Posté le 04-11-2002 à 21:54:30  profilanswer
 

lorill a écrit a écrit :

 
je dirais que oui, mais a t'il une reelle incidence sur les décisions de SUN ? et qui y participe a part sun et apache (question réelle) ?




 
N'importe qui capable de sortir le chequier [:ddr555]. L'année dernière la boite ou je bosse en faisait partie.  
 
Le specification Lead est généralement un membre de SUN, mais dans chaque JSR, il y a un expert groupe, habituellement composé de gens qui vont utiliser l'implem de ce JSR. Donc ils les écoutent généralement.
 
Regarde les personnes dans le JSR 68 ( http://www.jcp.org/en/jsr/detail?id=68 ) , je ne vois pas sun ne pas tenir compte des besoins des experts vu les contraintes qu'ils doivent avoir.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°239567
lorill
Posté le 04-11-2002 à 21:54:35  profilanswer
 

MrX a écrit a écrit :

lorill> arf les langues ca engage des debats passioné sur l'appartenance a un groupes ou un autres,  rien a voir avec la science ki ne recherche ke l'efficience....




et les langages de prog ca engage pas des debats passioné sur l'appartenance a un groupes ou un autre peut-etre ?
 
on fait quoi en ce moment ?


Message édité par lorill le 04-11-2002 à 21:55:10
n°239568
MrX
Posté le 04-11-2002 à 21:55:14  profilanswer
 

arf lol avez po vu que c t du coté , gomen  :D

n°239569
kadreg
profil: Utilisateur
Posté le 04-11-2002 à 21:55:23  profilanswer
 

MrX a écrit a écrit :

 
donc a priori c du determinise  




 
Toi, tu n'as jamais programmé :)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°239571
MrX
Posté le 04-11-2002 à 21:56:37  profilanswer
 

lorill> ca du trollisme pur et simple  :D

n°239572
MrX
Posté le 04-11-2002 à 21:57:05  profilanswer
 

kadreg> ben si. vois pa en quoi ca te gene ?

n°239574
barbarella
Posté le 04-11-2002 à 22:01:17  profilanswer
 

lorill a écrit a écrit :

 
parce que ma réponse te plaisait pas ?  :kaola:  




 
jaloux :D

n°239597
chrisbk
-
Posté le 04-11-2002 à 22:47:20  profilanswer
 

Harkonnen a écrit a écrit :

 
Si tu le prends comme ça... tu l'auras voulu  :kaola:  
 
Java == lent
C == rapide
 
 :hello:  




 
ah nan, tain, je voulais eviter ce genre de truc :D
je parlais au niveau conceptuel, moi, bien loin des basses réalités de ce monde :O :D

n°239691
BifaceMcLe​OD
The HighGlandeur
Posté le 05-11-2002 à 10:16:47  profilanswer
 

C est un assembleur de haut niveau, conçu à l'origine pour développer des logiciels systèmes. Il était destiné à être utilisé par des programmeurs système, qui, pensait-on à l'époque (1969), étaient les meilleurs programmeurs du monde et donc les moins susceptibles d'erreurs de programmation (les fameux bugs). Ce qui explique pourquoi C offre des outils de programmation extrêmement puissants (exemple : les pointeurs), sans offrir de mécanismes de sécurité à côté.
Depuis cette époque, on s'est rendu compte que le postulat (programmeur système => pas de bug) était mauvais et qu'un programmeur système, tout humain qu'il était, faisait autant d'erreurs que les autres.
 
Java est un langage de haut niveau conçu historiquement pour développer du logiciel pour systèmes embarqués en réseau. Ceci explique sa grande portabilité (notemmant le mécanisme  de machine vituelle). Par ailleurs, c'est un langage beaucoup plus récent (créé au début des années 1990), donc qui inclut les retours de plus de 20 ans d'expérience de la programmation : pas de pointeurs (70 % des bugs en C/C++ sont des bugs mémoire liés à une utilisation incorrecte des pointeurs), typage fort, principaux concepts objet, exceptions, une librairie de classes standard implémentant les principaux design patterns, et (c'est prévu pour très bientôt) la généricité.

n°239693
nicolasm
Posté le 05-11-2002 à 10:32:48  profilanswer
 

BifaceMcLeOD a écrit a écrit :

C est un assembleur de haut niveau, conçu à l'origine pour développer des logiciels systèmes. Il était destiné à être utilisé par des programmeurs système, qui, pensait-on à l'époque (1969), étaient les meilleurs programmeurs du monde et donc les moins susceptibles d'erreurs de programmation (les fameux bugs). Ce qui explique pourquoi C offre des outils de programmation extrêmement puissants (exemple : les pointeurs), sans offrir de mécanismes de sécurité à côté.
Depuis cette époque, on s'est rendu compte que le postulat (programmeur système => pas de bug) était mauvais et qu'un programmeur système, tout humain qu'il était, faisait autant d'erreurs que les autres.
 
Java est un langage de haut niveau conçu historiquement pour développer du logiciel pour systèmes embarqués en réseau. Ceci explique sa grande portabilité (notemmant le mécanisme  de machine vituelle). Par ailleurs, c'est un langage beaucoup plus récent (créé au début des années 1990), donc qui inclut les retours de plus de 20 ans d'expérience de la programmation : pas de pointeurs (70 % des bugs en C/C++ sont des bugs mémoire liés à une utilisation incorrecte des pointeurs), typage fort, principaux concepts objet, exceptions, une librairie de classes standard implémentant les principaux design patterns, et (c'est prévu pour très bientôt) la généricité.




HUM et ke fait tu du C99????

n°239708
MrX
Posté le 05-11-2002 à 10:57:23  profilanswer
 

Bon ben mcloed, t'a l'explication la plus satisfaisante a l'heure, lorill deuxieme  :D ki dit mieux ?

n°239746
barbarella
Posté le 05-11-2002 à 12:13:07  profilanswer
 

BifaceMcLeOD a écrit a écrit :

C est un assembleur de haut niveau, conçu à l'origine pour développer des logiciels systèmes. Il était destiné à être utilisé par des programmeurs système, qui, pensait-on à l'époque (1969), étaient les meilleurs programmeurs du monde et donc les moins susceptibles d'erreurs de programmation (les fameux bugs). Ce qui explique pourquoi C offre des outils de programmation extrêmement puissants (exemple : les pointeurs), sans offrir de mécanismes de sécurité à côté.
Depuis cette époque, on s'est rendu compte que le postulat (programmeur système => pas de bug) était mauvais et qu'un programmeur système, tout humain qu'il était, faisait autant d'erreurs que les autres.




 
Non,
 
entretenir un prog C de 10000 lignes c'est pas trop problématique. Or a l'époque, ont ne pensait pas développer des prog de 1 millions de lignes, la raison est simple, on ne disposait pas du matros qui aurait pu faire tourner cela. même en 1987 disposer de 512 Ko de mémoire c'était bien, aujourd'hui on en a 1000 fois plus.
 
La taille des prog a suivi d'une certaine manière l'évolution du matos, et le C n'a pas été conçu pour faire des prog de 1 million de lignes
 
Le C n'est pas trop compliqué a apprendre, mais il implique une chose dans laquelle les entreprises n'investissent plus : l'experience ! et l'experience en C c'est bcp d'années :D
 
Un dernier point, pour des applications critiques (IA temps réel, système, ...) le C reste irremplassable, de même que l'assembleur dans des cas très critique.
 
sinon il est vrai que les pointeurs sont des générateurs de prob, mais leur interet n'est pas dans leur fiabilité, mais dans la soupplesse d'utilisation et les performances qu'ils peuvent proposer. L'experience permet de limiter considérablement les prob de pointeur, et une des régles en C c'est de faire dans le basique autant que faire ce peut. Faire un étalage de ses compétences techniques dans un prog ne mene a rien.


Message édité par barbarella le 05-11-2002 à 12:20:08
n°240047
leneuf22
Posté le 05-11-2002 à 19:02:54  profilanswer
 

Oué, comparer Java et C++, ce serait plutot comparer ton chat à la tapisserie de ta cuisine :)
 
Sérieusement, Java est un langage TRÈS orienté objet, pas comme le C qui n'a pas été conçu pour être objet (comme ça tout le monde est d'accord !), et pas comme C++ qui est plutot un langage hybride, c'est à dire un mix de Java et du C, avec une tendance objet très très forte. En Java tu ne peux faire que de l'objet, t'as po d'autres solutions.
 
Pour une compraison plus technique je préfère me taire car je viens juste de commencer le Java !
 
 
Pour répondre à ta dernière question, la syntaxe est proche mais Java est un langage à objets (je me répète), donc tu dois avoir une certaine manière de programmer. Perso je n'aime pas trop car on te force à penser d'une manière très précise.
D'un autre côté tu es sur d'avoir une appli qui tiendra la route à coup sur, très facilement lisible et maintenable par toi et par d'autres personnes. Le code est plus compréhensible : dans un langage à objets on n'aime pas trop les bidouilles, il faut respecter beaucoup de règles.
 
Pour finir, un programme objet (tous langages confondus) est plus long à élaborer (ya toute une analyse à faire), mais le temps de débogage est (généralement) beaucoup moins long.

n°240055
lorill
Posté le 05-11-2002 à 19:06:42  profilanswer
 

leneuf22 a écrit a écrit :

 En Java tu ne peux faire que de l'objet, t'as po d'autres solutions.




 
C'est tellement tout objet que même les types de bases sont des objets. Ah ben non tiens. Bref, java ca sux :D

n°240390
BifaceMcLe​OD
The HighGlandeur
Posté le 06-11-2002 à 10:22:47  profilanswer
 

barbarella> Je suis d'accord pour le début de ton post : C est très bien adapté pour des programmes de taille raisonnable (quelques milliers de lignes voire dizaines de milliers de lignes). Le problème est qu'il est aujourd'hui utilisé dans des projets pour lesquels il est plus du tout adapté (des dizaines de millions de lignes). Parce qu'il n'a pas été conçu pour cela.  
 
Au passage, excuse-moi, nicolasm, mais C99, pour moi, c'est du bricolage : les principaux problèmes du C restent dans cette nouvelle norme (et comment pourraient-ils disparaître ? En les éliminant, on se retrouverait avec un langage qui n'a rien à voir avec C).
 
Par contre, barbarella, je ne suis plus du tout d'accord quand tu dis que C est incontournable (enfin, je te cite, irremplaçable, mais avec un 'c cédille' ;) ), et en particulier dans les domaines que tu cites. On utilise les outils qu'on se donne (je traduis ma pensée : ce n'est pas parce que c'est le langage le plus connu que c'est le meilleur), et il existe d'autres langages bien plus adaptés aux gros projets, à des contraintes de sécurité fortes, qui permettent aux programmeurs de réduire le nombre de leurs bugs bien plus efficacement, et qui génèrent des programmes tout aussi rapides. Par exemple, comment expliques-tu que tous les logiciels embarqués dans les fusées (européennes ou américaines, au moins), les missiles, les avions ne soient pas écrits en C (ou en C++). Pourtant, on a besoin d'efficacité dans ces secteurs, non ? Le problème, c'est qu'on a aussi besoin de la garantie d'un fonctionnement quasiment sans bugs, ce que C ou C++ sont très loin d'offrir.
 
De toute façon, quand on a besoin d'optimiser radicalement du code, effectivement on peut se tourner vers l'assembleur pour les quelques fonctions les plus coûteuses, et c'est vrai quel que soit le langage, donc on n'a pas besoin de C parce qu'il génère les programmes soi-disant les plus efficaces.
 
Alors tu vas peut-être me demander "si un tel langage existait, pourquoi on utilise C ou C++ et pas ce langage-là ?". Je n'en sais rien. Ce fameux langage, Ada, reste cantonné à des secteurs de l'économie très particuliers, et la raison pour laquelle les autres secteurs de l'économie l'ignorent m'échappe totalement. Pour moi, c'est comme demander pourquoi Java a été un incroyable succès à la fin des années 90 alors que ce même langage a été un bide total 5 ou 6 ans auparavant (pire qu'Ada), quand Sun a essayé de le lancer pour la première fois sur le marché. Pourtant, à part son nom, ce premier langage était rigoureusement identique au Java que nous connaissons...


Message édité par BifaceMcLeOD le 06-11-2002 à 12:17:08
n°240444
barbarella
Posté le 06-11-2002 à 12:35:18  profilanswer
 

BifaceMcLeOD a écrit a écrit :

barbarella> Je suis d'accord pour le début de ton post : C est très bien adapté pour des programmes de taille raisonnable (quelques milliers de lignes voire dizaines de milliers de lignes). Le problème est qu'il est aujourd'hui utilisé dans des projets pour lesquels il est plus du tout adapté (des dizaines de millions de lignes). Parce qu'il n'a pas été conçu pour cela.  
 
Au passage, excuse-moi, nicolasm, mais C99, pour moi, c'est du bricolage : les principaux problèmes du C restent dans cette nouvelle norme (et comment pourraient-ils disparaître ? En les éliminant, on se retrouverait avec un langage qui n'a rien à voir avec C).
 
Par contre, barbarella, je ne suis plus du tout d'accord quand tu dis que C est incontournable (enfin, je te cite, irremplaçable, mais avec un 'c cédille' ;) ), et en particulier dans les domaines que tu cites. On utilise les outils qu'on se donne (je traduis ma pensée : ce n'est pas parce que c'est le langage le plus connu que c'est le meilleur), et il existe d'autres langages bien plus adaptés aux gros projets, à des contraintes de sécurité fortes, qui permettent aux programmeurs de réduire le nombre de leurs bugs bien plus efficacement, et qui génèrent des programmes tout aussi rapides. Par exemple, comment expliques-tu que tous les logiciels embarqués dans les fusées (européennes ou américaines, au moins), les missiles, les avions ne soient pas écrits en C (ou en C++). Pourtant, on a besoin d'efficacité dans ces secteurs, non ? Le problème, c'est qu'on a aussi besoin de la garantie d'un fonctionnement quasiment sans bugs, ce que C ou C++ sont très loin d'offrir.
 
De toute façon, quand on a besoin d'optimiser radicalement du code, effectivement on peut se tourner vers l'assembleur pour les quelques fonctions les plus coûteuses, et c'est vrai quel que soit le langage, donc on n'a pas besoin de C parce qu'il génère les programmes soi-disant les plus efficaces.
 
Alors tu vas peut-être me demander "si un tel langage existait, pourquoi on utilise C ou C++ et pas ce langage-là ?". Je n'en sais rien. Ce fameux langage, Ada, reste cantonné à des secteurs de l'économie très particuliers, et la raison pour laquelle les autres secteurs de l'économie l'ignorent m'échappe totalement. Pour moi, c'est comme demander pourquoi Java a été un incroyable succès à la fin des années 90 alors que ce même langage a été un bide total 5 ou 6 ans auparavant (pire qu'Ada), quand Sun a essayé de le lancer pour la première fois sur le marché. Pourtant, à part son nom, ce premier langage était rigoureusement identique au Java que nous connaissons...




 
salut,
 
 
autant pour moi sur le terme 'critique'. je faisais uniquement référence a l'aspect perf, pusique c'est mon soucis depuis 3 ans a présent, mais en même temps il est clair que si je devais developper un truc pour Ariane V, je ne choissirais en aucun cas le C, car l'aspect sécurité l'emporte sur tous les autres critères.
 
Toutefois je me dissocie assez, voir totalement de l'école actuelle de programmation sous certains aspects algorithmique et outils d'exploitations. Sans pouvoir entrer dans des détails, certains des algo que j'ai mis au point pour des prog d'IA temps réel et de BD documentaire, trouvent leur pleine mesure a travers des langages comme le C. Dans certaines situations, il existe une corrélation entre forme algorithmique et outils utlisés, c'est un aspect de la programmation qu'on omet souvent d'enseigner, car les enseignants eux-mêmes n'y ont pas  été forcément confronté.
 
Ainsi de part la pensée qu'impose le C je me suis aperçu que certains algo classique (dit lent) pouvaient être modifiés, pour me permettre de réaliser certains objetifs de perf. Je ne pense pas que si j'avais utilisé un langage objet j'aurais eu l'idée de faire certains trucs qui n'ont pas de sens apriori dans l'école (style) de prog actuelle.  
 
Mais je travaille sur des trucs particuliers et effectivement, ce n'est en aucun cas un raisonnement généralisable.

n°240453
BifaceMcLe​OD
The HighGlandeur
Posté le 06-11-2002 à 13:02:08  profilanswer
 

Désolé, mais je suis d'accord sur tous tes arguments sauf sur la conclusion qui recommande d'utiliser le C (peut-être n'as-tu pas utilisé, de manière intensive, assez de langages différents ?).
 
Ce que je reproche au C est que ce langage offre des outils extrêmement puissants sans véritable moyen de contrôle automatique et systématique par derrière. Ainsi, par exemple, le typage fort n'a aucune incidence sur les temps d'exécution, c'est simplement un outil que l'on se donne à la compilation pour qu'un programme -- le compilateur -- vérifie systématiquement et exhaustivement que ce que le programmeur a écrit est cohérent.
 
De plus, C use et abuse des implicites (et C++ est encore 10 fois pire). Exemple (bien sûr, un peu simplet, mais cela permet de mieux comprendre) : pourquoi devoir utiliser explicitement un pointeur pour un paramètre en sortie, alors que le compilateur pourrait prendre cela en charge automatiquement -- et sans risque d'erreur ! A l'exécution, le paramètre passé sera de toute façon un pointeur sur la zone mémoire à modifier, donc les performances seront identiques, mais au niveau source, le programmeur n'a plus à s'en préoccuper.
 
Enfin, tu le dis toi-même, en C, il vaut mieux programmer de manière basique plutôt que compliquée. Je suis 100 % d'accord ; mais je ne sais pas si nous en partageons la raison. Pour moi, la raison principale (parce que c'est celle qui à ma connaissance est la plus souvent vérifiée) en est que les optimisations que le compilateur peut apporter sur le code qu'il génère sont -- de très loin -- beaucoup plus efficaces que les optimisations à lucarne que le programmeur pourrait apporter dans son source, mais que le compilateur ne sait généralement pas bien optimiser le code trop sophistiqué. Donc un programme plus simple et apparemment naïf au niveau source permet souvent d'obtenir un programme plus rapide à l'exécution, parce que le compilateur a mieux réussi à l'optimiser.
 
Le problème, c'est que bien peu de programmeurs connaissent cette règle, et beaucoup optimisent (enfin, croient optimiser) leur code à la main, introduisant complexité, risque accru de bugs, et des coûts de maintenance plus importants. Pourquoi donc ne pas proposer aux programmeurs un langage dans lequel la solution la plus simple et la plus rapide à écrire est aussi la plus propre ?
 
Ainsi par exemple, avec un bon compilateur et une machine à peu près standard, il n'est pas plus efficace de parcourir un tableau par un pointeur plutôt que par un indice : parce que c'est nécessaire, le compilateur transformera la boucle sur indice par une boucle avec un pointeur baladeur. Mais combien de programmeurs savent cela ?
 
Or en C, il est aussi rapide d'écrire l'un ou l'autre des boucles ; mais l'une est beaucoup plus susceptible d'erreurs de programmation (et suivant la façon dont on l'écrit, elle peut aussi être beaucoup plus délicate, donc coûteuse, à maintenir et à faire évoluer dans le temps).
 
Pourquoi ne pas utiliser un langage qui autorise ces deux écritures, mais qui rend la manière sophistiquée plus lourde à écrire au niveau source. On n'interdit rien, simplement, comme cela, on est à peu près sûr que si le programmeur choisit la manière sophistiquée, il le fait pour une bonne raison, parce que cela lui prendra nettement plus de temps.
 
edit> Pour info, Ada a été créé en 1983, et à l'époque, il n'intégrait pas les concepts objets tels qu'on les entend aujourd'hui, en particulier l'héritage et le polymorphisme. On l'utilisait donc essentiellement comme un langage procédural, même si l'encapsulation était déjà un mécanisme fondamental de ce langage. Aujourd'hui Ada est, comme C++, un langage objet hybride, qui offre tous les mécanismes de l'objet sans imposer leur utilisation.


Message édité par BifaceMcLeOD le 06-11-2002 à 13:14:37
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  C vs Java > c ti quoi dont la différence

 

Sujets relatifs
JNI Utiliser une connection Java dans une dll C/C++[JAVA] obtenir la précision voulue pour un nombre....
[Java] Tranfert de fichier client/server ????[java] comment faire une application en plein ecran ?
[JAVA] Help! upload + envoi d'email avec pièce jointe[java] il se fou du monde le jbuilder !!!!
[Delphi]Interface 1 Wire Micro Lan avec Driver Java ! c est possible ?[Java]TCP Client ne marche que partiellement pkoi?[Resolu]
[Perl, C, C++, JAVA, etc.] besoin de conseil sur prog à faire[VISUAL C++]Difference entre Release/Debug
Plus de sujets relatifs à : C vs Java > c ti quoi dont la différence


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR