Ceylon la route vers le langage idéal

L’informatique est une science jeune et en perpétuelle évolution. Même si ses fondamentaux n’ont pas changé depuis ses balbutiements, des concepts nouveaux, des langages, des technologies et bien d’autres concepts apparaissent et disparaissent au fil du temps.

Yet another language

Un des principaux axes dans lesquels l’informatique évolue au fil du temps est sans conteste les langages de programmation.

Des principes fondamentaux

Les principaux paradigmes de programmation existent depuis très longtemps (1957 pour le procédural avec Fortran, 1969 pour l’orienté objet avec Smalltalk, 1958 pour le fonctionnel avec Lisp d’après Wikipédia).

Les langages se distinguent également par la façon dont le code qu’ils produisent est exécuté. Certains sont des langages compilés directement en code machine, d’autres nécessitent un interpréteur. Là encore, les concepts principaux existent depuis longtemps. Par exemple, la première machine virtuelle avec compilation à la volée (Just In Time) a été créée en 1980 pour exécuter du Smalltalk.

Les langages sont aussi caractérisés par d’autres critères. On peut évoquer le typage qui peut être statique, dynamique ou inféré mais aussi plus ou moins fort. La syntaxe est également un critère qui compte énormément dans la mesure où elle représente sa partie visible.

L’ensemble de ces axes permet d’envisager des possibilités absolument infinies en terme de diversité. Les langages modernes sont nettement différents de leurs ancêtres même si ils reposent sur des principes identiques. Ils ne sont ni plus ni moins que des assemblages de ces différents concepts de base qui ont gagné en maturité depuis leur création. Ils sont généralement conçus en capitalisant sur leurs grands frères. Continuer la lecture de Ceylon la route vers le langage idéal

En finir avec les NullPointerExceptions en Java grâce à Optional

Une des erreurs que la JVM doit lever le plus souvent lors de l’exécution d’un programme Java est très certainement la NullPointerException.

L’origine de cette erreur d’exécution est très simple. Lorsqu’on manipule un objet d’un type donné, on sait qu’il peut être compatible avec ce type (lui-même ou un type fils) ou null. Lorsque qu’il s’agit de null, il suffit d’accéder à une propriété (attribut ou méthode) de l’objet en question, qui en fait n’existe pas, pour engendrer cette fameuse NullPointerException. Rappelons que cette erreur d’exécution existe dans la plupart des langages. En C ou C++ cela provoque une erreur de segmentation et c’est encore plus gênant parce que cela provoque l’arrêt du processus. En Python cela conduit à AttributeError. Continuer la lecture de En finir avec les NullPointerExceptions en Java grâce à Optional

Une histoire de typage

Les premières lignes de code que j’ai écrites étaient en PHP. J’ai utilisé uniquement ce langage pendant mes premières années de développement sur PHPBoost. Puis, pour ma culture, j’ai suivi les cours de C de l’ex-Site du Zéro. Le passage d’un langage dynamique de haut niveau à un langage statique de bas niveau m’a fait un gros choc, et ma première réaction a été la suivante :

A quoi bon typer son code si ce n’est pas nécessaire pour que le programme fonctionne ? Continuer la lecture de Une histoire de typage