Les langages informatiques

A ma connaissance, il en existe de 4 sortes :

  • Les langages imperatifs
  • Les langages objets
  • Les langages fonctionnels
  • Les langages logiques

  • Ils peuvent etres compile (traduction du source en instruction machine) puis execute par le microprocesseur, interprete, ou compile et interprete

    Les langages imperatifs

    Ils sont les plus connues. La famille la plus repandu et le BASIC ( qui veut dire quoi deja ??). On connais le celebre Visual Basic de Microsoft. C'est amusant mais mon premier langage a ete le Basic 512 installe en ROM de mon TO9. Il s'agissait la aussi d'un produit Microsoft. Ensuite j'ai pratique l'Amiga Basic (tres nul), le GFA Basic (portage de l'Atari ST sur l'Amiga) et le tres puissant (mais pas OS Friendly) AMOS Basic (avec ces extensions AMOS 3D et AMOS Compiler). Le Basic a l'avantage d'etre simple a apprendre et d'etre assez puissant pour effectuer la pluspart des choses. Cependant il est relativement lent car (la pluspart des basics) generalement interprete. De plus chaque basic est propre a une machine ou systeme d'exploitation et donc vous ne pourrez pas faire tourner votre programme sur d'autres type d'OS.

    L'assembleur et un macro langage permettant grace a l'emploie de mnemonique de programmer directement dans le langage native du microprocesseur. C'est le langage de predilection de tout hacker qui se respecte. Grace a l'assembleur, on ne peut pas etre plus proche du hard !
    [exemple de syntaxe]

    Le C et un langage imperatif aussi tres puissant et proche de l'assembleur dans l'esprit. Il a une syntaxe simple, comportant peu de mot clef. Il comporte de nbx operateur permettant de faire des operations tres performantes. Le revers de la medaille, c'est que sa puissance lui vient de la liberte qu'il procure et donc aux betises qu'il laisse faire. Ces detracteurs lui reproche la possibilite de manipuler comme on le souhaite les pointeurs memoires ainsi que la gesion de la memoire elle meme. Sur un OS mal protege, un programme C mal ecrit (comportant un BUG) peu provoquer le plantage complet de la machine) C'est a titre personnel mon langage de predilection car sa liberte n'entrave pas ma creativite.

    TCL/TK est un langage de scripts evolue comme perl, rebol ...

    Les langages objets

    C++ est une couche supplementaire du C. Elle aporte quelques nouveaux mots cles au langage, mais surtout plein de nouveaux concepts tres puissants, tel la notion de constructeur/destructeur, la derivation et l'heritage (simple ou multiples), la surcharge de fonction ou d'operateur (on peut redefinir le = si on veut !), les methodes virtuelles, etc ... L'idee maitresse est que l'on peut decrire le monde sous forme d'objet. A chaque objet appartient des methodes (fonctions en langage imperatif) qui ne s'applique que sur les donnees de l'objet.

    JAVA est un autre langage objet inspire de la syntaxe du C et des extensions objects du C++ mais en moins complet. Par contre JAVA est livre avec une bibliotheque standard remarquable. La grosse difference entre JAVA et C++ reside dans le fait que les programmes JAVA sont compiles mais le resultat n'est pas du code machine mais du byte-code (un langage intermediare non comprehensible par les microprocesseurs sauf les cpu JAVA !) qui est interprete par la JVM (JAVA virtual machine). Pourquoi un tel choix ? Parce que les concepteur de java on voulu que une fois compile, le programme toune sur toutes les machines (sans recompiler). Une fois compile, un programme JAVA fonctionnera sous Windows/intel ou sous Linux/m68k sans aucune modification. Pourtant les OS et les microprocesseurs sont completement different. C'est le role de la JVM que de faire que ce programme tournera de le meme facon. En comparaison, un programme C ou C++ aurait du etre compile sur les deux plateformes avant d'etres executes, sans espoir de faire marcher le binaire sur l'autre plateforme. Cependant JAVA est decrie pour plusieurs raison : - Cette universalite est theoriques; il y a encore des differences entre la pluspart des JVM qui ne viennent pas des memes constructeurs - JAVA bouge trop : il y a trop de nouveautes et de changements - JAVA est lent meme avec l'apparition de JIT (compilation Just In Time, la JVM converti a la vole le byte code en binaire).

    Smalltalk est un pure langage objet ...

    Les langages fonctionnels

    Tel le caml (derive du ml). Tout est sous forme de fonction. Le langage n'est pas type (entier, flottant, chaine de caractere, ...) C'est un moteur d'inference qui determine en fonction de la fonction utilise de quel type sont les parametres. J'ai fait un projet un compilateur d'un langage fonctionnel

    [voici les sources et le binaire pour Linux et NT ainsi que quelques exemples]

    Les langages logiques

    Tres deroutant a l'apprentissage ! On ne dit pas comment faire mais quoi faire. Au lieu de dire fait moi une boucle puis recherche si y a pas un truc qui me plait bien ..., on dit voila ca ca me plait et hop le langage cherche pour vous et explore les possibilietes avant de donnee un resultat Par exemple en Prolog, on decrit des regles, predicats et c'est le langage qui s'occupe de tout pour arriver a la solution (sil y en a une) Il y a aussi le Lisp, mais je ne connais pas (sauf qu'il y a plus de parentheses que d'autres caracteres !!

    Realisation : [Mon programme d'Othello]