Des langages m?connus, mais tr?s puissants !!! (suite)

Tout ce qui ne mérite pas d'être entendu mais qui doit être dit.

Moderators: Mod, Mod, Mod

Des langages méconnus, mais trés puissants !!! (suite)

Postby Manu404 » Fri May 16, 2008 3:41 am

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
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby momito » Fri May 16, 2008 9:48 am

[quote:40948fbc9f]2. Ada ...[/quote:40948fbc9f]
mdr Manu404 , est-ce-que tu deja vraiment fait du Ada?
C'est pas pour vous faire fuir ou peur mais Ada c'est rien a voir avec le reste des language qui vous connaisse avec tout mes respects :lol: .
Ada c'est le language on peut tout faire prog Objet, fonctionnel.... , il n'est pas facile à maitrise :cry: (j'envie de dire c choo). donc si il y a qlq qui veut ensavoir plus ,je peut vous filer des cours pousser en Ada.
Ps: tu a oublier de siter Ocaml dans ta liste , il est pas mal aussi.
User avatar
momito
Projets
 
Posts: 59
Joined: Tue Jul 10, 2007 8:29 pm

Postby Manu404 » Fri May 16, 2008 12:41 pm

Excuse moi mais tu n'as pas le monopole du savoir !
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby momito » Fri May 16, 2008 7:24 pm

[quote:6e04deb726="Manu404"]Excuse moi mais tu n'as pas le monopole du savoir ![/quote:6e04deb726]
je l'ai jamais dit ,ce que je voulais dire en claire que Ada n'est pas donne a qui que soit en plus , le but ici est de faire de l'informatique un matière facile ,abordablé et pour Ada ce n'est pas le cas.
enfin je m'excuse si je t'avait vexé avec mon message ^^.
Cordialement Momito.
User avatar
momito
Projets
 
Posts: 59
Joined: Tue Jul 10, 2007 8:29 pm

Postby Demosthene » Fri May 16, 2008 7:38 pm

très bon article , merci .
User avatar
Demosthene
Projets
 
Posts: 113
Joined: Mon May 05, 2008 7:40 pm

Postby Manu404 » Sat May 17, 2008 9:09 am

Désolé, c'est le debut du message qui m'avait "choqué", dezo :oops:
Ceci dit je ne pense pas que le forum ai la vocation de faire de l'informatique facile, en effet peux de gens comprendrons vraiment de quoi je parle mais je pense que si j'ai permis a 1 personnes de découvrir un nouveau langages ou améliorer sa culture générale (ce qui est le but premier de l'article), j'ai réuisi mon coup et les 2-3 heures consacré a la rédactions des deux articles n'auront pas été vaines..
Sinon en effet le langages Ada ,n'est pas facile, mais tout comme le Scheme, le Lisp ou le Fortran (cfr article n°1) et de manière générale la programmation n'est pas quelques chose de facile.
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby Korigan » Sun May 18, 2008 11:48 pm

Merci pour ta contribution Manu!
Bon article avec les références qui vont bien et les petits exemples bien placé!

Donc merci!

++Korigan
User avatar
Korigan
Site Admin
 
Posts: 1781
Joined: Tue May 29, 2007 6:57 pm


Return to Le Bar

Who is online

Users browsing this forum: No registered users and 1 guest

cron