Scheme c'est quoi ??

simon

Membre expert
Club iGen
18 Juin 2000
3 669
16
Singapore
www.simonganiere.ch
J'hésite à changer d'orientation universitaire et je risque de tomber sur un gros cours d'informatique, plus précisement Scheme (le langage inventé par un gars du MIT), j'ai juste surfé un peu sur un site qui parle de ça mais j'aurai voulus en savoir un peu plus est-ce que queqlu'un pourrait me dire si c'est cool, utile, à quoi cela peut ressemble (genre c'est comme du Java, du Cocoa(enfin Objectiv-C))...merci d'avance cela m'aiderait pas mal
wink.gif
 
Ca ressemble plus a du LISP. C'est un langage pratiquement completement inutile, sauf pour faire des implementations rapides d'algo pour tester.

C'est beaucoup plus "pur" que du LISP car la programmation iterative est impossible.

En Scheme, on programme tout en recursif, c'est un langage de matheux.

Personnellement, j'ai trouve ca sympa, mais ca n'a rien a voir avec du C, ou du Java.

Ca t'apprends surtout a te servir de la recursivite.
Ca peut te servir pour experimenter des algo de traitement d'image par exemple.
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par SuperCed:

En Scheme, on programme tout en recursif, c'est un langage de matheux.
<HR></BLOCKQUOTE>

Sympa (non mais faut savoir que j'adore les maths
wink.gif
grin.gif
)

En fait si j'ai bien compris c'est même pas orienté objet scheme ??? Et pis vu que tu as l'air de t'y connaitre sa tourne sous OS X, j'ai vu que c'était compatible Linux, UNIX (FreeBSD)
wink.gif
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Simon:
J'hésite à changer d'orientation universitaire et je risque de tomber sur un gros cours d'informatique, plus précisement Scheme <HR></BLOCKQUOTE> ... Tu viens étudier à Fribourg ??
wink.gif
Si tu veux, avec Bruno on t'en dira un peu plus le 17
grin.gif
, car en fait on a fait pendant toute une année du Scheme et même un projet avec (on a dû implémenter Logo, tu sais le programme avec une petite tortue
grin.gif
).
Moi, faut dire que j'ai assez aimé Scheme, qui est un dialecte de Lisp. Les loops n'existe pas (donc for, while, do ... until ... hem, oui, il y a néanmoins un moyen de les utiliser, mais il faut te faire une macro), car en Scheme, les variables n'existent pas...Tous les paramètres sont passés by value (quoique tu peux aussi faire du delayed evaluation) et c'est avec un interpréteur que tu travailles et non avec un compilateur ... Donc Scheme est un langage à 100% fonctionnel, donc rien à voir avec Obj-C, Java et consort, l'environment avec lequel il travaille est à 100% dynamique... Pour apprendre Scheme et les principes de la programmation foncitonnelle, je ne peux que te conseiller la base de la base comme bouquin (de Susman) ... Je te redonne la référence ce soir en arrivant à la maison et je t'apporterai le livre le 17 si tu veux... Petit exemple de la fonction factorial écrit récursivement et itérativement (et oui, c'est possible SuperCed) :

|* Exemple récursif*|

(define (fact n)
(if (= n 1)
1
(* n (fact (- n 1)))))

|* Exemple itératif *|

(define (fact1 n)
(define (iter i rep)
(if (&gt; i 1)
(iter (- i 1) (* rep i))
rep))
(iter n 1))

********************

Quoi utiliser pour faire du Scheme sur OS X...Le mieux c'est d'utiliser
DrScheme ... J'avais essayé une version bêta et faut dire que ça tournait pas mal...Il me semble que maintenant tu peux d/l la finale... Qu'apporte DrScheme de plus que les autres environement Scheme : il possède un help desk, resp. une aide on ne peut plus touffu (disons que je n'avais encore jamais vu ceci) , on peut faire des objets avec grâce à MrEd (donc tu peux aussi faire des fenêtres, boutons, etc. =&gt; c.f help desk). Le mieux, c'est que tu regardes un peu par toi même...

Si tu as d'autres questions, n'hésite pas
wink.gif


++
 
Bon, Einbert a bien répondu dan l'ensemble... alors je vais juste donner mon avis général sur le langage en lui-même:
Scheme a un grand avantage: sa syntaxe est extrêmement simple. Par contre, étant donné que c'est un langage interprété et pas compilé, l'efficacité c'est pas trop ça...
Une chose qui risque de te choquer, c'est que toutes les notations sont préfixées... alors
&gt;(sqrt 16)
&gt;4
ça va encore, mais
&gt;(+ 2 3)
&gt;5
Faut quelques semaines d'adaptations, surtout quand tu as fait de l'impératif pendant des années
wink.gif


Le bouquin dont parle Einbert, c'est H.Abelson/G.J. Sussman: "Structure and Interpretation of Programming Languages", MIT Press, 1985
grin.gif


++
Beru
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Einbert:
... Tu viens étudier à Fribourg ??
wink.gif
<HR></BLOCKQUOTE>

Peut-être bien que oui, j'hésite encore je vais finir mes exams de juillet et je vais regarder ça en détail après
wink.gif


Merci pour toutes les infos, je vais allaer faire un tour avec ton DrScheme
wink.gif
 
Scheme est un langage fonctionnel, comme l'ancêtre LISP, ou plutôt comme son confrère OCaml (anciennement Caml).

Vu que je connais plutôt Caml, je n'avancerais pas plus loin sur ce qu'est scheme
grin.gif
mais je te conseille de faire des recherches google ou autres avec scheme + ocaml + programmation fonctionnelle et tu devrais trouver de quoi ruminer.

L'avantage théorique des langages fonctionnels, c'est plus de rigueur.

Ocaml est fonctionnel, mais fait aussi de l'impératif (disons comme C, pascal, etc...) et de l'objet (caml -&gt;ocaml. Pour scheme, je ne sais pas.