A demonização do hardware

O hardware foi e sempre será peça fundamental em uma solução computacional; sem ele, de nada servem os algoritmos, cálculos de complexidade, modelagens, e tudo o mais que os desenvolvedores de software fizerem. Ele sempre foi um aliado do programador. Hoje, é demonizado em massa por esses mesmos profissionais. O quê ocorreu?

Recentemente, assisti a uma palestra sobre desenvolvimento de software, na qual era apresentada uma linguagem de programação a qual eu particularmente não tinha domínio. Uma grande palestra, bastante expositiva, muito empolgante, mas em determinado momento, ouvi do palestrante (um desenvolvedor de software) algo assim:

E aqui, temos esta abstração x, e graças a ela não tenho que me preocupar com memória…

Sou desenvolvedor web. E, neste meio, tenho visto com cada vez mais frequência estes jargões: “tal coisa é boa porque não tenho que me preocupar com memória”, “tal outra é perfeita, pois não preciso me preocupar com hardware”, e assim por diante.

Em que momento da nossa história passamos a demonizar o hardware? Ele não tem nada de assustador; pelo contrário: ele é a ferramenta por meio da qual executaremos nosso software. É bom conhecê-lo, assim como é bom conhecer as ferramentas disponíveis antes de realizar qualquer trabalho.Conhecê-lo mais a fundo nos dá as bases de como desenvolver um software melhor para rodar nele!

Não há porque sentir medo de segurar um martelo, caso você precise bater em um prego. Não há porque sentir medo do hardware: ele não é um inimigo do software.

Já ouvi muito de diversos programadores (não so da área de web) que qualquer coisa que “desça ao hardware” é muito difícil e que deve ser evitada. Ponteiros por exemplo.

Quando digo que trabalhei por cinco anos programando para web em C e que eu utilizava ponteiros, é comum que me respondam: “ponteiros são muito difíceis de se usar”, “prefiro uma linguagem em que eu não tenha que usar ponteiros”, “tá louco? Mexer com memória???”.

Ora, que acontece aqui? É medo do hardware? Preguiça de entender ponteiros? Eu não entendo o porquê de serem ruins. Fossem uma abominação já teriam sido extintos.

Há um argumento que quase sempre me é dito, e que para mim não tem lógica alguma: “programar olhando para o hardware impede que meu software rode em qualquer hardware, portanto, temos que ter abstrações que nos permitam não nos preocupar com ele”.

As pessoas pensam que abomino abstrações! Contudo, olhar para o hardware (para a memória por exemplo) requer uma abstração! Ponteiros são uma abstração à memória! Ninguém está falando de desenvolver software para um hardware específico! Abstrações como ponteiros te permitem justamente fazer um software que vai funcionar em qualquer máquina onde uma alocação de memória funcione (isso para dar um exemplo). Não importa a quantidade de memória, como esta memória é fisicamente construída, etc.

Ou seja, hoje é moda que se coloque uma camada de abstração adicional acima das abstrações já existentes, com o intuito de não se ver o hardware.

Outro argumento comum: “é custoso (em tempo) desenvolver olhando para o hardware”. É tão custoso quanto aprender uma abstração nova para não se olhar para o hardware. Ele é a ferramenta utilizada para executar nosso software. Olhe para ele. Use-o. Esgote-o!

E o argumento final: “Hardware não importa. Ele é barato. Se necessário fazemos upgrade. O que precisamos é de um software, e rápido!”.

Quanto a isso, digo: imagine o quanto se pode fazer com um hardware singelo, caso otimizássemos nossos softwares. Um software que consome pouca memória e pouco processamento vai rodar em qualquer merda de máquina. Vai rodar em um hardware mais barato (economia). Vai rodar mais rápido. Vai atender mais usuários e em menos tempo. E o custo disso é: formar melhores desenvolvedores. Há um custo inicial para isso? Sim. Mas é um custo inicial para benefícios de uma carreira inteira (literalmente).

Formar melhores desenvolvedores nos traz economia de hardware, e software de melhor qualidade. Ainda, software em menos tempo (geralmente, claro).

O medo do hardware é comum, principalmente em programadores iniciantes. Uma experiência um pouco mais próxima dele (como programação embarcada) pode ser de grande valia para a perda desse temor. Foi para mim.

Perca o medo do hardware. Ele é seu amigo. Ó que bonito.

Finalmente, uma luz no fim do túnel: o interesse crescente da comunidade por iniciativas com controladoras programáveis (hardware!), como o Arduino. Torço para que se popularize, e para que os jovens programadores percam esse medo que até agora foi crescente.

Formemos melhores programadores. É bom, é útil, é econômico, e é um grande investimento.

E aos programadores: por favor, preocupem-se com a memória!

Publicado por

Jerônimo Fagundes da Silva

Oi, eu sou o Jerônimo. :-D Desde 2004, trabalho com desenvolvimento de software voltado à web. Nesse período, trabalhei com diferentes tecnologias, e sempre voltado à web: HTML, JavaScript, CSS, PHP, MySQL, C, PostgreSQL, e ainda outras que não estou lembrando agora. Atualmente, moro em Canoas-RS-Brasil e trabalho como Líder de Desenvolvimento na KingHost em Porto Alegre-RS-Brasil.