• # Objective Caml est bien

    Posté par . En réponse au journal Commencer à programmer ?. Évalué à 10.

    Pour débuter, prend un langage de haut niveau. Plus le langage est de haut niveau et plus il fait des choses pour toi ce qui se simplifie la vie.

    Je pense que premièrement prendre un langage qui gère tout seul l'allocation mémoire est une bonne chose, c'est une raison massive de bug. Ne pas avoir a faire un malloc, sans oublier de mettre le free et une seule fois et au bon endroit avec le bon transtipage est compliqué au début. O'Caml, Java, Ada et beaucoup d'autres le font, mais pas le C ni le C++. D'ailleur le C ne mérite pas d'être appelé par certains "langage de haut niveau", ce n'est pas son but.

    Ensuite tu as le style de programmation que tu préfère. Là c'est une histoire de goût. Il y a des langages impératifs, ce sont les plus répendus. Ce sont ceux des affectation de variables, des bloucles for et while. Ils ont l'avantage d'être assez natuels quand on débute. On peut y coder les chose facilement et en peu de temps mais elle est plus diffcile a déboguer, on peut se perdre dans "a quel moment telle variable à t'elle valeur ?". Faut pas s'embrouiller.

    Les langages fonctionnels demandent de mieux penset ton programme avant de le coder. Ils sont basé sur des fonctions que tu emboite pour calculer le resultat et pas contrairement aux langages impératifs, aux valeurs que tu met dans des vairables. En contre partie ils sont plus aisés a débogger, et ont une structure basé sur les fonctionnalités ce qui les rend plus lisibles.

    Il y a aussi la programmation par objets. Elle est très utile pour la réutilisabilité du code. Mais comme dans ce monde tout est objet, il faut tout définir en terme d'objets ce qui parfois engendre des complications inutiles comme par exemple pour additionner deux entier, tu appèle la méthode de l'un où tu passe le second en argument ce qui a pour condéquences des fois de retrourner un nouvel objet ou de modifier la valeur du premier.

    Le typage est également très important, plus un langage t'embête avec le typage plus il détectera des erreurs et moins tu en fera, c'est très ennyeux quand on compile mais avec un langage qui a des types très exigents comme O'Caml, quand ton programme compile tu es sur d'avoir éliminé beaucoup d'érreur d'étourderie.

    Concernant le typage il y a aussi autre chose de pratique, c'est le polymorphisme. Si tu fais une fonction pour calculer la taille d'une liste, tu aimerais que ta fonction serve pour des listes quelconques et pas a avoir une fonction qui calcule la même chose pour chaque type de liste. Le polymorphisme ca sert à ca, ca permet de définir une même fonction pour différents types d'arguments (avec différents types de retour).

    Autre point virtal, les bibliotèques. Il est préférable de prendre un langage où il existe déjà beaucoup de bibliothèques et pas à avoir a réinventer la roue a chaque fois.

    Concernant O'Caml il est fonctionnel mais sait faire aussi de l'impératif et est aussi orienté objet (d'où son nom), il gère automatiquement l'allocation de mémoire. Le typage est statique c'est a dire que le compilateur essaie de trouver les erreurs de typage à la compilation et pas à l'execution, il est polymorphe, possède de nombreuses bibliotèques dont des binings de la SDL,Gtk, OpenGL, etc ... Son compilateur natif lui permet d'avoir un code rapide qui rivalise avec du C. En bytecode, c'est 5 fois plus lent mais c'est portable. Il est en QPL pour le compilateur et LGPL pour les bibliothèques.

    De plus caml à un outil très sympa : un top-level. Le top-level est un peu comme un shell dans lequel tu entre du code Caml et qui le compile à la volé. C'est très pratique pour tester ses fonctions sans avoir à faire un programme de teste spécifique. Et c'est encore mieux pour apprendre car tu peux expérimenter a ta guise et dans effort. Il y aussi un livre très bien fait en ligne qui se nome "Developpement d'application avec Objective Caml" ( Dehttp://www.pps.jussieu.fr/Livres/ora/DA-OCAML/index.html(...) ) . Il est très bien fait mais depuis le langage a évolué donc un petit tour de temps en temps du coté du manuel en ligne ne sera pas mal.

    Un autre langage très en vogue est java, complètement orienté objet il gère aussi la mémoire. Il possède une immence quantité de bibliotèques. Malheureusement la serion de Sun, c'est pas libre et les projets libres ne sont pas 100% compatibles avec les dernieres versions de Sun.

    Je n'ai pas parlé de la programmation logique, c'est vrai, mais pour débuter je n'y crois pas. Si ca t'intéresse ily a Prolog qui est bien fait et peut rendre parfois quelques services.

    Pour les autres langages, je ne les connais pas trop donc je ne peux pas trop d'aider mais j'ai entendu beaucoup de bien de Ada et Python.

    Bonne chance pour choisir le langage qui te convient.