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

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

Marsh Posté le 04-11-2002 à 20:22:55    

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 ?

Reply

Marsh Posté le 04-11-2002 à 20:22:55   

Reply

Marsh Posté le 04-11-2002 à 20:24:42    

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

Reply

Marsh Posté le 04-11-2002 à 20:26:27    

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 ?

Reply

Marsh Posté le 04-11-2002 à 20:40:24    

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

Reply

Marsh Posté le 04-11-2002 à 21:14:18    

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

Reply

Marsh Posté le 04-11-2002 à 21:15:23    

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
Reply

Marsh Posté le 04-11-2002 à 21:33:29    

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)
Reply

Marsh Posté le 04-11-2002 à 21:33:38    

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 ?)

Reply

Marsh Posté le 04-11-2002 à 21:35:02    

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 ;)
 

Reply

Marsh Posté le 04-11-2002 à 21:35:57    

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

Reply

Marsh Posté le 04-11-2002 à 21:35:57   

Reply

Marsh Posté le 04-11-2002 à 21:35:59    

ouin kan c kon repond  :(

Reply

Marsh Posté le 04-11-2002 à 21:36:09    

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 !
Reply

Marsh Posté le 04-11-2002 à 21:36:34    

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:

Reply

Marsh Posté le 04-11-2002 à 21:39:29    

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

Reply

Marsh Posté le 04-11-2002 à 21:40:29    

lorill a écrit a écrit :

 
 
objets roxorent, classes suxorent  :na:  




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

Reply

Marsh Posté le 04-11-2002 à 21:40:47    

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]

Reply

Marsh Posté le 04-11-2002 à 21:44:02    

Le JCP est-il un comité ...
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-11-2002 à 21:45:50    

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) ?

Reply

Marsh Posté le 04-11-2002 à 21:46:25    

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++ ?

Reply

Marsh Posté le 04-11-2002 à 21:48:32    

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 !

Reply

Marsh Posté le 04-11-2002 à 21:50:04    

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

Reply

Marsh Posté le 04-11-2002 à 21:51:16    

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....

Reply

Marsh Posté le 04-11-2002 à 21:53:52    

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:

Reply

Marsh Posté le 04-11-2002 à 21:54:30    

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 !
Reply

Marsh Posté le 04-11-2002 à 21:54:35    

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
Reply

Marsh Posté le 04-11-2002 à 21:55:14    

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

Reply

Marsh Posté le 04-11-2002 à 21:55:23    

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 !
Reply

Marsh Posté le 04-11-2002 à 21:56:37    

lorill> ca du trollisme pur et simple  :D

Reply

Marsh Posté le 04-11-2002 à 21:57:05    

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

Reply

Marsh Posté le 04-11-2002 à 22:01:17    

lorill a écrit a écrit :

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




 
jaloux :D

Reply

Marsh Posté le 04-11-2002 à 22:47:20    

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

Reply

Marsh Posté le 05-11-2002 à 10:16:47    

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é.

Reply

Marsh Posté le 05-11-2002 à 10:32:48    

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????

Reply

Marsh Posté le 05-11-2002 à 10:57:23    

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

Reply

Marsh Posté le 05-11-2002 à 12:13:07    

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
Reply

Marsh Posté le 05-11-2002 à 19:02:54    

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.

Reply

Marsh Posté le 05-11-2002 à 19:06:42    

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

Reply

Marsh Posté le 06-11-2002 à 10:22:47    

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
Reply

Marsh Posté le 06-11-2002 à 12:35:18    

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.

Reply

Marsh Posté le 06-11-2002 à 13:02:08    

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
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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