C++:
* objet
* rigueur
* performances
* multi-plateformes
Java
C#
C++
C
Visual Basic .NET
Visual Basic 6 (et antérieurs)
VBA (Office)
Delphi
Python
Perl
ADA
Pascal
Ruby
BASIC
WinDev
PowerBuilder
Cobol
Fortran
Langages fonctionnels (OCaml, Haskell, F#, Scheme, Erlang...)
Objective-C
Autres (précisez)
Sans opinion
C++:
* objet
* rigueur
* performances
* multi-plateformes
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.
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.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++.
Oui, exactement, troll
---- 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.
Windev si on veut mener a terme des projets de gestion et autres !
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
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
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
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 ?..
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.*...
Toujours les mêmes en tête!
Comme quoi la migration vers les langages évolués se fait très très doucement.
Javaaaaaaaaaaa
J'ai voté pour C#.
J'utilise C# depuis 6 ans; durant les quelles je me suis amusé à pratiqué et apprendre plusieurs autres langages.Pourquoi ce choix
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)
Comme le cas de plusierus autres langages, le C# est un langage à tout faire.Les plus/avantages
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.
Sa limitation plus ou moins grave à Windows.Les moins/inconvénients
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.
Je réalise avec des projets de tout genre, ce qu'en me demande de faire, enfin.Quels projets réalisez-vous avec et pourquoi
Je migrerai, dans le sens de cohabitation pas d'exculsion, vers Python en y forgeant mes connaissances.Vers quels autres langages pensez-vous évoluer dans le futur
Aussi, il y a plusieurs autres autres langages qui m'intriguent dont Tcl, Haskell, F#.
Je me suis formé tout seul.Comment vous êtes-vous formé, ou avez-vous été formé sur ce langage
Toutes les deux.Est-ce une utilisation amateur ou professionnelle
Au début, c'tait purement par plaisir. Maintenant, la raison professionnelle et le plaisir.Avez-vous fait votre choix pour raison professionnelle, par plaisir, par choix personnel
Principalement Visual Studio, TFS et tout ce qui va avec.Quels outils vous utilisez (Editeur, EDI, etc.)
J'utilise python et Matlab.Autres langages utilisés, pourquoi ? Dans quel cadre ? Et comparaisons ?
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.
Côté OS je travaille sur Windows, Linux et FreeBSD.Sur quels systèmes ou plateformes vous travaillez (Windows, DotNET, Linux, etc.)
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.- Conclusion
delphi 7
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
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let rec map fn lst = match lst with | [] -> [] | hd::tl -> fn hd :: map fn tl
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 :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part Lemma foo: forall n:nat, exists p, n = 2 *p \/ n = 2 * p +1
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager