"Nós sabemos pensar usando abstrações" - Essa frase foi dita pela minha orientadora do TCC quando eu estava fazendo a matéria que definiu qual seria o tópico do trabalho. A matéria era sistemas distribuídos e apesar da parte prática da matéria pouco ter a ver com o que foi apresentado, a parte teorica fundamentava muito bem e permitiu que eu fosse até o próximo nível para de fato programar a coisa toda. Foi bastante divertido, mas a frase em si não tem nada a ver com o TCC, e sim com o fato de que Cientistas da Computação são, teoricamente, bons em pensar usando abstrações.
Faz um certo sentido uma vez que um cientista da computação nada mais é que um matemático que não tava afim de estudar as outras áreas mais nobres da matemática e gosta de resolver as coisas mais na força bruta. A computação não é uma matemática muito bonitinha. Na verdade a idéia da computação é resolver um problema se valendo da solução de um problema mais simples. Há quem diga que não haveria computação se não houvessem relações de recorrência. Relações de recorrência, de uma forma bem grossa, é mais ou menos isso aí: você sabe resolver um problema em um caso específico, daí você pega isso e usa pra tentar generalizar.
Eu passei por isso em outros pontos da faculdade, e muitas outras coisas no meio da T.I./Computação, são resolvidos aplicando a mesma solução sobre muitos objetos, e devido a limitações dos computadores e dos sistemas, essa é a única solução.
Ainda assim isso não é exatamente pensar usando abstrações. Pensar usando abstrações significa que você consegue fazer suposições sobre a infraestrutura na qual os seus sistemas estão apoiados, e desenvolver o componente do sistema baseado nessa suposição que você fez. Ponto importante: quanto mais suposições você faz, menos tolerante é o seu sistema porque mais requisitos ele vai precisar para funcionar. Isso ainda assim não significa que o sistema seja infalível utilizando menos suposições porque a tolerância a falhas de um sistema também é baseada em suposições.
Se você ler uma documentação de um componente de um sistema você vai ver as suposições que foram feitas tanto de infraestrutura necessária para aquele componente, tanto de falhas que aquele componente vai suportar. Ter a dimensão de tudo que é necessário de infraestrutura ou de falhas a serem toleradas é uma coisa MUITO difícil, e essa é uma das razões pelas quais os sistemas estão em constante desenvolvimento.
Mas eu acho que no final a professora estava certa, nós, cientistas da computação, precisamos mesmo saber pensar usando abstrações.
Faz um certo sentido uma vez que um cientista da computação nada mais é que um matemático que não tava afim de estudar as outras áreas mais nobres da matemática e gosta de resolver as coisas mais na força bruta. A computação não é uma matemática muito bonitinha. Na verdade a idéia da computação é resolver um problema se valendo da solução de um problema mais simples. Há quem diga que não haveria computação se não houvessem relações de recorrência. Relações de recorrência, de uma forma bem grossa, é mais ou menos isso aí: você sabe resolver um problema em um caso específico, daí você pega isso e usa pra tentar generalizar.
Eu passei por isso em outros pontos da faculdade, e muitas outras coisas no meio da T.I./Computação, são resolvidos aplicando a mesma solução sobre muitos objetos, e devido a limitações dos computadores e dos sistemas, essa é a única solução.
Ainda assim isso não é exatamente pensar usando abstrações. Pensar usando abstrações significa que você consegue fazer suposições sobre a infraestrutura na qual os seus sistemas estão apoiados, e desenvolver o componente do sistema baseado nessa suposição que você fez. Ponto importante: quanto mais suposições você faz, menos tolerante é o seu sistema porque mais requisitos ele vai precisar para funcionar. Isso ainda assim não significa que o sistema seja infalível utilizando menos suposições porque a tolerância a falhas de um sistema também é baseada em suposições.
Se você ler uma documentação de um componente de um sistema você vai ver as suposições que foram feitas tanto de infraestrutura necessária para aquele componente, tanto de falhas que aquele componente vai suportar. Ter a dimensão de tudo que é necessário de infraestrutura ou de falhas a serem toleradas é uma coisa MUITO difícil, e essa é uma das razões pelas quais os sistemas estão em constante desenvolvimento.
Mas eu acho que no final a professora estava certa, nós, cientistas da computação, precisamos mesmo saber pensar usando abstrações.
Nenhum comentário:
Postar um comentário