A Importância dos Algoritmos


 

No começo, quando alguém precisava desenvolver um programa, tinha que se preocupar com todos os aspectos relacionados ao seu desenvolvimento, desde como usar os recursos da máquina como disco, impressoras e tudo mais até criar as soluções para o problema do usuário propriamente dito. Com o tempo começou-se a usar rotinas e bibliotecas bem definidas do sistema operacional para fazer a parte de mais baixo nível e os programadores passaram a se concentrar especificamente nos problemas de programas dos usuários.

Em pouco tempo percebeu-se que muitas coisas eram feitas por todos os programadores com os mesmos objetivos mas de formas um pouco diferentes, esse tipo de trabalho dobrado acabava por consumir muito tempo.

Mas o que isso tem a ver com os algoritmos? Primeiro temos que entender o que é um algoritmo. Segundo o dicionário Houaiss: “conjunto das regras e procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um número finito de etapas.” Podemos adicionar ainda que termina sua execução em um tempo finito, isto porque a diferença entre procedimento e algoritmo é exatamente chegar ao fim em algum momento, os procedimentos podem executar indefinidamente.

Então sabendo que um algoritmo é uma forma de resolver um problema podemos falar de sua importância. Se precisarmos resolver um problema para o qual existe um algoritmo, basta consultar os livros e materiais sem ter que se preocupar em inventar novamente a solução. Embora pareça óbvio pode não ser, muitas vezes as pessoas acabam refazendo as coisas que já estão documentadas por aí. Existem diversos motivos para isso acontecer e um dos mais fortes é a vontade individual de desenvolver uma ferramenta ou biblioteca que faz alguma coisa interessante. A maior parte do desenvolvimento que temos no mercado se concentra em criar soluções para problemas do usuário utilizando o máximo possível de ferramentas fornecidas por alguma empresa. O resultado é que alguns dos programadores acabam ficando frustrados por nunca fazer alguma coisa realmente desafiadora.

Conhecer os algoritmos existentes e (pelo menos onde encontrar) suas implementações pode economizar tempo precioso na entrega de um produto de software. Durante os cursos nas faculdades aprendemos, por exemplo, alguns algoritmos de ordenação de dados e como se aplicam as diversas estruturas de dados que existem. Em algumas linguagens de programação esses algoritmos já estão disponíveis, e quando não é o caso já existem bibliotecas para usá-los. Saber usar esse recurso torna-se vantajoso não só porque agiliza o desenvolvimento, mas porque muitas vezes aumenta a qualidade do produto final. Quando criamos um código inteiro por nossa conta, temos que executar muitos testes para garantir que tudo está funcionando como deveria, mas se estivermos criando uma biblioteca de funções ao mesmo tempo em que criamos um produto que se utiliza dessa biblioteca dificilmente teremos o tempo necessário para realizar a quantidade de testes necessária a garantir a qualidade esperada.

A mistura de visões pode ser um grande problema para o programador. É necessário conhecer bem os diferentes papéis que podemos exercer durante o desenvolvimento e conhecer as ferramentas a mão. O conhecimento de formas de solução de problemas é um grande aliado na entrega de produtos de forma rápida e com maior qualidade.

One comments

  1. [...] Enquanto isso, se aprendermos a usar os algoritmos existentes e nos dedicarmos a melhorar nossas técnicas de desenvolvimento para evoluir a partir do artesanato de software, nossas aplicações podem ser executas em múltiplas plataformas sem precisarem ser recompiladas. Posted in Principal, Desenvolvimento on August 31st, 2009 RSS 2.0 Trackback. [...]

Leave a Reply