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 :

L'utilisation d'un langage de programmation approprié permettrait une réduction considérable des dépenses


Sujet :

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

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2013
    Messages
    7 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : mars 2013
    Messages : 7 297
    Points : 175 360
    Points
    175 360
    Par défaut L'utilisation d'un langage de programmation approprié permettrait une réduction considérable des dépenses
    L'utilisation d'un langage de programmation approprié permettrait une réduction considérable des dépenses,
    un développeur recommande Haskell

    Aaron Contorer, ancien employé Microsoft et fondateur de la compagnie FPComplete, une plateforme de développement Haskell, se fait promoteur de ce langage de programmation fonctionnel. Dans un petit exposé, il explique les avantages qu'offre Haskell aux entreprises.

    « Des milliards de dollars sont gaspillés à cause de l'excès de défaillance des projets, corrections de bugs et maintenances cauchemardesques » explique Contorer qui rappelle que de nombreuses études ont démontré que les maintenances et corrections de bugs consomment à elles seules 50 à 75 % des projets informatiques. Pour lui, l'une des raisons de ces problèmes est l'utilisation de langages traditionnels à l'instar de Java, C/C++/C# , Python, ou encore Ruby pour ne citer que ceux-là. Il estime que l'approche est très sujette aux erreurs et génère du « code spaghetti qui dévore les coûts finaux. ».

    Il explique que ce problème est relativement méconnu et perpétué parce que la grande majorité des programmeurs ne connaissent pas d'alternative viable et se contentent d'arrondir les angles de plusieurs façons : utilisation de meilleurs outils, développement Agile etc. Il précise que ce ne sont pas des solutions mais des contournements du problème.

    Pourquoi Haskell serait une alternative viable ? Parce que son approche est fondamentalement différente des langages dominants d'aujourd'hui. Les programmes Haskell sont une série de fonctions généralisables de haut niveau qui définissent ce que le programme est censé faire. Le programmeur se concentre sur l'objectif, les meilleures conceptions et logiques pour apporter un résultat spécifique souhaité. Le compilateur produit du code propre, concis et correct. Contorer a d'ailleurs cité les nombreux avantages techniques de l'utilisation d'Haskell :

    • une réduction des lignes de code de 50 à 80 % ;
    • une réduction considérable des erreurs ;
    • une réduction considérable de la découverte et de la correction d'erreurs au moment de la compilation ;
    • maintenance du code facilitée et modification sans introduction d'erreurs ;
    • plus sécurisé car moins de failles exploitables.


    Selon lui, tous ces avantages techniques auront pour conséquence d'accélérer le temps de mise sur le marché de 30 à 50 %, de réduire les coûts d'au moins 25 %, d'accroître la productivité du programmeur d'au moins 30 % mais surtout d'améliorer la qualité du produit.

    « Ruby et Python sont populaires parce qu'ils permettent un prototypage rapide, surtout dans le développement d'applications web. Toutefois, ils sèment les graines de futurs problèmes dans les performances, la fiabilité, l'évolutivité et la dépendance qui rend la maintenance cauchemardesque. » affirme-t-il. D'ailleurs, selon lui, il est amplement prouvé que Haskell peut les résoudre.

    A titre d'exemple pour illustrer ses dires, il cite Janrain qui, après avoir connu des taux élevés d'échec avec Ruby, a commencé à utiliser Haskell et a pu réduire de 75 % le temps qu'il consacrait à des corrections de bugs. D'ailleurs le NYT a déclaré utiliser Haskell pour présenter sa semaine de la mode qui est une application avec des quantités massives d'images et d'analyses.

    Le rédacteur en chef Andrew Binstock de Dr. Dobb a tweeté récemment « J'ai remarqué plusieurs fois quand quelqu'un dit, "X a vraiment changé ma façon de penser sur la programmation," fréquemment X = Haskell. » Karthikeyan Mani, co-fondateur de Byteally en Inde a dit « C'est la façon naturelle de programmer. C'est la première fois que je suis en paix quand je code. Avec Ruby, c'est toujours des maux de tête et des énervements. Nous nous éloignons de la programmation traditionnelle ».

    Source : Mozilla Open News, étude FPCompete, cas Janrain (au format PDF), blog FPCompete

    Et vous ?

    Avez-vous déjà utilisé Haskell ? Qu'en pensez-vous ?

    Partagez-vous le point de vue de Aaron Contorer ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Invité
    Invité(e)
    Par défaut
    Les langages de programmations sont des outils créés pour répondre à des besoins. Chacun a ses qualités et ses défauts, et certains sont mieux conçus que d'autres.
    Les programmeurs ont des outils de prédilection, des préférences. Mais aucun outil n'est LA solution universelle. Aucun outil n'est adapté à TOUS les problèmes.
    Ce n'est pas parce qu'un homme (ou une équipe) a découvert un langage adapté à ses besoins et qu'il apprécie en tant que programmeur que ça en fait une solution universelle ! On peut trouver aux quatre coins du net des personnes qui te diront la même chose en remplaçant "Haskell" par "Python", par "Erlang", par "Go", par MetIciCeQuiTeFaitPlaisir…

  3. #3
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Mouais article complétement illogique.

    Ça commence bien en parlant de langage approprié, c'est-à-dire un langage pour un problème donné, et ça part tout de suite en vrille en préconisant un langage qui peut faire le café et répondre à n'importe quel problématique.

    Ce langage que je ne connais pas, le Haskell, est sans doute super génial mais c'est impossible qu'il puisse répondre aux besoins de bas niveau, comme aux besoin de haut niveau, comme à l'informatique de gestion qui se trouve entre les deux.

    En fait le présenter comme un concurrent à la fois de java, C++, et Python est aussi risible car chacun a un domaine d'utilisation différent.

  4. #4
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    août 2005
    Messages
    845
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2005
    Messages : 845
    Points : 1 683
    Points
    1 683
    Par défaut
    Il faut donc utiliser un langage appropié selon le besoin, mais utiliser Haskell ! Ah bon, celui-ci répondrait donc à tous les besoins possibles ?

    Ou bien "un développeur" qui parle est développeur Haskell et prêche pour sa paroisse parce qu'il n'y a pas beaucoup de boulot sur ce langage ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2011
    Messages : 265
    Points : 546
    Points
    546
    Par défaut
    Tiens c'est marrant ça me rappel le débat que j'ai eu avec un collègue pro-Haskell (et autre langage fonctionnel), ce que l'article oublie de dire c'est que la syntaxe du code Haskell est inbouffable et pas très user friendly, les puristes vont me dire qu'on s'en fou, un langage ça reste un langage blablabla mais bon voila, le fait est la, ça explique pourquoi il nécessite bien moins de ligne justement, et c'est pas le 1er langage à faire ça ! Mais comme tjrs les puristes de ces langages sont certes dans le vrai pour le niveau de performance de ces langages qui reste imbattable mais pour tous le reste, il faudra revoir la copie, comment ces langages s'embarquent ou s'imbriquent dans des architectures existantes, proposent-ils des frameworks adaptés à tous les contraintes "rééls" des projets actuels ? (drivers Oracle ou NoSQL proposés ? etc. etc.). Je pense pas que le Graal existe ds les langages de programmation, ils sont juste chacun bons dans un domaine mais ne peuvent l'être dans tous. Point.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    mars 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2006
    Messages : 164
    Points : 227
    Points
    227
    Par défaut
    code spaghetti qui dévore les coûts finaux
    Dites moi si je dis une bêtises mais ce que l'on appelle "code spaghetti" c'est bien un code avec des sauts non structurés, typiquement des goto ?

    C'est plus très courant ce genre de chose surtout dans des langages comme Python ou Ruby où je ne crois pas que ça existe réellement du moins dans le langage de base.

  7. #7
    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 : 41
    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 722
    Points
    39 722
    Par défaut
    Pour avoir un peu joué avec, je pense qu'Haskell est un langage très intéressant d'un point de vue académique ; et c'est vrai qu'en général on a moins de surprises (et donc moins de bugs) qu'avec des langages plus traditionnels, c'est une des conséquences de l'approche fonctionnelle.

    Par contre je suis un peu sceptique sur la possibilité de développer de "vraies" applications avec ce langage. Haskell est un langage fonctionnel pur, c'est à dire qu'il ne permet pas les effets de bord (du moins pas directement). Or, toute application concrète nécessite forcément des effets de bord : afficher un texte à l'écran est un effet de bord ! Evidemment, il est possible de le faire en Haskell, indirectement, via les monades ; mais comprendre le concept des monades, c'est tout sauf intuitif. Ca m'a pris très longtemps rien que pour comprendre à peu près en quoi ça consistait.

    Bref, l'approche fonctionnelle a beaucoup de qualités, mais à mon avis un langage fonctionnel un peu plus pragmatique qu'Haskell (comprendre : pas purement fonctionnel) serait sans doute plus approprié pour faire de vraies applications concrètes. D'autant plus que la syntaxe de Haskell est relativement imbitable au début, avec plein d'opérateurs bizarres dont la signification n'est pas évidente du tout car ils représentent généralement à des fonctions d'ordre supérieur (higher-order functions, c'est à dire des fonctions qui manipulent des fonctions)

    Cela étant dit, ce n'est pas une raison pour ne pas apprendre Haskell ; je l'ai fait il y a 2 ans par curiosité, et c'est vrai que ça ouvre l'esprit sur une façon très différente de programmer (surtout pour quelqu'un qui vient des langages procéduraux et orientés objet). Pour ceux que ça intéresse, je recommande vivement ce tutoriel : Learn You a Haskell for Great Good

    Pour donner un avant-goût des possibilités, voilà à quoi peut ressembler un quicksort en Haskell :

    Code Haskell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    quicksort :: Ord a => [a] -> [a]
    quicksort []     = []
    quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
        where
            lesser  = filter (< p) xs
            greater = filter (>= p) xs

    Difficile de faire plus concis... l'implémentation correspond de très près à la description de l'algorithme.

    (évidemment cette implémentation est un peu simpliste ; elle n'est pas "in-place", et utilise toujours le 1er élément comme pivot, ce qui n'est pas idéal)

    Bref, pour conclure, c'est un langage super, mais je me vois mal développer des applis complètes avec ça... Ce qui peut être intéressant, par contre, c'est d'utiliser Haskell pour les parties métier où il y a des algorithmes complexes, et autre chose pour la partie UI.

  8. #8
    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 : 41
    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 722
    Points
    39 722
    Par défaut
    Citation Envoyé par RaphAstronome Voir le message
    Dites moi si je dis une bêtises mais ce que l'on appelle "code spaghetti" c'est bien un code avec des sauts non structurés, typiquement des goto ?
    Pas forcément... on peut faire du bon code spaghetti sans jamais utiliser goto
    En gros c'est du code complexe, mal structuré, avec beaucoup de dépendances entre les différents modules. Quand tu modifies un truc quelque part, tu n'es jamais sûr que ça ne va pas casser quelque chose à un autre endroit, même s'il n'y a pas de lien évident.

  9. #9
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 378
    Points
    9 378
    Par défaut
    Haskell est en fait une belle bête (même si je ne l'ai jamais pratiqué).

    Il permet par exemple de faire du temps réel et du système embarqué, allant même jusqu'à un temps de granularité d'une milliseconde.
    Bon après c'est ses retranchements les plus critiques et c'est pas donné à tout le monde de l'utiliser ainsi... On ferra pas de systèmes demandant un niveau encore plus critique avec.

    A ce que j'avais lu dessus il est aussi capable de tenir la charge dans le traitement des grosses données.

    Après, avis perso, sa syntaxe est à vomir et je comprends pourquoi il n'évolue que dans le domaine de la recherche (qui est aussi très friand des langages tels que Prolog ou Lisp).

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  10. #10
    Membre éprouvé
    Homme Profil pro
    -
    Inscrit en
    octobre 2011
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : octobre 2011
    Messages : 344
    Points : 1 235
    Points
    1 235
    Par défaut
    1ère chose, l'article suggère Haskell pour les domaines suivant :
    Two commercial applications Haskell is ideal for stand out:
    1. Enhancing existing software environments such as Ruby and Python.
    2. Proprietary business logic and data analysis.
    Et*:
    Another noteworthy Haskell benefit is performance.
    Pour le reste il parle pas de «*language adapté*».

    J'ai déjà utilisé Haskell pour faire un raytracer, et c'est vrai que les erreurs ont été exclusiment*:
    * mathématique (erreurs dans les algorithmes)
    * de compilation
    Maintenant au niveau de la compilation, quelle dureté avec le typage. Tout les cast doivent être explicites. Seul le fait qu l'on utilise silencieusement des méthodes templates permet de s'en sortir un peu. Les runtimes errors avait disparu au prix d'une compilation plus douloureuse mais tout de même préférable je pense.

    Quand au commentaire du dessus qui se plaint de sa syntaxe, je répondrais que c'est bien comme du chinois. Non la syntaxe n'est pas si horrible (en tout cas pas plus que le C++), mais elle est tellement différente de ce que cette communauté est habituée.
    Tout comme le chinois est tellement différent du français/anglais/allemand/espagnol que vous peinerez probablement bien le jour où vous voudrez l'apprendre, l'haskell demande de recommencer presque à zero. (Alors que pour moi le java, le C++ et le C# sont plus comme des patois éloignés comme le sont le danois, le norvégien et le suédois) Comme le C, la syntaxe d'Haskell s'inspire des notations mathématiques, mais de manières encore plus proche. Vous n'écrivez pas une fonction comme un algorithme comme en C, mais plutôt comme une espèce de formule, vraiment plus proche de comme on le fait de manière mathématique. C'est pas seulement une syntaxe différente, c'est carrément une manière de penser différente.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2012
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    "Il n'y a pas de mauvais langage... Il n'y a que de mauvais développeurs".

  12. #12
    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 : 41
    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 722
    Points
    39 722
    Par défaut
    Citation Envoyé par JeyJer Voir le message
    "Il n'y a pas de mauvais langage... Il n'y a que de mauvais développeurs".
    J'ai souvent vu cette citation, et je la trouve complètement fausse. Bon, pas complètement en fait... même avec un très bon langage, un mauvais développeur reste mauvais, et un bon développeur peut faire des miracles avec un langage de m***e. Mais cette proposition suppose quand même qu'il y a des langages meilleurs que d'autres...

    Personnellement, le plus mauvais langage que je connaisse est de très loin le batch de Windows. La tâche la plus simple devient vite un cauchemar. C'est à peu près le seul langage où j'ai besoin de la doc pour écrire un if ou un for (et en plus la doc officielle est quasiment inexistante, ou très incomplète).

  13. #13
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mars 2011
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2011
    Messages : 222
    Points : 764
    Points
    764
    Par défaut
    J'y vois surtout un patron qui fait la promotion des technologies vendues par sa boîte, rien de plus logique.

    J'ai jamais vraiment entendu parler d'haskell, en France il me semble que l'équivalent le plus utilisé est Caml (dont la syntaxe me paraît quand même un peu plus lisible qu'Haskell, mais c'est peut-être une question d'habitude).

    C'est certain que le typage fort réduit par définition tous les problèmes liés au typage dès la compilation. Ajouté à ça l'absence de pointeurs, pas d'effet de bords... et on vient effectivement de régler une grande proportion des bugs qu'on trouve dans les programmes C.

    La programmation fonctionnelle permet effectivement de programmer plus rapidement... mais pas forcément les mêmes choses. Dans un autre style de programmation, Prolog permet aussi de programmer plein de choses beaucoup plus rapidement et sans bugs, mais pas les mêmes choses non plus.

    Quoi qu'il en soit, aucun langage ne protégera jamais des erreurs fonctionnelles, qui incombent au développeur, et encore quand les bugs ne sont pas déjà présents dès les spécifications!

    Pour moi un code maintenable est d'abord un code bien commenté et documenté, quel que soit le langage. Et si possible développé par un développeur maison, pas par un prestataire de service qui a tout intérêt à ce qu'on lui demande de retravailler le code, ou une "ressource" envoyée par une SSII qui n'en à rien à faire puisqu'il sera ailleurs dans 3 semaines... Bref, on devrait superposer les graphiques de l'évolution du nombre de bugs et de la recrudescence des SSII et je pense qu'on aura trouvé la source d'une bonne partie des problèmes.

    Par expérience, il me semble que le mauvais code provient surtout de l'impératif de rapidité de codage à laquelle nous sommes souvent soumis, tout est à faire pour la veille, alors pas le temps pour documenter le code, pas le temps de faire les test unitaires... alors quand j'entend que tel langage, tel EDI ou telle nouvelle techno est censée accélérer le temps de développement ça ne me rassure pas.

    Il existe effectivement des méthodes (méthodes formelles) qui permettent de réduire considérablement (ou même de supprimer) les bugs ainsi que les erreurs fonctionnelles, mais qui imposent un travail supplémentaire en amont, ce qui peut finalement rallonger le temps de développement global.

    On ne peut pas avoir le beurre et l'argent du beurre, mais c'est de bonne guerre qu'un discours commercial comme celui-ci essaie de nous le faire croire.

  14. #14
    Membre éclairé
    Inscrit en
    juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Citation Envoyé par spyserver Voir le message
    Tiens c'est marrant ça me rappel le débat que j'ai eu avec un collègue pro-Haskell (et autre langage fonctionnel), ce que l'article oublie de dire c'est que la syntaxe du code Haskell est inbouffable et pas très user friendly
    La syntaxe est très claire et très lisible (plus que du C++03 en mode métaprogrammation en tout cas, les versions suivantes de C++ améliorent quand même la chose).
    Elle est seulement très différente de ce à quoi les gens sont habitués (syntaxe C-like), c’est tout.

    Citation Envoyé par tomlev Voir le message
    Par contre je suis un peu sceptique sur la possibilité de développer de "vraies" applications avec ce langage.
    Pourtant il y en a certains qui y arrivent apparemment…

    Citation Envoyé par transgohan Voir le message
    Il permet par exemple de faire du temps réel et du système embarqué, allant même jusqu'à un temps de granularité d'une milliseconde.
    Oui.
    Il permet aussi d’autres trucs sympa comme un système de fichiers avec des propriétés intéressantes :
    Citation Envoyé par http://okmij.org/ftp/continuations/zipper.html#zipper-fs
    The outcome looks like the Unix file system, with the improved semantics: transactions; undo of any file and directory operation; snapshots; statically guaranteed the strongest, repeatable read, isolation mode for clients; pervasive copy-on-write for files and directories; built-in traversal facility; the expected behavior for cyclic directory references.
    Ou encore un kernel.
    Même si c’est deux derniers sont plus des PoC que de véritables applications.
    Après il y a aussi d’autres trucs, genre Repa, qui ont largement dépassé le stade du PoC.



    Bon après Haskell n’est pas adapté à toutes les situations (aucun langage ne l’est), du genre faire de la GUI doit être assez douloureux. Mais bon, le gars est à la tête d’une boîte qui fait son beurre là-dessus, donc il vend sont truc. C’est pas objectif, mais ce n’est pas surprenant non plus.

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

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 667
    Points : 28 183
    Points
    28 183
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Code Haskell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    quicksort :: Ord a => [a] -> [a]
    quicksort []     = []
    quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
        where
            lesser  = filter (< p) xs
            greater = filter (>= p) xs
    .
    bon alors je ne connais pas Haskell, mais quand je vois ce genre de syntaxe, je me demande ce que les concepteurs ont dans la tête ?!

    si je comprend ce code (après avoir consulté ce site sinon je ne comprenait rien) il pourrait s'écrire en pseudo C fonctionnel comme ceci
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [] quicksort([] i:p) { return i ? quiksort(i < p) + p + quicksort(i > p) : [] }
    ça ne lui retire rien du fonctionnel et change peu la syntaxe du C
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    janvier 2011
    Messages
    3 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : janvier 2011
    Messages : 3 147
    Points : 9 378
    Points
    9 378
    Par défaut
    Citation Envoyé par laerne Voir le message
    Quand au commentaire du dessus qui se plaint de sa syntaxe, je répondrais que c'est bien comme du chinois. Non la syntaxe n'est pas si horrible (en tout cas pas plus que le C++), mais elle est tellement différente de ce que cette communauté est habituée.
    Tout comme le chinois est tellement différent du français/anglais/allemand/espagnol que vous peinerez probablement bien le jour où vous voudrez l'apprendre, l'haskell demande de recommencer presque à zero. (Alors que pour moi le java, le C++ et le C# sont plus comme des patois éloignés comme le sont le danois, le norvégien et le suédois) Comme le C, la syntaxe d'Haskell s'inspire des notations mathématiques, mais de manières encore plus proche. Vous n'écrivez pas une fonction comme un algorithme comme en C, mais plutôt comme une espèce de formule, vraiment plus proche de comme on le fait de manière mathématique. C'est pas seulement une syntaxe différente, c'est carrément une manière de penser différente.
    Comment faire en deux paragraphes ce que j'ai justement exprimé dans ma ligne. ^^
    C'est une manière de penser à laquelle on n'est pas habitué contrairement aux chercheurs.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  17. #17
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    D'accord avec le titre de cet article: un langage inapproprié dans un projet est une aberration et une source de problème. En désaccord complet avec la preconisation.

    Un langage seul, meme si on en est un aficionados converti, ne peut convenir à toute les situation. On retombe alors dans l'aberation.

    A titre pro, j'ai vu beaucoup de besoin client arriver, et sans l'avoir lu des responsable dire "on va leur vendre du java". Non, non, non.

    D'abord on regarde le besoin, ensuite on regarde ce qui conviendrait, on impose pas ce qu'on a sous la main.

    De plus, l'autteur denonce, entre autre, le C et le python. A titre aussi bien perso que pro, meme si j'admet que cela n'est pas un panel totalement representatif de ce qui existe, le couple de ces lanages m'a toujours suffit à simplement repondre aux besoins, et ce avec accord éclairé du commanditaire à chaque fois.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  18. #18
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 5 239
    Points : 19 646
    Points
    19 646
    Billets dans le blog
    17
    Par défaut
    Avez-vous déjà utilisé Haskell ? Qu'en pensez-vous ?
    Jamais essayé, pourtant je connais plusieurs langage (pas tous au même niveau bien sûr):
    -perl
    -php/js (CSS/HTML5... web en général)
    -action script
    -haxe
    -vb.net / c#.net
    -xsl
    -adonix V3 (langage propriétaire)
    -c++
    -python/ruby (un tout ptit peu pour faire de la veille surtout)

    Partagez-vous le point de vue de Aaron Contorer ?
    Pas vraiment, je pense que l'on a suffisament de frameworks/librairies de qualités pour avoir un travail de qualité
    Il faut plutot mettre en place des bonnes pratiques pour les développeurs (listés et décidés avec eux) et s'y tenir

    Le langage n'est qu'un outil, l'important c'est de bien former ces artisants
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

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

    Informations forums :
    Inscription : décembre 2007
    Messages : 6 763
    Points : 31 784
    Points
    31 784
    Par défaut
    Tous ces opérateurs cabalistiques, moi, je lâche. J'avais lâché le CAML pour la même raison. Si un jour je me mets au fonctionnel, alors ça sera du LISP : y'a des parenthèses partout, mais au moins il n'y a pas de [<%µ*$£¨+ pour passer l'aspirateur.

    Celà étant dit, j'approuve la plupart des messages ci-dessus : un bon langage est un langage adapté. Et ça ne peut pas toujours être Haskell(ou quoi que ce soit d'autre)
    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.

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2012
    Messages
    3 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : septembre 2012
    Messages : 3 019
    Points : 16 079
    Points
    16 079
    Par défaut
    Bon, ce monsieur vends son produit, c'est très bien.

    Par contre, entre tout son blabla, il cite quand même des chiffres intéressant.

    Une bonne partie du budget informatique part en correction de bugs.

    Là dessus on est d'accord.

    Mais je suis prêt à parier un petit billet que si les entreprises qui étaient confrontés à ce problème se contentaient juste de changer le langage de programmation, le problème seraient exactement le même.


    Ce que ma (petite) expérience m'a permis de remarquer, c'est que les entreprises ne savent pas s'impliquer dans les phases de conception.

    Que ce soit l'entreprise qui réalise, ou l'entreprise qui à émis le besoin.

    Le plupart du temps, quand on projet se termine mal, c'est du au fait que la phase de conception à été bâclée. Pour diverses raisons :

    • Parce que le client ne s'impliquait pas, disait oui à tout et à eu ce qu'il a validé, ce qui n'était évidement pas ce qu'il voulait...
    • Parce que du point de vue de la direction du réalisateur, la phase de conception est dure à vendre, souvent faite en avant-vente, donc c'est souvent grossier et incomplet
    • Parce que parfois, les architectes parlent bien... mais une fois devant leur feuille blanche, ya plus personne...
    • Parce que le client à entendu parler de Cloud++FX32 et qu'il veut absolument l'avoir dans son projet alors que ça n'a aucun sens de le faire. Mais c'est le client donc on le mets...


    A mon sens, le problème des surcouts de la maintenance et de la correction des bugs vient tout simplement d'une défaut de conception et d'anticipation. Mais bon, les architectes expérimentés coutent chers, les devs juniors pas cher. Donc...

Discussions similaires

  1. 17 créateurs de langages de programmation disent ne pas utiliser de débogueurs interactifs
    Par Idelways dans le forum Débats sur le développement - Le Best Of
    Réponses: 310
    Dernier message: 28/09/2016, 13h51
  2. langages de programmation necessaires pour une application web
    Par nesrine 51092 dans le forum Débuter
    Réponses: 3
    Dernier message: 30/05/2014, 22h25
  3. Réponses: 51
    Dernier message: 17/10/2013, 21h52
  4. Réponses: 15
    Dernier message: 15/12/2010, 01h38
  5. Quel langage de programmation utiliser pour un MMOG?
    Par @v@lon dans le forum Développement 2D, 3D et Jeux
    Réponses: 18
    Dernier message: 17/03/2007, 13h31

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