IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quel est le meilleur langage pour la programmation parallèle ?
Partagez vos retours d'expérience

Le , par dourouc05

27PARTAGES

2  1 
Quel est le meilleur langage pour la programmation parallèle ?
C++
35 %
C
23 %
Java
18 %
C#
17 %
Scala
11 %
Haskell
9 %
Erlang
6 %
Python
6 %
Autre
6 %
Lisp
3 %
occam
3 %
MATLAB
2 %
F#
2 %
D
2 %
Ada
2 %
Fortran
2 %
Ruby
0 %
Voter 127 votants
Petit sondage pour l'ouverture de ce forum : quel langage trouvez-vous le meilleur pour la programmation parallèle/concourante ?

Le but n'est pas d'avoir une suite de réactions disant que tel langage est meilleur, sans plus d'explications : pourquoi tel langage vous semble-t-il le plus approprié pour la programmation parallèle ? Quels sont les éléments qui vous font pencher en sa faveur : les outils disponibles, la syntaxe... ?

Peut-être un paradigme de programmation vous semble plus approprié que les autres : impératif, objet, fonctionnel, logique... ?

Exprimez-vous dans le sondage et précisez votre opinion en répondant à ce message, de manière aussi constructive et détaillée que possible !

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Joel F
Membre chevronné https://www.developpez.com
Le 24/05/2011 à 16:07
Citation Envoyé par gbdivers Voir le message

Mais je n'ai peut être pas une vision globale de la problématique. Ca serait intéressant d'avoir l'avis de JoelF (c'est son domaine de recherche ; et il a peut être testé aussi la programmation parallèle avec les langages fonctionnelles)
Alors:

- connaitre par coeur son ISA/DIE ne sert pas beaucoup mais savori qu'est-ce qu'un cache, qu'on a ou pas de ISA SIMD sur son proc, connaitre le sproblematiques de false sharing, etc est plus qu'utile. Je ne compte plus les projets de recherches ou des missions "experts" ou j'ai empoché 10k pour inverser 3 boucles, rendre le cache content et obtenir x50

- C/C++ sont vraiment dans le meme bateau. Les gens qui pensent que C++ est lent sont des gens qui ne savent pas programmer en C++ ou, du moins, restent coller sur c'est que j'appel du JAVA++ plein de virtual et de new.

- Quelque soit le langage, les algos, les algos , les algos. On parallelisent rarement du O(N^4), on cherche le O(N^?) avec ? < 4 PUIS on parallelise.

Pour repondre au problematique des langages fonctionnels, Haskel est pas degeu, tout comme les variantes compilables de ML. Ca reste rude car peu de gens n'ont l'habitude de reflechir dans ce paradigme.
6  0 
Avatar de lapinferoce
Membre à l'essai https://www.developpez.com
Le 24/05/2011 à 8:48
erlang !!!
pourquoi ? concurrency done right ! en plus c'est un langage fonctionnel
5  0 
Avatar de Alp
Expert éminent sénior https://www.developpez.com
Le 25/05/2011 à 10:37
Pour étayer ce qu'a dit Joel, je vous renvoie vers ceci concernant Haskell : http://www.haskell.org/haskellwiki/Parallelism
5  0 
Avatar de Traroth2
Membre émérite https://www.developpez.com
Le 23/05/2011 à 14:37
J'aurais dit Erlang. C'est un langage pour le calcul parallèle avec mémoire distribué, et sa logique dans laquelle les variables ne peuvent être affectées qu'une seule fois et qui rend donc impossible l'accès concurrent en écriture à une donnée (puisqu'elle ne peut être écrite qu'une seule fois, si vous suivez) diminue radicalement les effets de bord et les erreurs de synchronisation. Tout passe par un transfert de message, de manière analogue à MPI.

Sinon, Clojure, un dialecte Lisp pour la JVM, est bien aussi.
4  0 
Avatar de TropMDR
Membre éprouvé https://www.developpez.com
Le 23/05/2011 à 16:21
Citation Envoyé par gangsoleil Voir le message
Pour moi, le C est l'un des langages de la programmation parallele, car il est suffisamment bas niveau pour permettre d'interragir finement avec la machine.
J'avoue ne pas voir le lien entre le début de la phrase (être adapté à la programmation parallèle) et la fin de la phrase (être bas niveau)...

Ce sont justement les langage bas niveau qui posent le plus de soucis pour la programmation parallèle, car ils n'offrent pas les abstractions indispensables à ce genre d'activité.
4  0 
Avatar de TropMDR
Membre éprouvé https://www.developpez.com
Le 23/05/2011 à 17:32
Citation Envoyé par dourouc05 Voir le message
Le bas niveau te permet de savoir précisément ce qui se passe sur tes processeurs, tu peux contrôler presque jusqu'à l'instruction près ce qui est exécuté, dans quel ordre, sur quel processeur, etc.
C'est quoi la proportion de programmeur sur cette planète capable de comprendre "jusqu'à l'instruction près ce qui est exécuté, dans quel ordre, sur quel processeur" ? Je parie sur moins de 0,1%
8  4 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 23/05/2011 à 17:39
Citation Envoyé par TropMDR Voir le message
C'est quoi la proportion de programmeur sur cette planète capable de comprendre "jusqu'à l'instruction près ce qui est exécuté, dans quel ordre, sur quel processeur" ? Je parie sur moins de 0,1%
Et c'est bien dommage : dur de comprendre pourquoi une telle optimisation ne fonctionne pas au final, quand on reste à du très haut niveau. L'explication se situe parfois au très bas niveau. Et ce n'est pas valable que pour la programmation parallèle, c'est valable partout, même en dehors du développement ou de l'informatique : quand on sait comment fonctionnent les boutons de la machine, on peut les utiliser à bon escient.
7  3 
Avatar de Grimly_old
Membre averti https://www.developpez.com
Le 24/05/2011 à 10:31
Je pense que c'est plus de l'ordre du développeur que du langage.

Les différents problèmes d’inter-blocages persistent dans presque tous les langages.
4  0 
Avatar de Joel F
Membre chevronné https://www.developpez.com
Le 25/05/2011 à 2:26
concurrence != parallelisme
4  0 
Avatar de NicoL__
Membre confirmé https://www.developpez.com
Le 25/05/2011 à 11:35
Pour moi c'est C# avec .net 4.0, un gros effort a été mis pour facilité la parallisation et la simplicité avec des trucs du genre : parallel.foreach
A oui c'est vrai que c'est pas fin, mais dans 80% des cas ça suffit et ça peut être très très simple de refactorer le code pour mutlithreader certaines portion avec des gains rapide. Ok c'est .net qui gère tout... le nb de thread etc... mais bon il le fait pas si mal, je vais pas me cogner de regarder combien y a de Core sur la machine pour voir le nombre de thread optimum à chaque fois que je veux faire un peu de multithreading.
4  0