Affichage des résultats du sondage: Votre langage de programmation préféré

Votants
1511. Vous ne pouvez pas participer à ce sondage.
  • Java

    394 26,08%
  • C#

    258 17,07%
  • C++

    215 14,23%
  • C

    107 7,08%
  • Visual Basic .NET

    53 3,51%
  • Visual Basic 6 (et antérieurs)

    23 1,52%
  • VBA (Office)

    40 2,65%
  • Delphi

    82 5,43%
  • Python

    79 5,23%
  • Perl

    15 0,99%
  • ADA

    6 0,40%
  • Pascal

    14 0,93%
  • Ruby

    19 1,26%
  • BASIC

    5 0,33%
  • WinDev

    60 3,97%
  • PowerBuilder

    3 0,20%
  • Cobol

    8 0,53%
  • Fortran

    7 0,46%
  • Langages fonctionnels (OCaml, Haskell, F#, Scheme, Erlang...)

    27 1,79%
  • Objective-C

    16 1,06%
  • Autres (précisez)

    57 3,77%
  • Sans opinion

    23 1,52%
Discussion fermée Actualité déjà publiée
Page 4 sur 9 PremièrePremière 12345678 ... DernièreDernière
Affichage des résultats 61 à 80 sur 175
  1. #61
    Membre du Club
    Inscrit en
    février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : février 2007
    Messages : 32
    Points : 41
    Points
    41

    Par défaut C++

    C++:
    * objet
    * rigueur
    * performances
    * multi-plateformes
      0  0

  2. #62
    Membre éprouvé
    Homme Profil pro Ludovic G
    Consultant informatique
    Inscrit en
    février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Nom : Homme Ludovic G
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : février 2008
    Messages : 159
    Points : 479
    Points
    479

    Par défaut

    J'aurais pu voter C#, étant donné que c'est avec celui-ci que je travail quotidiennement (pas tant pour le langage en lui même mais plutôt pour tout ce qui gravite autour : EDI, possibilités offertes par la plateforme .net etc..)
    Mais finalement j'ai voté Pascal : nostalgie, c'est avec lui que j'ai fais mes armes.
      2  0

  3. #63
    Expert Confirmé
    Avatar de Klaim
    Homme Profil pro Joel Lamotte
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Nom : Homme Joel Lamotte
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 334
    Points
    3 334

    Par défaut

    Moi ca me désespère de voir autant de Java, C# ou C++ ... désolé, mais ca me fait penser que c'est le pôle emploi qui nous a tous embrigadés dans des jobs où on pratique surtout ces langages, donc j'ai voté Objective-C qui est selon moi objectivement un langage plus beau que Java ou C++.
    La "beauté" est totallement subjective et est totallement orthogonale à la productivité et à l'efficacité. L'efficacité est elle même dépendante des objectifs d'un projet.
      3  1

  4. #64
    Membre émérite Avatar de Ragmaxone
    Homme Profil pro Maxime Raguenet
    Responsable systèmes de distribution
    Inscrit en
    août 2007
    Messages
    441
    Détails du profil
    Informations personnelles :
    Nom : Homme Maxime Raguenet
    Âge : 29
    Localisation : Pologne

    Informations professionnelles :
    Activité : Responsable systèmes de distribution

    Informations forums :
    Inscription : août 2007
    Messages : 441
    Points : 820
    Points
    820

    Par défaut

    Citation Envoyé par Klaim Voir le message
    La "beauté" est ... totallement orthogonale à la productivité et à l'efficacité.
    <troll> contre-exemple : travailler avec un Mac permet d'être 200% productif en toute beauté </troll>
      0  2

  5. #65
    Expert Confirmé
    Avatar de Klaim
    Homme Profil pro Joel Lamotte
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Nom : Homme Joel Lamotte
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 334
    Points
    3 334

    Par défaut

    Oui, exactement, troll
      0  0

  6. #66
    Modérateur
    Avatar de ToTo13
    Homme Profil pro Guillaume
    Ingénieur de Recherche
    Inscrit en
    janvier 2006
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    Âge : 35
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 240
    Points : 8 780
    Points
    8 780

    Par défaut

    ---- Pourquoi ce choix
    Simplicité et rapidité. Je dois faire pas mal de prototypage et je gagne beaucoup de temps à faire ça en Java.
    La TRES grande communauté Java permet d'avoir accès aux bibliothèques des autres développeurs et comme toutes les classes de base sont communes, la connexion se fait très facilement.


    ---- Les plus/avantages
    * Rapidité du langage. Les 3 ou 4% avec C sont négligeables.
    * Simplicité.
    * La possibilité de me connecter aux autres librairies très facilement. Et dans mon cas cela change totalement mon travail.
    * Le débug ultra-rapide grade à l'auto-compilation des IDE.
    * L'abstraction des pointeurs qui fait gagner beaucoup de temps et de "segmentation fault"
    * C'est le langage le plus utilisé au monde, donc plus de chance d'intéresser un employeur.
    * Multi-plateforme (trivial)
    * L'installation des librairies est trivial, le jar est une révolution par rapport à toutes les librairies qui plantent fautes de dépendances.
    * Android est en java, donc facile de passer à la programmation pour SmartPhones.


    ----- Les moins/inconvénients
    J'en vois pas réellement, car avant j'ai fait du C.


    ----- Quels projets réalisez-vous avec et pourquoi
    * Traitement d'images
    * Classification / Classement
    * IA en général


    ----- Vers quels autres langages pensez-vous évoluer dans le futur
    Pourquoi changerai je ?
    MatLab à la rigueur pour toutes ses librairies.


    ----- Comment vous êtes-vous formé, ou avez-vous été formé sur ce langage
    Autodidacte, mais après une formation rigoureuse en C.


    ----- Est-ce une utilisation amateur ou professionnelle
    Professionnelle.


    - Avez-vous fait votre choix pour raison professionnelle, par plaisir, par choix personnel
    Professionnel. Je me suis dis à l'époque que puisque cela fait maintenant plus de 10 ans que c'est de loin le langage le plus utilisé c'est qu'il devait bien y avoir une raison.


    - Quels outils vous utilisez (Editeur, EDI, etc.)
    Eclipse


    - Autres langages utilisés, pourquoi ? Dans quel cadre ? Et comparaisons ?
    C de par mes origines d'étudiant. Mais j'en fais le moins possible.
    Python car j'y suis obligé : je dois parfois utiliser une plateforme qui a une sur-couche python. Mais j'oublierai ce langage dès que je peux.


    - Sur quels systèmes ou plateformes vous travaillez (Windows, DotNET, Linux, etc.)
    Mac OS X et pour rien au monde je ne voudrai avoir à revenir sur un autre OS.
    J'ai commencé par Window (l'ignorance du débutant), puis je suis passé durant mes études sous Linux (l'horreur incarnée), puis je suis finalement arrivé grâce à mon travail sous Mac et depuis je vis de manière beaucoup plus tranquille et j'oublie même souvent qu'il y a un OS derrière tout ce que j'utilise !!!


    - Conclusion
    Je n'ai à ce jour aucune raison de changer de langage et d'OS.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
      1  2

  7. #67
    Invité de passage
    Inscrit en
    avril 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 2
    Points : 2
    Points
    2

    Par défaut

    Windev si on veut mener a terme des projets de gestion et autres !
      1  4

  8. #68
    Membre chevronné
    Inscrit en
    juin 2008
    Messages
    477
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 477
    Points : 743
    Points
    743

    Par défaut

    C#

    C'est un vrai langage objet, pas une "surcouche" ajouté au C (c'est l'impression que je ressens avec le C++, même si ce n'est qu'une impression car je ne donne que mon avis personnel, pas un jugement), ce qui fait que sa syntaxe est limpide et ne donne pas une impression d'usine à gaz. Les outils sont diaboliquement efficaces et on ne perd pas de temps sur des choses non essentielles: tout est optimisé.

    C'est un langage d'avenir, surtout que Java, avec sa reprise par Oracle et maintenant son abandon par Apple , me semble pour le moins compromis, du moins sous sa forme actuelle.

    C'est un vrai langage "portable", au contraire du C (où seul le source est plus ou moins portable, et souvent moins que plus), la plateforme virtuelle et je jit étant les garants de cette portabilité. Le seul concurrent actuel étant Java, qui a un peu l'avantage pour l'instant mais avec un concept objet moins finalisé, un avenir inquiétant, et des outils moins conviviaux.

    Je suis un utilisateur atypique car je développe des applications qui mettent en relation des cartes électroniques à microcontroleurs avec des PC. Donc j'écris des applications dont une partie tourne avec des langages de très bas niveau (langage d'assemblage, ou C selon la cible) et dont l'autre tourne sur PC avec langages de haut niveau. Je connais bien les deux mondes, mais pour moi les langages "intermédiaires" entre le pur "abstrait" et le pur "efficacité" me semblent des langages qui n'excellent dans aucun des deux domaines.

    Je pense que le C# est un bon investissement pour l'avenir, surtout si Mono arrive à maturité. Vu que je pense qu'on vote ici pour des langages "sur PC" et non sur microcontroleurs, je vote donc C# sans hésitation aucune.

    A+
    Claude
      3  2

  9. #69
    Expert Confirmé Sénior
    Homme Profil pro
    BI
    Inscrit en
    mars 2003
    Messages
    1 546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : BI

    Informations forums :
    Inscription : mars 2003
    Messages : 1 546
    Points : 4 381
    Points
    4 381

    Par défaut

    Python

    Les projets complets que j'ai eu à réaliser avant 2005 sont en Delphi qui était mon langage préféré, en fait Pascal, avant de connaitre Python. Après 2005 je n'ai quasiment plus fait de programmation sauf épisodiquement.

    Pascal reste un de mes langages préférés mais j'ai récemment appris le python : je le trouve très puissant et en même temps très concis. Dommage qu'il soit encore plus confidentiel que Delphi alors qu'il est pour le coup très moderne et avec des concepts très sympas.

    J'aime le python principalement pour son langage, ça veut dire que j'aimerai qu'il soit plus répandu notamment en version compilé, et pas seulement IronPython abandonné par Microsoft. En revanche on peut dire qu'il existe dans l'environnement Java avec Jython.

    Mon rêve est d'avoir Python dans un EDI Delphi.

    Il faut aussi de jamais perdre de vue ce à quoi on destine le langage. Le C est trop bas niveau pour l'informatique de gestion, même s'il peut en faire, et le Jython est trop haut niveau pour l'informatique industrielle, même s'il peut en faire.

    Les plus/avantages
    Typé
    Concepts de List notamment très puissant
    Concis et non verbeux
    Lisible facilement.
    Comme le pascal permet de faire du bas niveau, quand on n'en a besoin, mais on n'est pas obligé de se coltiner des pointeurs quand on n'en a pas la nécessité (partage cet avantage avec Pascal).
    Tant qu'on ne fait pas de GUI et qu'on se contente de scripts, ou alors des programmes avec peu d'IHM, les inconvénients ci-dessous ne sont pas gênants.



    Les moins/inconvénients
    Pas très répandu
    N'existe pas en version compilée ou seulement IronPython mais on est obligé de se coltiner le framework .NET
    A part .NET, trop marqué par l'architecture microsoft, les GUI sont trop marqués par l'architecture unix. J'aimerai un python comme il existe un Delphi et un Kylix (malheureusement encore moins répandu, voire abandonné (je n'ai pas suivi les derniers épisodes)).
    Les sauts de lignes et indentation sont déroutantes pour le débutant, et oblige quelques fois à des acrobaties de présentation de code inutiles.


    Quels projets réalisez-vous avec et pourquoi
    Comme je le disais à part des besoins de scripts, je ne programme plus dans la vie de tout les jours (sauf de temps à autre du jython, du VBA). Sauf si faire du SQL c'est faire de la programmation.


    Comment vous êtes-vous formé, ou avez-vous été formé sur ce langage
    Avec la doc de python mais principalement avec l'excellent Plongez au coeur de Python (Mark Pilgrim)


    Est-ce une utilisation amateur ou professionnelle
    Voir au dessus. Ma première utilisation est professionnelle même si finalement ces derniers temps je programme très peu.

    Avez-vous fait votre choix pour raison professionnelle, par plaisir, par choix personnel
    Utilisé pour un projet professionnel. Et je me redirigerais vers Python ou le pousserait en avant pour d'autres projets.

    Quels outils vous utilisez (Editeur, EDI, etc.)
    IDLE (que je trouve trop basique).

    Autres langages utilisés, pourquoi ? Dans quel cadre ? Et comparaisons ?
    Delphi (Pascal)
    VB, VBA

    Sur quels systèmes ou plateformes vous travaillez (Windows, DotNET, Linux, etc.)
    Windows

    Conclusion
    Mon rêve serait d'avoir Python dans un EDI Delphi et ce de façon non confidentielle
      1  1

  10. #70
    Membre confirmé
    Avatar de Fildz
    Profil pro Benoît Maréchal
    Inscrit en
    juin 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Nom : Benoît Maréchal
    Âge : 30

    Informations forums :
    Inscription : juin 2004
    Messages : 161
    Points : 254
    Points
    254

    Par défaut

    Java pour moi, notamment parce que j'ai été formé sur ce langage. Mais j'apprécie de développé en Ruby (pour faire du Rails) et même si je n'aime pas trop les technos microsoft je trouve C# (pour faire du .NET) vraiment sympa
      0  0

  11. #71
    OPi
    OPi est déconnecté
    Membre confirmé
    Avatar de OPi
    Homme Profil pro Olivier Pirson
    Développeur / développeur Web
    Inscrit en
    août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Nom : Homme Olivier Pirson
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur / développeur Web

    Informations forums :
    Inscription : août 2005
    Messages : 74
    Points : 206
    Points
    206

    Par défaut

    J'ai voté pour Python. J'ai touché à pas mal de langages différents et je trouve Python très agréable. J'essaierai d'en dire plus plus tard, si je suis inspiré.

    Mais je voudrais signaler (comme je le fais régulièrement ici et là) que Python est un langage compilé (dans ses implémentation standard dont CPython, l'implémentation de référence) et non interprété. La même erreur est très souvent commise envers PHP et d'autres. JavaScript aussi est compilé, non ?

    Profitions de ce sondage qui recense un peu les langages pour s'interroger sur quels langages est interprétés de nos jours ?..
      0  2

  12. #72

    Inscrit en
    août 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 5
    Points : -1
    Points
    -1

    Par défaut

    C++ (C au pire)
      0  4

  13. #73
    OPi
    OPi est déconnecté
    Membre confirmé
    Avatar de OPi
    Homme Profil pro Olivier Pirson
    Développeur / développeur Web
    Inscrit en
    août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Nom : Homme Olivier Pirson
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur / développeur Web

    Informations forums :
    Inscription : août 2005
    Messages : 74
    Points : 206
    Points
    206

    Par défaut Python

    Quelques bons côtés de Python :
    • les types abstraits usuels agréablement utilisables
    • la généralisation de l'opérateur [] pour accéder aux éléments
    • les fonctions builtin qui permettent de généraliser des comportements de base du langages à ces propres classes (même si j'avoue un peu honteux que je ne maîtrise pas du tout le modèle objet)
    • l'indentation pour marquer les blocs (un peu troublant au début, mais rapidement un vrai bonheur)
    • tout est objet
    • support (partiel) des fonctions anonymes
    • le support de l'UNICODE
    • le toolkit Tk est un module standard
    • la compilation automatique avec sauvegarde des modules compilés
    • ...


    Un truc (temporairement) gonflant, c'est que Python 3 va prendre du temps à remplacer la branche 2.*...
      0  0

  14. #74
    Membre éclairé
    Inscrit en
    juillet 2008
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 406
    Points : 326
    Points
    326

    Par défaut

    Toujours les mêmes en tête!
    Comme quoi la migration vers les langages évolués se fait très très doucement.
      0  0

  15. #75
    Invité régulier
    Profil pro zineb Cerisette
    Inscrit en
    mars 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Nom : zineb Cerisette

    Informations forums :
    Inscription : mars 2010
    Messages : 25
    Points : 9
    Points
    9

    Par défaut

    Javaaaaaaaaaaa
      0  3

  16. #76
    Futur Membre du Club
    Profil pro raouf ben hassine
    Étudiant
    Inscrit en
    novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : raouf ben hassine
    Âge : 25
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2010
    Messages : 2
    Points : 15
    Points
    15

    Par défaut

    J'ai voté pour C#.

    Pourquoi ce choix
    J'utilise C# depuis 6 ans; durant les quelles je me suis amusé à pratiqué et apprendre plusieurs autres langages.
    Je doix dire que personnellement je ne pense pas qu'il y a un langage de programmation meilleur que les autres.
    Mon choix se réserve aux langages de la famille C. Dans cette catégorie le C# a des atouts que d'autres n'ont pas tel que les expressions lambdas ou plus généralement les fonctions anonymes et les délégués (ce qui relve plutôt du framework que du langage)

    Les plus/avantages
    Comme le cas de plusierus autres langages, le C# est un langage à tout faire.
    Ce qui le différencie est l'outil phare Visual Studio et le Framework .NET et tout ce qu'il a à donner.
    C'est une question de gout et de méthodes, à chacun son avis.
    Enfin, il y a l'intégration à Windows, qui n'importe quel autre langage ou framework ne peut rivaliser avec. On me dira, peut le C(++) avec les API WIN32. Je dirai alors je préfére le C# pour sa facilité d'utilisation ce qui me raméne au premier point.
    Les moins/inconvénients
    Sa limitation plus ou moins grave à Windows.
    C'est vrai que mono existe et j'encourage une telle initiative.
    Mais le simple fait de la non portabilité de WinForms me rend hésitant que dire de WPF.
    Je doix avouer que je n'ai pas testé ASP.NET ou Silverlight ou tout autre Framework de la plateforme .NET sous mono.
    Quels projets réalisez-vous avec et pourquoi
    Je réalise avec des projets de tout genre, ce qu'en me demande de faire, enfin.
    Vers quels autres langages pensez-vous évoluer dans le futur
    Je migrerai, dans le sens de cohabitation pas d'exculsion, vers Python en y forgeant mes connaissances.
    Aussi, il y a plusieurs autres autres langages qui m'intriguent dont Tcl, Haskell, F#.
    Comment vous êtes-vous formé, ou avez-vous été formé sur ce langage
    Je me suis formé tout seul.
    Est-ce une utilisation amateur ou professionnelle
    Toutes les deux.
    Avez-vous fait votre choix pour raison professionnelle, par plaisir, par choix personnel
    Au début, c'tait purement par plaisir. Maintenant, la raison professionnelle et le plaisir.
    Quels outils vous utilisez (Editeur, EDI, etc.)
    Principalement Visual Studio, TFS et tout ce qui va avec.
    Autres langages utilisés, pourquoi ? Dans quel cadre ? Et comparaisons ?
    J'utilise python et Matlab.
    Python, je l'utilise plutot quand je suis sur Linux et Matlab quand je fais que traitement de signal.
    Matlab et C# ne sont pas à comparer, chacun son domaine; même s'il se croisent en certains l'un ou l'autre finit par se déclarer vainceur (ou perdant).
    C# et Python se ressemble en le fait qu'il sont des langages à tout faire.
    En parlant purement langage je préfére C#, faute d'être formé au C et au typage fort. J'apprécie aussi la syntaxe OO de C# au dépit de celle de Python.
    En parlant origines et notions fondatrices ils ne sont pas à comparer car sa reviendra à comparer les réseaux cablés avec les réseaux sans fils.
    Sur quels systèmes ou plateformes vous travaillez (Windows, DotNET, Linux, etc.)
    Côté OS je travaille sur Windows, Linux et FreeBSD.
    - Conclusion
    Vu que le langage tout seul ne sert à rien et que chaque langage avec son framework a ses notions fondatrices, il est difficile de dire qu'un langage est absolument meilleur qu'un autre; ça dépend de ce qu'on veut faire avec.
      3  0

  17. #77
    Membre éclairé
    Inscrit en
    mai 2007
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 241
    Points : 300
    Points
    300

    Par défaut

    Citation Envoyé par zakaria84 Voir le message
    Toujours les mêmes en tête!
    Comme quoi la migration vers les langages évolués se fait très très doucement.
    lol!

    Quels sont les langages évolués?

    (Question bonus / 10 points: comment on définit un langage évolué?)
      2  0

  18. #78
    Membre du Club
    Homme Profil pro
    Inscrit en
    janvier 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2010
    Messages : 46
    Points : 51
    Points
    51

    Par défaut

    Citation Envoyé par raoufff Voir le message
    Sa limitation plus ou moins grave à Windows.
    C'est vrai que mono existe et j'encourage une telle initiative.
    Mais le simple fait de la non portabilité de WinForms me rend hésitant que dire de WPF.
    Je doix avouer que je n'ai pas testé ASP.NET ou Silverlight ou tout autre Framework de la plateforme .NET sous mono.
    Il existe une implémentation des WinForms sous Mono. C'est WPF qui n'a été porté et qui ne risque pas de l'être.
    Néanmoins, la plupart des développements Mono sous Linux utilise plutôt GTK#.
      0  0

  19. #79

    Inscrit en
    novembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 1
    Points : -1
    Points
    -1

    Par défaut je prefer delphi

    delphi 7
      0  2

  20. #80
    Membre émérite
    Inscrit en
    mars 2010
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 308
    Points : 888
    Points
    888

    Par défaut

    J'ai choisi "langages fonctionnels", mais j'aimerai quand même préciser un peu !

    Mon langage "normal" préféré est OCaml. C'est un langage multiparadigme. Il incite à la programmation fonctionnelle, mais donne au programmeur la possibilité de programmer en impératif (il y a les boucles, références et tableaux qu'il faut), mais aussi en objet (c'est le O de OCaml). Son modèle objet est d'ailleurs beaucoup plus puissant que celui de java par exemple, autorisant du vrai polymorphisme, du sous typage structurel (et non lié à l'héritage, qui n'est là que pour le partage de code), de parler de la classe courante dans les types, etc etc.
    Son système de type statique extrêmement puissant (et continuant à s'améliorer régulièrement) rend les programmes très sûr (les programmeurs caml ont l'habitude de dire "ça type, donc ça marche". Ce n'est bien sûr pas complètement vrai, mais c'est loin d'être complètement faux). Mais l'inférence de type complète fait que pour une utilisation normale, il n'y a aucun type à écrire, sauf pour la documentation ou pour aider à l'abstraction. Par exemple le code
    Code :
    1
    2
    3
    4
    let rec map fn lst =
      match lst with
      | [] -> []
      | hd::tl -> fn hd :: map fn tl
    qui applique une fonction à tous les éléments d'une liste est un code parfaitement typé (de type polymorphe ('a -> 'b) -> 'a list -> 'b list pour ceux que ça intéresse). Aucune annotation !
    Pour ce qui est des performances, elles sont plus qu'honorables. On parle généralement de facteurs 2 à 4 avec le C. C'est néanmoins très variable suivant les applications. J'ai déjà écris une application plusieurs ordre de grandeurs fois plus rapide que son homologue en C, juste parce que caml libère du temps cerveau programmeur en se chargeant des problématiques bas niveau, autorisant celui ci à se concentrer sur les vrais problématiques. (Dans le cas dont je parle, la solution était de faire de la mémoization, grandement faciliter entre autre par la possibilité de rendre du code "lazy" en caml. Évidemment, le code aurait put être repris en C avec du temps, et aurait sans doute été plus performant, mais le jeu n'en valait pas la chandelle).
    Un des plus gros défaut de caml est qu'un ne permet pas d'écrire des programmes tournant sur plusieurs coeurs. Vous pouvez écrire un programme avec des threads s'il y a un avantage algorithmique à le faire (et pour ne pas freezer en cas de lattence lors d'une lecture réseau par exemple), mais un lock global empêchera les différents threads de s'exécuter en parallèle. Cette limitation est du au GC (garbage collector, glaneur de cellules), qui pour être correcte nécessite une exécution linéaire.


    Mon deuxième langage préféré pour 2010 (et 2011 ) est moins "normal". En effet, ce langage est Coq. Coq est un langage fonctionnel, comme OCaml. Contrairement à ce dernier pourtant, coq n'est vraiment *que* un langage fonctionnel. Il n'a aucun trait impératif (il est totalement pur), au point qu'on ne peut même pas directement lire un fichier ou afficher quelque chose sur la sortie standard ! (j'insiste sur le "pas directement", sinon ce serait vraiment inutile).
    Alors quel est l'intérêt par rapport à caml ? Hé bien c'est la puissance du système de type de Coq ! Je disais plus haut que celui de caml était puissant. Si le système de type de Java est une souris, et celui de caml une baleine bleue, celui de coq ressemblerait plutôt à ça. Quel est l'intéret ? Et bien on peut y exprimer des théorèmes mathématiques. Par exemple on peut y exprimer que tout entier est soit paire soit impaire :
    Code :
    Lemma foo: forall n:nat, exists p, n = 2 *p \/ n = 2 * p +1
    On peut ensuite prouver ce lemme. Coq est en fait ce qu'on appelle un "assistant de preuve". C'est à dire qu'il laisse l'utilisateur exprimer des théorèmes puis les prouver, et vérifie extrêmement strictement que la preuve est correcte (et prouve aussi automatiquement les morceaux faciles).

    Alors pourquoi je parle de ça dans un sondage sur le langage de programmation préféré ? Hé bien la magie de Coq (qui vient de l'isomorphisme de Curry-Howard), c'est que c'est aussi un langage de programmation. Mais en combinant les deux (langage de programmation + assistant de preuve), on peut prouver formellement les programmes que l'ont écris. Et il y a deux grosses différences avec une simple preuve sur papier. La première est que Coq, en tant qu'assistant de preuve, est particulièrement précis, et empêche toute erreur. Mais surtout, ici, on prouve directement *le programme*, c'est à dire celui qui tournera effectivement. Il n'y a donc plus de risque d'introduire des erreurs en implémentant l'algorithme qu'on a prouvé sur papier.

    Une fois le programme écris et prouvé, on peut ensuite "l'extraire", c'est à dire d'une certaine manière le "compiler" vers... ocaml ! C'est ensuite en caml qu'il faut écrire la "glue" pour faire tourner le code (par exemple la lecture dans les fichiers, l'écriture, etc).

    La question légitime est: peut on réellement prouver de "vrais" programmes, et pas juste des exemples jouets. La réponses est clairement "oui".

    La librairie standard de Coq contient un certain nombre d'exemple, dont une implémentation intégralement prouvé des maps à base d'AVL. Il y a une preuve de la validité fonctionnelle (quand on ajoute un élément, il est ensuite dans la map !) mais aussi que toutes les opérations maintiennent l'équilibre.

    Mais en beaucoup plus impressionnant, il y a le compilateur C Compcert. Ici, c'est un compilateur complet, de C vers ARM, PowerPC et x86 qui est prouvé. Seul le parsing et l'ouput final de l'assembleur (c'est à dire juste l'impression dans un fichier. La génération de l'assembleur est bien sur prouvé) sont écris en caml non prouvés. Il est donc bien possible de prouver intégralement de vrais gros projets.

    Voici donc mes deux langages préférés
      8  0

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •