Consistência e legibilidade.
Se eu souber que você chama a função X
assim: X(arg1, arg2, ...)
, então espero que funcione da mesma maneira para nenhum argumento: X()
.
Agora, ao mesmo tempo, aprendo que você pode definir a variável como algum símbolo e usá-la assim:
a = 5
b = a
...
Agora, o que eu pensaria quando encontrasse isso?
c = X
Seu palpite é tão bom quanto o meu. Em circunstâncias normais, o X
é uma variável. Mas se fôssemos seguir o seu caminho, também poderia ser uma função! Devo lembrar se o símbolo mapeia a qual grupo (variáveis / funções)?
Poderíamos impor restrições artificiais, por ex. "As funções começam com letra maiúscula. As variáveis começam com letra minúscula", mas isso é desnecessário e torna as coisas mais complicadas, embora às vezes possa ajudar alguns dos objetivos do projeto.
Side-note 1: Outras respostas ignoram completamente mais uma coisa: o idioma pode permitir que você use o mesmo nome para a função e a variável e diferencie por contexto. Veja Common Lisp
como um exemplo. A função x
e variável x
coexistem perfeitamente bem.
Nota 2: A resposta aceita nos mostra a sintaxe: object.functionname
. Em primeiro lugar, não é universal para idiomas com funções de primeira classe. Em segundo lugar, como programador, eu trataria isso como uma informação adicional: functionname
pertence a um object
. Se object
é um objeto, uma classe ou um namespace não importa muito, mas me diz que ele pertence a algum lugar . Isso significa que você precisa adicionar a sintaxe artificial object.
para cada função global ou criar alguns object
para manter todas as funções globais.
E de qualquer forma, você perde a capacidade de ter namespaces separados para funções e variáveis.