Allez, c'est parti pour le Haskell, le Ada, le Scheme le ErLang
[size=14:dd5ee7a67f]1 Haskell[/size:dd5ee7a67f]
[size=13:dd5ee7a67f]1.1 Présentation[/size:dd5ee7a67f]
Haskell est un langage de programmation fonctionnel. Il est fondé sur le lambda-calcul et la logique combinatoire. Son nom vient de celui du mathématicien et logicien Haskell Brooks Curry. Il a été créé en 1985. Le langage continue d'évoluer , avec Hugs et GHC.
Les fonctionnalités les plus intéressantes de Haskell sont le support pour les fonctions récursives, l'inférence de types, les listes en compréhension et l'évaluation paresseuse. Ces fonctionnalités, surtout si on les combine, rendent facile l'écriture des fonctions. Haskell se distingue également par l'utilisation de monades pour les entrées/sorties. Plusieurs variantes ont été développées. Des versions parallélisées faites au MIT et à l'Université de Glasgow ont toutes deux été appelées Parallel Haskell. Des versions plus parallélisées et plus distribuées sont appelées Distributed Haskell (anciennement Goffin) et Eden. Une version d'exécution spéculative, Eager Haskell et plusieurs versions orientées objets, Haskell++, O'Haskell et Mondrian ont vu le jour.Il existe aussi d'autres langages similaires au Haskell: Le Concurrent Clean qui offre un support pour la création de GUI ainsi que CAL. Une version éducative de Haskell appelée Gofer a été développée , et a finalement été supplantée par HUGS, le Système Gofer de l'Utilisateur Haskell (Haskell User's Gofer System).
[size=13:dd5ee7a67f]1.2 Exemples[/size:dd5ee7a67f]
Fonction Fibonacci
[code:1:dd5ee7a67f]Une implémentation naïve de la fonction qui retourne le n-ième nombre de la Suite de Fibonacci :
fib 0 = 0
fib 1 = 1
fib n = fib (n - 2) + fib (n - 1)[/code:1:dd5ee7a67f]
Tri rapide (quicksort)
[code:1:dd5ee7a67f]L'algorithme du tri rapide peut être élégamment écrit en Haskell avec l'aide de la manipulation de listes :
qsort [] = []
qsort (x:xs) =
qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y <- xs, y < x]
elts_greq_x = [y | y <- xs, y >= x] [/code:1:dd5ee7a67f]
[size=13:dd5ee7a67f]1.3 Programmes[/size:dd5ee7a67f]
Le site officiel avec tout les programmes necessaires :
[url]http://www.haskell.org/[/url]
Hugs, est des plus célébresinterpretteur Haskell :
[url]http://www.haskell.org/hugs/[/url]
nhc98, un interpretteur:
[url]http://www.cs.york.ac.uk/fp/nhc98/[/url]
GHC un compilateur :
[url]http://fr.wikipedia.org/wiki/Glasgow_Haskell_Compiler[/url]
[size=13:dd5ee7a67f]1.4 Cours[/size:dd5ee7a67f]
Le wiki Français
[url]http://www.haskell.org/haskellwiki/Fr/Haskell[/url]
Site d'utilisateur francophones :
[url]http://www.haskell.org/mailman/listinfo/haskell-fr[/url]
[size=14:dd5ee7a67f]2. Ada[/size:dd5ee7a67f]
[size=13:dd5ee7a67f]2.1 Présentation[/size:dd5ee7a67f]
Ada est un langage de programmation conçu par l???équipe de CII-Honeywell Bull dirigée par Jean Ichbiah en réponse à un cahier des charges établi par le DoD.(pas la team de hack) Son développement a commencé au début des années 1980 pour donner Ada 83. Il a été ensuite repris et amélioré au milieu des années 1990 pour donner Ada 95, le premier langage objet standardisé de manière internationale. Sous les auspices de l???Organisation internationale de normalisation (ISO), le langage dispose maintenant d???une révision appelée Ada 2005. Le nom Ada a été choisi en l???honneur d???Ada Lovelace, qui est supposée avoir écrit le premier programme de l???histoire. Il est associé à la couleur verte car, lors de l???appel d???offre du DoD, les différentes propositions étaient désignées par des couleurs pour éviter tout biais, et l???équipe qui l???a conçu était l???équipe verte.
Voici quelques particularités d???Ada : typage statique, module par les paquetages et contrôle fin de la visibilité ,syntaxe claire et non ambiguë (inspirée de celle du langage Pascal),généricité, traits temps réel intégrés au langage (tâches, objets protégés, terruptions),bibliothèques standardisées, liens avec les autres langages, annexes temps réel avec le Profil Ravenscar pour les systèmes sûrs.
Il est souvent utilisé dans des systèmes temps réel et embarqués nécessitant un haut niveau de fiabilité et de sécurité.
Actuellement (2008), il est possible de trouver des compilateurs Ada de très bonne qualité pour toutes sortes de systèmes d???exploitation (Windows, Linux, VxWorks) et d???architectures, y compris un compilateur libre (GNAT, inclus dans GNU Compiler Collection) compilant de l???Ada 83/95/2005.
Ada est souvent utilisé en introduction aux cours de programmation informatique avancée, et parce qu'il partage les mêmes qualités pédagogiques que le Pascal (dont il a hérité), Ada est même maintenant utilisé pour les cours d'introduction à la programmation.
[b:dd5ee7a67f](Source présentation : Wikipedia)[/b:dd5ee7a67f]
[size=13:dd5ee7a67f]2.2 Exemples[/size:dd5ee7a67f]
Hello world :
[code:1:dd5ee7a67f]with Ada.Text_IO;
procedure Hello is
begin -- Début de la procedure "Hello"
Ada.Text_IO.Put_Line("Hello, world!");
end Hello; --Fin de la procedure "Hello"[/code:1:dd5ee7a67f]
[size=13:dd5ee7a67f]2.3 Programmes[/size:dd5ee7a67f]
Le compilateur GNAT :
[url]https://libre.adacore.com/[/url]
Site officiel français :
[url]http://www.ada-france.org/[/url]
[size=13:dd5ee7a67f]2.4 Cours[/size:dd5ee7a67f]
Pti intro au Ada :
[url]http://www.lea-linux.org/cached/index/Dev-ada.html[/url]
Le meilleur cours Ada que vous puissiez trouver en français :
[url]http://ada.developpez.com/cours/iut/[/url]
[size=14:dd5ee7a67f]3. Scheme[/size:dd5ee7a67f]
[size=13:dd5ee7a67f]3.1 Présentation[/size:dd5ee7a67f]
Scheme (prononcer « skim' ») est un langage de programmation dérivé du langage fonctionnel Lisp, créé dans les années 1970 au MIT par Gerald Jay Sussman et Guy L. Steele. Le but des créateurs du langage était d'épurer le langage Lisp en conservant les aspects essentiels, la flexibilité et la puissance expressive. Scheme a donc une syntaxe extrêmement simple, avec un nombre très limité de mots-clé. Comme en Lisp, la notation préfixée permet de s'affranchir des opérateurs de précédence. De plus, la puissance des macros de Scheme lui permet de s'adapter à n'importe quel problème, notamment de le rendre orienté objet et donc multi-paradigme. La spécification de Scheme précise que tous les produits doivent optimiser le cas de la récursion terminale. Les types de données de base de Scheme sont les booléens, les nombres, qui peuvent être entiers de taille indéfinie, rationnels ou complexes, les caractères ou les symboles, qui sont des variables. ?? ceux-là s'ajoutent des types de données composites suivants : chaînes de caractères, vecteurs, paires orientées, listes, listes associatives, tables de hachage et un type particulier générique, les S-expression, dont tous les autres types dérivent, rendant possible la métaprogrammation.Le logiciel de retouche d'images Gimp inclut un interpréteur d'un langage dérivé de Scheme, SIOD (Scheme In One Defun) pour scripter (appelé script-fu) certaines manipulations d'image.
[size=13:dd5ee7a67f]3.2 Exemples[/size:dd5ee7a67f]
Listes :
[code:1:dd5ee7a67f](cons 1 (cons 2 (cons 3 (cons 4 '()))))[/code:1:dd5ee7a67f]
Cette concaténation peut être abrégée en
[code:1:dd5ee7a67f](list 1 2 3 4)[/code:1:dd5ee7a67f]
Fonctions : elles sont définies comme des lambda-expressions
[code:1:dd5ee7a67f](define fun
(lambda (arg1 arg2)
...))[/code:1:dd5ee7a67f]
Evaluations conditionnelles :
[code:1:dd5ee7a67f](cond (test1 expr1)
(test2 expr2)
...
(else exprn))[/code:1:dd5ee7a67f]
[size=13:dd5ee7a67f]3.3 Programmes[/size:dd5ee7a67f]
Interpretteur Scheme :
[url]http://www.scheme.com/[/url]
Compilatuer Scheme vers C :
[url]http://www.call-with-current-continuation.org/chicken.html[/url]
Bigloo, un compilatuer avec beaucoup de librairies :
[url]http://www-sop.inria.fr/mimosa/fp/Bigloo/[/url]
[size=13:dd5ee7a67f]3.4 Cours[/size:dd5ee7a67f]
Cours de Scheme de premiére anné en deug mias :
[url]http://users.info.unicaen.fr/~marc/ens/deug/[/url]
Cours video sur Scheme par un membre du MIT :
[url]http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/[/url]
[size=14:dd5ee7a67f]4. ErLang[/size:dd5ee7a67f]
[size=13:dd5ee7a67f]4.1 Présentation[/size:dd5ee7a67f]
Un langages qui interesseras les phreakeur en tout genre c'ets le Erlang, (d'après le nom du mathématicien Agner Erlang, mais aussi contraction d'Ericsson Language), qui est un langage fonctionnel concurrent temps réel et distribué, qui possède des fonctionnalités de tolérance aux pannes, et de mise à jour du code en temps réel pour des applications à haute disponibilité. Depuis qu'il a été mis sous licence Open Source en 1998, il est utilisé par de nombreuses compagnies de télécommunications pour leurs routeurs téléphoniques, notamment T-Mobile et Nortel. Il est aussi utilisé pour écrire le serveur Jabber ejabberd, ainsi que le logiciel de modélisation 3D Wings 3D. Il possède des interfaces avec d'autres langages comme Java ou C++ et de nombreuses API comme XML ou OpenGL.
[size=13:dd5ee7a67f]4.2 Exemples[/size:dd5ee7a67f]
En Erlang, la fonction factorielle s'écrit sous sa forme récursive comme suit :
[code:1:dd5ee7a67f]-module(fact).
-export([fac/1]).
fac(0) -> 1;
fac(N) when N > 0 -> N * fac(N-1)[/code:1:dd5ee7a67f]
Du fait de ses origines comme outil logiciel de télécommunications, Erlang incorpore le temps comme primitive du langage, en utilisant la construction suivante:
[code:1:dd5ee7a67f]receive
Message1 ->
Action1;
Message2 ->
Action2;
after
timeout() ->
ActionTimeOut;
end[/code:1:dd5ee7a67f]
[size=13:dd5ee7a67f]4.3 Programme[/size:dd5ee7a67f]
Tout ce dont vous avez besoins pour developper vos applis Erlang :
[url]http://www.erlang.org/[/url]
[size=13:dd5ee7a67f]4.4 Cours[/size:dd5ee7a67f]
Cours de A a Z sur le Erlang, mais demandes de bonnes base en programmation :
[url]http://www.erlang.org/download/erlang-book-part1.pdf[/url]
Portail Français sur le Erlang :
[url]http://www.erlang-projects.org/[/url]
Docu en français sur le Erlang :
[url]http://support.process-one.net/doc/pages/viewpage.action?pageId=531[/url]
Si vous avez des questions n'hésitez pas !
-"Celui qui pose un question a l'air bête un fois, celui qui ne l'a pose pas l'est pour le reste de sa vie"
Manu404