C
C++
Java
Lisp
Scala
F#
D
Haskell
Ruby
C#
Python
Erlang
Ada
MATLAB
Fortran
occam
Autre
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
S'interroger sur quel est le meilleur langage de programmation parallèle, c'est comme s'interroger sur quel est le meilleur langage de programmation tout court : ça n'a aucun sens.
Il y a des cas d'utilisations, et des langages appropriés à ces cas, la programmation parallèle ne change rien à ça.
Pour un projet où les performances sont critiques ( calcul scientifique ), C++ couplé à OpenMP et MPI fait des miracles.
Pour un projet de haut niveau multi-threadé ou avec un système de com inter-process évolué, Scala ou Erlang n'ont rien à envier aux autres.
Ceci dit, voir un sondage de ce type ne proposant pas Erlang qui est une reference dans le domaine, me choque pas mal.
Les réponses données sont bonnes
Il me semble que C est un langage indémodable car il a su trouver la bonne distance entre haut-niveau et bas-niveau pour être utilisable dans tous les cas sans sombrer dans l'extrême complexité (ne serait-ce que lorsque l'on vise plusieurs plateformes) des assembleurs.
Cela dit l'usage de langages de plus haut niveau dans ce domaine peut-être heureux. Clojure se dépatouille bien non ?
Le mélange C + langage de plus haut niveau étant une solution, une fois maîtrisée, souvent heureuse.
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
C / Objective-C avec Grand Central Dispatch ( libdispatch, Open Source ), c'est le pied. C'est efficace et simple à aborder.
Sinon, toujours en C, j'ai testé OpenCL : c'est plus complexe à aborder, mais aussi très efficace.
En technologie plus ancienne, les threads POSIX sont un peu casse-têtes, mais relativement efficaces.
Qu'est-ce qu'il en est d'ADA?
J'ai jamais utilisé ce langage, mais j'ai entendu qu'il est très utilisé dans tout ce qui est temp réel/embarquée/parallèle etc...
A moins que je me trompe sur le dernier point?
Ajouté à la liste, en même temps que MATLAB (pour sa toolbox http://www.mathworks.com/products/parallel-computing/, qui permet de faire passer un for à sa version parallèle en remplaçant le for par parfor, tout simplement : difficile de faire plus simple que ça !)!
Pour Ada, il semblerait qu'il y soit adapté, au moins depuis la version 95 (maintenant, est-il utilisé pour ça ? fait-on mieux depuis lors ?) :
(Premier résultat Google sur ada parallel).Envoyé par http://www.dwheeler.com/lovelace/s1s1.htm
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
Tres peu utilise aujourd'hui, mais qui a ete largement utilise par le passe : le fortran.
Il existe d'ailleurs des paralleliseurs de code en fortran, mais ceux-ci sont surtout utilises par les physiciens.
L'Ada est en fait le seul langage certifié pour faire du code critique embarqué pour l'avionique et l'aérospatial.Qu'est-ce qu'il en est d'ADA?
J'ai jamais utilisé ce langage, mais j'ai entendu qu'il est très utilisé dans tout ce qui est temp réel/embarquée/parallèle etc...
Sinon pour en revenir au sujet. De mon point de vue, il faut quand même bien dissocier les différentes utilisations du parallélisme et les besoins.
Par exemple, pour tout ce qui est calcul parallèle hautes performances, je trouve C/C++/Fortran plutot adaptés car ils permettent un contrôle assez fin du code.
Mais il ne faut pas oublier Cuda et OpenCL (via C ou C++) pour tout ce qui est calcul/algo sur GPU.
J'aurais tendance à dire un langage purement fonctionnel, étant donné que l'aspect thread-safe et l'absence d'effets de bord favorise la parallélisation.
Votre sondage oublie un langage extrêmement important (et pionnier)... OCCAM
il a été spécialement conçu pour la programmation parallèle sur Transputer et met en oeuvre directement les concepts de programmation CSP
http://en.wikipedia.org/wiki/Occam_(...ming_language)
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
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.
J'ai voté C et C++ pour le GPGPU et l'utilisation d'instruction particuliére, comme les SIMD. Et Haskell et Erland pour le reste (multithreading au dessus de l'os & co)
Bon, mon avis est un peu biaisé, mais je dirais C#, depuis la 4.0, avec la Task Parallel Library qui permet de faire des choses vraiment propres...
Et C# 5.0 intègrera directement dans le langage la gestion des traitements asynchrones, ce qui permettra de faire du parallélisme beaucoup plus facilement (cette fonctionnalité est actuellement en CTP). Voir cet article pour plus de détails
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
concurrence != parallelisme![]()
Partager