Ao ver o post anterior sobre microcontrolador e engenharia reversa me lembrei de uma história uma grande fabricante de máquinas estava revendo o programa principal de uma de suas máquinas este programa tinha por volta de 120 mil linhas de código que faziam uma varredura em todos os sensores da maquina e ao girar a chave ele fazia esta varredura em alguns milisegundos e se tudo estivesse ok ela ligava se se tinha algo errado já dava uma mensagem de erro. Bem a engenharia da empresa destacou uma equipe para refazer o programa novamente mas deveria executar a varredura mais rapidamente e ao fim de alguns mêses terminaram o trabalho e reduziram de 120 mil linhas de código para em torno de 75 mil linhas.
Resumindo o que eles fizeram?
Bem acharam um monte de função e coisas mal escritas e arrumaram tudo.
Ou seja em torno de 45 mil linhas de código eram gambiarra pura, um monte de função para arrumar outras funções e por ai vai.
É engraçado ver na internet a gambiarra de pedreiros de construções e de mecânica são coisas facilmente visíveis mas por experiencia posso dizer que tem muita máquina linda com painéis de comando aparentemente muito bem feitos mas que escondem um monte de gambiarra e digo na área de NR-12 tem gambiarra pacas em painéis elétricos.
E em software então nem se fala tem muito código mal feito, tem muito código inútil, tem muita gambiarra (mas funcionam).
(Welcome to the real world!)
@skullcrusher777 tive uma experiência pessoal com isto. Fui contratado para substituir um Engenheiro Eletrônico que estava de saída do país em um projeto de controle de acesso.
No início mantive todas as rotinas que ele havia desenhado e programado e conclui algumas rotinas que eram necessárias para concluir o projeto. Coisa pouca mesmo. Até aí tudo bem. De repente vários clientes começaram a reclamar de algumas falhas no sistema e a solução aparentemente era uma falha sistêmica devido a picos de luz. Toca trabalho. 2, 3 dias em regime 24h e nada.
Fizemos uma alteração no hardware (gambi) pra ganhar tempo com os clientes.
Fiz uma varredura no firmware e descobri umas 300 linhas de código sem funcionalidade alguma e comecei a retira-las. Depois fui “reformando” as rotinas comuns e consegui eliminar mais umas 200 linhas de código. Nisso eu gerei umas 3 versões do firmware.
Já com os clientes mais calmos, comecei a refazer todo o código a partir do que já havia pronto e descobri bombas relógios por todo o código, coisas feitas para que o processador perdesse o controle sobre a pilha entre outras armadilhas, inclusive uma rotina de lista circular que o final da lista não apontava para o início da mesma.
Nas férias desse amigo engenheiro que substitui ele esteve na empresa e conversando durante o almoço ele reclamou comigo que durante esse tempo dele fora não tinham acionado ele para corrigir o código e eu disse que estava tudo bem e que não tivemos problemas. Ele retrucou, “mas, como pode? Eu deixei algumas rotinas sem finalização. Como tudo estava funcionando bem?”
Conclusão: Nem todo código é bem escrito para que os problemas surjam e alguém chegue com a solução pronta. Cria-se dificuldade para se vender facilidade.
PS: O código era em assembler puro.
Abraços.
Wagner sinto que é uma dificuldade mas muitas pessoas não admitem que tem muito arranjo técnico (gambiarra) por ai e isso digo em todas áreas quando vc conhece mais profundamente essas áreas vc vai ver que tem gambiarra para todo lado tem na eletronica tem na elétrica em em software tem em tudo, e vou mais longe é raro onde não se tem.
Como vc disse muitos profissionais se aproveitam de certas áreas onde o conhecimento é mais especifico por exemplo em assembler que vc domina somente um número pequeno de pessoas que dominam essa linguagem conseguem encontrar as gambiarra, já por exemplo com Python que é uma linguagem mais próxima da humana ou seja alto nível com uma sintaxe simples é mais fácil entender o que está acontecendo.
Gambiarra em termos de código não existe
Temos :
código nao optimizado.
código difícil de ler.
código com redundância.
Código copy paste.
Mas se faz o que você precisa. E código funcionando.
O que eu sou contra e código que não pensa no cara que vai ter que ajustar no futuro. Sem comentários . Sem documentação!
No meu caso o código tinha “gambiarra” pra beneficiar o outro engenheiro.
Coisa bem feita com hora pra acontecer… Terrorismo mesmo,
A propósito, o código não fazia o que era preciso, fazia de um jeito para dar problemas mesmo…