Types de langages
This commit is contained in:
parent
057dccd458
commit
f64ecdc9ae
45
Cours.md
45
Cours.md
@ -7,6 +7,8 @@
|
|||||||
* https://algo.developpez.com/tutoriels/initiation/
|
* https://algo.developpez.com/tutoriels/initiation/
|
||||||
* ftp://ftp-developpez.com/marcel/cours-architecture.pdf
|
* ftp://ftp-developpez.com/marcel/cours-architecture.pdf
|
||||||
* https://marcel.developpez.com/cours/systeme/architecture-ordinateur/
|
* https://marcel.developpez.com/cours/systeme/architecture-ordinateur/
|
||||||
|
* https://hdd34.developpez.com/cours/artpoo/
|
||||||
|
* https://www.jmdoudoux.fr/accueil_java.htm
|
||||||
|
|
||||||
# Thèmes
|
# Thèmes
|
||||||
|
|
||||||
@ -290,3 +292,46 @@ Une structure est un type de données contenant plusieurs valeurs nommées. On a
|
|||||||
// instruction
|
// instruction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Langages
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
On appelle __langage informatique__ un langage destiné à décrire l'ensemble des actions consécutives qu'un ordinateur doit exécuter. Un langage informatique est ainsi une façon pratique pour nous (humains) de donner des instructions à un ordinateur.
|
||||||
|
|
||||||
|
## Types de langages
|
||||||
|
|
||||||
|
### Machine
|
||||||
|
|
||||||
|
Le **langage machine** est celui utilisé par le processeur. Il s'agit d'une succession de données binaires (0, 1) transmises sous forme d'impulsions électriques. Ce langage n'est pas directement compréhensible par l'être humain, il est donc nécessaire de disposer de langages de programmation intermédiaires. Le code dans ces langages est transformé en langage machine pour être exploité par le processeur
|
||||||
|
|
||||||
|
### Assembleur
|
||||||
|
|
||||||
|
Un **langage assembleur** est un langage très proche de la machine, utilisant des mots clés et des notations compréhensibles par un être humains pour représenter des instructions, des donnés et des adresses mémoires.
|
||||||
|
|
||||||
|
Ce type de langage ne permet pas d'écrire un code portable, car le jeu d'instruction est propre á chaque type de processeur. Il y a donc un langage assembleur pour chaque type de processeur.
|
||||||
|
|
||||||
|
Le terme __portabilité__ désigne l'aptitude d'un programme informatique a être utilisé sur des machines de types différents.
|
||||||
|
|
||||||
|
De plus, la simplicité des instructions de base d'un processeur rend l'écriture des programmes complexe et très longue.
|
||||||
|
|
||||||
|
### Compilé/interprété
|
||||||
|
|
||||||
|
Un programme écrit dans un **langage interprété** a besoin d'un programme auxiliaire (l'interpréteur) pour traduire au fur et à mesure les instructions du programme.
|
||||||
|
|
||||||
|
Un programme écrit dans un **langage compilé** va être traduit une fois pour toutes par un programme annexe, appelé compilateur, afin de générer un nouveau fichier qui sera autonome, c'est-à-dire qui n'aura plus besoin d'un programme autre que lui pour s'exécuter; on dit d'ailleurs que ce fichier est **exécutable**. Cet exécutable n'est cependant valable que pour un seul type de processeur et de système d'exploitation.
|
||||||
|
|
||||||
|
Certains langages utilisent une approche intermédiaire basée sur une machine virtuelle (java par exemple). Le code est compilé dans un pseudo langage machine (bytecode) qui n'est pas directement exécutable par un processeur. Pour l'exécuter, on utilise un interpréteur qui simule un processeur capable d'exécuter le bytecode. Ce type de langage permet de profiter d'une bonne portabilité sans souffrir des problèmes de performance des langages interprétés.
|
||||||
|
|
||||||
|
### Bas niveau/haut niveau
|
||||||
|
|
||||||
|
Les langage sont classés de bas vers haut niveau selon la proximité avec le langage machine. Les langages assembleurs sont ceux de plus bas niveau. Le **langage C** est un langage de bas niveau car il nécessite (et permet) de gérer manuellement la mémoire (allocation pour stocker des variables, libération, pointeurs) et la communication avec les périphériques. Les langages dit de haut niveau (Java, Python, Go) permettent de se libérer de ces contraintes et de produire plus rapidement des logiciels aux fonctionnalités avancées.
|
||||||
|
|
||||||
|
### Procédural/objet
|
||||||
|
|
||||||
|
La **programmation procédurale** est un paradigme qui se fonde sur le concept d'appel procédural. Une procédure, aussi appelée routine, sous-routine ou fonction, contient simplement une série d'étapes à réaliser. N'importe quelle procédure peut être appelée à n'importe quelle étape de l'exécution du programme, y compris à l'intérieur d'autres procédures, voire dans la procédure elle-même (récursivité).
|
||||||
|
|
||||||
|
La **programmation objet** consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait interagir avec ses pairs. Il s'agit donc de représenter ces objets et leurs relations ; l'interaction entre les objets via leurs relations permet de concevoir et réaliser les fonctionnalités attendues, de mieux résoudre le ou les problèmes. Dès lors, l'étape de modélisation revêt une importance majeure et nécessaire pour la POO. C'est elle qui permet de transcrire les éléments du réel sous forme virtuelle.
|
||||||
|
|
||||||
|
### Langages de manipulation de données
|
||||||
|
|
||||||
|
Certains langages sont dédiés à la manipulation de données (lecture, création, modification) et ne permettent pas de réaliser des algorithmes complexes. Il sont dependant d'un logiciel tiers ou d'un format de données particulier. Exemples: SQL, Xpath
|
||||||
|
Loading…
Reference in New Issue
Block a user