Des langages m?connus, mais tr?s puissants !!!

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 !!!

Postby Manu404 » Fri May 16, 2008 1:57 am

Salut a tous, je créé ce topic afin de vous présenter quelques langages de programmations méconnus, peux, ou mal connus mais très puissants dans leurs domaines . Je vous mets aussi a dispositions de ressources, car trouver des cours ou compilateurs pour ces différents langages peut relever de l'exploit !
(si j'ai fait un erreur, dite le moi, je en suis pas une encyclopedie ^^)

[size=14:1cc8241bcc]1. Le Lisp[/size:1cc8241bcc]

[size=13:1cc8241bcc]1.1 Description[/size:1cc8241bcc]
Le Lisp (List processing) se fait aussi surnomer "Lots of Insipid and Stupid Parentheses", traduisez "Des tas de panrenthése insipide et stupide", trouve son nom 10ans avant l'été du flower power dans l'article « Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I » écrit par John McCarty membre a cet époque du MIT.
Le Lisp est un langage fonctionnel et impératif et est devenus durant les années 70 et 80 le principale langages utilisé dans les IA. Tous les dialectes de Lisp partagent les mêmes opérateurs de manipulations des listes de chaînes simples. Il se distingue en outre par une syntaxe préfixée. Son typage dynamique des données, le support pour la programmation fonctionnelle, sa gestion automatique de la mémoire et la manipulation de code source en tant que structures de données. Il s'écrit en mettant entre parenthése chaque "s-expression" et rend facile la méta-programmation (génération d'autres programme).
Lisp fait partie des 5 plus vieux langages utilisée au mondes, mais est d'une puissance redoutable et d'une efficacité alarmante.

[size=13:1cc8241bcc]1.2 Exemples[/size:1cc8241bcc]
Voici un exemple de code faisant l'opération 1+2+3+4 :
[code:1:1cc8241bcc]
(+ 1 2 3 4)
[/code:1:1cc8241bcc]
Une factorielle :
[code:1:1cc8241bcc](defun factorial (n)
« Calcule la factorielle de l'entier n. »
(if (<= n 1)
1
(* n (factorial (- n 1)))))
[/code:1:1cc8241bcc]
Un renversemment de liste :
[code:1:1cc8241bcc](defun reverse (l &optional (acc '()))
« renverse la liste l »
(if (null l)
acc
(reverse (cdr l) (cons (car l) acc))))[/code:1:1cc8241bcc]

[size=13:1cc8241bcc]1.3 Cours[/size:1cc8241bcc]
- Incontournable !!!!!
[url]http://dept-info.labri.u-bordeaux.fr/%7Estrandh/Teaching/Programmation-Symbolique/Common/Book/HTML/programmation.htm[/url]l

- Bien mais demande déja de bonnes bases !
[url]www.dil.univ-mrs.fr/~garreta/Polys/PolyScheme.pdf[/url]


[size=14:1cc8241bcc]2. Prolog[/size:1cc8241bcc]

[size=13:1cc8241bcc]2.1 Description[/size:1cc8241bcc]
Prolog est un langages de type logique est signifie PRO-grammation LOG-ique, simple a retenir ! Il a été créé par Alain Colmerauer et Philippe Rousel dans les années 70. Il est tout comme le Lisp utilisé en Ia mais plus précisément dans le traitement de langages naturels, qui le rend encore plus interessant et est très souvent utilisé en complément du lisp (pour des bots parlant par exemple). Sa syntaxe est simple et clair, car conçue a la base pour de non initier a l'informatique. Il est basé sur le calcule des prédicats du premier ordre, même si certaines versions plus récentes acceptent des prédicats plus évoluées . L' exécution d'un script Prolog est tout simplement la résolution de ce théorème. Ses principe sont la récursivité, le retour sur trace et l'unification. Son utilité dans la linguistique prend tout son sens avec la grammaire générative !!! (qui a dit que l(informatique ce n'était que des mahts hein ? :wink: )

[size=13:1cc8241bcc]2.2 Exemples[/size:1cc8241bcc]
La programmation en Prolog est très différente de la programmation dans un langage impératif. En Prolog, on alimente une base de connaissances de faits et de règles ; il est alors possible de faire des requêtes à la base de connaissances. L???unité de base de Prolog est le prédicat, qui est défini comme étant vrai. Un prédicat consiste en une tête et un nombre d???arguments. Par exemple :

[code:1:1cc8241bcc]chat(tom).[/code:1:1cc8241bcc]

Ici 'chat' est la tête, et 'tom' est l???argument. Voici quelques demandes simples que vous pouvez demander à un interpréteur Prolog basé sur ce fait :

[code:1:1cc8241bcc]?- chat(tom).
oui.
[/code:1:1cc8241bcc]
[code:1:1cc8241bcc]?- chat(X).
X = tom;
fail.
[/code:1:1cc8241bcc]
Dans ce second exemple, à la question 'chat(X)' l'interpréteur propose la réponse 'X = tom' unifiant la variable 'X' à l'atome 'tom'. L'utilisateur demande une autre réponse par ";" (symbole de la disjonction), l'interpréteur répond qu'il n'en trouve pas.

[size=13:1cc8241bcc]2.3 Programmes[/size:1cc8241bcc]
- SWI Prolog - Possède un débuggeur graphique ainsi que plusieurs solveurs de contraintes
[url]www.swi-prolog.org[/url]

- GNU Prolog - Propose un solveur de contraintes sur domaine fini
[url]http://gnu-prolog.inria.fr[/url]

- Sicstus Prolog (payant) - Possède des extensions en plus, dont plusieurs solveurs de contraintes
[url]www.sics.se/sicstus[/url]

[size=13:1cc8241bcc]2.4 Cours[/size:1cc8241bcc]
Un trés bon cours pour les plus néophytes
[url]http://pcaboche.developpez.com/article/prolog/presentation/?page=page_2[/url]
Un cours portant a la fois sur l'apprentissage théorique du'n lanages de programmation logique mais aussi sur l'apprentissage du Prolog. Mais requiert deja un bon niveau en programmation
[url]http://prolog.developpez.com/tutoriels/alain-colmerauer/bases-prolog-4/[/url]
Un bon cours pour debutter traitant de motifs de base
[url]http://pcaboche.developpez.com/article/prolog/programmation-prolog/[/url]


[size=14:1cc8241bcc]3. Le Eiffel[/size:1cc8241bcc]

[size=13:1cc8241bcc]3.1 Description[/size:1cc8241bcc]
Eiffel est un langage de programmation orienté objet (POO) conçu par Bertrand Meyer. Il implémente les principaux concepts d'un langage orienté objets (classes, héritage simple et multiple), ainsi que des concepts originaux, comme l'héritage de type (les types élémentaires héritent les uns des autres) et la programmation par contrat (assertion), qui est sa principale innovation. Il est toujours le seul langage industriel implémentant en standard les concepts de programmation par contrat. La programmation par contrat est un paradigme de programmation dans lequel le déroulement des traitements est régi par des règles. Ces règles, appelées des assertions, forment un contrat qui précise les responsabilités entre le client et le fournisseur d'un morceau de code logiciel. C'est une méthode de programmation semi-formelle dont le but principal est de réduire le nombre de bogues dans les programmes.

[size=13:1cc8241bcc]3.2 Exemples [/size:1cc8241bcc]
Voici un exemple de Hello world en eiffel :
[code:1:1cc8241bcc]
class HELLO_WORLD

creation
make

feature
make is
do
io.put_string("Hello world!%N")
end

end -- class HELLO_WORLD[/code:1:1cc8241bcc]

[size=13:1cc8241bcc]3.3 Programmes [/size:1cc8241bcc]
Un des seul environnement de développement Eiffel :
[url]http://www.eiffel.com/[/url]

[size=13:1cc8241bcc]3.4 Cours [/size:1cc8241bcc]
Le cours le plus complets en français que j'ai pus trouver :
[url]http://www.sciences.univ-nantes.fr/info/perso/permanents/pmartin/ACT/[/url]
Un rapide aperçus :
[url]http://www.lrde.epita.fr/cgi-bin/twiki/view/Projects/IsoLoo[/url]
La docu standerd de Eiffel :
[url]http://smarteiffel.loria.fr/libraries/index.html[/url]

[size=14:1cc8241bcc]4. Le Fortran[/size:1cc8241bcc]

[size=13:1cc8241bcc]4.1 Description[/size:1cc8241bcc]
Fortran (FORmula TRANslator) est un langage de programmation utilisé principalement en mathématiques et dans les applications de calcul scientifique.John Backus, pionnier de l'informatique, publie en 1954 un article titré Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN. Il fallut ensuite deux ans d'effort à l'équipe qu'il dirige au sein d'IBM pour écrire le premier compilateur FORTRAN (25 000 lignes, pour l'IBM 704).
Aujourd'hui encore (2008) le langage FORTRAN reste très utilisé, d'une part en raison de la présence de très nombreuses bibliothèques de fonctions utilisables en FORTRAN, d'autre part parce qu'il existe des compilateurs FORTRAN performants qui produisent des exécutables très rapides. Toutefois, il est parfois détrôné, même pour des applications scientifiques, par les langages C et C++ [réf. nécessaire].

[size=13:1cc8241bcc]4.2 Exemple[/size:1cc8241bcc]
[code:1:1cc8241bcc]PROGRAM DEGRAD
!
! Imprime une table de conversion degrés -> radians
! =================================================
!
! Déclaration des variables
INTEGER DEG
REAL RAD, COEFF
!
! En-tête de programme
WRITE ( *, 10)
10 FORMAT (' ',20('*') / &
& ' * Degres * Radians *' / &
& ' ', 20('*') )
!
! Corps de programme
COEFF = (2.0 * 3.1416) / 360.0
DO DEG = 0, 90
RAD = DEG * COEFF
WRITE ( *, 20) DEG, RAD
20 FORMAT (' * ',I4,' * ',F7.5,' *')
END DO
!
! Fin du tableau
WRITE ( *, 30)
30 FORMAT (' ',20('*') )
!
! Fin de programme
STOP
END PROGRAM DEGRAD[/code:1:1cc8241bcc]
Notes:
* Ce programme est écrit en Fortran 90.
* Le symbole ! comme premier caractère indique un commentaire.
* La déclaration des variables est facultative en Fortran, mais sans déclaration, la variable DEG serait alors de type REAL (les variables dont le nom commence par une des lettres I, J, K, L, M ou N sont par défaut de type INTEGER, les autres de type REAL).
* L'instruction WRITE se réfère à une unité d'entrée-sortie (ici * désigne le terminal) et une spécification de format. Par exemple le format d'étiquette 20 indique qu'il faut écrire un espace, une étoile et deux espaces, un entier (la valeur de DEG) sur 4 caractères puis la valeur de RAD sur 7 caractères dont 5 après le point décimal et enfin un espace et une étoile. Une déclaration de FORMAT peut être n'importe où ; une habitude est de la mettre juste après le WRITE à laquelle elle se réfère, une autre est de les mettre toutes à la fin de l'unité de programme. Plus d'une instruction WRITE peut faire référence à un même FORMAT.
* Le caractère & à la fin d'une ligne indique une suite à la ligne suivante et le caractère & au début de la ligne indique la suite de la ligne précédente.
* L'instruction "DO DEG = 0,90" indique de répéter en boucle les instructions qui suivent (jusqu'au END DO) pour toutes les valeurs de DEG de 0 à 90 par pas de 1.
[b:1cc8241bcc](Source Exemple : Wikipedia)[/b:1cc8241bcc]

[size=13:1cc8241bcc]4.3 Programmes[/size:1cc8241bcc]
Tout ce que dont vous necesiterz pour programmer en Fortran se trouve ici : (attention le site pique les yeux)
[url]http://www.fortran.com/[/url]

[size=13:1cc8241bcc]4.4 Cours[/size:1cc8241bcc]
Un bon cours mais assez technique
[url]http://perso.enstimac.fr/~gaborit/lang/CoursDeFortran/[/url]
De trés bon cours :
[url]http://fortran.developpez.com/[/url]


Bon voila, si sa vous interese je comptais faire aussi un petite présentation de Ada, Common-Lisp, Haskell, Groovy, Simula, Scheme et ou encore Erlang.

Si vous avez des question 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 HackAngel » Fri May 16, 2008 2:50 pm

Ce peut être une bonne information, en ce sens que - en théorie - un langage de programmation est choisi en fonction du projet envisagé, et non l'inverse; de fait, il est possible de se retrouver face à bien des langages différents.

Le seul bémol que je met - ce qui ne surprendra personne - est que le LISP n'est pas - ou ne devrait pas être - un langage méconnu, faisant partie du "paquage" de langages de base de la Communuté - cf plusieurs posts du forum (Rappel: Python, Java, C/C++, Perl, LISP, HTML/xHTML).

Petit précision: Il ne me semble pas utile de s'étendre sur le LISP [b:e082fb5c44]ET[/b:e082fb5c44] le Common LISP, étant donné qu'il s'agit du même langage: le nom LISP est utilisé pour définir le langage d'origine du MIT, le Common LISP définit quand à lui le langage actuel, qui est l'évolution du premier.

Pour les amateurs, des cours, le "traité de la programmtion en Common Lisp" et des TDS sont disponibles via le lien ci-dessous.

[url]http://bigbozoid.free.fr/CoursLICENCE3/pages_html/index_PFS.htm[/url]

Du reste, Google est très locace sur le sujet...

Pour la Liberté...

HackAngel
User avatar
HackAngel
 
Posts: 871
Joined: Tue Dec 25, 2007 11:14 pm
Location: Quelque part entre ici et ailleurs...

Postby Manu404 » Fri May 16, 2008 3:50 pm

Je suis d'accord avec toi pour le Lisp, mais ceci dit n'est pas un des langages les plus populaires utilisé actuelement !
Sinon ok pour pour le common-Lisp
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:


Return to Le Bar

Who is online

Users browsing this forum: No registered users and 1 guest

cron