Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-03-2016 19:18:32

lablute
Membre
Inscription : 05-03-2016

problème de compréhension

Bonjour tout le monde.

Je débute dans la programmation (tout comme je débute sous Debian big_smile) et j'ai déjà quelques soucis de compréhension...

Si je comprends bien, il y a 2 types de langage, les compilés et les interprétés.

Les premiers transforme tout le "code source" (code écrit par le programmeur avec un langage compréhensible par un humain) en langage objet (langage assembleur) qui lui même et traduit en binaire grâce à "l'édition de lien" et ce binaire est exécuté par le microprocesseur. c'est bien ça ? (et dans la foulée, où sont stockés les 2 langages traduits, dans la ram ?)

Les interprétés eux se contentent de traduire ligne après ligne au lieu de traduire l'ensemble du code. Mais ce qui veut dire que chaque ligne du code (chaque "instruction je crois") est traduit en assembleur qui est lui même traduit en binaire pour être exécuté ?

Et certains langages (Java, Python) utilisent un compilateur pour créer un "Bytecode" (qui apparement, est un code binaire, et dans ce cas, je vois pas à quoi sert "l'édition de lien") qui sera interprété par une machine virtuelle

Quelqu'un peux ma rassurer en me disant que je ne raconte pas de conneries please wink

Merci à tous.

PS : si j'ai d'autres questions un peu "stupide", je peux les poser dans ce post ?

Hors ligne

#2 07-03-2016 20:54:23

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : problème de compréhension

sur le même sujet : Les codes de programmation en général oui, tout ici.
Si tu dois en développer un de fil en fil, autant le faire dans un topic différent. smile

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#3 07-03-2016 23:06:42

Rockmyu
Membre
Distrib. : Debian stretch/sid | Kali rolling
Noyau : 4.3.0-1-amd64 | 4.4.0-kali1-amd64
(G)UI : Gnome 3.18.2
Inscription : 17-02-2016

Re : problème de compréhension

Hey ! Salut smile

Il y a plusieurs langages informatiques comme tu le sais.

Tu as en effet des langages compilés, (e.g. langage C, Pascal) des langages interprétés (e.g. HTML, PHP, SQL) et des langages entre les deux qu'on appelle, je crois, intermédiaires. (e.g. Java, Python)

I. Langages compilés :



Dans ce type de langage, le code source (compréhensible par l'humain) est compilé à l'aide d'un... compilateur smile Automatiquement, tu obtiens un code binaire qui sera interprété par le microprocesseur de la machine. Le microprocesseur de la machine sera donc chargé d’exécuter ce code binaire. (0 et 1)

Le problème c'est que lorsque tu compiles tu vas avoir un code binaire spécifique à chaque système d'exploitation. Un spécifique à Linux, un spécifique à Windows et un spécifique à Mac OS == Pas très pratique.

II. Langages interprétés :



Tu as bien compris. Un langage interprété est lu et interprété au fur et à mesure de sa lecture mais n'est pas compilé. Création de page web par exemple. T'as un bon tuto sur le HTML ici. big_smile

III. Langages intermédiaires :



Beaucoup plus flexible.  Premièrement, tu écris ton code source et au lieu de le compiler directement en code binaire, tu fais une première compilation qu'on appelle le byte code. Ce byte code pourra quant à lui être distribué sur chaque machine. Il est indépendant du système d'exploitation utilisé. En revanche, si tu veux utiliser ce programme il te faudra, en effet, une machine virtuelle ; spécifique à chaque OS.

La machine virtuelle va te permettre d'interpréter ce byte code et obtenir le code binaire qui sera exécuté sous ta machine. En Java, on utilise JRE (Java Runtime Environment) ; ou JDK (Java Development Kit) qui est plus complet.

Edit :

lablute a écrit :

"Bytecode" (qui apparement, est un code binaire...)


Le byte code n'est pas un code binaire. Il est assez... spécial ! Ouvre un fichier .class, tu verras lol

Dernière modification par Rockmyu (09-03-2016 01:11:56)

Hors ligne

#4 08-03-2016 21:20:55

lablute
Membre
Inscription : 05-03-2016

Re : problème de compréhension

Merci pour ta réponse Rockmyu smile

Mais (pardon, je dois être limite chiant la...) pour un langage compilé, le compilateur crée un fichier du code en binaire qu'il enregistre sur le disque dur ou il fait appel à la ram ?
Et si il "traduit" un code source en binaire, à quoi sert finalement "l'édition de lien" ?
Et du coup, je suppose que chaque systeme d'exploitation possède un compilateur par défaut ?

Et pour l'interprétation, je ne suis pas sûr de comprendre, un langage interprété est lu au fur et à mesure mais n'est pas compilé. Ca veut dire qu'il n'y a pas de binaire de ce code source ?

Et pour le langage intermédiaire (type Java, Python), si je comprends bien, on peut lancer les programmes sur n'importe quel OS du moment ou il y a une machine virtuelle d'installer ? (bah pourquoi on code pas les jeux en Python par exemple ? ce serait cool de pouvoir jouer à des bons jeux récents sous Linux wink )

Merci

Hors ligne

#5 09-03-2016 00:59:07

Rockmyu
Membre
Distrib. : Debian stretch/sid | Kali rolling
Noyau : 4.3.0-1-amd64 | 4.4.0-kali1-amd64
(G)UI : Gnome 3.18.2
Inscription : 17-02-2016

Re : problème de compréhension

Je ne connais pas encore tous les langages de programmation mais petit exemple rapide. smile

Pour programmer en C, tu as besoin de trois outils : (Forum Debian donc exemple sous Debian /pas du tout exhaustif)

- Un OS (GNU/Linux Debian)
- Un éditeur de texte (gedit)
- Un compilateur (gcc)

Le langage C doit être compilé avant d'être exécute. Tu crées un nouveau document et tu l'appelles par exemple test.c (.c parce que le programme est écrit en C).

gedit test.c




Pourquoi compiler ? Le fichier test.c est là uniquement pour un être humain et ne peut pas être compris par une machine. C'est le rôle du compilateur, ici gcc, de transformer un fichier texte en un fichier exécutable.

gcc -o program.x test.c



Le compilateur crée un fichier exécutable (binaire) là où tu le lui demande ; /Desktop par exemple. Tu auras un fichier qui se créera, tu peux remplacer program.x par ce que tu veux, et tu pourras lancer ton programme sur le terminal, à l'emplacement du fichier, comme ceci :

./program.x



lablute a écrit :

le compilateur crée un fichier du code en binaire qu'il enregistre sur le disque dur ou il fait appel à la ram ?



La mémoire vive (RAM) c'est ce qui permet à ton ordinateur d'effectuer plusieurs tâches à la fois. Ton DD assure le stockage, héberge tes programmes, mais c'est la RAM qui en assure le fonctionnement en les exécutant.

lablute a écrit :

Et si il "traduit" un code source en binaire, à quoi sert finalement "l'édition de lien" ?


Je programme souvent en Java ces temps-ci et java n'a pas besoin de l'édition de lien. Regarde cette page wiki pour approfondir un peu mais lorsque tu commenceras à programmer tu comprendras mieux de toute façon. C'est en forgeant qu'on devient ... lol Lance toi ! smile

lablute a écrit :

Et du coup, je suppose que chaque systeme d'exploitation possède un compilateur par défaut ?


Oui, mais rien ne t'empêche d'en installer d'autres.

Edit : Sur Windows y a rien d'installé par défaut je crois hmm

lablute a écrit :

Et pour l'interprétation, je ne suis pas sûr de comprendre, un langage interprété est lu au fur et à mesure mais n'est pas compilé. Ca veut dire qu'il n'y a pas de binaire de ce code source ?



Oui,  tu n'as pas besoin de rendre ce langage compréhensible par la machine ; il sera interprété. Cette conversation t'aidera à mieux comprendre. Surtout le dernier message.

lablute a écrit :

si je comprends bien, on peut lancer les programmes sur n'importe quel OS du moment ou il y a une machine virtuelle d'installer ?


Oui smile Le byte code est unique.

Tu as aussi des IDE (Integrated Development Environment) qui sont des systèmes qui regroupent à la fois un compilateur, un éditeur de texte et un débogueur (e.g. codeblocks, Eclipse). C'est, en effet, plus pratique mais mon prof nous l'a déconseillé ; il nous forçait à compiler et exécuter le programme depuis le terminal.

Dernière modification par Rockmyu (09-03-2016 01:42:38)

Hors ligne

#6 11-03-2016 04:12:04

lablute
Membre
Inscription : 05-03-2016

Re : problème de compréhension

Ok je pense comprendre. Je te remercie l'ami smile

Hors ligne

Pied de page des forums