En supposant qu'on parle de langage fonctionnel pur (ce qu'est censé être Erlang si je me souviens bien),
Erlang n'est pas un langage fonctionnel pur.
il n'y a généralement pas de « vraie » variable, et uniquement des « valeurs ». Du coup, il y a uniquement des affectations uniques, et si l'on « modifie » la valeur, alors en réalité on crée une nouvelle valeur qui est visible pour l'appelant ou bien pour la portée lexicale « inférieure ».
J'ai un peu de mal à comprendre ce que tu veux dire, mais j'ai l'impression que tu te compliques la vie : une variable en Erlang est comme une variable en C/Java, à quelques différences près :
- tu ne peux pas déclarer de variable en dehors d'une fonction
- tu ne peux affecter qu'une seule valeur à une variable.
Erlang étant un langage plutôt "déclaratif", il n'y a pas de sens à affecter plusieurs fois une valeur à une variable.
Il n'y a donc peut-être pas de variable globale à proprement parler en Erlang, mais il y a des valeurs globales (et en demandant à un moteur de recherche comment créer des variables globales en Erlang, on tombe sur différentes réponses qui proposent de créer un process/serveur pour gérer l'état de la/des variables, ou bien de passer par un équivalent de table associative, ou bien...).
J'ai l'impression que tu cherches à tout prix à avoir raison. Tu peux tourner les choses dans le sens que tu veux, il n'y a pas de variable globale en Erlang.
il y a des valeurs globales
Je n'ai jamais dit le contraire : comme dans tout autre langages tu peux avoir à gérer des états : dans ce cas on utilise un autre moyen que les variables globales : des tables (ets/dets), des behaviours (FSM pour finite state machine). Ce n'est pas un moyen "tordu" de créer des variables globales, mais d'autre moyens de gérer des états dans ton programme.
Les variables globales ne sont qu'un moyen sale de gérer les états : mis à part dans certains cas de programmation bas niveau (et encore ... ), ça ne devrait jamais être utilisé, sauf cas exceptionnel (les seuls cas à ma connaissance qui peuvent le nécessiter sont des cas de programmation assez bas niveau, et encore : on peut souvent s'arranger autrement).
pouvoir créer/modifier un état global à tous les threads, à certains niveaux du programme, oui, c'est utile.
Je n'ai jamais dit le contraire, je suis seulement d'avis qu'utiliser une variable pour ça est une mauvaise idée. La Lisibilité du code est une raison (qui pour moi est suffisante à elle seule).
mes variables « totalement » globales sont généralement en lecture seule.
compromis raisonnable à mon avis, quand on ne peut pas faire autrement.
[^] # Re: jeNeSaisPasCommentNommerCetteVariable
Posté par totof2000 . En réponse au journal Comment être un développeur désirable. Évalué à 1.
Erlang n'est pas un langage fonctionnel pur.
J'ai un peu de mal à comprendre ce que tu veux dire, mais j'ai l'impression que tu te compliques la vie : une variable en Erlang est comme une variable en C/Java, à quelques différences près :
- tu ne peux pas déclarer de variable en dehors d'une fonction
- tu ne peux affecter qu'une seule valeur à une variable.
Erlang étant un langage plutôt "déclaratif", il n'y a pas de sens à affecter plusieurs fois une valeur à une variable.
J'ai l'impression que tu cherches à tout prix à avoir raison. Tu peux tourner les choses dans le sens que tu veux, il n'y a pas de variable globale en Erlang.
Les variables globales ne sont qu'un moyen sale de gérer les états : mis à part dans certains cas de programmation bas niveau (et encore ... ), ça ne devrait jamais être utilisé, sauf cas exceptionnel (les seuls cas à ma connaissance qui peuvent le nécessiter sont des cas de programmation assez bas niveau, et encore : on peut souvent s'arranger autrement).
Je n'ai jamais dit le contraire, je suis seulement d'avis qu'utiliser une variable pour ça est une mauvaise idée. La Lisibilité du code est une raison (qui pour moi est suffisante à elle seule).
compromis raisonnable à mon avis, quand on ne peut pas faire autrement.