Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dans le fond, le C++ c'est juste une librairie de C

Et donc ça reste du C!

11 février 2008 à 6:09:07

Pour programmer en C++, il faut charger une librairie de C, n'est-ce pas?

Supposons qu'on veuille coder non pas en orienté objet comme avec le C++ mais orienté 3D ou orienté graphiques ou orienté quoi-que-ce-soit, on créerait une librairie pour chacune de nos orientations n'est-ce pas? Mais ultimement ça resterait du C, n'est-ce pas?

Donc le C++ n'est dans le fond qu'une librairie de C et non pas un langage en soi comme beaucoup veulent le faire croire.

Par ailleurs, il est étonnant que nul n'ait pensé créer un langage à partir du Assembler comme l'ont fait les auteurs du C. Un autre langage de bas niveau. Faut-il conclure que le C était impossible à battre? Qu'il est parfait?

Par contre les langages de haut niveau programmés à partir du C pullulent: Python, Perl, Tcl-Tk, PHP, Visual C, Java, etc. etc.

Pour la distinction Assembler, langages de bas niveau et de haut niveau, voir:
http://www.siteduzero.com/forum-83-239472-votre-avis-a-propos-d-un-langage.html

Qu'en pensez-vous?
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 6:49:50

Salut,

Je ne suis pas un expert en programmation, donc je risque de me tromper, mais voici ce que j'ai appris. Le C++, c'est une amélioration du C ( même pas du vrai orienté objet, comme l'est le JAVA par exemple ). Ensuite, pour ce qui est de créer un autre langage de bas niveau à partir de l'assembleur... je sais pas, mais je ne crois pas que ce n'est pas fait parce que le C est parfait. Le C à ses qualité comme ses défauts ( comme tous les langages quoi! ).
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 7:51:21

Le C et le C++ possèdent des points en commun c'est sûr mais ce sont bien des langages à parts. Autant la majorité du code C pourrait être compilé en C++ mais le reste est absolument impossible sans modifications.
Pour ce qui est de la bibliothèque C à charger je ne vois pas de ce que tu parles... Peut-être du CRT, mais c'est autre chose, ce n'est pas une bibl' mais un runtime qui fait quelques petites choses (importantes).

Au fait, d'autres langages sont basés sur le langage d'assemblage qui est lui le plus bas niveau possible par exemple le fortran.

Et penser que le C est le meilleur parcequ'il est utilisé pour "créer" d'autres langages, je trouve ça un peu réducteur: si le C était parfait pour tout partout, d'autres langages ne seraient pas créés :-°
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 9:13:55

Intéressant ce que vous dites Attic!

Ainsi le Fortran est aussi programmé en Assembler. Et sans doute aussi le Cobol?

Il faudrait aller voir du côté de Wikipedia pour savoir quels autres langages sont programmés en Assembler.

http://fr.wikipedia.org/wiki/Assembleur

Je n'ai pas dit que le C est parfait. Je me suis simplement posé la question de savoir pourquoi d'autres langages ne sont pas programmés en Assembler.
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 11:31:39

Salut,

Citation : Rob-Montréal

Je n'ai pas dit que le C est parfait. Je me suis simplement posé la question de savoir pourquoi d'autres langages ne sont pas programmés en Assembler.


Au hasard, parce que programmer un compilateur (ou un interpréteur, dans le cas d'un langage non-compilé) en assembleur serait une tâche dantesque, qui ne se justifierait pas vraiment compte tenu de la disponibilité de langages de plus haut niveau permettant de faire la même chose beaucoup plus facilement ?
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 12:01:49

Je connais un petit peu l'assembleur, je comprend pourquoi les langages ne sont plus créé à partir de ce langage, pour écire un if avec une instruction dedans il faut plus de 20 lignes -_-
Si c'est possible en C, alors c'est normal qu'ils le fassent en C !
L'assembleur fait peur, et c'est normal ! lol
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
11 février 2008 à 12:09:57

Faut quand même pas pousser avec l'ASM.

  1. cmp eax, 4 ; if (eax == 4)
  2. jne else ; {
  3. else: ; } else {
  4. ; Instructions à exécuter si la condition est fausse
  5. ; }


L'ASM est loin d'être aussi rustique qu'on le dit ...

(plus je m'intéresse à ce langage, plus je me rend compte que c'est facile et complet :o )
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 17:09:10

On en apprend des choses sur ce site! Ainsi, Goutte GD, en Assembler, on ne compile pas ni on n'interprète pas son code! Mais alors que fait-on? On le sauvegarde? Et s'il y a des erreurs, comment le sait-on?

--------------------------
1337833K: (plus je m'intéresse à ce langage, plus je me rend compte que c'est facile et complet )

Rob-Montréal: Et d'une rapidité presqu'alarmante! Les commandes s'adressent directement au CPU! On ne peut pas avoir plus rapide!

Comme je l'ai écrit ailleurs sur le site:
On peut dire que déjà le langage C est très rapide. On appuie sur Retour et hop on a la réponse. Eh bien Assembler est encore plus rapide. On n'a même pas formulé la question dans sa tête qu'il nous donne la réponse! Il devine même nos questions! Ça c'est de la rapidité! Ça c'est de l'intelligence artificielle! :-) De la communication extra-sensorielle même! :-)

---> http://www.siteduzero.com/forum-83-239472-p1-votre-avis-a-propos-d-un-langage.html

On peut dire que le C c'est comme quand tu commandes un pizza. Tu raccroches et le livreur sonne à ta porte avec la pizza! :-

Avec l'ASM, tu penses manger une pizza, tu te retournes et elle est déjà sur ta table prête à être mangée! :-

--------------------------
À propos de la question initiale, le C++, je vois d'après la réponse de Attic que la syntaxe du C++ (les classes, public, private, etc.) est lisible par le compilateur de C et qu'il n'y a pas besoin de charger une librairie de C++.

On peut donc conclure que le C et le C++ étaient fortement embriqués l'un dans l'autre et les programmeurs de C et C++ ne les ont pas véritablement dissociés. Leur idée initiale était de concevoir un langage qui permettrait de faire du linéaire et de l'objet, l'un et l'autre, l'un avec l'autre, l'un sans l'autre etc.

Bref, ils voulaient offrir aux programmeurs le meilleur des deux mondes, quoi. Bien pensé!
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 18:22:38

Citation : Rob-Montréal

Ainsi, Goutte GD, en Assembler, on ne compile pas ni on n'interprète pas son code! Mais alors que fait-on? On le sauvegarde?


Ben, on l'assemble... on le fait passer à la moulinette d'un assembleur qui traduit les mnémoniques et leur opérandes en langage machine.

Citation : Rob-Montréal

Et d'une rapidité presqu'alarmante! Les commandes s'adressent directement au CPU! On ne peut pas avoir plus rapide!


Ça n'a rien de spécifique à l'assembleur. Une fois compilé, un code en C c'est du code machine qui "s'adresse directement au CPU". C'est pareil pour n'importe quel langage qui produit du code machine au final (c'est-à-dire tous les langages à l'exception des langages de script --- ou des langages "intermédiaires" comme le Java ou les langages .NET).

Citation : Rob-Montréal

On peut dire que déjà le langage C est très rapide. On appuie sur Retour et hop on a la réponse. Eh bien Assembler est encore plus rapide. On n'a même pas formulé la question dans sa tête qu'il nous donne la réponse! Il devine même nos questions! Ça c'est de la rapidité! Ça c'est de l'intelligence artificielle! :-) De la communication extra-sensorielle même! :-)

[...]

On peut dire que le C c'est comme quand tu commandes un pizza. Tu raccroches et le livreur sonne à ta porte avec la pizza! :-
Avec l'ASM, tu penses manger une pizza, tu te retournes et elle est déjà sur ta table prête à être mangée! :-


Euh... mais oui, bien sûr...

Citation : Rob-Montréal

À propos de la question initiale, le C++, je vois d'après la réponse de Attic que la syntaxe du C++ (les classes, public, private, etc.) est lisible par le compilateur de C et qu'il n'y a pas besoin de charger une librairie de C++.


Attic a dit ça ? Je ne dois plus savoir lire, moi...

Non, les classes et tout ce qui va avec (comme les attributs de visibilités sur les champs et les méthodes) sont totalement incompréhensibles par un compilateur C. Essaye de compiler un code C++ (même sans aucune classe, d'ailleurs : les classes ne sont pas la seule différence entre le C++ et le C) avec un compilateur C...

En revanche (et c'est celà qu'Attic a voulu dire, AMHA), un compilateur C++ peut compiler un code C, la plupart du temps (il y a quand même quelques points qui pourraient poser problème, mais je ne me souviens plus desquels exactement).

Quant à l'histoire du C++ par rapport au C, en très résumé : initialement, le C++ (d'abord appelé "C with classes") était une simple surcouche objet du C. En fait, les premiers compilateurs C++ étaient implémentés sous la forme d'un "traducteur" qui transformait le code C++ en code C "pur" --- lequel code était ensuite compilé par un compilateur C "classique".

Avec le temps, le C++ s'est "émancipé", si je puis dire, et s'est finalement totalement détaché du C. Il a acquis de nombreuses autres caractéristiques (en plus de la POO) qui le distinguent de ce langage. Et plus aucun compilateur C++, aujourd'hui, ne passe par une étape de génération de code C.

En gros.
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 18:28:36

Citation : gouttegd


En revanche (et c'est celà qu'Attic a voulu dire, AMHA), un compilateur C++ peut compiler un code C, la plupart du temps (il y a quand même quelques points qui pourraient poser problème, mais je ne me souviens plus desquels exactement).



C'est ce que je voulais dire ^^' .
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 18:56:38

Citation : Rob-Montréal

Pour programmer en C++, il faut charger une librairie de C, n'est-ce pas?


Non. C et C++ sont 2 langages différents et incompatibles. Ils sont définis par 2 documents officiels (ISO) différents.

Citation : Pas de titre


Supposons qu'on veuille coder non pas en orienté objet comme avec le C++ mais orienté 3D ou orienté graphiques ou orienté quoi-que-ce-soit,<SNIP massif>


STOP !
Je crois que tu devrais commencer par revoir les bases de l'informatique et cesser d'imaginer je ne sais quoi. En tant qu'autodidacte à la formation théorique quasiment inexistante, je sais parfaitement de quoi je parle, étant passé par là...

L'informatique, c'est sérieux et il y a un important vocabulaire à maitriser avant de pouvoir s'exprimer sur le sujet. Wikipédia est ton amie. Tes connaissances sont partielles et superficielles. Avant d'aller plus loin tu dois absolument te remettre à jour.

Tu vis dans une sorte de rêve éveillé où tu 'crois que', tu 'penses que', mais non. La réalité est différente. Il faut revenir sur terre. Tu nous fait perdre notre temps en corrections infinies...

Pose des questions précises si quelque chose te manque, mais si'il te plait, épargne nous tes hypothèses hasardeuses et tes réflexions de comptoir... Ca sent trop le troll pour être honnête...

Et sache que le seul langage que comprennes la machine est le ... langage machine ! Oui, il fallait oser le dire. C'est du numérique pur (binaire).

Le langage assembleur est une interprétation directe du langage machine en langage humain (une humain formé, quand même...). A chaque code machine est associé directement et de manière bijective (c'est donc réversible -> désassembleur), une instruction machine (ensemble opcode + paramètres).

Exemple bidon inspiré de l'assembleur 68k :

  1. move $123, D1


qui signifie
  1. D1 <- 123h
est codé avec les 3 octets suivants (hexadécimal):
  1. 41 01 23

soit :
  1. 41 = 'move immediate value to D1'
  2. 01 23  = 'immediate value $123'

Tous les autres langages aboutissent évidemment en final (après compilation et/interprétation), en langage machine, évidemment.
  • Partager sur Facebook
  • Partager sur Twitter
Music only !
11 février 2008 à 23:22:06

Citation : -ed-

l'assembleur 68k


Et le X86 t'en fais quoi ? :p
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2008 à 23:26:59

Objective Caml est un langage qui compile directement en code natif (ce que tu appelles "assembleur"), et qui donc (pour son compilateur natif) ne repose pas sur le langage C (même si on peut l'interfacer avec le C pour avoir accès par exemple aux fonctions sytème).

Non, tous les langages ne sont pas construits par dessus le C.
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 0:41:17

Merci Goutte GD pour ton excellente explication!

Je voulais savoir quels étaient les rapports entre C et C++ et tu as très bien répondu. Il y a d'abord eu le C et ensuite le C++ qui somme toute n'avait rien à voir et s'est greffé.

Comme tu l'écris: ''Quant à l'histoire du C++ par rapport au C, en très résumé : initialement, le C++ (d'abord appelé "C with classes") était une simple surcouche objet du C.''

----------------------
Ed, le but des forums est d'apprendre et d'approfondir ses connaissances. Si les gens qui se posent des questions et qui en posent t'exaspèrent, alors les forums ne sont pas tes amis.

Quand tu vas au magasin, tu ne reproches pas aux gens d'y faire leurs courses puisque le but d'un magasin c'est justement d'y faire ses courses!

OK!
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 1:37:19

Euh, de rien.

Mais tu cherches quoi au juste ? Dans tes propos, j'ai du mal à cerner ce que tu as compris et ce que tu veux comprendre, ce qui est une question et ce qui est une affirmation...

Par ailleurs, si tu veux "apprendre et approfondir tes connaissances", un forum n'est pas forcément l'endroit le plus approprié, ne serait-ce qu'en raison de la fiabilité parfois douteuse des informations qu'on y trouve : par exemple, comment sais-tu que je ne t'ai pas raconté n'importe quoi ? Si ça se trouve, j'ai inventé tout ce que j'ai dit afin de faire mon intéressant... Ou, sans aller jusqu'au mensonge délibéré, peut-être que j'ai répondu à côté de la plaque parce que je ne m'y connais pas autant que j'aime à le (faire) croire.

(Bon, je n'ai pas raconté n'importe quoi. Mais j'ai l'impression que si je l'avais fait, tu m'aurais cru de la même façon.)

Je plussoie -ed- : un forum est fait pour poser des questions précises sur des points précis, pas plus. Si tu veux de la documentation plus générale, tu en trouveras pléthore sur le net ou dans toute bonne bibliothèque.

C'est seulement lorsqu'on achoppe sur un point particulier qu'on demande de l'aide sur un forum. Dans le cas de ce site par exemple, ceux qui veulent y apprendre le C ne vont pas tête baissé vers ce forum, ils commencent par le tuto proposé par l'administrateur du site ; ensuite, s'ils ont des questions, ils les posent sur le forum après avoir vérifié si la question n'a pas déjà été posée (ah non, j'oubliais ça ils ne le font pas :-° ).

À cet égard, le forum se rapproche davantage d'un "service après vente" que d'un "magasin" (à cette différence, sensible, que nous ne sommes pas des employés du SAV !).
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 1:44:23

Il y a des choses qui ne sont pas dans les bouquins ni sur Wikipedia.

Par exemple cet étrange accouplement de deux langages qui n'ont rien à voir l'un avec l'autre: C et C++.

Je me suis toujours demandé si leur accouplement n'était pas justement une sorte d' erreur historique et je n'ai jamais trouvé la réponse ailleurs.

Plusieurs programmeurs ont tenté de me faire croire que le ++ du C c'était pour désigner la version améliorée du C; or quand j'ai regardé de plus près je n'ai rien vu d'amélioré. Au contraire!

Donc merci au service d'après vente d'avoir éclairé ma lanterne! `-)



  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 1:51:28

Laisser-tomber mon post ! Désolé pour le flood .
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 2:20:58

Citation : rob-montréal

Il y a des choses qui ne sont pas dans les bouquins ni sur Wikipedia.


Aha! fr.wikipedia.org Power ! :D

http://fr.wikipedia.org/wiki/c++

Pour tes Questions (ou suppositions farfelue), regarde la section Fonctionnalités introduites par C++ et la section Histoire de C++.
  • Partager sur Facebook
  • Partager sur Twitter
Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
12 février 2008 à 2:23:07

Hum, tu crois que je la sors d'où, mon histoire (très) résumée du C++ ? D'un livre, pardi ! J'essaierai de remettre la main sur son titre exact et le nom de ses auteurs, si ça t'intéresse. [Edit]Ah ben tiens, pas la peine, on retrouve l'histoire sur Wikipédia. :) [/Edit]

Citation : Rob-Montréal

Plusieurs programmeurs ont tenté de me faire croire [...]


Voilà bien un problème typique des fora (bon, pas seulement des fora, mais c'est quand même exacerbé par rapport à ce qui se passe IRL, sauf si on parle politique) : tu tomberas régulièrement sur quelqu'un qui voudra absolument te convaincre de penser la même chose que lui.

(Au passage, savais-tu que Slackware Linux est la meilleure distribution GNU/Linux de tous les temps ? Que Vim est le seul éditeur de texte digne de ce nom ? Que Qt est la seule solution réellement valable pour la conception d'interface graphique ? Non ? ah, ben heureusement que tu es tombé sur moi ! ^^ )

Citation : Rob-Montréal

[...] que le ++ du C c'était pour désigner la version améliorée du C; or quand j'ai regardé de plus près je n'ai rien vu d'amélioré. Au contraire!


Le coup du "++", il faut le prendre dans le sens d'un "jeu de mot" (version programmeur) : le C++, c'était initialement, comme je l'ai indiqué plus haut, une surcouche, donc une "incrémentation", du C. Ce n'est plus le cas aujourd'hui (le C++ est devenu un langage à part, totalement indépendant du C), mais le nom est resté tel quel.

Après, que l'amélioration entre le C et le C++ soit réelle ou non, c'est une autre question, et typiquement un sujet à troll...
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 2:52:48

GoutteGD, mdr. Au Canada, Vim est une marque de récurrent, de savon, comme Ajax! :-)

Il y a par contre des gens qui ne jurent que par son concurrent (dont j'ai oublié le nom). Je parle de l'éditeur.

Moi je m'en balance de la vérité et de la justesse des observations; j'aime bien avoir des opinions, des avis, des perceptions. Et on en trouve des opinions sur les forums! Toutes sortes donc j'aime bien! Et c'est vivant en plus!

Je ne suis vraiment pas un lecteur d'encyclopédies. Je ne cherche pas les avis des grands experts.

  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 9:56:29

Citation : Vince33

Citation : -ed-

l'assembleur 68k


Et le X86 t'en fais quoi ? :p


Bah, justement, j'évite les reflexes trop 'x86-oriented'...

Citation : Rob-Montréal

Moi je m'en balance de la vérité et de la justesse des observations;


Ah c'est malin, mon trollometre a explosé. Tu m'en payes un neuf ?

Tes propos n'ont rien à faire sur un forum technique. Il y a des forums généraux pour ce genre de discussion. Tu es le bienvenu ici si tu as une question précise sur la programmation en langage C, sinon, tu peux aller jouer ailleurs.


  • Partager sur Facebook
  • Partager sur Twitter
Music only !
12 février 2008 à 19:59:24

Ed, tu me sembles être une personne très chaleureuse et très acceuillante de nature si on se fie sur tes propos toujours très polis, très chaleureux et si compréhensifs! :-)

Je propose de demander d'être nommé au comité d'acceuil! :-) Tu as vraiment des qualités naturelles pour cette tâche!

Et en plus, tu ne sembles pas t'y connaître véritablement sur les buts de ce forum: une demande d'opinions sur la raison du lien C/C++ est une question on-ne-peut-plus-technique.

Je pense que c'est toi qui devrais aller jouer ailleurs et y apporter ce qui te caractérise: ton manque de politesse, ton manque de civilité, de savoir-vivre et ta rancoeur proverbiale.
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 20:26:17

Citation : Rob-Montréal

Ed, tu me sembles être une personne très chaleureuse et très acceuillante de nature si on se fie sur tes propos toujours très polis, très chaleureux et si compréhensifs! :-)

Je propose de demander d'être nommé au comité d'acceuil! :-) Tu as vraiment des qualités naturelles pour cette tâche!

Et en plus, tu ne sembles pas t'y connaître véritablement sur les buts de ce forum: une demande d'opinions sur la raison du lien C/C++ est une question on-ne-peut-plus-technique.

Je pense que c'est toi qui devrais aller jouer ailleurs et y apporter ce qui te caractérise: ton manque de politesse, ton manque de civilité, de savoir-vivre et ta rancoeur proverbiale.



Mouais moi je pense que c'est plutôt à toi de te remettre en question. On te fait des remarques, pourquoi s'offenser ? A toi de les prendre en compte et sache que sans Ed, ce forum ne serait plus le même !
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 22:31:29

Je ne suis pas du tout offensé!

Je ne dis pas aux gens d'aller jouer ailleurs. Je suis respectueux et civilisé et j'attends des autres qu'ils le soient aussi.

C'est la moindre des choses. On est tout de même dans la Jungle!

Enfin, pas moi....
  • Partager sur Facebook
  • Partager sur Twitter
12 février 2008 à 22:55:13

Bon on arrête le massacre svp. Rob-Montréal, je t'ai à l'oeil.
  • Partager sur Facebook
  • Partager sur Twitter

If you'd like to join us, read "How do we work at OpenClassrooms"! :)