Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.
Répondre à la discussion
Page 1 sur 3 12 DernièreDernière
Affichage des résultats 1 à 30 sur 67

Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.



  1. #1
    Uhue

    Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.


    ------

    Bonjour. Je tiens à préciser que c'est une vision simpliste. Voici ce que je pense et vous pouvez me corriger et m'apporter des précisions.

    Le langage C/C++ permet de donner des instructions à la machine/ordinateur via un langage hexadécimale (?) pour que l'ordinateur puisse à partir des impulsions électriques (bits 0 et 1) afficher sur l'écran du texte et image sous forme de pixels. Il y a tout un processus où il y a communication entre la mémoire et le processeur. Le processeur notamment traduit en langage machine ce que l'on a écrit via un logiciel d'écriture (Notepad++...) du langage C/C++. Le C/C++ est en quelque sorte un dictionnaire qui permet d'afficher nos pensées via des pixels et impulsions électriques sur l'écran d'ordinateur (?). Pourquoi y-a-t-il autant de différents langages informatiques alors ?

    Merci de votre aide !

    -----

  2. #2
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    Le langage C/C++ permet de donner des instructions à la machine/ordinateur via un langage hexadécimale (?)
    C'est plus simple que ça : le processeur ne comprend que des instructions sous forme de chiffres. Après qu'on dise que c'est du binaire, de l'hexadécimal, des octets, ce n'est pas le plus important.
    Le langage C/C++ permet comme plein d'autres d'écrire des instructions à un niveau d'abstraction plus élevé et avec du texte. Ensuite, on le transforme dans ce que comprend le processeur.

    Citation Envoyé par Uhue Voir le message
    pour que l'ordinateur puisse à partir des impulsions électriques (bits 0 et 1)
    Là, tu es descendu d'un cran. Tout en bas, on peut ramener les choses à du 0 et du 1. Mais entre ça et le C/C++, on travaille plutôt au niveau des "mots", de 8 à 64 bits.

    Citation Envoyé par Uhue Voir le message
    afficher sur l'écran du texte et image sous forme de pixels.
    En gros oui.

    Citation Envoyé par Uhue Voir le message
    Il y a tout un processus où il y a communication entre la mémoire et le processeur.
    Oui

    Citation Envoyé par Uhue Voir le message
    Le processeur notamment traduit en langage machine ce que l'on a écrit via un logiciel d'écriture (Notepad++...) du langage C/C++.
    Non. Ca, c'est le compilateur C/C++ qui fait ça. C'est juste un programme qui fait cette traduction.

    Le C/C++ est en quelque sorte un dictionnaire qui permet d'afficher nos pensées via des pixels et impulsions électriques sur l'écran d'ordinateur (?).
    Non. C'est un langage qui permet de donner des instructions à l'ordinateur.

    Pourquoi y-a-t-il autant de différents langages informatiques alors ?
    Parce qu'il y a plein de domaines d'application et donc plein de langages spécialisés.
    Parmi les 1ers tu avais le Fortran qui était adapté au calcul scientifique, le Cobol qui était bien pour l'informatique d'entreprise très vite ensuite le Lisp qui permettait de faire de l'intelligence artificielle.

    Ensuite, on a continué à en faire plein avec des usages différents, on a aussi progressé, mis en place des abstractions plus grandes, etc.
    Et régulièrement, on a voulu faire 1 seul langage pour les remplacer tous et dans la norme les lier (PL/1, Ada) mais cela n'a jamais vraiment pris.
    Dernière modification par JPL ; 25/03/2019 à 21h44. Motif: Correction des balises Quote

  3. #3
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Merci des précisions, très intéressant.

    Là, tu es descendu d'un cran. Tout en bas, on peut ramener les choses à du 0 et du 1. Mais entre ça et le C/C++, on travaille plutôt au niveau des "mots", de 8 à 64 bits.
    Tout en bas ? C'est-à-dire le transistors (ou tout autre composant électrique) ? Le processeur est capable de lire des "mots" de 8/32/64 bits ? Quel est la différence entre Windows 32 bits et 64 bits ?

    J'avoue que j'ai encore du mal à bien saisir l'intérêt d'avoir autant de langages informatiques mais je vais me renseigner. Très intéressant le langage PL/1, Ada.

  4. #4
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    Tout en bas ? C'est-à-dire le transistors (ou tout autre composant électrique) ?
    Pas tout en bas mais presque.
    Au niveau transistor, on est à la frontière informatique/électronique/physique et on traite des courants qui représentent du binaire.

    Citation Envoyé par Uhue Voir le message
    Le processeur est capable de lire des "mots" de 8/32/64 bits ?
    Oui. Cela veut dire qu'il échange avec la mémoire et manipule directement 8, 16, 32, ou 64 bits (et même d'autres valeurs mais on va faire simple).

    Citation Envoyé par Uhue Voir le message
    Quel est la différence entre Windows 32 bits et 64 bits ?
    Windows 32 a été conçu et compilé pour des processeurs qui traitent des mots de 32 bits. Cela veut notamment dire que la mémoire est limité à 4 Go parce que c'est 2 puissance 32.
    Depuis, les processeurs 64 bits qui permettent de gérer beaucoup plus de mémoire se sont généralisés et on a donc fait une version de Windows capable de profiter de cela.

    Là aussi, je simplifie un peu mais pas tant que ça.

    Citation Envoyé par Uhue Voir le message
    J'avoue que j'ai encore du mal à bien saisir l'intérêt d'avoir autant de langages informatiques mais je vais me renseigner
    Quand a un peu d'expérience en programmation, cela devient évident.
    Dernière modification par pm42 ; 25/03/2019 à 22h19.

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Pour cette histoire de langages :

    Tu as des langages fait pour l'enseignement (Logo, Scheme), d'autres pour la programmation très rapide (Python), d'autres pour la recherche (Haskell), d'autres pour la performance (C), etc.
    Après, on peut très souvent utiliser un langage pour autre chose que ce pourquoi il a été conçu : en terme de puissance, on peut montrer théoriquement qu'ils sont tous capable de faire la même chose.

    Mais si tu veux par exemple lire un fichier de type CSV (valeurs avec virgule), séparer les colonnes, filtrer les lignes, le couper en 2 morceaux, bref tout ce qu'on fait avant de faire de l'intelligence artificielle, tu vas avoir besoin de 3 lignes de Python et de 50 lignes de C++.

    Par contre, si tu dois écrire un programme de calcul scientifique, il ira beaucoup, beaucoup plus vite en C/C++ qu'en Python.

    Si tu dois écrire un gros site Web, tu éviteras le C/C++ et le Python et tu regarderas plutôt du coté de Java, PHP et pas mal d'autres.

  7. #6
    Ikhar84
    Animateur Informatique

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Bonsoir,

    Je ne veux pas couper pm dans ses expliquations claires et "vulgarisées".
    Mais avant de parler de langages différents et de bits, on peut classer les langages en deux grandes familles, ou trois selon le niveau d'abstraction.
    Je parles des langages interprétés et des langages compilés (ou pseudo compilés), pm l'aura compris.

    Pour les langages compilés, ce sont de simples script, du texte, qui va être analysé par un programme spécifique, qui va "réagir" à ces instructions.
    On trouve, typiquement, dans cette famille, les langages dédiés au web (qui ne sont pas limités à cette famille, c'est une simplification, ni que cette famille est limitée à cela), je pense à HTML, CSS, Javascript (qui peut être compilé), PHP (qui peut aussi être "compilé", ce qui reste à interprétation),...

    On aura ensuite les langages compilés, qui sont écrits sous forme textuel, mais qui doivent passer "à la moulinette" pour pouvoir être transformés en un langage, le binaire, compréhensible par le processeur.
    La phase de compilation comprend souvent des phases préliminaires: l'analyse syntaxique, l'édition de liens, etc... mais le résultat est "langage machine" en binaire, vulgairement une suite de 0 et de 1.
    Ce sont les langages "classiques" C, C++, ...

    Enfin, on trouve des langages dits "pseudo-compilés", qui ont toutes les apparences d'un langage compilés, mais dont le résultat executable n'est pas destiné à être directement compris par le matériel (le processeur), mais un intermédiaire: la machine virtuelle.
    C'est une sorte de processeur virtuel, trés proche des interpréteurs des langages interprétés, mais qui "n'avale" pas un texte simple mais une forme particulière de langage machine, binaire.
    Ces langages sont destinés à être portable, c'est à dire à fonctionner sur tout système sur lequel la machine virtuelle pour laquelle ils sont destinés est installée, sans tenir compte de la plateforme physique réelle, en théorie...
    Dans cette famille, on trouve Java, les langages .Net (les langages de Microsoft: C#, VB.Net, ...).

    Ce classement n'est pas fixé dans le marbre pour tous les langages, certains se paient le luxe de passer d'une famille à l'autre, voir d'avoir les caractéristiques de plusieurs, comme Python, que je ne maîtrise pas, qui est interprété, mais peut être pré-compilé, voir, d'une certaine façon, compilé...

    Le choix d'un langage dépend de son niveau d'abstraction, des outils fournis (dans le sens de bibliothèques de code, fournies ou payantes, libres ou propriétaire), de son envirronnement de développent (simple bloc note ou EDI à plusieurs dizaines de milliers d'euros), des ressources disponibles (exemple de codes, snippets, cours, "modules,...), de sa "pérennité" (le propriétaire du langage ou des outils), des plateformes sur lesquelles il est dispo (si tu veux développer un logiciel sous Mac, le langage devra y être dispo), de tes habitudes et compétences, etc...
    J'ai glissé Chef !

  8. #7
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Ikhar84 Voir le message
    Je ne veux pas couper pm dans ses expliquations claires et "vulgarisées".
    Comme je disais dans l'autre fil, l'intérêt d'un forum, c'est aussi d'avoir plusieurs réponses (et plusieurs niveau de réponse) à une question. J'ai mon approche pour répondre, elle n'est pas la seule ni la meilleure.
    Donc merci de contribuer d'une façon différente (et en plus, en ne racontant pas de conneries).

  9. #8
    Fustigator

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Ikhar84 Voir le message
    Bonsoir,

    Je ne veux pas couper pm dans ses expliquations claires et "vulgarisées".
    Mais avant de parler de langages différents et de bits, on peut classer les langages en deux grandes familles, ou trois selon le niveau d'abstraction.
    Je parles des langages interprétés et des langages compilés (ou pseudo compilés), pm l'aura compris..
    Pas vraiment d'accord.

    Le niveau d'abstraction d'un langage n'a qu'un rapport assez ténu avec la technologie utilisée pour exécuter les applications crées avec(jusqu'à un certain point bien sur : un langage bas-niveau sera toujours compilé).

    Certains langages ont même existé dans les deux versions, suivant l'implémentation du compilateur et suivant l'OS host (exemple: Pascal , Cobol, et bien sur Basic).

    ce distingo n'est valide que pour des langages conçus dès le début comme langage de script : JS, PHP, Powershell; mais c'est un parti pris de conception, pas une obligation liée à leur niveau d'abstraction.
    Dernière modification par Fustigator ; 26/03/2019 à 07h23.

  10. #9
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Fustigator Voir le message
    Le niveau d'abstraction d'un langage n'a qu'un rapport assez ténu avec la technologie utilisée pour exécuter les applications crées avec(jusqu'à un certain point bien sur : un langage bas-niveau sera toujours compilé).
    Un micro-détail d'abord : Forth est très bas niveau et pas toujours compilé. Et il est tjs utilisé puisque c'est la base du pdf.

    Cela dépend : cette distinction a du sens parce que souvent, la conception d'un langage influe directement sur la possibilité de le compiler.
    Par exemple, compiler du Python n'a pas de sens et interpréter du C/C++ est un peu l'enfer. Dans les 2 cas, il y a eu des tentatives qui marchaient mais qui ne se sont pas imposées et pas par hasard.

    Citation Envoyé par Fustigator Voir le message
    Certains langages ont même existé dans les deux versions, suivant l'implémentation du compilateur et suivant l'OS host (exemple: Pascal , Cobol, et bien sur Basic).
    Oui mais comme je le disais plus haut, il y a malgré tout eu une dominante forte par langage.
    Et puis, les technologies ont évoluées. Pendant longtemps, on considérait comme impossible de compiler le Lisp tout en gardant la même logique qu'en interprété. Mais c'est devenu possible avec des progrès dans les méthodes de compilation.

    Et aujourd'hui, on utilise des machines virtuelles : on compile vers un langage de bas niveau interprété mais dont on compile à la volée les parties qui sont les plus utilisées.

    Citation Envoyé par Fustigator Voir le message
    ce distingo n'est valide que pour des langages conçus dès le début comme langage de script : JS, PHP, Powershell; mais c'est un parti pris de conception, pas une obligation liée à leur niveau d'abstraction.
    Oui même si par exemple on utilise aussi pour Javascript des Just-in-Time Compilers.

  11. #10
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Donc si je comprends bien. La mise en place de machines virtuelles a permis d'avoir/créer plusieurs langages informatiques et d'avoir des résultats plus performants sur écran ? En fait de base, j'avais comme problématique : pourquoi y-a-t-il plusieurs langages si le même but étant d'afficher des "résutats" sur écran (sous forme de textes et images). Pourquoi aujourd'hui n'est-il pas possible de tout réunir en un seul langage ? Est-ce que ça serait faisable un jour vous pensez ? Aussi, par exemple, qu'est ce qui différencie fondamentalement le langage C/C++ du langage PHP/HTML si ce n'est que l'un permet de créer des logiciels et l'autre permet de rendre internet plus "accessible" ? (Fondamentalement, c'est bien le processeur qui gère tout ça ?)

    Pour ce qui est du compilateur, en voici l'image que j'ai : traducteur (un peu comme google traduction) du code que l'on tape pour afficher des informations sur écran (?). A t-il d'autres fonctions ? Merci pour les réponses, c'est très intéressant.

  12. #11
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    La mise en place de machines virtuelles a permis d'avoir/créer plusieurs langages informatiques et d'avoir des résultats plus performants sur écran ?
    Attention avec le terme machine virtuelle : cela peut vouloir dire 2 choses. Là, on l'emploie dans le contexte langage/compilation.
    Sinon, non, ca n'a pas permis d'avoir plusieurs langages mais d'en faire qui fonctionnent facilement sur plus de matériel.

    Citation Envoyé par Uhue Voir le message
    En fait de base, j'avais comme problématique : pourquoi y-a-t-il plusieurs langages si le même but étant d'afficher des "résutats" sur écran (sous forme de textes et images).
    Tu as eu des réponses à ça.

    Citation Envoyé par Uhue Voir le message
    Pourquoi aujourd'hui n'est-il pas possible de tout réunir en un seul langage ?
    Ce n'est pas efficace.

    Citation Envoyé par Uhue Voir le message
    Est-ce que ça serait faisable un jour vous pensez ?
    A priori non.

    Citation Envoyé par Uhue Voir le message
    Aussi, par exemple, qu'est ce qui différencie fondamentalement le langage C/C++ du langage PHP/HTML si ce n'est que l'un permet de créer des logiciels et l'autre permet de rendre internet plus "accessible" ? (Fondamentalement, c'est bien le processeur qui gère tout ça ?)
    Là aussi, tu as eu des réponses. Si tu veux faire un site Web, PHP est intégré avec HTML et contient tout ce qu'il faut pour gérer les spécificités : session utilisateur, mode requête/réponse.
    Donc tu vas écrire 10 lignes de code en PHP.
    Tu veux le faire en C, tu peux mais tu vas écrire 1000 lignes de code, tu vas mettre 10 fois plus de temps à le faire marcher et la sécurité informatique sera plus faible.

    Citation Envoyé par Uhue Voir le message
    Pour ce qui est du compilateur, en voici l'image que j'ai : traducteur (un peu comme google traduction) du code que l'on tape pour afficher des informations sur écran (?).
    Là aussi, tu as eu plus détaillé dans les réponses plus haut.

  13. #12
    Ikhar84
    Animateur Informatique

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Oui il faut faire attention à cette notion de machine virtuelle, ici dans le sens de "receptacle à un programme écrit dans un langage donné", avec l'idée d'exécuter le même programme sur différentes types de machines (ordinateur, voir OS, voiture, lave linge...) à la condition que la "machine virtuelle" soit présente sur la plateforme.
    Le résultat recherché n'est pas l'explosion du nombre de langages mais plutôt l'unification: un seul langage (dans la limite des possibilités de la plateforme physique) pour une multitude de machine... résultat décevant dans la réalité...

    Il faut aussi faire attention à la notion de programme informatique. Un programme informatique n'a pas pour seul objet que d'écrire sur un écran, on peut même dire que la notion d'écran n'existe pas pour les langages...

    Un programme attend des données en entrées, les traitent, et fournie un résultat en sortie... la nature des entrées et des sorties dépend du domaine du logiciel.
    Un traitement de texte (en simplifiant...) attend des saisies et des évenements souris et fourni un fichier texte en sortie. Le fait que le texte s'affiche à l'écran pendant l'édition n'est pas nécessairement une "sortie" (au sens analyse fonctionnelle, l'écran étant réellement une sortie physiquement), mais fait partie du processus de traitement...
    Un logiciel de lecture de fichiers audio prend en entrée un fichier audio (codé d'une façon qu'il soit capable de le comprendre) et fournie en sortie des instructions vers la carte son, qui elle même fait vibrer la membrane des haut parleurs... l'écran est complétement anecdotique ici, il va servir à afficher l'avancement de la lecture, afficher les commandes (lecture, pausr, etc...), des "animations", ... mais techniquement, on peut tout à fait minimiser le lecteur, le cacher de l'écran, le son continuera à être produit...
    À aucun moment on aura les notes de musique affichées à l'écran !
    J'ai glissé Chef !

  14. #13
    PA5CAL

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    La mise en place de machines virtuelles a permis d'avoir/créer plusieurs langages informatiques et d'avoir des résultats plus performants sur écran ?
    Il existait déjà de nombreux langages informatiques bien avant qu'on invente les premières machines virtuelles.

    Les langages et les programmes étant plus ou moins liés aux matériels, les machines virtuelles permettent de s'affranchir des différences existant entre ces derniers (ce qui inciterait donc plutôt à réduire le nombre de langages), mais généralement en contrepartie d'une baisse des performances par rapport à un langage adapté au matériel particulier utilisé.

    Citation Envoyé par Uhue Voir le message
    pourquoi y-a-t-il plusieurs langages si le même but étant d'afficher des "résutats" sur écran (sous forme de textes et images).
    D'une part, un langage n'a pas pour seul but d'afficher des résultats sur un écran. D'ailleurs, de nombreux langages ne proposent en propre aucune fonction d'affichage. Le but d'un langage est de communiquer les instructions qui permettront à l'ordinateur de réaliser les tâches attendues, lesquelles ne sont pas forcément en relation avec l'affichage d'un résultat sur un écran (la finalité pourrait être par exemple le contrôle du fonctionnement d'un ascenseur, d'un drone, d'un appareil de communication réseau, d'un métier à tisser, d'un réacteur chimique dans une usine, etc.).

    D'autre part, il existe plusieurs types de langages. Si les plus connus sont généralement impératif (i.e. servant à décrire les opérations qui permettent d'obtenir le résultat), d'autres sont déclaratifs (i.e. servant à décrire ce qu'on souhaite obtenir, sans préciser comment). De plus, les langages peuvent présenter différents niveaux d'abstraction : ceux de plus bas niveau décrivent les opérations réalisées par le matériel (c.f. langages assembleurs), et sont donc chacun intimement liés à une architecture matérielle particulière, tandis que ceux de plus haut niveau décrivent les opérations relativement à un modèle d'abstraction particulier conçu pour atteindre efficacement des objectifs plus ou moins spécifiques, et sont donc plutôt liés à ce dernier.


    Citation Envoyé par Uhue Voir le message
    Pourquoi aujourd'hui n'est-il pas possible de tout réunir en un seul langage ?
    Essentiellement parce que les langages ont des usages et des finalités différentes.

    Citation Envoyé par Uhue Voir le message
    par exemple, qu'est ce qui différencie fondamentalement le langage C/C++ du langage PHP/HTML si ce n'est que l'un permet de créer des logiciels et l'autre permet de rendre internet plus "accessible" ? (Fondamentalement, c'est bien le processeur qui gère tout ça ?)
    Entre autres exemples :
    - avec le langage C/C++, aujourd'hui on peut écrit des programmes pour des micro-contrôleurs qui ne disposent en tout et pour tout que de quelques Ko de mémoire
    - PHP requiert pour sa part au minimum 64 Mo de mémoire (compter beaucoup plus avec les extensions) et la présence d'un (gros) système d'exploitation.

    Fondamentalement, un système informatique ne se résume pas à un processeur, et les processeurs ne sont pas tous destinés à réaliser les mêmes types de tâches ni à présenter les mêmes performances.

    Par exemple, HTML sert juste à décrire le format d'un document affichable et doit être interprété par le client web. Le firmware de la box qui permet la transmission de la requête du client au serveur PHP et, en retour, de la page HTML au client, a très certainement été écrit en C/C++. Les opérations réalisées et les performances requises dans les deux cas sont très différentes.

    Citation Envoyé par Uhue Voir le message
    Pour ce qui est du compilateur, en voici l'image que j'ai : traducteur (un peu comme google traduction) du code que l'on tape pour afficher des informations sur écran (?). A t-il d'autres fonctions ? Merci pour les réponses, c'est très intéressant.
    Un compilateur sert à traduire un texte écrit dans un langage déterminé en une suite de codes compréhensibles par un type de machine particulier. Le résultat est un fichier exécutable. Cette traduction est réalisée en totalité avant l'exécution du programme, généralement sur une machine différente.

    Un interpréteur sert également à traduire un texte écrit dans un langage déterminé, mais cette traduction intervient pendant l'exécution du programme décrit. Le résultat est directement une suite d'actions.

    Et comme déjà indiqué, l'affichage d'informations sur un écran est loin de représenter la seule tâche réalisable.
    Dernière modification par PA5CAL ; 26/03/2019 à 16h02.

  15. #14
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Merci pour les précisions. J'y vois plus clair. En attendant je vais approfondir tout ça en m'aventurant au langage C++ et je reposterais ici, si j'ai d'autres questions.

  16. #15
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    En attendant je vais approfondir tout ça en m'aventurant au langage C++
    Franchement, ce n'est pas du tout le langage idéal pour commencer. Il y en a plein d'autres largement mieux. Actuellement, on commence plutôt avec Python.

  17. #16
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Sachant que c'est plutôt la partie programmation logiciel qui m'intéresse pendant ce temps, je pensais que c'était le meilleur non ? Je me suis aussi basé sur le fait que les grandes firmes du jeu vidéo programment en C/C++ (ou je me trompe ?), et ça m'intéresse. Quel avantage ais-je à commencer par le Python ? L'IA et le calcul c'est pas quelque chose en soit qui m'intéresse dans un premier temps. C'est plutôt la structure qui m'intéresse. En tout cas je suis preneur de tout conseil !

  18. #17
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    Sachant que c'est plutôt la partie programmation logiciel qui m'intéresse pendant ce temps, je pensais que c'était le meilleur non ?
    C'est un langage adapté à certaines tâches mais compliqué et relativement difficile à apprendre.

    Citation Envoyé par Uhue Voir le message
    Je me suis aussi basé sur le fait que les grandes firmes du jeu vidéo programment en C/C++ (ou je me trompe ?), et ça m'intéresse.
    Oui mais c'est un peu comme si tu disais que les pilotes ont des voitures de course et que tu veux donc passer le permis avec.

    Citation Envoyé par Uhue Voir le message
    Quel avantage ais-je à commencer par le Python ? L'IA et le calcul c'est pas quelque chose en soit qui m'intéresse dans un premier temps.
    Python, C++, Java, C# et plein d'autres sont des langages objets généralistes. Python n'est pas spécialisé IA ou calcul.

    L'intérêt est de commencer avec un langage facile pour maitriser les concepts. Après en apprendre un autre est relativement facile.

  19. #18
    Fustigator

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    Merci pour les précisions. J'y vois plus clair. En attendant je vais approfondir tout ça en m'aventurant au langage C++ .
    Peut être le pire choix pour commencer et pour apprendre en raison entre autres de sa caractéristique multiparadigme.

  20. #19
    PA5CAL

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par pm42 Voir le message
    C'est un langage adapté à certaines tâches mais compliqué et relativement difficile à apprendre.
    Citation Envoyé par pm42 Voir le message
    Oui mais c'est un peu comme si tu disais que les pilotes ont des voitures de course et que tu veux donc passer le permis avec.
    Citation Envoyé par Fustigator Voir le message
    Peut être le pire choix pour commencer et pour apprendre en raison entre autres de sa caractéristique multiparadigme.
    Citation Envoyé par pm42 Voir le message
    L'intérêt est de commencer avec un langage facile pour maitriser les concepts. Après en apprendre un autre est relativement facile.
    Il se trouve que depuis plusieurs années, je passe de plus en plus de mon temps à m'élever contre cette mentalité qui consiste à prôner une certaine forme de paresse intellectuelle qui induit chez les nouvelles générations une aversion pour la complexité et l'effort et aboutit à une baisse notable des compétences, de l'intelligence et de la réactivité des intervenants dans les entreprises (je ne suis pas le seul à le dire, puisque même l'INSEE le constate).

    En effet, on n'augmente pas les capacités de son cerveau en le ménageant mais au contraire en le faisant travailler le plus possible, et c'est la confrontation personnelle avec la complexité qui permet de progresser et d'acquérir les capacités de compréhension, les véritables connaissances et les savoir-faire nécessaires.


    Pour reprendre l'image des voitures de courses :
    - D'abord, ici il n'est pas question de passer le permis, mais d'apprendre à conduire. On n'exige pas des résultats immédiats et parfaits. Au contraire, on passe le temps à découvrir et à expérimenter afin d'acquérir progressivement les compétences requises.
    - Ensuite, si l'on ne confie pas une voiture de Formule 1 à un pilote néophyte, c'est parce que ce genre de véhicule coûte un bras et qu'un accident risque de se solder par sa destruction et par la mort du pilote. Quand on apprend à programmer, non seulement on a le droit de se planter plusieurs fois, mais il est même fortement conseillé de le faire puisqu'on apprend énormément de ses erreurs (j'irai jusqu'à dire que quelqu'un qui ne s'est jamais trompé représente un danger potentiel dans le sens où il ignore certainement une grande part de ce qu'il doit veiller à ne pas faire).
    - Enfin, commencer l'apprentissage du pilotage avec un tricycle à pédales est beaucoup plus sécurisant, mais il faudra compter beaucoup plus de temps pour progresser et parvenir à un niveau convenable. En pratique, pour les raisons que j'ai évoquées au point précédent, on démarre (généralement très jeune, parfois avant l'âge de 10 ans) sur des karts de 125 cm3 capables tout de même de dépasser les 180 km/h et de passer de 0 à 100 km/h en 3 secondes. Commencer la programmation avec des langages simples puis passer progressivement à des langages plus complexes est bien évidemment une option, mais cela exige une dépense de temps plus importante, et suggère de passer par des étapes d'apprentissage imposées qui ne sont pas forcément des plus efficaces.


    Je pense donc qu'on peut très bien commencer par le langage C, puis continuer sur le langage C++ pour la programmation objet. C'est d'ailleurs ce qu'un grand nombre de personnes jeunes et moins jeunes dont j'ai accompagné les débuts dans le développement informatique ont fait avec succès.

    Commencer par ce langage représente une forme de capitalisation pour l'apprentissage des autres langages impératifs, d'autant plus que nombre d'entre eux s'inspirent de sa syntaxe.

    Sa complexité est toute relative. Il reste assez abordable pour permettre aux débutants de faire des choses simples, tout en restant suffisamment complet pour faire pratiquement n'importe quelles choses compliquées de façon apparente.

    Il présente un intérêt dans un objectif d'apprentissage, parce qu'il permet de toucher à des principes qui ne transparaissent pas dans d'autres langages qui les utilisent néanmoins, et parce qu'il permet de se confronter à des difficultés qu'il vaut mieux apprendre à anticiper et à régler au départ plutôt que les découvrir incidemment quand on développe « pour de vrai ».

    Ce choix est encore plus justifié si la finalité est de savoir programmer en C/C++.

  21. #20
    Fustigator

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par PA5CAL Voir le message
    Je pense donc qu'on peut très bien commencer par le langage C, puis continuer sur le langage C++ pour la programmation objet.
    Mais je suis d'accord cela, pas de problème.
    En revanche, commencer avec le C++ me semble un choix aberrant, d'autant que sans faire injure au PO, sa connaissance de l'informatique semble ne pas être même de niveau basique.

  22. #21
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    La difficulté ça ne me dérange pas. Du coup quel langage me permettra d'en apprendre beaucoup pour pouvoir ensuite dériver plus facilement vers les autres ?

  23. #22
    Ikhar84
    Animateur Informatique

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Si ça peut aider pour le choix, pour moi ça a été le C (pour la procédurale et l'évenementielle), puis Java (pour la POO), ensuite C++ et enfin les .net (VB, pour sa facilité puis C# car C-like)... sans parler des scripts et des langages Web, ou des plus spécifiques comme l'assembleur... parcours universitaire classique...

    Le plus chaud à maîtriser dès le début, ensuite on est tranquile...

    Aujourd'hui c'est essentiellement C# pour l'applicatif pour Windows et PHP/CSS/Javascript pour le web.
    J'ai glissé Chef !

  24. #23
    LeMulet

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    La difficulté ça ne me dérange pas. Du coup quel langage me permettra d'en apprendre beaucoup pour pouvoir ensuite dériver plus facilement vers les autres ?
    Ce n'est pas juste une histoire de langage.
    L'informatique ça forme un tout, et lorsqu'on doit réaliser "un programme", il ne faut pas perdre de vue que ce n'est pas le programme qui compte, mais la tâche qu'il est censé produire.
    L'informatique n'est pas un but en soi mais un moyen pour réaliser des choses (sauf chez les érudits ou les snobs, mais ça ils le savent déjà ).

    Pour ce faire (atteindre un but) il faut faire appel à de très nombreuses connaissances informatiques.
    * Connaissances de base (conversions hexadécimales, concept du "mot", etc. ).
    * Connaissance du système d'exploitation (qui est une application composée de "programmes) qui va prendre en charge le code objet pour le transformer en exécutable.
    * Connaissance de la machine qui exécute le système d'exploitation (processeur etc).
    * Connaissance des systèmes de base de donnée.
    * Connaissance des bibliothèques de gestion de périphérique.
    * etc. etc. etc.

    Pour tout dire, maitriser les possibilités offertes par un seul langage ce n'est que la toute petite partie de ce que doit savoir un programmeur pour se sentir à l'aise dans différentes situations.
    Un peu comme si on veut savoir tirer au pistolet, connaitre la mécanique de son arme, ce n'est que le minimum syndical pour ensuite être en mesure de l'employer à bon escient.

    Pour ce qui est de conseiller un langage donc, pour débuter facilement (dans le sens où on a élagué le plus gros pour commencer à en faire quelque-chose), on ne peut pas répondre à cette question à mon avis sans savoir avec bonne précision ce que veut celui qui demande un avis.

    Deux points importants à élucider donc :
    C'est pour faire quoi ? (A quoi va servir le pistolet, identifier le calibre )
    C'est pour aller où, quelles sont les ambitions (et l'effort qu'on est prêt à fournir) ? (Défense, loisir, tueur à gage )
    Bonjour, et Merci.

  25. #24
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par LeMulet Voir le message
    * Connaissances de base (conversions hexadécimales, concept du "mot", etc. ).
    Ce n'est pas forcément indispensable aujourd'hui avec les langages modernes (Javascript, Python, Java...) et dans pas mal d'applications.

    Citation Envoyé par LeMulet Voir le message
    * Connaissance du système d'exploitation (qui est une application composée de "programmes) qui va prendre en charge le code objet pour le transformer en exécutable.
    Ce n'est pas absolument pas ce que fait un système d'exploitation. Il fournit une abstraction des couches matérielles, gère la mémoire et les entrées-sorties, le multi-processing, etc.

    Citation Envoyé par LeMulet Voir le message
    * Connaissance de la machine qui exécute le système d'exploitation (processeur etc).
    Là aussi, ce n'est pas indispensable du tout et ce d'autant plus que là encore, les environnements de programmation modernes font tout pour s'en abstraire.

    Citation Envoyé par LeMulet Voir le message
    * Connaissance des systèmes de base de donnée.
    Cela vient largement après et il y a de nombreuses applications où cela n'est même pas utile (embarqué, jeux, une bonne partie de l'IA...)

    Citation Envoyé par LeMulet Voir le message
    * Connaissance des bibliothèques de gestion de périphérique.
    C'est que fournit le système d'exploitation plus haut justement.

    Citation Envoyé par LeMulet Voir le message
    Pour ce qui est de conseiller un langage donc, pour débuter facilement (dans le sens où on a élagué le plus gros pour commencer à en faire quelque-chose), on ne peut pas répondre à cette question à mon avis sans savoir avec bonne précision ce que veut celui qui demande un avis.
    Et pourtant, on a formé des générations de programmeurs avec des langages éventuellement dédiés à cela (Scheme, Pascal et autres).
    Et les études sur la productivité et la qualité du code ont montré que justement, le langage maitrisé n'a pas d'importance.

  26. #25
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Je voudrais savoir si étudier deux codes en même temps était une bonne chose ? J'étudie en ce moment les déclarations de variable, les fonctions, les structures et les classes en C++. Je viens de lire rapidement quelques exercices concernant le Python, et ça a l'air intéressant (calculs avec les matrices, valeurs propres d'un endomorphisme... dont j'ai les notions par écrit). D'après ce que j'ai lu, le Python a l'air d'avoir beaucoup plus d'options pour le calcul, je me trompe ?

    Concernant le but, j'avoue que je n'en ai pas pendant ce temps. Je veux juste comprendre la structure d'un langage. Lire du code et savoir ce que peux faire ce code est ce qui m'intéresse à l'heure actuelle.
    Dernière modification par Uhue ; 30/03/2019 à 11h44.

  27. #26
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    Je voudrais savoir si étudier deux codes en même temps était une bonne chose ? J'étudie en ce moment les déclarations de variable, les fonctions, les structures et les classes en C++. Je viens de lire rapidement quelques exercices concernant le Python, et ça a l'air intéressant (calculs avec les matrices, valeurs propres d'un endomorphisme... dont j'ai les notions par écrit). D'après ce que j'ai lu, le Python a l'air d'avoir beaucoup plus d'options pour le calcul, je me trompe ?
    Si tu y arrives, oui. Ce sont 2 langages très différent. Déjà, ils ne sont pas de la même époque.
    Ensuite C++ est fait pour aller très vite à l'exécution mais est relativement compliqué à écrire avec quelques pièges. Et il demande plus de rigueur.

    Python est fait pour être rapide à écrire, est moins piégeux mais les programmes vont moins vite.

    Ensuite, les 2 ont plein de librairies mais la richesse de celles de Python, leur puissance et leur facilité d'usage est impressionnante.

    C'est pour cela qu'en ce moment, on commence plutôt à enseigner avec des langages comme Python parce que cela permet à un débutant de plus rapidement faire des choses concrètes en s'appuyant sur la facilité du langage et l'énorme écosystème qui vient avec.

    Et comme je le disais, apprendre ensuite d'autres langages comme C++ ou autres est enrichissant.

  28. #27
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    J'ai une question. Est-ce qu'une l'écriture d'une fonction pour les calculs mathématiques (exemple : calcul de pgcd...) en python et proche de ceux de c++ ? Si on sait écrire une fonction dans un langage en python, est-il assez facile de le transposer en c++ en respectant les règles propres à la POO ? Ou la structure du code est complétement différente ?

  29. #28
    pm42

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    J'ai une question. Est-ce qu'une l'écriture d'une fonction pour les calculs mathématiques (exemple : calcul de pgcd...) en python et proche de ceux de c++ ? Si on sait écrire une fonction dans un langage en python, est-il assez facile de le transposer en c++ en respectant les règles propres à la POO ? Ou la structure du code est complétement différente ?
    Ce sont des langages assez proche notamment pour cela. Il y a même des outils qui le font automatiquement mais avec des limites.

  30. #29
    Uhue

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Merci ! Ok ça me rassure un peu sur le fait que si j'apprends à manipuler des fonctions en python, je ne serais pas trop perdu si je dois faire la même chose en c++ (si c'est faisable)

  31. #30
    PA5CAL

    Re : Besoin d'explications traduction langage C/C++ jusqu'à écran ordinateur.

    Citation Envoyé par Uhue Voir le message
    Est-ce qu'une l'écriture d'une fonction pour les calculs mathématiques (exemple : calcul de pgcd...) en python et proche de ceux de c++ ? Si on sait écrire une fonction dans un langage en python, est-il assez facile de le transposer en c++ en respectant les règles propres à la POO ? Ou la structure du code est complétement différente ?
    Ce qui me gêne dans ta question, c'est que tu parles à la fois de calculs mathématiques et de règles de POO. Or, quand on fait de la programmation objet, ce n'est pas par plaisir, mais parce que cela est justifié par des contraintes ou un objectif identifiables.

    La POO a principalement pour finalité de bâtir une architecture générale du programme basée sur les données, laquelle s'avère généralement plus stable à long terme dans les projets. En contrepartie, on se place d'emblée à un niveau d'abstraction très élevé, dont découle une orientation particulière des choix des algorithmes et des détails d'implémentation.

    Or, en règle générale, quand on souhaite réaliser du calcul intensif avec de très bonnes performances, on s'attache plutôt à choisir les algorithmes les mieux adaptés, notamment au matériel, et à décrire plus finement les opérations de bas niveau, afin de garantir la meilleure optimisation possible. (En effet, aussi « intelligent » soit-il, on ne peut pas attendre d'un compilateur qu'il parvienne toujours à changer la façon de procéder suggérée à l'aide des seules instructions disponibles, dans le but d'atteindre au mieux un compromis, qui plus est non exprimé, entre des objectifs contradictoires.)

    Bref, l'optimisation de calculs mathématiques et la POO sont souvent contradictoires.

    Par exemple, puisque tu l'évoques, voici une fonction de calcul du PGCD écrite en Python :
    Code:
    def pgcd(a, b) :
      while b!=0 :
        r = a%b
        a, b = b, r
      return a
    On n'y trouve aucun élément de POO, et toute tentative d'en introduire aurait pour effet de compliquer l'écriture, et potentiellement de dégrader les performances. Si l'on se limite à une plage de valeurs raisonnable, la traduction de ce code en langage C++ se réduirait finalement à du langage C :
    Code:
    unsigned long pgcd(unsigned long a, unsigned long b)
    {
      while (a!=b) {
        r = a%b;
        a = b;
        b = r;
      }
      return a;
    }
    Bien souvent, quand des performances extrêmes sont exigées, il est nécessaire de manipuler directement le matériel. Le langage C/C++, qui offre déjà des possibilités avancée en terme de programmation de bas niveau, permet également d'introduire directement dans le code des éléments non standards afin d'effectuer ces manipulations. Comparativement, le langage Python doit faire appel à des composants logiciels extérieurs (souvent écrits en C) dont l'intégration moins directe grève les performances.


    Dans la plupart des cas, on peut écrire un programme en Python et en C++ en utilisant la même structure, qu'il s'agisse ou non de POO. Mais ce n'est pas toujours possible, car il existe des différences entre les deux langages qui, au fond, n'ont pas vraiment la même finalité (sinon il n'y aurait eu aucun intérêt à inventer Python huit ans après C++ ni à continuer d'utiliser les deux par la suite).

    Python offre de nombreuses facilités dans la manipulation des données qui n'existent pas dans C++ (Python peut réaliser simplement certaines opérations complexes qu'on devra coder en C++ de façon plus compliquée et plus longue) tandis que, comme je l'ai indiqué précédemment, C++ autorise des traitements de bas niveau qui sont inaccessibles directement dans Python.

    Pour reprendre l'exemple du calcul de PGCD, la fonction précédente est capable de donner des résultats pour des paramètres dépassant largement la capacité des variables en C++ :

    Code:
    >>> N=1112635258986434993786160646167367779295590656912551548544466403139767765142508889
    >>> M=1098917837997408930588492607737724432241627954580244043743345529202866665403139878
    >>> pgcd(N,M)
    12345678901234567890123456789012345678901
    >>>
    Il faut 270 bits pour représenter les valeurs entières de N ou de M, et 134 bits pour représenter la valeur du résultat. Comme en C++ il n'est pas possible de stocker des valeurs aussi élevées dans des variables entières standards, il est nécessaire d'écrire du code spécifique capable de les traiter en utilisant les seuls types disponibles. Le programme de PGCD correspondant en C++ devient alors nettement plus complexe que celui indiqué plus haut.

    Bref, on ne traduira pas toujours simplement un programme Python en programme C++.

Page 1 sur 3 12 DernièreDernière

Discussions similaires

  1. [Programmation] traduction d'un langage C en langage assembleur
    Par marcuccio19 dans le forum Électronique
    Réponses: 12
    Dernier message: 23/05/2017, 22h59
  2. Explications programme conversion langage c
    Par AlexandreAguilar dans le forum Programmation et langages, Algorithmique
    Réponses: 25
    Dernier message: 05/01/2015, 08h51
  3. Mon nouvel ordinateur ne veut pas de mon tout grand écran plat comme second écran
    Par invite234d9cdb dans le forum Matériel - Hardware
    Réponses: 14
    Dernier message: 20/07/2010, 19h39
  4. Branchement d'un ordinateur de bureau sur un écran d'ordinateur portable
    Par dan3131 dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 30/01/2010, 10h39
  5. Traduction langage Basic vers flowcode
    Par inviteee484a5f dans le forum Électronique
    Réponses: 4
    Dernier message: 28/01/2010, 21h34