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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Multicoeur avec Delphi ?


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 32
    Points
    32
    Par défaut Multicoeur avec Delphi ?
    Bonjour,

    Je viens de developpez une application en delphi 5. Je viens de m'appercevoir que sur un coeur I5, l'application n'utilisait que 25% du processeur (soit 1 seul sur les 4 processeur).

    Est-il possible avec delphi d'utiliser toutes les capacités du processeur ?
    Si oui, quelle version de delphi peut le faire ?
    Si non connaissez vous un autre langage proche du pascal permettant de faire d'utiliser les capacités de tous le processeur?

    Merci d'avance.

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Le seul moyen est de programmer en multi-thread, il faut savoir si ton traitement est parallélisable afin de "profiter" de tous les coeurs de ton processeur.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Donc il est possible avec delphi 5 de paralléliser mon traitement.
    Est-ce qu'il y a un petit exemple afin que je vois si il possible de paralléliser mon application ?

    J'ai vu que ceratins compilateur peuvent gérer automaquement la gestion du multi-coeur. J'imagines que ce n'est pas le cas de delphi?

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par schousso Voir le message
    Donc il est possible avec delphi 5 de paralléliser mon traitement.
    Est-ce qu'il y a un petit exemple afin que je vois si il possible de paralléliser mon application ?

    J'ai vu que ceratins compilateur peuvent gérer automaquement la gestion du multi-coeur. J'imagines que ce n'est pas le cas de delphi?
    avec GetProcessAffinityMask tu détermines le nombre de coeurs, puis tu crées un Thread par coeur
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par schousso Voir le message
    Donc il est possible avec delphi 5 de paralléliser mon traitement.
    Delphi permet de créer des applications multithread, mais ça ne veut pas dire que ton traitement est parallélisable...

    Citation Envoyé par schousso Voir le message
    Est-ce qu'il y a un petit exemple afin que je vois si il possible de paralléliser mon application ?
    Si tu n'es pas familier avec la notion de programmation parallèle, il vaudrait en fait mieux que tu nous décrives l'algo qu'exécute ton programme, il sera alors plus simple de te répondre "oui" ou "non".

    Citation Envoyé par schousso Voir le message
    J'ai vu que ceratins compilateur peuvent gérer automaquement la gestion du multi-coeur. J'imagines que ce n'est pas le cas de delphi?
    Par défaut, Delphi utilise tous les coeurs disponibles, et tes threads seront donc répartis directement par Windows sur les coeurs libres.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Et en admettant que mon application ne pas "parallelisable", quelle solution ai-je? un autre language?

  7. #7
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Pas d'autre solution:

    Utiliser plusieurs coeurs d'un processeur veut dire que l'on a plusieurs threads qui tournent en même temps. Donc que le traitement a été parallélisé (au moins partiellement).
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par schousso Voir le message
    Et en admettant que mon application ne pas "parallelisable", quelle solution ai-je? un autre language?
    Linkin a parfaitement résumé : c'est l'algorithme qui doit être parallélisable, l'implémentation (=le programme écrit dans un langage donné) peut ensuite l'être quel que soit le langage utilisé, du moment que le couple OS/langage supporte le concept de thread.
    Et c'est le cas de tous les langages couramment utilisés actuellement...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Linkin a parfaitement résumé : c'est l'algorithme qui doit être parallélisable, l'implémentation (=le programme écrit dans un langage donné) peut ensuite l'être quel que soit le langage utilisé, du moment que le couple OS/langage supporte le concept de thread.
    Et c'est le cas de tous les langages couramment utilisés actuellement...
    il faudrait peut-être l'inventer, ce langage multithread, comme on a inventé le langage Objet ... il existe aussi des langages vectoriels
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    il faudrait peut-être l'inventer, ce langage multithread, comme on a inventé le langage Objet ... il existe aussi des langages vectoriels
    J'ai bien parlé de "couple OS/langage", Paul.

    Support natif ? T'as déjà l'ADA, le Java, et sûrement pas mal d'autres qui supportent nativement la notion de tâche / thread. Support par API ? Threads POSIX, threads Win32, OpenMP, pour les plus connus.

    Ensuite, du moment que ton langage supporte les appels système et que le système, lui, supporte les threads, alors ton langage supporte le multithreading... Et ça ne changera pas le fait que passer d'un langage compatible MT à un autre langage compatible MT ne permettra pas de paralléliser un algo de façon "magique" !!
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  11. #11
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    J'ai bien parlé de "couple OS/langage", Paul.

    Support natif ? T'as déjà l'ADA, le Java, et sûrement pas mal d'autres qui supportent nativement la notion de tâche / thread. Support par API ? Threads POSIX, threads Win32, OpenMP, pour les plus connus.

    Ensuite, du moment que ton langage supporte les appels système et que le système, lui, supporte les threads, alors ton langage supporte le multithreading... Et ça ne changera pas le fait que passer d'un langage compatible MT à un autre langage compatible MT ne permettra pas de paralléliser un algo de façon "magique" !!
    il me semble pourtant que lors des dernières TechDays de MS, C# 4 permet de paralléliser les séquences ForEach de façon très simple.

    et c'est bien là l'idée...image le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    var
      cIndex : Integer;
    begin
      for cIndex := 0 to List.Count - 1 do
       List[cIndex].CalculeSalaire;
      EffectuerVirements;
    end;
     
    // version MT
    begin
    // lancement d'une tache multithread
      ForEach List do CalculeSalaire;
    // ici on est certain que tous les calculs sont terminés
    // que ce soit dans une simple boucle ou sur plusieurs coeurs, on s'en fout !
      EffectuerVirements;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    il me semble pourtant que lors des dernières TechDays de MS, C# 4 permet de paralléliser les séquences ForEach de façon très simple.
    Oui, c'est bien sûr possible de faire quelque chose dans ce genre de façon plus ou moins automatique, c'est d'ailleurs ce qu'il se passe en OpenMP avec les barrières. D'autres API MT supportent également le concept de barrière de façon native, au pire ce n'est pas horrible à réimplémenter à partir de sémaphores/mutex/events.

    Mais aucun langage ne fera ça automatiquement sans la garantie absolue que la fonction threadée est réentrante et indépendante, tout comme le stockage des résultats d'ailleurs. Typiquement, il est impossible de paralléliser un calcul de suite par exemple, vu que chaque itération est dépendante du résultat précédent ! L'exécution séquentielle (monothread) est impérative.

    Certes, on peut définir des primitives / modificateurs / identificateurs permettant de dire au compilateur "Je sais que cette fonction est compatible MT, tu peux l'optimiser au besoin", mais il ne peut pas le déterminer par lui-même en dehors des cas bêtement évidents (fonction sans effet de bord notamment), et c'est hélas loin d'être le cas le plus courant...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  13. #13
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Oui, c'est bien sûr possible de faire quelque chose dans ce genre de façon plus ou moins automatique, c'est d'ailleurs ce qu'il se passe en OpenMP avec les barrières. D'autres API MT supportent également le concept de barrière de façon native, au pire ce n'est pas horrible à réimplémenter à partir de sémaphores/mutex/events.

    Mais aucun langage ne fera ça automatiquement sans la garantie absolue que la fonction threadée est réentrante et indépendante, tout comme le stockage des résultats d'ailleurs. Typiquement, il est impossible de paralléliser un calcul de suite par exemple, vu que chaque itération est dépendante du résultat précédent ! L'exécution séquentielle (monothread) est impérative.

    Certes, on peut définir des primitives / modificateurs / identificateurs permettant de dire au compilateur "Je sais que cette fonction est compatible MT, tu peux l'optimiser au besoin", mais il ne peut pas le déterminer par lui-même en dehors des cas bêtement évidents (fonction sans effet de bord notamment), et c'est hélas loin d'être le cas le plus courant...
    je ne suis pas d'accord avec toi

    c'est comme si, ne connaissant pas les variables locales, tu disais qu'il est impossible de garantir qu'une fonction ne vas pas taper dans la variable d'une autre.

    c'est comme si, ne connaissant pas la portées des membres d'un objet, tu disais qu'il n'est pas possible à un objet ancêtre de protéger ses membres de ses descendants.

    il y a donc de nouveaux concepts à inventer (à moins qu'ils n'existent déjà...je n'en sais rien) qui garantissent qu'un code donné soit multithreadable...ou pas. De la même façon qu'on sait sans erreur si un membre est privé ou pas, une variable globale ou pas

    dans le même ordre d'idée, avec le polymorphisme, tu ne sais jamais avec certitude ce que fait la méthode d'un objet...et pourtant ça fonctionne Avec un garbage collector, tu ne sais jamais quand un objet est réellement détruit...et bien là tu ne serais jamais réellement quand la procédure est invoquée
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    C'est en fait exactement la même chose que des modificateurs comme "const" : c'est le développeur qui indique au compilateur qu'un objet ne doit/peut pas être modifié.

    De même pour le MT : si on laisse le compilateur agir seul pour déterminer si une fonction est thread-safe ou pas, il va falloir :
    • Mettre un tag "thread-safe" (TS) (oui ou non) sur TOUTES les fonctions runtime, ainsi que sur les fonctions de l'API Win32 importées.
    • Par défaut, une fonction non renseignée est donc impérativement non-TS.
    • Une fonction utilisateur est TS si et seulement si elle respecte les points suivants :
      • La fonction n'utilise aucune fonction non-TS.
      • Aucun paramètre n'est passé par adresse/référence.
      • Aucun paramètre n'est un pointeur.
      • La fonction n'utilise aucune variable globale, inclus la récupération d'un handle quelconque via le biais de l'OS.
      • La fonction n'utilise que ses paramètres et ses variables locales.
      • Le résultat de la fonction n'est pas stocké à un emplacement qui serait celui d'un paramètre d'une fonction TS, inclus la fonction elle-même.
    • Une telle fonction déterminée comme TS est alors parallélisable librement par le compilateur.
    • Dans tous les autres cas, sauf mention explicite d'un état TS par le développeur, le compilateur ne devrait JAMAIS threader automatiquement une fonction qui n'est pas garantie TS.
    Et tout ça se résume en "réentrante et indépendante", ce que j'ai dit au post précédent... Et encore : je n'ai pas parlé de l'overhead de création des threads, qui risque probablement de rendre l'algo parallèle "automatique" plus lent que la version séquentielle mono-thread !!

    Paralléliser un algo n'est pas automatique, quoi qu'il en soit : cela demande parfois à carrément partir à contre-sens de l'algo "naturel" (séquentiel), et ça, un compilateur ne peut pas l'inventer tout seul. Au mieux, il peut rendre "transparent" la création/gestion du thread, mais guère plus. Le développeur devra malgré tout indiquer si c'est judicieux ou pas.

    Exemple typique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function DoAnOperation ( Const Parameter : Real ) : Real ;
    Begin
         Result:=Sqrt(Parameter);
    End ;
    Va threader ça, et tu vas perdre des performances par brouettes entières... Ce genre d'algo n'est parallélisable que via des processeurs SIMD, donc du SSE sur une archi Intel. Passer par des threads est la pire des solutions, il faut penser différemment pour réussir à paralléliser efficacement un algo qui effectuerait cette opération sur un tableau.


    L'erreur que tu fais est de comparer la parallélisation d'appels de fonction avec des procédés "automatiques" qui ne sont pas comparables : typiquement, le GC, par exemple. Oui, on ne sait pas "quand" c'est libéré, et alors ? De toutes façons, on ne se sert plus de la donnée (=> destruction asynchrone), et en plus, la donnée est forcément "libre" (=> compteur de référence, donc destruction autonome)... Où est le problème d'automatiser ça, tant que les fonctions d'allocation / libération / copie sont "câblées" sur le GC ?

    Paradoxalement, l'exécution parallèle d'un algo EXIGE la plupart du temps une forme de synchronisation, et ça, c'est presque impossible à automatiser de façon optimale.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  15. #15
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    en fait je pense qu'on ne parle pas de la même chose

    tu insistes sur le fait que le parallélisme n'est pas chose simple, et je suis d'accord.

    mais je pense qu'il doit être possible d'inventer un nouveau langage proposant de nouveaux concepts qui permettent de tirer pleinement parti de la programmation parallèle.

    c'est pour cela que je fais le parallèle () avec la POO. Un programmeur "procédural" qui se lance dans la programmation objet et événementielle est un peu largué au début...car il ne maîtrise pas bien les concepts et se demande à la fois pourquoi l'enchaînement des traitements n'est pas linéaire (événementiel) et pourquoi il ne peux pas lancer deux traitement en même temps (barre de progression)

    Ensuite je ne dis pas que tout est parallélisable, ou que cela à toujours un intérêt...d'ailleurs Delphi, contrairement à Java, permet de faire aussi bien du procédural que de l'objet...il ne lui manque plus que le MT

    Evidemment, on n'a pas "besoin" d'un nouveau langage pour faire de la programmation multithreadée...mais des mots clés comme threadvar simplifient les choses tout de même
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Ce que tu demandes, c'est en gros la même chose que ce qui est fait avec OpenMP, donc... Mais cela reste de "simples" directives de création d'objets liés au MT (threads, synchros, etc.), pas plus, pas moins. Le moteur du système reste encore et toujours le jus de cerveau...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  17. #17
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    mais je pense qu'il doit être possible d'inventer un nouveau langage proposant de nouveaux concepts qui permettent de tirer pleinement parti de la programmation parallèle.
    Ca existe déjà.
    Tu as [ame="http://fr.wikipedia.org/wiki/LACATRE"]LACATRE[/ame] par exemple.

    Evidemment, ce sont des langages spécialisés qui ne permettent pas nécessairement de tout faire.
    Enfin dans le cas de LACATRE, tu génères un code C qui traite toute la partie "Multi-tâche" et tu ajoute le code fonctionnel au milieu.

Discussions similaires

  1. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56
  2. [Choix] Quel SGBD avec delphi et kylix
    Par djmcg dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 16/01/2003, 12h24
  3. Programmation WEB avec delphi
    Par mayoguy dans le forum Web & réseau
    Réponses: 4
    Dernier message: 20/08/2002, 19h03
  4. Réponses: 5
    Dernier message: 08/07/2002, 16h22
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo