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

Affichage des résultats du sondage: Faut-il arrêter de créer de nouveaux langages et développer plutôt des bibliothèques ?

Votants
107. Vous ne pouvez pas participer à ce sondage.
  • Oui, il y a déjà assez de langages pour en créer d'autres

    21 19,63%
  • Oui, ce sont les bibliothèques qui rendent un langage productif

    10 9,35%
  • Non, on ne peut pas corriger les défauts d’un langage avec des bibliothèques

    11 10,28%
  • Non, c’est le langage qui détermine le genre de bibliothèques possibles

    9 8,41%
  • Non, un nouveau langage tire des leçons des défauts des anciens langages

    38 35,51%
  • Pas d’avis

    8 7,48%
  • Autres (à préciser dans les commentaires)

    10 9,35%
Débats sur le développement - Le Best Of Discussion :

Est-il nécessaire de créer de nouveaux langages de programmation ?


Sujet :

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

  1. #81
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    @wakiza
    Il n'y a rien qui explique ce que c'est que le B Basic, concepts... Donc on ne peut pas vraiment voir de quoi tu parles

  2. #82
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    @TJ1985

    Tu abondes un peu dans mon sens, il faut bien sûr avoir de la créativité, créer de nouveaux langages pour voir de quoi ils sont capables...
    Mais bien sûr on ne va pas forcément utiliser le dernier truc qui vient de sortir en prod !

    Quand à garder des applis de 20 ans, travailler en pascal... ça me laisse quand même un peu perplexe. Après ça peut dépendre aussi du domaine dans lequel tu travailles !

  3. #83
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par tralloc Voir le message
    @wakiza
    Il n'y a rien qui explique ce que c'est que le B Basic, concepts... Donc on ne peut pas vraiment voir de quoi tu parles
    En toile de fond, je souhaitais simplement expliquer un point de vue. Le développement de nouveau concept est un luxe que ne peut s'offrir un développeur ayant des exigences propre a un milieu pro. La démarche en est en somme son opposé, d'ou une certaine incompréhension voir pour certain, une sorte de rejet de la création et de toute idée de changement.

    Vouloir ou penser que la création devrait se limiter a "un acquis", devant brider en somme la créativité en elle même va a l'encontre même de toute idée d'évolution voir même de liberté de création.

    Enfin, c'est mon point de vue.

  4. #84
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Je suis d'accord avec toi mais j'étais curieux de voir de quoi il s'agissait !

  5. #85
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Je trouve que certains sujets n'ont pas vraiment été abordés.


    Commençons par les DSLs. Ils sont nécessaires et il est nécessaire d'en créer de nouveaux ne serait-ce que pour bien représenter certaines abstractions propres à chaque système. Donc oui il faudra toujours de nouveaux langages.

    Mais un DSL c'est quoi techniquement ?
    C'est éventuellement un truc parsé puis directement interprété par ... une bibliothèque ! J'en veux pour exemple tous les fichiers de configuration type XML, JSON, YAML et autres.
    C'est éventuellement directement une bibliothèque ! L'émergence des "fluent APIs" en sont de beaux exemples et les langages comme Groovy, Scala et d'autres permettent "d'effacer" le langage réel qui effectuera les appels.
    C'est éventuellement un truc compilé ; ce qui signifie transformé dans un autre langage (code machine, assembleur, bytecode, javascript, etc.)

    Et par ce dernier point je souhaite adresser un point de vue non évoqué ici, le concept de plateforme. Car si on prend les plateformes .Net, Java et même JavaScript, on a bien créé des langages par-dessus avec des concepts bien différents (fonctionnel : F#, Clojure), voir améliorant des concepts existants (typage : Ceylon, Scala).
    Mais ces plateformes ont leur propre contraintes et il est parfois nécessaires de créer d'autres plateformes avec des contraintes différentes (le GC de Java, le monothreading de JavaScript, les pointeurs du C++, etc.)

    Car in-fine, peu importe les concepts "révolutionnaires" (ex.: fonctionnel, déclaratif, etc.). Il n'en reste pas moins que cela finit par s’exécuter en séquence via une série d'impulsions électriques. Et ces impulsions sont bien basés sur un langage ! Cette donne pourrait éventuellement changer avec l'arrivée des processeurs quantiques mais cela va bien au delà d'avoir de nouveaux langages, de nouvelles bibliothèques et de nouvelles plateformes. Encore un autre point non évoqué ici mais qui me semble crucial.

    Autre point intéressant, concernant le lien entre langage et bibliothèque. Tous les langages d'aujourd'hui ne viennent pas qu'avec une syntaxe et une boîte à outils (compilateur, debugger, etc.) mais aussi avec une bibliothèque. Que serait Java sans Java SE ? D'ailleurs en tant que développeur Java, je dois continuellement rappeler que Java fait référence à trois éléments distincts : VM, langage et API.

    Donc tout nouveau langage créé une nouvelle bibliothèque et une bibliothèque peut également de créer un langage (DSL) par dessus un autre.


    Enfin je souhaiterai donner mon avis sur un autre point concernant l'émergence de nouvelles plateformes ou nouveaux langages. Les micro-services est un concept qui se répand mais concerne uniquement une vision assez macroscopique d'un code ; on découpe le système en sous-systèmes autonomes mais ces sous-systèmes demeurent monolithique en terme de socle technique.
    Je rêve au contraire qu'au sein d'un même processus (ou pool de processus) on puisse mixer différentes plateformes (et/ou langages) pour adresser au mieux certaines problématiques.
    Il existe bien quelques ponts pour exécuter des bibliothèques C depuis Ruby, Python, Java, etc. mais on a souvent l'impression d'avoir à faire à du bricolage et les bibliothèques de binding/bridge sont toujours nécessaires pour faire le lien entre les deux sans qu'on puisse voir directement l'API telle qu'elle a été conçue dans son langage original.
    Certaines solutions pourraient également de mieux mettre en avant le concept de "communication inter-processus". Ceci pourrait être une réponse simple et efficace pour permettre la coexistence de briques de natures différentes au sein d'une même application.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #86
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Logan Mauzaize Voir le message
    Je trouve que certains sujets n'ont pas vraiment été abordés.

    Commençons par les DSLs. Ils sont nécessaires et il est nécessaire d'en créer de nouveaux ne serait-ce que pour bien représenter certaines abstractions propres à chaque système. Donc oui il faudra toujours de nouveaux langages.
    Hmm ça fait 5 pages que je parle des DSL : « pas abordé » me semble assez gonflé.

    Citation Envoyé par Logan Mauzaize Voir le message
    Mais un DSL c'est quoi techniquement ?
    C'est éventuellement un truc parsé puis directement interprété par ... une bibliothèque ! J'en veux pour exemple tous les fichiers de configuration type XML, JSON, YAML et autres.
    C'est éventuellement directement une bibliothèque ! L'émergence des "fluent APIs" en sont de beaux exemples et les langages comme Groovy, Scala et d'autres permettent "d'effacer" le langage réel qui effectuera les appels.
    C'est éventuellement un truc compilé ; ce qui signifie transformé dans un autre langage (code machine, assembleur, bytecode, javascript, etc.)
    C'est réducteur et non représentatif. On distingue deux types de DSL : embarqué et externe, on choisit l'un ou l'autre en fonction d'un grand nombre de critères. Voir «When and How to Develop Domain-Specific Languages» ici : http://people.cis.ksu.edu/~schmidt/5...es/WhenDSL.pdf. Un DSL embarqué repose sur un langage hôte, et va de la bibliothèque jusqu'au langage compilé dans un autre langage source. Un DSL externe a sa propre syntaxe et son propre compilateur qui compile soit en langage machine, soit dans une variété de niveaux de représentation pouvant, également, être le code source d'un langage hôte. La frontière est parfois floue, et va dépendre du positionnement des développeurs. Par exemple, Exel est un DSL mais pour l'utilisateur, c'est un programme. SQL est un DSL.

    Il existe ensuite un certain nombre de moyens de les implémenter, bien plus large que cette liste. Voir «Notable design patterns for domain-speciÆc languages» ici : http://www.dmst.aueb.gr/dds/pubs/jrn...tml/dslpat.pdf. On remarquera que souvent, la résolution d'un problème en entraine un autre. Par exemple, certains se rendent compte qu'un DSL embarqué pour répondre à un problème précis pose un problème de performances, et cherchent alors un moyen de le désembarquer pour en faire un langage à part (https://pub.uni-bielefeld.de/download/2304348/2304351, http://dl.acm.org/citation.cfm?id=1141653). D'autres fois, on a un langage externe et on cherche à l'embarquer (https://hal.archives-ouvertes.fr/hal...6/file/spe.pdf). Comme je le disais tous ces problèmes s'auto-nourrissent et créer de nouveaux langages et innover seront des besoins qui dureront dans le temps.


    Citation Envoyé par Logan Mauzaize Voir le message
    Car in-fine, peu importe les concepts "révolutionnaires" (ex.: fonctionnel, déclaratif, etc.). Il n'en reste pas moins que cela finit par s’exécuter en séquence via une série d'impulsions électriques. Et ces impulsions sont bien basés sur un langage ! Cette donne pourrait éventuellement changer avec l'arrivée des processeurs quantiques mais cela va bien au delà d'avoir de nouveaux langages, de nouvelles bibliothèques et de nouvelles plateformes.
    Justement non. In-fine, l'intérêt d'un DSL repose dans ses concepts, qui sont souvent loin d'être révolutionnaires ! Le langage dédié est là pour être près des préoccupations du développeur, près du métier (http://martinfowler.com/dsl.html). Ce qui compte, ce sont les abstractions et les concepts métiers directement à la portée d'un expert métier pas forcément développeur ! Il est même courant qu'un DSL ne soit pas Turing-Complete, c'est à dire qu'on ne puisse pas tout développer avec (http://www2.in.tum.de/bib/files/kranz14structure.pdf). En bref, on se fiche de savoir que derrière il y a des impulsions électriques, ce sont des préoccupations d'implémentation très techniques dont on a pas besoin au niveau langage.

    On a pas «besoin d'un langage» (DSL ou pas). On a un besoin ou un problème, et on se pose la question de comment l'aborder en fonction de critères spécifiques (performances, sécurité, etc.). À ce moment, on utilise (ou pas) un langage qu'on décide (ou pas) de créer. Pour moi beaucoup d'intervenants considèrent le code comme une raison première alors que c'est juste un moyen. On ne peut pas répondre, à mon sens, à la question d'origine du thread d'un point de vue technico-technique.
    [|]

  7. #87
    Nouveau membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2015
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Pour moi, il est nécessaire de recrée de nouveaux langages. On aura toujours besoin de quelque chose de nouveaux pour des usages futures. Prenons par exemple le C. Il est toujours utilisé mais nous n l avons dévié en C++ pour d autres usages.

  8. #88
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Non, il suffisait de rester au COBOL et au FORTRAN
    Pourquoi évoluer ?
    Il suffisait de rester au COBOL et au FORTRAN.

  9. #89
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par maske Voir le message
    Hmm ça fait 5 pages que je parle des DSL : « pas abordé » me semble assez gonflé.
    Oups je n'avais retenu que ton premier message qui l'évoquait mais je suis passé à côté des autres plus détaillés. Néanmoins il faudra relativiser le "ca fait 5 pages" car tes messages sont tous concentrés sur la page 3.

    Citation Envoyé par maske Voir le message
    C'est réducteur et non représentatif. On distingue deux types de DSL : embarqué et externe
    Je ne vois pas en quoi c'est réducteur. Ce que j'évoque c'est bien un type embarqué (second point) et les DEUX autres sont des implémentations possibles du SEUL type externe.

    Je ne saisis pas la différence entre "Un DSL embarqué repose sur un langage hôte [peut être un] langage compilé dans un autre langage source" et "Un DSL externe a [...] son propre compilateur qui compile [...] pouvant, également, être le code source d'un langage hôte" ?
    Pas plus que "Un DSL externe a sa propre syntaxe", c'est pas le propre d'un "langage" ?


    Citation Envoyé par maske Voir le message
    Par exemple, Exel est un DSL mais pour l'utilisateur, c'est un programme. SQL est un DSL.
    Le cas d'Exel à mon avis refléte bien mes propos. Exel fourni un DSL et un "programme", non ? Ca me fait exactement pensé au principe de Gradle.

    Puisqu'on évoque le cas de Ruby et que Java est aussi pas bien loin dans les discussions, il y a un autre aspect qu'on a pas abordé, c'est la méta-programmation. Qu'il s'agisse d'Aspects, d'annotations ou du couple méthode+Symbol. C'est aussi un moyen à mi chemin entre le langage et la bibliothèque.

    Citation Envoyé par maske Voir le message
    Il existe ensuite un certain nombre de moyens de les implémenter, bien plus large que cette liste. Voir «Notable design patterns for domain-speciÆc languages» ici : http://www.dmst.aueb.gr/dds/pubs/jrn...tml/dslpat.pdf
    Les pattern évoqués me semblent tous rentrés dans l'un des cadre décrit. Réutiliser un langage existant pour "retirer" ou "ajouter" des fonctionnalités n'en reste pas moins de la transpilation. D'ailleurs techniquement la grammaire de ses langages incluera la grammaire du langage cible (et non hôte). Si on prend le cas des "lexer" (Lexx/Yacc, ANTLR, etc.) il s'agit bien "d'interpréteur". Si les instructions de l'interpréteur sont de la transformation en code (ou toute autre représentation), ca n'en reste pas moins un "compilateur".
    Les patterns évoqués ne mentionnent des cas plus précis des variantes toutes basées sur le principe "interpréteur" ou "compilateur". J'ai juste rajouté la distinction des APIs car l'interpréteur/compilateur est celui du langage hôte. Après je laisse la liste ouverte à d'autres types mais je n'en vois pas.


    Citation Envoyé par maske Voir le message
    Justement non. In-fine, l'intérêt d'un DSL repose dans ses concepts, qui sont souvent loin d'être révolutionnaires ! Le langage dédié est là pour être près des préoccupations du développeur, près du métier (http://martinfowler.com/dsl.html). Ce qui compte, ce sont les abstractions et les concepts métiers directement à la portée d'un expert métier pas forcément développeur ! Il est même courant qu'un DSL ne soit pas Turing-Complete, c'est à dire qu'on ne puisse pas tout développer avec (http://www2.in.tum.de/bib/files/kranz14structure.pdf). En bref, on se fiche de savoir que derrière il y a des impulsions électriques, ce sont des préoccupations d'implémentation très techniques dont on a pas besoin au niveau langage.
    Les détails techniques font justement parfois la différence entre deux langages, comme je l'évoquais avec le GC, les pointeurs, etc. Et tant celui qui le concevra, que celui qui le choisira et que celui qui l'utilisera devront en avoir conscience. Mais qu'importe les restrictions et obligations qu'impose le langage et ce qu'il semble pouvoir faire de "magique", à l'heure actuel tout est basé sur la machine de Turing et Von-Neumann (après quelques recherches il semble qu'il y ait quelques exceptions). Et le résultat sera donc des instructions en séquence.


    Citation Envoyé par maske Voir le message
    On a pas «besoin d'un langage» (DSL ou pas). On a un besoin ou un problème, et on se pose la question de comment l'aborder en fonction de critères spécifiques (performances, sécurité, etc.). À ce moment, on utilise (ou pas) un langage qu'on décide (ou pas) de créer. Pour moi beaucoup d'intervenants considèrent le code comme une raison première alors que c'est juste un moyen. On ne peut pas répondre, à mon sens, à la question d'origine du thread d'un point de vue technico-technique.
    A mon sens c'est surtout que la question ne se pose pas et que même au-delà de ça, il y a des points plus bas niveau où la question ne se pose pas. Dans la mesure où sur ce quoi se base un langage peut évoluer, il faudra de nouveaux langages soit par nécessité, soit juste pour bénéficier des nouvelles spécificités (en plus ou en moins).
    Par ailleurs, doit-on considérer l'évolution d'un langage comme un "nouveau" langage ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  10. #90
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Logan Mauzaize Voir le message
    Je ne vois pas en quoi c'est réducteur. Ce que j'évoque c'est bien un type embarqué (second point) et les DEUX autres sont des implémentations possibles du SEUL type externe.
    Eh bien je trouve que le «truc», on sait pas ce que c'est. Ce truc dans la version «embarquée» est forcément interprété par une bibliothèque, ce que je trouve réducteur. Ça pourrait très bien être exécuté par une machine virtuelle - la même que celui du langage hôte par exemple. Est-ce que ça compte comme une bibliothèque ? Pour moi non. Ça me semble important de préciser, parce que prononce «bibliothèque» et t'as quelqu'un qui va venir parler de détails très techniques dans un langage ou un autre (cf. les pages précédentes). Mais je fais ce que je critique chez les autres, en déplaçant le débat sur des choses sans intérêts. Je retire donc cette affirmation et te réponds sur le reste dans la suite du message.

    Citation Envoyé par Logan Mauzaize Voir le message
    Je ne saisis pas la différence entre "Un DSL embarqué repose sur un langage hôte [peut être un] langage compilé dans un autre langage source" et "Un DSL externe a [...] son propre compilateur qui compile [...] pouvant, également, être le code source d'un langage hôte" ?
    Tu as raison, il n'y en a justement pas. Si on établissait une échelle où on graduerait les langages de «General Purpose» à «DSL», on aurait des langages aux extrêmes et tout un gradient de langages au milieu qui pourraient se rejoindre sur ce point. Le fait de dire que le DSL est externe ou embarqué ne serait que du positionnement, alors que c'est la même chose. Deux développeurs ayant une culture différente pourraient catégoriser un langage différemment sur cette échelle.

    Citation Envoyé par Logan Mauzaize Voir le message
    Pas plus que "Un DSL externe a sa propre syntaxe", c'est pas le propre d'un "langage" ?
    Eh non, dans le cas des DSL embarqués on peut très bien avoir un langage sans syntaxe concrète. Comme l'exemple que tu cites : une bibliothèque ou une API - encore une fois selon sa culture un développeur dirait que c'est un DSL pendant qu'un autre dirait que non. Il se trouve que ça rentre dans le champ de définition d'un langage dédié, après on juge surtout en fonction du besoin et de la démarche.

    Citation Envoyé par Logan Mauzaize Voir le message
    Le cas d'Exel à mon avis refléte bien mes propos. Exel fourni un DSL et un "programme", non ? Ca me fait exactement pensé au principe de Gradle.
    Oui c'est les deux. L'important, c'est que ça permet à un(e) secrétaire de faire directement son boulot sans aucune considération technique. Pourtant, il y a bien de la manipulation de structures, de fonctions, etc.

    Citation Envoyé par Logan Mauzaize Voir le message
    Les pattern évoqués me semblent tous rentrés dans l'un des cadre décrit. Réutiliser un langage existant pour "retirer" ou "ajouter" des fonctionnalités n'en reste pas moins de la transpilation. D'ailleurs techniquement la grammaire de ses langages incluera la grammaire du langage cible (et non hôte). Si on prend le cas des "lexer" (Lexx/Yacc, ANTLR, etc.) il s'agit bien "d'interpréteur". Si les instructions de l'interpréteur sont de la transformation en code (ou toute autre représentation), ca n'en reste pas moins un "compilateur".
    Pareil, la transpilation c'est très très général comme terme, et ça ne permet pas de dire quelle est la méthode utilisée (on sait juste qu'à un moment on compile de langage en langage). Attention, si tu utilises un langage existant, ça ne veut pas dire que tu es forcément embarqué. Si tu utilises un langage que tu modifies, tu fais ce que tu veux et tu peux très bien avoir une nouvelle grammaire indépendante de celle du langage cible. Ce n'est pas forcément le cas avec les langages embarqués dans un langage hôte - mais note que ça ne serait pas techniquement impossible. Transpilation ou pas (mais je n'utilise pas ce terme parce qu'il est beaucoup trop flou).


    Citation Envoyé par Logan Mauzaize Voir le message
    Les patterns évoqués ne mentionnent des cas plus précis des variantes toutes basées sur le principe "interpréteur" ou "compilateur". J'ai juste rajouté la distinction des APIs car l'interpréteur/compilateur est celui du langage hôte. Après je laisse la liste ouverte à d'autres types mais je n'en vois pas.
    C'est vrai, mais ce qui est intéressant c'est qu'est-ce qu'on compile, en quoi et pourquoi. Exemple, le pattern "data structure representation" qui transforme une structure de données complexe exprimée simplement avec un dsl dans sa forme concrète (et complexe) dans le langage hôte ou cible. On cerne le besoin, on cerne l'utilité. Derrière si y'a des pointeurs, on s'en fout : le DSL est là pour s'abstraire de la syntaxe finale et des concepts ou contraintes techniques du langage cible. À noter que si ce pattern est le plus souvent (du moins à l'époque de cet article, maintenant je ne sais pas) implémenté sous la forme d'un compilateur, ça n'est pas obligatoire.

    Citation Envoyé par Logan Mauzaize Voir le message
    Les détails techniques font justement parfois la différence entre deux langages, comme je l'évoquais avec le GC, les pointeurs, etc. Et tant celui qui le concevra, que celui qui le choisira et que celui qui l'utilisera devront en avoir conscience. Mais qu'importe les restrictions et obligations qu'impose le langage et ce qu'il semble pouvoir faire de "magique", à l'heure actuel tout est basé sur la machine de Turing et Von-Neumann (après quelques recherches il semble qu'il y ait quelques exceptions). Et le résultat sera donc des instructions en séquence.
    Mais on s'en fout. Exemple : un(e) secrétaire qui utilise exel veut surtout pas savoir qu'il y a des instructions en séquence derrière. Peut-on tout faire avec Exel ? Non. Donc pas Turing-Complete. C'est grave ? Non. Les concepteurs ont justement ciblé le besoin métier, et pas des préoccupations théorico-techniques. Mais je parle pour les DSL. Dans le cadre d'un langage GPL c'est autre chose, mais la question qui se pose quand on décide de créer un nouveau langage, c'est comment répondre à un besoin/problème. Pas de savoir si on va avoir besoin de pointeurs ou d'un GC.

    Citation Envoyé par Logan Mauzaize Voir le message
    A mon sens c'est surtout que la question ne se pose pas et que même au-delà de ça, il y a des points plus bas niveau où la question ne se pose pas. Dans la mesure où sur ce quoi se base un langage peut évoluer, il faudra de nouveaux langages soit par nécessité, soit juste pour bénéficier des nouvelles spécificités (en plus ou en moins).
    Par ailleurs, doit-on considérer l'évolution d'un langage comme un "nouveau" langage ?
    J'imaginais qu'on parlait vraiment de nouveaux langages, et pas simplement d'évolutions. Je ne comprend vraiment pas la préoccupation bas niveau. Mettons qu'on soit d'accord sur les DSL (j'ai l'impression mais disons que le doute subsiste), mis à part sur l'intérêt des détails techniques et le bas niveau, ces précisions me semblent importantes.
    [|]

  11. #91
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Points : 8
    Points
    8
    Par défaut
    Apres avoir lu le texte ci haut, je suis pour créer de nouveaux langage de programmation sans pour autant oublier de lui apporter régulièrement des bibliothèques pour pouvoir l’optimiser et pallier a certaines de ces lacunes.

  12. #92
    Membre habitué
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2015
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2015
    Messages : 82
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par pvincent Voir le message
    Alors qu'on va mettre en chantier des immeubles en bois d'une trentaine d'étages, (ici un immeuble de 14 étages déjà construit http://www.cmpbois.com/articles/imme...et-bergen.html) cette analogie me semble bien périlleuse.
    Oui mais c'est précisément l'image qu'un vieux language (ici, par analogie, un "vieux" matériau) peut être poussé au delà de sa "zone de confort" naturelle:
    « On effectue ce projet de démonstration pour aller au-delà de notre zone de confort que représente la construction d'immeubles de quatre, cinq et six étages », précise Frédéric Verreault, porte-parole de Nordic Structures Bois, fournisseur de structures de bois massif. (http://www.lapresse.ca/maison/immobi...plus-hauts.php)

    On fait de même avec le béton, l'acier, etc. et donc si on repousse les limites, le potentiel d'une techno en la faisant évoluer, les autres technos aussi évoluent, et non pas se font rattraper: tout le monde y gagne, anciens et modernes: l'ancien, avec son C #+ ou Java, JS..., peut enfin faire des sites web modernes rapidement, mais les PHP, Python, Go, Scala, Erlang/Elixir/Elm, évoluant eux aussi, peuvent le faire de mieux en mieux, ne se font pas rattraper par C truc ou JS/ES201x.

    Ma stratégie: le juste milieu. Je ne prendrais pas l'évolution du C (C++, C#, Java, Go, ...) pour faire un site web SPA lourd ou léger, ni non plus un JS/ES2015 ou un Elixir, mais une techno assez moderne pour être productive, assez ancienne pour avoir tous les outils mûrs et ne pas tout reconstruire. A ce titre, Python me semble le meilleur choix avec la meilleure productivité car facile, clair, complet, maintenable, riche, et un framework Django très bon. JS/ES est encore trop en bouillonnement (l'ancien est moins bon que Python, le nouveau et son nouvel écosystème n'est pas encore stabilisé, la productivité fiabilité et maintenabilité sont moins bons que Python), PHP traine trop de boulets, et les nouveaux sont encore aussi trop immatures. Mais pour un produit interne, outil entre nous, oui, on doit tester, pour améliorer et faire évoluer.

    Comme l'univers du PC, il faut marcher sur deux pattes: l'ancienne et le nouveau: port série ET USB, HD ET Cloud, ...: sinon, le nouveau n'évoluerait jamais, et on serait encore à l'âge de pierre, à graver nos dessins plutôt que parchemin, papier, numérique...

  13. #93
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2015
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 438
    Points : 1 939
    Points
    1 939
    Par défaut Excellent exemple
    Citation Envoyé par thaymeo Voir le message
    Pour moi, il est nécessaire de recrée de nouveaux langages. On aura toujours besoin de quelque chose de nouveaux pour des usages futures. Prenons par exemple le C. Il est toujours utilisé mais nous n l avons dévié en C++ pour d autres usages.
    Le passage de C à C++ illustre parfaitement ma manière de voir : on prend un langage fondamental implémentant une approche (le mode procédural) de la résolution de problèmes et on l'étend intelligemment vers un autre mode d'appréhension des problèmes, le modèle objets. On l'utilise une dizaine d'années, puis on se rend compte que d'autres concepts et extensions seraient bienvenus. On implémente donc le 1x, qui reprend ce qui se fait de mieux dans les autres langages.
    Le gars qui aura investi dans le C++ sera toujours capable de résoudre à peu près n'importe quel problème proprement et efficacement et pourra utiliser facilement les nouvelles facilités sans casser l'existant.
    C'est une évolution raisonnée, pertinente.
    Autre exemple : SWIFT. Lui constate l'échec d'Objective C, intéressant mais trop exotique, et implémente une serie de concepts novateurs facilitant le travail, tout en restant généraliste. Manifestement, il est sur la voie du succès.

  14. #94
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 329
    Points : 606
    Points
    606
    Par défaut Langue et patois
    Ce qui différencie l'une de l'autre, c'est l'étendue de son usage, son histoire et sa cohérence.
    Si on ne distingue pas les deux. on se disputera sans fin en attendant que la tour de Babel s'effondre.
    GraceGTK: a plotting tool at https://sourceforge.net/projects/gracegtk

  15. #95
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aisne (Picardie)

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

    Informations forums :
    Inscription : Juillet 2014
    Messages : 125
    Points : 230
    Points
    230
    Par défaut Je suis un peu à coté de la plaque puique je programme surtout des µcontroleur...
    J'utilise un Basic compilé parfait pour ce genre d'appli sur µcontrôleur (automates, analyseurs, machines de labo) avec les plateformes genre Raspberry je me mets à Python c'est sympa mais c'est un langage interprété et pour moi c'est un retour en arrière.

    Basic est un langage simple qui peut être très complet comme le B4A et le méconnu et mal soutenu PureBasic, on se fiche de la casse, le C est c'hiant avec ses restrictions en revanche il y a une multitude de biblio et oui c'est cela l'important.
    Dommage que l'on ne puisse pas utilisé les biblio C dans le Basic.
    JP

  16. #96
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    Aprés avoir parcouru vos post, ce qui m'étonne est de constater une approche typiquement scolaire ou le floue l'emporterait. Se précise une sorte d'attentisme ou de substitutif a ????

    Étonnant. On dirait l'attente de mirages devant se substituer à la source. Contrairement aux idées reçues, il n'existe pas des centaines voir des dizaines de langages. Les langages sources se comptent sur le doigt de la main et datent presque tous du siècle dernier.

    Dois-on tout arrêter et ne s'occuper que de maintenances pour le simple fait que des éditeurs auraient gagné des parts de marché et imposés leurs marques ? ....

    Cela me rappelle l"euphorie du net des années 2000 ou même le cafetier du coin pouvait s'improviser webmaster. Frontpage et dreamwaver avaient quasiment flingué en rien de temps toute compétences.

  17. #97
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Points : 11
    Points
    11
    Par défaut
    Quelques uns d'entre nous passent une bonne part de leur temps à " accoster " des plateformes qui ne se comprennent pas.

    Alors un langage de plus ?

    Il y a une forme d'universalité dans Java.... dont Microsoft n'a pas vraiment voulu.

    Juste mon avis

  18. #98
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Citation Envoyé par candide02 Voir le message
    J'utilise un Basic compilé parfait pour ce genre d'appli sur µcontrôleur (automates, analyseurs, machines de labo) avec les plateformes genre Raspberry je me mets à Python c'est sympa mais c'est un langage interprété et pour moi c'est un retour en arrière.

    Basic est un langage simple qui peut être très complet comme le B4A et le méconnu et mal soutenu PureBasic, on se fiche de la casse, le C est c'hiant avec ses restrictions en revanche il y a une multitude de biblio et oui c'est cela l'important.
    Dommage que l'on ne puisse pas utilisé les biblio C dans le Basic.
    JP

    Il ne faut pas confondre le langage et en quoi il est compilé.
    Le langage c'est la manière dont on va s'exprimer (ici en programmant).
    Ensuite il peut être interprété ou compilé. On peut compiler du python, on peut aussi utiliser l'interpréteur.

    Le python permet également d'utiliser des bibliothèques C.

  19. #99
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par maske Voir le message
    Eh bien je trouve que le «truc», on sait pas ce que c'est.
    C'est le principe de l'abstraction. Globalement c'est du texte. Ca peut-être une chaîne de caractère au sein d'un ensemble plus grand (ex.: une expression régulière dans une chaîne de caractères d'un langage, ou bien un CDATA dans un fichier de configuration XML, ou bien une balise <script> dans une page HTML, ...) ou bien un fichier autonome.
    La façon dont s'est stocké importe peu.

    Citation Envoyé par maske Voir le message
    Ce truc dans la version «embarquée» est forcément interprété par une bibliothèque, ce que je trouve réducteur. Ça pourrait très bien être exécuté par une machine virtuelle - la même que celui du langage hôte par exemple. Est-ce que ça compte comme une bibliothèque ? Pour moi non. Ça me semble important de préciser, parce que prononce «bibliothèque» et t'as quelqu'un qui va venir parler de détails très techniques dans un langage ou un autre (cf. les pages précédentes). Mais je fais ce que je critique chez les autres, en déplaçant le débat sur des choses sans intérêts. Je retire donc cette affirmation et te réponds sur le reste dans la suite du message.
    Juste pour préciser mon point de vue et s'il en existe un différent, je suis très intéressé pour le connaître : une bibliothèque est un morceau de programme non-autonome.
    Pour moi le principe de "embarqué" je l'imagine justement comme l'utilisation de la syntaxe d'un langage hôte pour donner de l'expressivité. C'est le principe des fluent API & co. L'essence de la grammaire est donnée par des APIs (morceaux de code) propre qui ne forment pas un programme autonome ; ce sont donc des bibliotèques.
    Après je reste encore très ouvert sur la définition de "embarqué".


    Citation Envoyé par maske Voir le message
    Mais on s'en fout. Exemple : un(e) secrétaire qui utilise exel veut surtout pas savoir qu'il y a des instructions en séquence derrière. Peut-on tout faire avec Exel ? Non. Donc pas Turing-Complete. C'est grave ? Non. Les concepteurs ont justement ciblé le besoin métier, et pas des préoccupations théorico-techniques. Mais je parle pour les DSL. Dans le cadre d'un langage GPL c'est autre chose, mais la question qui se pose quand on décide de créer un nouveau langage, c'est comment répondre à un besoin/problème. Pas de savoir si on va avoir besoin de pointeurs ou d'un GC.

    J'imaginais qu'on parlait vraiment de nouveaux langages, et pas simplement d'évolutions. Je ne comprend vraiment pas la préoccupation bas niveau. Mettons qu'on soit d'accord sur les DSL (j'ai l'impression mais disons que le doute subsiste), mis à part sur l'intérêt des détails techniques et le bas niveau, ces précisions me semblent importantes.
    En fait le DSL n'était qu'une partie du sujet de mon message initial. Et je souhaitais simplement évoqué deux points : on aura toujours de nouveaux langages et notamment par l'intermédiaire du principe de "DSL". Et que les "DSLs" sont toujours plus ou moins liés à la notion de bibliothèque.
    Et je vais même plus loin (dans la suite de mon premier message) en indiquant que c'est aussi le cas avec les GPLs.

    Ensuite j'aborde le concept de plateforme. Car Java, Clojure, Groovy, Scala, Ruby, Python et bien d'autres peuvent s'exécuter sur une même JVM alors qu'ils exposent leur propre concept mais ils devront nécessairement faire avec les restrictions de la plateforme. Or certains de ces langages existent indépendemment de la JVM.
    Donc on pourra aussi bien inventer de nouveaux langages qui "compilent" vers une plateforme existante, que créer de nouvelles plateformes pour héberger des langages existants.

    Peu importe le degré d'abstraction des langages pour le moment, il s'agit toujours de transformer vers un langage existant (bytecode, Javascript, assembleur, binaire, signal électrique). CEPENDANT, on voit déjà poindre également de nouveaux langages très bas niveau, non plus à base de signaux électriques mais à base d'effet quantique. Ce qui révolutionnera surement une bonne partie des couches supérieures.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  20. #100
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Je suis plutôt d'avis qu'il faudrait mettre à niveau les langages que d'en créer.

Discussions similaires

  1. quand est il nécessaire de créer plusiers index ?
    Par doudou8mc dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/09/2009, 18h16
  2. créer mon propre langage de programmation
    Par fethi_09dz dans le forum Débuter
    Réponses: 12
    Dernier message: 14/01/2008, 14h14
  3. Réponses: 4
    Dernier message: 13/08/2005, 11h20

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