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

Débats sur le développement - Le Best Of Discussion :

« Le langage J offre une meilleure approche de l’itération que le C et d’autres », d'après ses concepteurs


Sujet :

Débats sur le développement - Le Best Of

  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Redacteur web
    Inscrit en
    Février 2017
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Redacteur web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2017
    Messages : 1 814
    Points : 50 871
    Points
    50 871
    Par défaut « Le langage J offre une meilleure approche de l’itération que le C et d’autres », d'après ses concepteurs
    « Le langage J offre une meilleure approche de l’itération que le C et d’autres »,
    D'après ses concepteurs

    Le langage J existe depuis une bonne trentaine d’années. C’est un langage de programmation fonctionnelle développé par Kenneth Iverson (un ex IBM fellow) et Roger Hui (désormais employé de Dyalog Ltd) en 1990. Le langage est connu comme un successeur du langage APL dont il propose une synthèse.

    « J est un langage de programmation évolué à usage général particulièrement adapté à l'analyse mathématique, statistique et logique des données. C'est un outil puissant pour développer des algorithmes et explorer des problèmes qui ne sont pas encore bien compris », précisent ses concepteurs.

    J est écrit en C portable et est disponible pour Windows, Linux, Mac, iOS, Android et Raspberry Pi. J peut être installé et distribué gratuitement. Les sources sont fournies sous licence commerciale et sous licence GPL 3.

    Quelle plus-value par rapport à l’existant ?

    En plus de la programmation fonctionnelle, le langage J propose les paradigmes tacite, objet et matriciel. C’est sur le dernier que, d’après ses concepteurs, repose sa singularité. En effet, ces derniers proposent aux habitués de langages comme le C d’abandonner le paradigme de boucles au profit d’expressions matricielles équivalentes. En guise d’exemple, la seule ligne de code mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0 dans le bloc qui suit permet de provoquer l’exécution, une vingtaine de fois, de l’équation z_(n+1) = z_n**2 + C.


    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
    18
    19
    load'viewmat'
    
    size =: 100
    
    NB. z_0 = C
    NB. z_(n+1) = z_n**2 + C
    NB. 
    NB. We iterate this equation at most 20 times
    NB. but short-circuit out (and return inf "_") if the value is > 2
    NB. Then we compute the magnitudes of every value
    NB. And find the first result that is > 2
    mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0
    
    plane =: (j.i.size) + (size, size) $ i.size
    center =: (0.75 * size) j. (0.5 * size)
    scale =: % 0.35 * size
    
    NB. Run `mandel` over out coordinate plane and plot it
    viewmat mandel scale * plane – center
    En fait, pour un problème dans lequel il est question de faire la somme de chaque élément au sein d’une liste x à chaque nombre dans la ligne correspondante d'un tableau bidimensionnel y, un programmeur J écrirait simplement x+y quand un programmeur C monterait le bloc de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i = 0;i<sizeof(x)/sizeof(x[0]);++i)
      for(j = 0;j<sizeof(y)/sizeof(y[0]);++j)
        z = x[i] + y[i][j];
      }
    }
    Nom : 1.png
Affichages : 3223
Taille : 79,5 Ko

    D’après les concepteurs du langage, l’approche J est meilleure pour plusieurs raisons : un code plus court est plus aisé à comprendre ; l’utilisation du paradigme matriciel permet de s’appuyer sur des expressions (au sens d’expressions littérales) plutôt que sur des instructions, ce qui permet d’obtenir des blocs de code beaucoup plus compact là où il aurait fallu d’imbriquer plusieurs structures de boucles.

    « Le code C exige que le programmeur descende au niveau des éléments individuels du tableau. Un programmeur J pense en termes de tableaux entiers, en les combinant à l'aide de primitives qui permettent une manipulation directe des tableaux », ajoute l’équipe de développement. En fait cette dernière est d’avis que « l’approche que J adopte pour l’itération est bien meilleure que celle des autres langages. » Ce développement des concepteurs du J suggère que les structures de boucles n’ont pas leur place dans les langages de programmation impératifs. Le langage donne néanmoins la possibilité aux programmeurs d’écrire du code dans un style impératif proche du C en mettant sur pied des boucles. Ci-dessous, la liste des structures de contrôle disponibles avec le langage.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    assert. T
    break.
    continue.
    
    for.     T do. B end.
    for_xyz. T do. B end.
    
    goto_name.
    label_name.
    
    if. T do. B end.
    
    if. T do. B else. B1 end.
    
    if.     T  do. B
    elseif. T1 do. B1
    elseif. T2 do. B2
    end.
    
    return.
    
    select. T
     case.  T0 do. B0
     fcase. T1 do. B1
     case.  T2 do. B2
    end.
    
    throw.
    
    try. B catch. B1 catchd. B2 catcht. B3 end.
    
    while.  T do. B end.
    whilst. T do. B end.
    Une plus-value qui n’en est pas vraiment une ?

    Et si le « gap » pouvait être comblé à l’aide de bibliothèques appropriées ? Armadillo par exemple en est rendu à sa version 9.8. C’est une bibliothèque C++ dédiée aux mathématiques matricielles. Elle met à la disposition des programmeurs une syntaxe et des fonctionnalités similaires à celles qu’offre le langage de script Matlab. Les programmeurs Haskell pour leur part disposent de la bibliothèque « linear » conçue pour la manipulation de vecteurs. Avec de tels outils en main, le programmeur doit pouvoir arriver à penser comme le suggèrent les créateurs du langage J : faire usage de structures matricielles pour résoudre des problèmes auxquels on apporte généralement solution à l’aide de structures de contrôles, notamment, des boucles. Deux camps s’opposent : les langages avec paradigme de programmation matriciel et ceux auxquels on adjoint des bibliothèques. Après, il faut ajouter les aptitudes de l’opérateur qu’est le programmeur.

    Source : jsoftware

    Et vous ?

    Qu’en pensez-vous ?

    Avez-vous fait usage de ce langage ? Si oui, dans quel type de projet et pour quelles raisons ?

    La plus-value mise en avant par ses concepteurs sort-elle de l’ordinaire ?

    Que pensez-vous de l’approche matricielle pour la résolution des problèmes en informatique ?

    Voir aussi :

    Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D

    Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ? Donnez votre avis

    Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage et livre ses inquiétudes quant à son avenir

    C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    D’après les concepteurs du langage, l’approche J est meilleure pour plusieurs raisons : un code plus court est plus aisé à comprendre
    Euh, c'est une blague j'espère ? C'est vrai dans certains cas, par exemple quand on appelle une fonction avec un nom explicite plutôt que de faire un calcul compliqué "inline", mais franchement quand je vois un truc imbitable comme mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0, je vois mal comment on pourrait faire plus difficile à comprendre. La syntaxe est vraiment complètement absconse.

  3. #3
    Membre éprouvé
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Points : 957
    Points
    957
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Euh, c'est une blague j'espère ? C'est vrai dans certains cas, par exemple quand on appelle une fonction avec un nom explicite plutôt que de faire un calcul compliqué "inline", mais franchement quand je vois un truc imbitable comme mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0, je vois mal comment on pourrait faire plus difficile à comprendre. La syntaxe est vraiment complètement absconse.
    Yes, you can do it ... faire plus compliqué à comprendre, il suffit d'écrire des expression Perl avec ses regex
    http://www.pocketmt.com GLCD Font Creator home site.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2013
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 277
    Points : 1 011
    Points
    1 011
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Euh, c'est une blague j'espère ? C'est vrai dans certains cas, par exemple quand on appelle une fonction avec un nom explicite plutôt que de faire un calcul compliqué "inline", mais franchement quand je vois un truc imbitable comme mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0, je vois mal comment on pourrait faire plus difficile à comprendre. La syntaxe est vraiment complètement absconse.
    J'en aurai appris plus sur le langage J et un nouveau mot de la langue française aujourd'hui

  5. #5
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Patrick Ruiz Voir le message
    « Le langage J offre une meilleure approche de l’itération que le C et d’autres »,
    D'après ses concepteurs


    D’après les concepteurs du langage, l’approche J est meilleure pour plusieurs raisons : un code plus court est plus aisé à comprendre ;
    Premièrement, je vois mal des concepteurs essayer de vendre leur produit en disant "regarder, c'est de la m*****"

    Deuxièmement, un code plus court n'est absolument pas plus aisé à comprendre. C'est une croyance populaire qui est loin d'être vrai ! Un code plus court peut être plus aisé à comprendre... comme plus compliqué !
    Et quand je vois ce que cela donne ici, j'ai juste envie de dire "au mon dieu"... Je préfère mille fois un code bien écrit, verbeux, indenté et lisible que ce type de profil sismique que même un pharmacien (pourtant habitué à ce genre d'écriture) ne pourrait déchiffrer !

    Personnellement, j'aimerai qu'une personne m'explique, en détail et en décomposant chaque opérateur, comment cette ligne mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0 peut être l'équivalent de z_(n+1) = z_n**2 + C pour n de 1 (ou 0) à 20, ainsi que la démarche pour réussir à l'écrire.

    Enfin, pour le debug, on fait comment ??
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Quand je vois ce genre de syntaxe :
    mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@))^i.20) y) i. 0'"0
    autant programmer en brainfuck.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NB. z_0 = C
    NB. z_(n+1) = z_n**2 + C
    NB. 
    NB. We iterate this equation at most 20 times
    NB. but short-circuit out (and return inf "_") if the value is > 2
    NB. Then we compute the magnitudes of every value
    NB. And find the first result that is > 2
    mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0
    1 ligne de code et 6 de commentaires qui sont, pour ma part en tous cas, obligatoires pour comprendre ce qu'il se passe ici

    En fait, pour un problème dans lequel il est question de faire la somme de chaque élément au sein d’une liste x à chaque nombre dans la ligne correspondante d'un tableau bidimensionnel y, un programmeur J écrirait simplement x+y quand un programmeur C monterait le bloc de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i = 0;i<sizeof(x)/sizeof(x[0]);++i)
      for(j = 0;j<sizeof(y)/sizeof(y[0]);++j)
        z = x[i] + y[i][j];
      }
    }
    4 lignes de code que n'importe quelle personne un tant soit peu logique (mettons qu'il faille connaître for et sizeof, le reste sont des opérations mathématiques qu'un éleve de primaire connait) peut comprendre d'une simple lecture.

    J'ai du mal à voir via cet exemple l'avantage de J (dont je n'avais jamais entendu parler)
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Le logo est très moche. C'est pour moi rédhibitoire.
    Tutoriels et FAQ TypeScript

  9. #9
    Membre émérite
    Profil pro
    retraité
    Inscrit en
    Décembre 2010
    Messages
    804
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 804
    Points : 2 299
    Points
    2 299
    Par défaut Et K on en fait quoi ?
    Moi j'ai toujours vu J avec K, même qu'il ne voulait pas qu'il conduise (ok je sors)

  10. #10
    Membre du Club
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Août 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2019
    Messages : 14
    Points : 66
    Points
    66
    Par défaut
    Le jour où ce langage et/ou cette syntaxe devient la norme, je change de métier et je me reconvertis dans le fromage de chèvre.

  11. #11
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 056
    Points
    32 056
    Par défaut
    "plus court, c'est plus efficace", c'est vrai jusqu'à un certain point.

    Mais là, euh.....
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  12. #12
    Membre régulier Avatar de vivid
    Profil pro
    Inscrit en
    Février 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 166
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par yahiko Voir le message
    Le logo est très moche. C'est pour moi rédhibitoire.
    j'adore...

    IBM fellow.. je sui deçu………..

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 240
    Points : 636
    Points
    636
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Personnellement, j'aimerai qu'une personne m'explique, en détail et en décomposant chaque opérateur, comment cette ligne mandel =: 3 : '(2 > | (y + _&[`*: @.(2&>@:|))^:(i.20) y) i. 0'"0 peut être l'équivalent de z_(n+1) = z_n**2 + C pour n de 1 (ou 0) à 20, ainsi que la démarche pour réussir à l'écrire.
    C'est précisément parce qu'il faut décomposer chaque caractère, pour retrouver chaque operateur, pour retrouver chaque instruction que ce langage offre une meilleur approche de l'iteration. Il faut en effet iterer un nombre de fois bien supérieur la lecture du code et les allez-retour vers la doc avant d'avoir la ne serait ce qu'une vague idée de ce que le code fait. Celui qui maitrise ce code aura à coup sur capter l'essence de ce qu'est une iteration !

    Et pensez aux avantages lors de la mise en oeuvre !
    Les fuites memoires et autres débordement n'impacterons plus les machines mais les developpeurs. Si on est soucieux de leur bien être, on peut coupler J à la solution "B". En effet, J&B offrira aux developpeurs faisant trop d'heures sup un moyen commode de se flusher la memoire àpres le boulot avant de se faire garbage collecter par une patrouille de flic (ou un camion poubelle) au petit matin ...

  14. #14
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par psykokarl Voir le message
    ...
    Je ne peux mettre que +1, mais c'est un +1000
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  15. #15
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Le langage J c'est l'APL mais sans le charme des caractères d'origine... Pour moi c'est pas plus compliqué à comprendre que les maths dont ils sont issus, ceci expliquant peut-être cela !

    Dans l'intro du livre de B. Robinet "Le langage APL" (1971), on lit : "B.Robinet se demande si l'APListe est une maladie. On a en effet comme l'impression d'une contagion APL. Le langage se répand, soulevant les plus vives critiques au passage, mais faisant de plus en plus de fanatiques.".

    Après avoir fait 3 vidéos d'initiation sur APL (vous remarquerez que j'ai mis "ésotérique" dans le titre mais pas "exotique" (comme le Brainfuck)), j'ai du mal à m'en détacher et je continue à faire de petits programmes juste par plaisir. Mais je pense que je serais moins motivé si c'était en J et pourtant c'est très très proche dans la conception (même créateur : Iverson).



    Pour le fun : en APL, la réponse à la grande question sur la vie, l'univers et le reste est :

    Nom : 42.png
Affichages : 347
Taille : 4,8 Ko

  16. #16
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    A propos de la lisibilité et de l'intérêt de J (anciennement APL)

    Nom : lire.jpg
Affichages : 411
Taille : 237,6 Ko

    Nom : creneau.jpg
Affichages : 444
Taille : 166,8 Ko

    Extraits de http://www.afapl.asso.fr/AFAPL_2006_v2.pdf

  17. #17
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Tu m'as convaincu. Nous avons tort de critiquer le langage APL/J pour la simple raison que sa syntaxe, ou son approche serait trop exotique.

    En effet, ce serait comme critiquer quelqu'un qui se met à parler en Inuit avec ses collègues francophones. Le langage Inuit n'est pas plus compliqué qu'un autre, il suffit juste de l'apprendre ou d'avoir grandit avec.

    Il n'empêche, quand tout ton entourage familial, amical et professionnel ne bite pas un mot d'Inuit, c'est tout de même bigrement handicapant. Il est où l'intérêt dans ce cas ? Avoir la fierté, le petit sentiment de supériorité, de faire partie d'une "élite" incomprise ?

    Je ne dis pas que le langage APL/J est un mauvais langage, mais il ne faudrait pas non plus le vendre pour ce qu'il n'est pas.

    Car même l'argument "APL/J n'est pas plus compliqué qu'un autre" n'est pas si solide que cela. Tout comme les mathématiques n'est pas une discipline plus compliquée qu'une autre. Pas sûr que les millions d'élèves fâchés avec l'école à cause de cette matière seront d'accord. L'abstraction et le symbolisme requis par ce langage APL/J est loin d'être évidente pour nombre de programmeurs, fussent-ils doués.

    Ce n'est pas pour rien que les langages de programmation ont tendance à reprendre des structures et du vocabulaire des langues naturelles, justement pour limiter le niveau d'abstraction requis. Le langage APL/J prend l'exact direction inverse au nom de la compacité.

    Maintenant, je ne dénigre nullement ni ce langage, ni ceux qui le pratiquent, mais encore une fois, il y a des arguments qui peuvent se défendre, d'autres moins. Il faut choisir ceux qui sont vraiment pertinents.
    Tutoriels et FAQ TypeScript

Discussions similaires

  1. Abandonner les char au profit des wchart_t
    Par camboui dans le forum C++
    Réponses: 13
    Dernier message: 12/03/2010, 10h15
  2. [POO] Les structures de données comme en C++...
    Par FrankOVD dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2006, 20h44
  3. Aide sur les structure
    Par Yoshio dans le forum C
    Réponses: 7
    Dernier message: 18/02/2006, 13h56
  4. Question sur les statics et les structures
    Par Steph12 dans le forum C
    Réponses: 3
    Dernier message: 24/03/2005, 14h20
  5. Coherence dans les structures arborescentes...
    Par Alec6 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/09/2004, 13h04

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