Tout dépend en fait de ce que l'on appelle "approche naturelle", "méthode naturelle", etc.
Je reste persuadé que la programmation est un outil. A ce titre, rien n'est vraiment très naturel et doit s'apprendre. Seuls quelques langages sont conçus avec pour objectif d'être suffisamment naturel pour être maîtrisable rapidement par des enfants, par exemple.
Pour le reste, toutes les techniques de programmation sont des outils et s'apprennent. La récursivité s'apprend comme toutes les autres techniques et elle constitue un outil extrêmement puissant. Dans le bouquin je montre que c'est une structure plus puissante que la boucle car plus souple et adaptable au problème à traiter.
Je pense cependant que je ne vais pas te convaincre aussi facilement que cela ;-) Je te propose de discuter de vive voix de cela si l'on a l'occasion de se croiser ... Peut-être à Metz ?
En revanche, Erlang, avant d'être un langage fonctionnel, est surtout un langage concurrent. C'est la concurrence du langage qui rend la conception des applications plus simple et plus "naturelle". Erlang fonctionne à base de processus légers. Il est possible de lancer autant de processus que le design de l'application l'exige naturellement. Il suffit d'observer les activités concurrentes, simultanées dans le monde, pour être capable d'en déduire l'organisation de son application.
L'exemple bateau est celui des ascenceurs. Pour modéliser un système d'ascenseurs, il suffit de créer un processus par ascenseur. Les usagers commandent les ascenseurs en leur envoyant des messages (passage de messages).
Le fait qu'Erlang soit un langage orienté concurrence parait anecdotique. C'est pourtant un élément fondamental dans un langage. Prenons l'exemple de la conception d'un serveur Web. La logique veut que l'on utilise un processus par client connecté. C'est le design le plus "naturel". Chaque nouvelle connexion entraîne la création d'un nouveau processus. Dans la plupart des autres langages, ce design logique n'est cependant pas possible. Les langages traditionnels les plus concurrents supportent et sont capables de gérer en général au maximum 1000 processus (Threads). Cela signifie que le design n'est plus valable si l'on considère que le serveur peut accueillir plus de 1000 connexions simultanées. C'est embêtant comme limite, non ? Cela conduit implique de sortir du design "naturel" pour ce tourner vers des contournements. En Erlang, cette limitation n'existe pas. Le design d'une application peut être calqué sur l'analyse de la concurrence réelle des entités de l'application.
[^] # Re: La programmation clusterisée à la porte de tous ? Un livre sur Erlang
Posté par Mickaël Rémond . En réponse à la dépêche La programmation clusterisée à la portée de tous ? Un livre sur Erlang. Évalué à 2.
Je reste persuadé que la programmation est un outil. A ce titre, rien n'est vraiment très naturel et doit s'apprendre. Seuls quelques langages sont conçus avec pour objectif d'être suffisamment naturel pour être maîtrisable rapidement par des enfants, par exemple.
Pour le reste, toutes les techniques de programmation sont des outils et s'apprennent. La récursivité s'apprend comme toutes les autres techniques et elle constitue un outil extrêmement puissant. Dans le bouquin je montre que c'est une structure plus puissante que la boucle car plus souple et adaptable au problème à traiter.
Je pense cependant que je ne vais pas te convaincre aussi facilement que cela ;-) Je te propose de discuter de vive voix de cela si l'on a l'occasion de se croiser ... Peut-être à Metz ?
En revanche, Erlang, avant d'être un langage fonctionnel, est surtout un langage concurrent. C'est la concurrence du langage qui rend la conception des applications plus simple et plus "naturelle". Erlang fonctionne à base de processus légers. Il est possible de lancer autant de processus que le design de l'application l'exige naturellement. Il suffit d'observer les activités concurrentes, simultanées dans le monde, pour être capable d'en déduire l'organisation de son application.
L'exemple bateau est celui des ascenceurs. Pour modéliser un système d'ascenseurs, il suffit de créer un processus par ascenseur. Les usagers commandent les ascenseurs en leur envoyant des messages (passage de messages).
Le fait qu'Erlang soit un langage orienté concurrence parait anecdotique. C'est pourtant un élément fondamental dans un langage. Prenons l'exemple de la conception d'un serveur Web. La logique veut que l'on utilise un processus par client connecté. C'est le design le plus "naturel". Chaque nouvelle connexion entraîne la création d'un nouveau processus. Dans la plupart des autres langages, ce design logique n'est cependant pas possible. Les langages traditionnels les plus concurrents supportent et sont capables de gérer en général au maximum 1000 processus (Threads). Cela signifie que le design n'est plus valable si l'on considère que le serveur peut accueillir plus de 1000 connexions simultanées. C'est embêtant comme limite, non ? Cela conduit implique de sortir du design "naturel" pour ce tourner vers des contournements. En Erlang, cette limitation n'existe pas. Le design d'une application peut être calqué sur l'analyse de la concurrence réelle des entités de l'application.
Mickaël