(Common) LISP ou Python ?

LISP ou Python ? (Common) - Divers - Programmation

Marsh Posté le 13-08-2003 à 15:07:12    

Salut,
Je voudrais me mettre a un nouveau language/environement 'interactif' et a facettes multiples pour aller du shell de commande glue elabore (mail ou bien dvd/audio rip, serveur multimedia) au soft tres carre de traitement de donnees en passant par la creation artistique style image/musique/3D par la programation (creation algorythmique)...
Dans lequel des deux languages me conseilleriez-vous plutot de me plonger ?
Merci de vos remarques sur cette question (trop?) generale !
bye


---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le 13-08-2003 à 15:07:12   

Reply

Marsh Posté le 13-08-2003 à 15:32:58    

tu te rends compte que tu demandes un seul langage pour faire toutes les sortes de softs possibles?
 
tu connais quoi pour le moment? déjà eu des expériences avec les langages fonctionels? c'est quoi tes connaissances?

Reply

Marsh Posté le 13-08-2003 à 15:54:15    

>>tu te rends compte que tu demandes un seul langage pour faire toutes les sortes de softs possibles?
 
Oui, je voudrais trouver un language a la fois elegant et puissant qui s'acquitte de ces visions differentes sans se trainer d'une facon ou d'une autre.
 
>>tu connais quoi pour le moment? déjà eu des expériences avec les langages fonctionels? c'est quoi tes connaissances?
 
J'ai apris la programation seul avec le basic au college. J'ai fait (assez facilement) du pascal, C, a l'universite. J'ai decouvert la programation objet avec beaucoup d'interet (etudie en autodidacte avec un bouquin sur la programation objet avec Eiffel). J'ai fait du TCl/tk (avec ou sans objet) dans le cadre de mon boulot. Nombreuses lectures.
Je n'ai pas d'experience pratique en prog fonctionnelle mais cela ne me heurte pas a premiere vue, m'interesse. Voila...


Message édité par librinfo le 13-08-2003 à 16:02:06

---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le 13-08-2003 à 15:59:58    

1) ça n'existe pas
2) si t'as envie d'apprendre le paradigme fonctionnel, essaye le lisp (ou le scheme). y a beaucoup de possibilité avec.
3) en script toujours, tu as Python et Perl, voir Ruby. essaye les aussi.
 
en Py on peut faire des graphismes avec Tk (donc a priori ça va te faciliter la chose), en Perl sans doute, et ça m'etonnerait qu'il y ait des pas biding avec lisp/scheme. idem pour ruby
 
bref, fais ton choix: t'as l'expérience suffisante pour voir ou tu te sens à l'aise
 
question bête: t'as quitté la fac en quelle année?

Reply

Marsh Posté le 13-08-2003 à 16:25:36    

Taz a écrit :

1) ça n'existe pas
2) si t'as envie d'apprendre le paradigme fonctionnel, essaye le lisp (ou le scheme). y a beaucoup de possibilité avec.
3) en script toujours, tu as Python et Perl, voir Ruby. essaye les aussi.
 
en Py on peut faire des graphismes avec Tk (donc a priori ça va te faciliter la chose), en Perl sans doute, et ça m'etonnerait qu'il y ait des pas biding avec lisp/scheme. idem pour ruby
 
bref, fais ton choix: t'as l'expérience suffisante pour voir ou tu te sens à l'aise
 
question bête: t'as quitté la fac en quelle année?


 
OK, s'investir un minimum dans tout pour voir, ruby et perl aussi... Pas tout donner dans une direction...Ce que je crains, bien que son cote esthetique m'attire plus, c'est que le lisp soit un goufre. Le meta du lisp et son flanc objet (CLOS) c'est beau mais bon... Il y a aussi le cote environnement de developpement puissant de lisp...
J'ai quitte la fac en +4 (physique).
Pour tester python, ca va je me sens capable de debuter seul. Mais pour le lisp, tu me conseille de commencer par quel bout...lien ? merci.


Message édité par librinfo le 13-08-2003 à 16:35:13

---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le 13-08-2003 à 16:39:51    

je voulais dire y a combien d'année. t'es un scientifique, si tu te sens attiré pas le lisp, vas y. moi j'ai fait du scheme, c'était bien.  
 
mais bon tu veux un truc pour développer du FPS à l'appli de base de données, faut pas rêver. en plus comme t'as pas l'air d'avoir trop d'expérience... je vois pourquoi absolument 1 langage pour passer ta vie dessus.
 
moi je te dis: t'en as envie, fais du lisp (ou du Scheme)

Reply

Marsh Posté le 13-08-2003 à 17:11:17    

librinfo a écrit :

Salut,
Je voudrais me mettre a un nouveau language/environement 'interactif' et a facettes multiples pour aller du shell de commande glue elabore (mail ou bien dvd/audio rip, serveur multimedia) au soft tres carre de traitement de donnees en passant par la creation artistique style image/musique/3D par la programation (creation algorythmique)...
Dans lequel des deux languages me conseilleriez-vous plutot de me plonger ?
Merci de vos remarques sur cette question (trop?) generale !
bye

Je pense qu si tu veux vraiment faire plein de truc, essaye l'objective caml, c'est pas nu langage très pur, mais si tu es limité dans un paradigme, tu peux reprendre dans un autre. Il est statiquement typé (en inférence, les types peuvent être devinés par le compilateur si tu ne les écris pas à la main) et possède l'application partielle (qu'il n'y a pas nativement en python).
 
Au niveau des communeautés (si tu es du genre à apprendre en te faisant aider de la communeauté), en python c'est plutôt geek et scripts, en caml c'est plutôt docteurs en informatique et projets scientifiques, et en lisp, c'est plutôt des vieux routards qui ont tout vu. Fais gaffe à bien poster tes questions sur les mailing-list de débutants.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-08-2003 à 17:18:12    

Taz a écrit :

je voulais dire y a combien d'année. t'es un scientifique, si tu te sens attiré pas le lisp, vas y. moi j'ai fait du scheme, c'était bien.  
 
mais bon tu veux un truc pour développer du FPS à l'appli de base de données, faut pas rêver. en plus comme t'as pas l'air d'avoir trop d'expérience... je vois pourquoi absolument 1 langage pour passer ta vie dessus.
 
moi je te dis: t'en as envie, fais du lisp (ou du Scheme)


ya 6 ans.
bah 1 language c'est pas parce que je veux m'economiser et passer ma vie dessus et tout faire avec. J'ai une idee mmoins besogneuse de la programation.
C'est plus parce que je trouve trop lourd a gerer les forks de language a tout va qui ne tienne pas compte des experiences deja faites, meme si evidemment la diversite est excellente et necessaire et feconde, et que tout le monde n'a pas la meme vision et les memes sensations. Il faut bien avoir un minimum une vision synthetique pour ne pas se rependre.
Je ne veux pas un language qui sache tout faire a la base (suis d'accord que ca ne coure pas les rues) mais qui soit suffisamment intelligent pour s'adapter a tout : style enrichir  python avec des nouvelles bibliotheques trouve dans le monde C en les bindant au travers de 'SWIG'.
En fait mon but n'est pas de faire des softs avec service qualite, une entrerise de creation de logiciels, mais d'avoir un environnement de developpement perso suffisamment riche et synthetique qui me permette de m'exprimer dans divers domaine sans avoir a reinventer la roue parceque je dois changer de language a chaque nouvelle idee : ne pas avoir a me plonger exclusivement dans le C pour faire de la composition musicale algorythmique avec 'csound' alors que je peux avoir des binds dans python et me servir de modules que je me suis deja cree etc...tu vois ?
Un language souple, intelligent qui me permette de faire ma soupe, mon dialecte avec des ingredients pris ici et la sans que ca donne de la melasse.
Le lisp me tente bien en effet mais je voudrais etre assez productif rapidement. Je crains que ce ne soit trop ardu. L'aprentissage du scheme a ete dur ? Tu t'en ai servi pour faire quoi ?
Mais bon c'est vrai que mis a part cet imperartif de ne pas perdre trop son temps, c'est vrai qu'il ne faut pas s'enfermer et tout essayer pour se faire une idee et en trouver des nouvelles.


---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le 13-08-2003 à 18:11:23    

nraynaud a écrit :

Je pense qu si tu veux vraiment faire plein de truc, essaye l'objective caml, c'est pas nu langage très pur, mais si tu es limité dans un paradigme, tu peux reprendre dans un autre. Il est statiquement typé (en inférence, les types peuvent être devinés par le compilateur si tu ne les écris pas à la main) et possède l'application partielle (qu'il n'y a pas nativement en python).
 
Au niveau des communeautés (si tu es du genre à apprendre en te faisant aider de la communeauté), en python c'est plutôt geek et scripts, en caml c'est plutôt docteurs en informatique et projets scientifiques, et en lisp, c'est plutôt des vieux routards qui ont tout vu. Fais gaffe à bien poster tes questions sur les mailing-list de débutants.


C'est pas la meme ambiance de communaute effectivement !
Je ne connais OCaml que de nom quasiment. Peux-tu en dire plus notamment au niveau du changement de paradigme (??) et de l'application partielle (??) stp ? merci


---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le 13-08-2003 à 22:56:20    

librinfo a écrit :


C'est pas la meme ambiance de communaute effectivement !
Je ne connais OCaml que de nom quasiment. Peux-tu en dire plus notamment au niveau du changement de paradigme (??) et de l'application partielle (??) stp ? merci

 
Dans Objective Caml, le fonctionel cotoie l'impératif, ainsi, si tu as des choses plutôt calculatoires à faire, tu vas les écrire en fonctionel mais si tu as des choses plutôt séquencielles (comme des entrées-sorties) à faire, tu vas les écrire en impératif.
 
un bon bouquin en ligne :
http://caml.inria.fr/oreilly-book/html/index.html
la version française est un O'reilly dispo dans les meilleures librairies.
 
Tu as aussi le paradigme objet mais j'ai un gros doute sur l'objet dans ce langage et j'en vois assez rarement passer sur la liste de diffusion (peut-être plus pour une raison culturelle que par volonté de le laisser à part d'ailleur).
 
L'application partielle, c'est très utilisé en fonctionnel ça consiste à n'appliquer qu'une partie des arguments à une fonction  qui te renvoie alors une autre fonction qui prend en argument les arguments que tu ne lui a pas donnés et te renvoie le résultat.
un exemple simple :

Code :
  1. # let f x y z = x + y + z;;
  2. val f : int -> int -> int -> int = <fun>
  3. # let f1 = f 10;;
  4. val f1 : int -> int -> int = <fun>
  5. # let f2 = f1 90;;
  6. val f2 : int -> int = <fun>
  7. # let result = List.map f2 [1; 2; 3] ;;
  8. val result : int list = [101; 102; 103]


ce qu'il y a après les # est ce que j'ai tapé et ce qu'il y a en dessous est ce que l'interprèteur (il existe aussi la possibilité de compiler en natif si tu as besoin de vitesse) m'a répondu ; A gauche du "=" c'est le type qu'il a deviné et à droite la valeur.
 
(cette présentation de l'application partielle est à l'envers de la théorie qui la sous-tend, la curryfication, pour la rendre plus accessible)
 
edit : concernant l'application partielle, on voit que l'ordre des arguments joue, ce qui est embêtant, mais il existe une fonctionalité pour éliminer ce problème : les labels, à découvrir ensuite.


Message édité par nraynaud le 13-08-2003 à 22:59:26

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-08-2003 à 22:56:20   

Reply

Marsh Posté le 13-08-2003 à 23:07:51    

nraynaud a écrit :

 
Dans Objective Caml, le fonctionel cotoie l'impératif, ainsi, si tu as des choses plutôt calculatoires à faire, tu vas les écrire en fonctionel mais si tu as des choses plutôt séquencielles (comme des entrées-sorties) à faire, tu vas les écrire en impératif.
 
un bon bouquin en ligne :
http://caml.inria.fr/oreilly-book/html/index.html
la version française est un O'reilly dispo dans les meilleures librairies.
 
Tu as aussi le paradigme objet mais j'ai un gros doute sur l'objet dans ce langage et j'en vois assez rarement passer sur la liste de diffusion (peut-être plus pour une raison culturelle que par volonté de le laisser à part d'ailleur).
 
L'application partielle, c'est très utilisé en fonctionnel ça consiste à n'appliquer qu'une partie des arguments à une fonction  qui te renvoie alors une autre fonction qui prend en argument les arguments que tu ne lui a pas donnés et te renvoie le résultat.
un exemple simple :

Code :
  1. # let f x y z = x + y + z;;
  2. val f : int -> int -> int -> int = <fun>
  3. # let f1 = f 10;;
  4. val f1 : int -> int -> int = <fun>
  5. # let f2 = f1 90;;
  6. val f2 : int -> int = <fun>
  7. # let result = List.map f2 [1; 2; 3] ;;
  8. val result : int list = [101; 102; 103]


ce qu'il y a après les # est ce que j'ai tapé et ce qu'il y a en dessous est ce que l'interprèteur (il existe aussi la possibilité de compiler en natif si tu as besoin de vitesse) m'a répondu ; A gauche du "=" c'est le type qu'il a deviné et à droite la valeur.
 
(cette présentation de l'application partielle est à l'envers de la théorie qui la sous-tend, la curryfication, pour la rendre plus accessible)
 
edit : concernant l'application partielle, on voit que l'ordre des arguments joue, ce qui est embêtant, mais il existe une fonctionalité pour éliminer ce problème : les labels, à découvrir ensuite.


 
OK, merci. Cela a l'air puissant OCaml. Comparativement, as-t déjà pratiqué le Lisp ?

Reply

Marsh Posté le 13-08-2003 à 23:10:17    

moi je préfère le scheme
 

guile> (define f (lambda (x y z) (+ x y z)))
guile> (define g (lambda (x y) (f 10 x y)))
guile> (define h (lambda (x) (g x 100)))
guile> (map h `(1 2 3))
(111 112 113)


Message édité par Taz le 13-08-2003 à 23:11:33
Reply

Marsh Posté le 13-08-2003 à 23:17:10    

en python  
 

>>> f = lambda x, y, z : x+y+z
>>> g= lambda x,y : f(x,y,10)
>>> h= lambda x : g(x,100)
>>> map(h, (1, 2, 3))
[111, 112, 113]

 
 
je suis pas sur qu'on puisse vraiment juger sur ce genre d'exemple

Reply

Marsh Posté le 13-08-2003 à 23:59:57    

Taz a écrit :

en python  
 

>>> f = lambda x, y, z : x+y+z
>>> g= lambda x,y : f(x,y,10)
>>> h= lambda x : g(x,100)
>>> map(h, (1, 2, 3))
[111, 112, 113]

 
 
je suis pas sur qu'on puisse vraiment juger sur ce genre d'exemple

Si, tu as appliqué la sémantique pure de la curryfication (et bindé par la droite au lieu de la gauche), mais explicitement. Effectivement, c'est un peu plus chiant mais c'est loin d'être rédibitoire.
 
edit : j'avais pas vu le scheme au-dessus !


Message édité par nraynaud le 14-08-2003 à 00:07:23

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-08-2003 à 00:00:51    

oui  :)

Reply

Marsh Posté le 14-08-2003 à 00:03:38    

librinfo a écrit :


OK, merci. Cela a l'air puissant OCaml. Comparativement, as-t déjà pratiqué le Lisp ?

Jamais vraiment, j'ai un peu la flemme. D'après un pote qui maîtrise bien, comme Taz le dit, scheme c'est mieux.
 
Ceci dit, je suis pas trop pour ces trucs pâte-à-modeler typés dynamiquement.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-08-2003 à 00:05:19    

d'ailleurs  

# let f x y z = x + y + z;;
val f : int -> int -> int -> int = <fun>

pourquoi ça par direct en int. ça serait quoi la différence pour la version flottante? avec des chaines (je sais pas si y a la surcharge) ?

Reply

Marsh Posté le 14-08-2003 à 00:14:41    

Taz a écrit :

d'ailleurs  

# let f x y z = x + y + z;;
val f : int -> int -> int -> int = <fun>

pourquoi ça par direct en int. ça serait quoi la différence pour la version flottante? avec des chaines (je sais pas si y a la surcharge) ?

il n'y a justement pas surcharge. C'est en cours de blablatage justement.  
version float :

let f x y z = x +. y +. z;;
val f : float -> float -> float -> float = <fun>


Si ça peut te rassurer c'est pas sur le cas des nombres que c'est le plus pénalisant mais sur des trucs plus abstraits (expérience de la mailing-list toujours). Mais globalement il n'y a pas trop de demande pour ça, on utilise beaucoup les type somme.
 
Un système intéressant au niveau de la surcharge est le système des classes (les types sont classifiés, pas les instances) d'Haskell.
 
edit : j'ai oublié une partie de la réponse !
Pour les chaines, je sais plus l'opérateur et j'ai la flemme d'aller dans le manuel.
Plus important, la réutilisation se fait par le système des modules issus de ML. C'est un sujet qui peut devenir assez couillu (modules récursifs et autres boludeces).


Message édité par nraynaud le 14-08-2003 à 00:18:40

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 14-08-2003 à 08:56:24    

nraynaud a écrit :

Jamais vraiment, j'ai un peu la flemme. D'après un pote qui maîtrise bien, comme Taz le dit, scheme c'est mieux.
 
Ceci dit, je suis pas trop pour ces trucs pâte-à-modeler typés dynamiquement.


Le common Lisp (d'apres mes lectures) permet un typage statique si on veut. Et on peut aussi le compiler.
 
A propos de Scheme et Common Lisp, extrait de Pascal Costanza's Highly Opinionated Guide to Lisp:
"In the 1980's and 1990's, two main dialects established themselves as the only widely available and usable dialects: Common Lisp and Scheme. Scheme was invented in the 1970's by Gerald Jay Sussman and Guy L. Steele as a result of trying to understand object-orientation and incorporate it into Lisp. Scheme essentially introduced lexical closures (as a generalization of objects) and continuations (as a generalization of function calls and message passing) at the conceptual level, and "extreme" optimization of tail calls and tail recursions at the technical level. The nice thing about Scheme is that it is a beautiful diamond with properties that appeal mainly to academics who are looking for truth and beauty (i.e. minimality and orthogonality). However, it misses many practical things that you need in every-day programming and that would spoil the conceptual beauty."


Message édité par librinfo le 14-08-2003 à 09:03:44
Reply

Marsh Posté le 14-08-2003 à 09:12:18    

pas compiler en exécutable, mais faire du binaire qui tourne avec l'environnement, certainement. En Scheme aussi si je me souviens bien. Franchement a pas peur du Scheme, tu ne seras pas déçu. Par contre tu tournes sous quel OS?

Reply

Marsh Posté le 14-08-2003 à 09:31:27    

Taz a écrit :

pas compiler en exécutable, mais faire du binaire qui tourne avec l'environnement, certainement. En Scheme aussi si je me souviens bien. Franchement a pas peur du Scheme, tu ne seras pas déçu. Par contre tu tournes sous quel OS?


Pour la compilation en exécutable natif l'implémentation CMUCL le fait par ex : http://www.cons.org/cmucl/
" a sophisticated native-code compiler which is capable of powerful type inferences, and generates code competitive in speed with C compilers."
Je tourne principalement sous GNU/Linux (gentoo). parfois sous Win XP/2000 pour de l'infographie.


---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le 14-08-2003 à 09:45:49    

bon ben sous Linux Guile et STKLOS de l'université de Nice

Reply

Marsh Posté le 14-08-2003 à 10:01:09    

Taz a écrit :

bon ben sous Linux Guile et STKLOS de l'université de Nice


OK, merci bien. Je vais voir STKLOS de suite ainsi que Guile.


---------------
[*]11/09/2001 | Les vrais, les purs bâtisseurs haïssent la léthargie des forteresses. Bill Gates.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed