interprétable sans compilation (mais pourquoi pas compilable)
utilisable sur Linux, Windows et MacOS
simple (donc si possible pas Java, je pense plus à un truc comme PHP)
qui me permette de traiter aussi bien des fichiers textes que des fichiers de données, de faire des calculs mathématiques relativement avancés et éventuellement de tracer des graphiques/courbes.
Tous les appels aux bibliothèques, ce genre de choses. Je veux un truc qui ne fasse pas appel à plein de fonctions dans tous les sens, c’est trop long à apprendre.
A utiliser ensemble ou l’un peut plus ou moins remplacer un autre ?
EDIT : question un peu bête après avoir regardé sur le web… Le python semble celui qui me correspondrait le mieux entre les 3, au niveau de la syntaxe au moins.
Vu qu’en ce moment je m’amuse beaucoup avec perl, je dirais perl. C’est fou ce qu’il va bien ce langage.
Mais ça n’a rien de rationnel et je ne connais pas ton appli.
perso moi j’aime bien python (choisi pour apprendre, pas pour faire un projet)
si tu t’y connais pas grand chose en programmation comme moi , tu ne serra pas vraiment en mesure de choisir le bon langage pour ton application donc demande conseil.
Tous les appels aux bibliothèques, ce genre de choses. Je veux un truc qui ne fasse pas appel à plein de fonctions dans tous les sens, c’est trop long à apprendre.[/quote]
Une bibliothèque c’est une bibliothèque tu en a dans tout les langages du mondes PHP compris (gd est là pour le prouver).
A utiliser ensemble ou l’un peut plus ou moins remplacer un autre ?[/quote]
Ils sont tous trois turing-complet donc interchangeables (facilement qui plus est).
@antalgeek > perl est un plaisir, python lisible et ruby joli.
Ruby est, des trois, celui que je connais le moins et pour cause je n’ai jamais programmé avec. J’ai un problème avec ce langage depuis que je sais que les “constantes” n’en sont pas, ça me crispe.
C’est vraiment pas mon rayon habituellement, mais je tilte à cause de “traiter aussi bien des fichiers textes que des fichiers de données, de faire des calculs mathématiques relativement avancés et éventuellement de tracer des graphiques/courbes.” : tu as pensé à R ?
[quote=“MisterFreez”]@antalgeek > perl est un plaisir, python lisible et ruby joli.
Ruby est, des trois, celui que je connais le moins et pour cause je n’ai jamais programmé avec. J’ai un problème avec ce langage depuis que je sais que les “constantes” n’en sont pas, ça me crispe.[/quote]
Je n’ai fait que des bricoles en python : des bouts de code pour tester des bidules et ensuite les basculer en C/C++ pour les intégrer à une appli. J’ai donc beaucoup de mal à me rendre compte de la puissance de ce langage.
Quand à ruby je n’ai fait que survoler des docs sur le sujet quand je tombe sur une dépêche DLFP qui en parle.
Bon par contre c’est vrai qu’en perl quand on commence à bien roxer la lisibilité du code n’est pas toujours au rendez-vous…'fin ça dépend des commentaires ou plutôt de leur absence
Pour revenir au sujet quand je codais des simulations complexes en robotique qui nécessitaient de faire des calculs musclés avec des représentations graphiques j’aimais bien matlab. Je ne sais pas si on a un équivalent sous gnu, scilab ?
avec Python, tu as numpy pour le calcul scientifique et matplotlib pour les graphiques. Tu peux aussi utiliser R en python avec rpy. Sage comprends (d’après son site) pas loin de 100 paquets, dont les précédents, utilisés pour les maths, mais aussi par exemple, le shell ipython qui m’aide beaucoup dans mon apprentissage du langage.
Python semble être ce qui correspond le plus à mes besoins. Il est lisible et relativement intuitif, et de plus il est souvent utilisé dans des scripts pour des logiciels répandus (je pense à Blender notamment, mais aussi à certains scripts pour Linux). Le fait de pouvoir le compiler pour le porter sur une machine afin de se passer de l’interpréteur me plaît beaucoup également.
Je dirais presque que c’est un langage à mi chemin entre le langage TI Basic que je connais très bien (et oui, les heures de glandes au collège/lycée…) et le C/C++. On comprend très vite ce que fait un script sans avoir jamais étudié la syntaxe du langage.
Non, c’est juste que je souhaite pouvoir l’utiliser aussi bien pour tester des algorithmes chez moi que pour développer des applications à mon boulot, ou même faire des scripts avancés pour la communauté Linux
Que ce soit pour programmer un logiciel de compression de données, un moteur 3D ou exporter des données sous Windows à mon boulot, je veux un truc qui réponde à n’importe quel besoin sans pour autant rechercher la performance (exemple : coder un moteur 3D : ça serait pour étudier les algorithmes, pas pour créer un Doom like…). Le jour où je souhaite monter en puissance de calcul je coderai en C/C++.
Plus ou moins oui, car l’outil compte presque plus que ce que je veux faire.
Je peux déplacer des fichiers ou faire des calculs mathématiques avancés en assembleur, en C++, en Python, en Java ou en PHP, j’obtiendrai le même résultat au final, mais certains langages seront plus adaptés que d’autres ; certains en termes de performances, d’autres en termes de flexibilité, d’autres en termes de facilité de mise en oeuvre.
Ici ce qui prime surtout, c’est d’avoir un truc que je puisse utiliser sur n’importe quelle plateforme et qui soit facile à utiliser au quotidien, sans trop se prendre la tête. Je n’ai pas de besoins spécifiques comme concevoir un debugger ou un boot loader, et les performances ne sont pas importantes. Je ne cherche pas un outil pour répondre à un besoin informatique en tant que tel (puisqu’à peu près tous les langages peuvent y répondre), mais pour répondre à un besoin humain (comprendre : que ça aille vite à utiliser et sans trop se faire chier).
[quote=“Cluxter”]Je cherche un langage de programmation qui soit :
libre
interprétable sans compilation (mais pourquoi pas compilable)
utilisable sur Linux, Windows et MacOS
simple (donc si possible pas Java, je pense plus à un truc comme PHP)
qui me permette de traiter aussi bien des fichiers textes que des fichiers de données, de faire des calculs mathématiques relativement avancés et éventuellement de tracer des graphiques/courbes.
Que me conseilleriez-vous ?[/quote]
Common Lisp.
Faut juste pas faire d’allergie à Emacs (l’environnement SLIME en ayant besoin) mais sinon ça permet de bosser vite et bien.
Comme le dit le dicton :
C’est vraiment simple common lisp? La syntaxe a l’air très différent de ce que je connais comme langage. Je connais pas grand chose, en fait, mais même en tant qu’utilisateur, on a l’occasion de voir deux trois lignes de codes en java, C, python ou encore javascript. Pour chacun de ceux là et aussi différent soient-ils, on arrive au moins à repérer des éléments basiques, des boucles, l’assignation de variables, des fonctions… Là, j’ai l’impression d’un monde inconnu et étrange en lisant les exemples de la page wikipedia. J’oserai pas débuter avec ça…
Je suis persuadé (même si je n’ai jamais eu l’occasion de tester) qu’un débutant complet aura moins de mal à apprendre CL qu’un des langages que tu cites (le C étant le pire de tous ceux-là au niveau complexité).
Effectivement la syntaxe est très différente, et peut surprendre au premier abord. Il faut bien se rendre compte que tout ce fatras de parenthèses devient très vite « invisible » aux yeux du programmeur, et permet au final de mettre « à nu » la structure elle-même du programme sans aucune fioriture (à condition d’avoir un éditeur de texte qui se charge de la gestion des parenthèses).
Comme je disais je n’ai jamais eu l’occasion d’observer ou d’accompagner un débutant en programmation qui commencerait son apprentissage par CL, mais ce que je peux garantir c’est que tous les programmeurs un peu (voire même très) expérimentés dans mon entourage qui en ont fait l’apprentissage ont tous eu, sans aucune exception, ce que j’appellerais une « illumination ». Le terme vaut ce qu’il vaut, mais c’est vraiment ce que j’ai ressenti : après plus de 15 ans de programmation en utilisant une bonne quinzaine de langages, je me suis rendu compte que CL proposait tous les outils et concepts que tout programmeur a désespéré de retrouver dans son langage favori, et qu’en plus j’étais passé à côté de concepts totalement évidents et incontournables (une fois qu’on les connaît) à tel point que je ne comprends pas comment j’ai pu faire sans.
Une chose est sûre : la principale difficulté de Lisp vient du fait que la manière de programmer est assez différente des langages « classiques », et que ça peut poser des problèmes à un programmeur un peu trop rigide dans ses habitudes de pensée.
Mais d’un autre côté, une fois qu’on a dépassé ce souci (qui bien évidemment ne se pose pas pour un débutant) la manière de programmer en Lisp est beaucoup plus naturelle : on n’a pas l’impression de donner des instructions à une machine, au contraire on ne fait que décrire le fonctionnement du programme lui-même.
Pour les anglophones, un très bon article à ce sujet : Beating the Averages (Paul Graham), lire notamment la partie intitulée « The Blub Paradox ».
Pour les non anglophones, en résumé : Lisp est probablement le langage le plus souple et puissant à l’heure actuelle, les temps de développement sont imbattables, et pourtant il est très peu utilisé. Pourquoi ? La force de l’habitude, et le fait qu’un programmeur habitué à un langage donné aie beaucoup de mal à comprendre les autres langages :
si un autre langage est moins puissant, le choix est vite fait : « comment peut-on seulement programmer sans telle ou telle fonctionnalité ? »
si un autre langage est plus puissant : « bah, il fait la même chose avec des fonctionnalités bizarres en plus, dont je n’ai pas besoin vu que j’arrive déjà à faire ce que je veux »
Mais l’important en programmation n’est pas de simplement faire « ce qu’on veut », mais de le faire le plus facilement et rapidement possible tout en s’octroyant la possibilité de tout changer tout aussi facilement et rapidement quand on en a besoin ou envie.
LISP est non typé ce qui est un défaut important actuellement, et est un langage fonctionnel ce qui fait sa puissance et sa modernité. Les successeurs naturels de LISP sont les langages ML comme Ocaml qui permet d’avoir le beurre et l’argent du beurre.
Mais pour débuter, un langage fonctionnel n’est pas la voie la plus facile même si c’est peut être la plus riche.
Non, c’est un langage typé dynamiquementcolor=#FF0000[/color] (on parle toujours bien sûr de Common Lisp, pas d’autres variantes comme par exemple Scheme que, je l’avoue, je ne connais pas réellement…) tout comme nombre d’autres langages modernes, dont par exemple Python.
Il n’y a qu’à voir comment fonctionne le système objet CLOS, et plus particulièrement les multiméthodes, pour s’en convaincre.
Pour mémoire, il n’existe pas un langage Lisp, il s’agit en fait d’une famille entière de langages dont chaque variante a ses spécificités propres. Common Lisp n’est que l’une de ces variantes, même si c’est la plus complète et aboutie de toutes.
color=#FF0000 Edit :[/color] bien qu’on puisse ponctuellement utiliser du typage statique si nécessaire
Faux encore, CL est un langage multi-paradigmes : impératif, OO et fonctionnel. Et je ne parle même pas du côté méta-programmation qui donne toute leur puissance aux langages de la famille Lisp.
On peut parfaitement se restreindre à de la programmation procédurale avec CL, ça ne pose aucun problème (mis à part de faire du code moins efficace, mais pour un débutant ça n’a pas vraiment d’importance).
Le standard Common Lisp ne parle même pas des optimisations tail-call qui sont pourtant absolument nécessaires à tout langage purement fonctionnel (ne possédant évidemment pas d’autre structure de boucle que la récursion). Et ce n’est pas un oubli, c’est un choix délibéré qui ne pose aucun problème puisqu’il existe en CL de nombreuses structures de boucle qui remplacent avantageusement la récursion.
Là dessus je suis entièrement d’accord avec toi, un langage fonctionnel n’est pas l’idéal pour débuter. Mais ça ne change pas mon opinion que CL convient tout à fait pour un débutant, qui peut commencer par aborder les notions impératives simples avant d’évoluer vers d’autres notions plus complexes. Un gros avantage étant qu’il n’aura pas besoin de changer de langage pour découvrir et exploiter ces concepts de manière incrémentale, à son rythme.
LISP convertit automatiquement les variables d’un type à l’autre. Cela pose des soucis pour un code rigoureux. Mais je ne connais pas bien common-lisp (j’ai longuement pratiqué LISP de 1982 à 1985 et les LISP n’étaient pas orientés objet, sans doute que ça a changé).
On peut aussi faire de l’impératif en Caml et un peu de fonctionnel en C mais fondamentalement, ça n’est pas fait pour.