Traduction pour "concurrency, concurrent programming"

La question :

Bonjour,

Voici une question qui me semble adaptée aux groupes auxquels
je l'adresse : comment traduire en français "concurrency, concurrent
programming" ? Quelle distinction avec parallélisme,
multiprogrammation, multi-tâche ?

Merci de toute suggestion !

--
Laurent Bloch -- -- www.laurentbloch.org

Poser votre question sur le forum Programmation

Les 2 réponses :

Le Wed, 5 Aug 2015 19:06:32 +0200
Laurent Bloch a écrit :


Bonjour,

Voici une question qui me semble adaptée aux groupes auxquels
je l'adresse : comment traduire en français "concurrency, concurrent
programming" ? Quelle distinction avec parallélisme,
multiprogrammation, multi-tâche ?

Merci de toute suggestion !


Étant donné que les définitions ne sont pas unifiées, ni en anglais ni
en français, pas évident de fixer des traductions ou des termes.

Quelques éléments en vrac :

- Multi-tâches est un terme que j'ai surtout vu employé dans le
cadre des systèmes d'exploitation, plutôt pour décrire le fait
qu'ils savent gérer ces tâches que pour traiter la manière dont
elles-mêmes sont programmées.

- D'un autre côté "tâche" peut décrire assez bien des "trucs à
réaliser" par un programme (issu d'un découpage : les tâches
pouvant être exécutées en séquence, en parallèle, ...). Mais je
ne me souviens pas avoir vu le terme "multi-tâches" pour un
programme parallélisé.

- Je me souviens d'un article qui choisissait une distinction
intéressante entre concurrence (le fait que deux tâches aient
besoin d'accéder aux mêmes ressources [processeur exclu ici]) et
parallélisme (le fait d'exécuter des bouts de code en parallèle).
Ici on imagine un programme découpé en "tâches", qui peuvent être
concurrentes ou non (deux tâches peuvent avoir besoin d'accéder à
une structure de données commune par exemple, ou à un fichier
commun...). Cette notion de concurrence était indépendante du
fait que les tâches soient exécutées ou non en parallèle. C'est
juste un découpage conceptuel du programme. Les tâches peuvent
être exécutées les unes à la suite des autres (par exemple une
fonction appelle les fonctions correspondant aux tâches, ou
simplement le code est écrit tout à la suite dans une fonction
unique) ou en parallèle (dans plusieurs fils d'exécution
séparés). Dans le cas d'exécution parallèle de tâches
concurrentes, des mécanismes sont nécessaires pour éviter les
ennuis.

- On pourrait aussi dire que le temps du processeur est une
ressource partagée et que s'il y a plusieurs tâches elles sont
potentiellement concurrentes par rapport à cette ressource. Le
parallélisme serait alors le fait d'exécuter des tâches
réellement en parallèle : plutôt le fait d'avoir plusieurs c?urs
et/ou processeurs et de les utiliser que le simple fait d'avoir
plusieurs fils d'exécution. Une distinction peut-être moins
intéressante, si on s'intéresse surtout aux problèmes
d'interactions entre les tâches. D'autant que du coup elles sont
toutes concurrentes.

- Il me semble aussi avoir lu un article qui parlait de
programmation concurrente et concourante, la première traitant de
tâches qui ont des problèmes de concurrences d'accès à certaines
ressources, la seconde le simple fait que l'exécution ait lieu en
même temps (ou potentiellement en même temps, donc utiliser des
fils d'exécution suffit pour que la programmation soit
concourante dans cette définition me semble-t-il, peu importe
qu'il y ait un ou plusieurs c?urs pour exécuter les tâches
réellement en parallèle).

D'autres définitions ici (programmation concurrente "disjointe" ou
non) :
https://fr.wikipedia.org/wiki/Programmation_concurrente

Donc pour répondre plus précisément à ta question : "concurrence" et
"programmation concurrente" semblent adaptés. Avec distinction entre la
concurrence et le parallélisme si la concurrence représente le fait que
des tâches aient des conflits potentiels d'accès à des ressources
(indépendamment du fait qu'on les exécute réellement en parallèle ou
non) et le parallélisme représente le fait d'exécuter des tâches en
parallèle ou potentiellement en parallèle (que les tâches soient
concurrentes ou non).

Merci ! Je me résoudrai donc à « concurrent », bien qu'il présente
l'inconvénient de véhiculer des connotations ignorées de son
homonyme anglais.

Cordialement !

Le jeudi 06 août 2015 Yliur a écrit ceci :


Le Wed, 5 Aug 2015 19:06:32 +0200
Laurent Bloch a écrit :


Bonjour,

Voici une question qui me semble adaptée aux groupes auxquels
je l'adresse : comment traduire en français "concurrency, concurrent
programming" ? Quelle distinction avec parallélisme,
multiprogrammation, multi-tâche ?

Merci de toute suggestion !


Étant donné que les définitions ne sont pas unifiées, ni en anglais ni
en français, pas évident de fixer des traductions ou des termes.

Quelques éléments en vrac :

- Multi-tâches est un terme que j'ai surtout vu employé dans le
cadre des systèmes d'exploitation, plutôt pour décrire le fait
qu'ils savent gérer ces tâches que pour traiter la manière dont
elles-mêmes sont programmées.

- D'un autre côté "tâche" peut décrire assez bien des "trucs à
réaliser" par un programme (issu d'un découpage : les tâches
pouvant être exécutées en séquence, en parallèle, ...). Mais je
ne me souviens pas avoir vu le terme "multi-tâches" pour un
programme parallélisé.

- Je me souviens d'un article qui choisissait une distinction
intéressante entre concurrence (le fait que deux tâches aient
besoin d'accéder aux mêmes ressources [processeur exclu ici]) et
parallélisme (le fait d'exécuter des bouts de code en parallèle).
Ici on imagine un programme découpé en "tâches", qui peuvent être
concurrentes ou non (deux tâches peuvent avoir besoin d'accéder à
une structure de données commune par exemple, ou à un fichier
commun...). Cette notion de concurrence était indépendante du
fait que les tâches soient exécutées ou non en parallèle. C'est
juste un découpage conceptuel du programme. Les tâches peuvent
être exécutées les unes à la suite des autres (par exemple une
fonction appelle les fonctions correspondant aux tâches, ou
simplement le code est écrit tout à la suite dans une fonction
unique) ou en parallèle (dans plusieurs fils d'exécution
séparés). Dans le cas d'exécution parallèle de tâches
concurrentes, des mécanismes sont nécessaires pour éviter les
ennuis.

- On pourrait aussi dire que le temps du processeur est une
ressource partagée et que s'il y a plusieurs tâches elles sont
potentiellement concurrentes par rapport à cette ressource. Le
parallélisme serait alors le fait d'exécuter des tâches
réellement en parallèle : plutôt le fait d'avoir plusieurs c?urs
et/ou processeurs et de les utiliser que le simple fait d'avoir
plusieurs fils d'exécution. Une distinction peut-être moins
intéressante, si on s'intéresse surtout aux problèmes
d'interactions entre les tâches. D'autant que du coup elles sont
toutes concurrentes.

- Il me semble aussi avoir lu un article qui parlait de
programmation concurrente et concourante, la première traitant de
tâches qui ont des problèmes de concurrences d'accès à certaines
ressources, la seconde le simple fait que l'exécution ait lieu en
même temps (ou potentiellement en même temps, donc utiliser des
fils d'exécution suffit pour que la programmation soit
concourante dans cette définition me semble-t-il, peu importe
qu'il y ait un ou plusieurs c?urs pour exécuter les tâches
réellement en parallèle).

D'autres définitions ici (programmation concurrente "disjointe" ou
non) :
https://fr.wikipedia.org/wiki/Programmation_concurrente

Donc pour répondre plus précisément à ta question : "concurrence" et
"programmation concurrente" semblent adaptés. Avec distinction entre la
concurrence et le parallélisme si la concurrence représente le fait que
des tâches aient des conflits potentiels d'accès à des ressources
(indépendamment du fait qu'on les exécute réellement en parallèle ou
non) et le parallélisme représente le fait d'exécuter des tâches en
parallèle ou potentiellement en parallèle (que les tâches soient
concurrentes ou non).



--
Laurent Bloch -- Université Paris-Dauphine -- +33 6 03 12 16 97

Poser votre question sur le forum Programmation

Questions similaires :

Trouvé sur un blog : calculer les "produits sauf un"

On dispose d'une liste de nombres a(1),... a(n), et on veut calculer tous les p(k) = a(1)*...*a(n) où seul a(k) n'apparaît pas dans le produit. Solution: faire les "produits cumulés" dans un sens, puis dans l'autre, et faire les produits des deux. Exemple p q r s # la liste 1 p pq ...

Recherche de "points agglutinants"

Bonjour à tous Je me permets de vous soumettre mon problème parce que je suis sûr qu'il a déjà été traité quelque part et qu'il porte un nom précis : C'est un problème qui tient à la fois de la statistique et de l'algorithmique : J'ai une série de valeurs qui sont des heures de diffusion et...

interpoler un "champ d'altitude"

Bonjour. Je souhaire interpoler un champ d'altitude. Et je vais essayer de m'expliquer... Sur une maille carrée x/y, j'ai des points répartis d'une façon quelconque, contenant chacun une donnée d'altitude. Pour donner une idée, en x et en y, j'ai une amplitude d'environ 3000, et mes altitudes vont...

Présentation succinte, (à améliorer...), et projet du groupe "algorithme-xmoins1"... Pub.v.0.2.0

france/ven./08/07/2006/03h19/Pub.v.0.2.0 Pour ceux qui auraient du coeur à l'ouvrage... Merci... Présentation succinte, (à améliorer...), et projet du groupe "algorithme-xmoins1"... Pub.v.0.2.0 Merci de l'intérêt que vous porté à ce groupe ; bonne lecture, et en espérant vous avoir été utile...

X-No-Archive_Présentation succinte (à améliorer...) du groupe "algorithme-xmoins1"...

france/jeu/06/07/2006/03h05/X-No-Archive Pour ceux qui auraient du coeur à l'ouvrage... Merci... Note: Valable partout ? ça serait bien... Mieux si choix du temps... france/jeu/06/07/2006/03h14/X-No-Archive