Primeiramente:
- Zen não é uma religião, embora tal disciplina tenha sido desenvolvida por monges budistas, é uma filosofia sobre as artes seculares, no livro acima falam mais da espada.
- Zen não é um sentimento ou estado mental
- Zen é sobre aperfeiçoar sua arte, aperfeiçoando a sua ferramenta mais poderosa, a Mente
Eu escrevo sobre zen na programação porque programação é um assunto que eu domino. Algumas definições do livro:
- O termo ignorância significa a ausência de Iluminação; isto é, a ilusão.
-
Lugar de repouso significa o lugar onde a mente se fixa.
Para mim a maior ilusão é a de achar que sabe tudo o que tinha que saber. Quem faz tal alegação está com mente parada e repousada na ignorância. A mente repousada na ignorância é incapaz de inovar pois ela está fixa e fechada.
E a grande verdade é que há sempre algo a se aprender e algo de novo para se produzir. Logo a mente para somente por ela mesma pois sempre haverá para onde se mover.
O que uma filosofia de mais 500 anos tem a ver com uma ciência de cerca de 60 anos de idade? Pois foi a mente humana que desenvolveu as artes descritas tanto nesse tratado quanto a ciência da computação.
E infelizmente as mentes dos desenvolvedores hoje estão presas em conceitos cristalizados conhecidos como padrões de projeto especialmente o GoF e Core Patterns. Igual o brinquedo abaixo, tentam encaixar os blocos pré-montados na caixa. Mas diferente da brincadeira, a forma da caixa muda a cada novo sistema, uma criança daria um jeito de encontrar novos blocos, mas muitos adultos da área de TI vão martelar os blocos e a caixa até que as peças mais ou menos se encaixem. Mais ou menos é um resultado sub-ótimo mas quase todos se contentaram com o mais-ou-menos, e por isso a mente deles está repousada na ignorância. De modo algum essa estagnação é por falta de vontade ou falta de inteligência mas sim por terem esquecido que as regras mudaram e que há outros blocos.
| Caixa-encaixa |
A diferença é que agora o cliente exige sistemas muito mais complexos do que esse modelo mal-fadado de caixa-encaixa pode permitir. E quando antes havia o consolo de que o próximo processador seria 2x mais rápido, hoje o programa deve também mudar sua estrutura para explorar o ganho de paralelismo.
A criança do exemplo anterior iria se cansar do caixa-encaixa ingrato, e iria trocar de brinquedo. Este abaixo é mais interessante:
O Lego® com suas várias peças permite a criação de grandes obras. O Lego® permite que seus usuários expressem a sua criatividade encaixando as peças em várias combinações. No Lego uma única peça, pode se encaixar com outras desde que haja uma certa compatibilidade entre elas, embora pareça ser uma grande limitação, ainda assim é possível muitas combinações.
Igual às peças do lego, as funções da programação funcional podem ser combinadas e cumprir um propósito muito maior. Existem também restrições de compatibilidade, pois cada função espera um tipo de função, mas não chega a ser um modelo chave-fechadura igual ao caixa-encaixa da programação imperativa.
Moral da história é que a programação funcional trouxe novas fronteiras, algumas ainda inexploradas, e logo mais espaço para mente se mover. Um solo vasto para que a mente não mais repouse na ignorância.
Nenhum comentário:
Postar um comentário