Pressionar o botão Turbo do software

Alguém se lembra do o botão Turbo de modelos antigos do IBM PC?

Um resquício de máquinas de cinco a dez anos atrás, o turbo switch ainda permanece em muitos casos, embora não sirva para nada.

Nos primórdios do PC, só existia a IBM, e havia apenas algumas velocidades diferentes em que um PC podia ser executado. Os primeiros softwares foram escritos por programadores que acreditavam estar escrevendo-os para serem executados em uma máquina com uma velocidade específica. Quando máquinas mais novas e mais rápidas eram lançadas, alguns desses softwares (especialmente jogos) paravam de funcionar corretamente porque eram executados muito rápido. Desligar a função “turbo” do PC (ou seja, qualquer coisa que o fizesse funcionar mais rápido do que um IBM de uma determinada época) tornaria a máquina mais lenta para que o software funcionasse. Em essência, era um recurso de “modo de compatibilidade”, para tornar a máquina mais lenta para softwares mais antigos.

IBM PC compatível com o botão turbo

Atualmente, há dezenas de combinações diferentes de tipos e velocidades de processadores. O software não pode se basear no conhecimento da velocidade da máquina, portanto, a maioria dos programas usa algoritmos de detecção de velocidade. O botão turbo não tem mais nenhuma utilidade. Em muitas placas-mãe, não há lugar para conectá-lo ou há um lugar, mas a placa-mãe não faz nada quando o botão é pressionado. O melhor uso para esse botão é nunca tocá-lo ou usá-lo para outra finalidade. Algumas máquinas mais antigas ainda ficam mais lentas quando o botão é pressionado e, se o senhor o pressionar por acidente, a máquina perderá desempenho. Pode ser surpreendentemente difícil localizar o problema; a parte frontal da máquina é o último lugar em que alguém parece notar algo.

Eu também me lembro do botão Turbo, embora quando comecei a me dedicar mais aos PCs, no início dos anos 90, ele já estava em declínio. O que é estranho em um botão turbo é que o senhor praticamente sempre o quer ligadoquase não há situação em que o senhor queira manter alguma potência de reserva para aquele “vigor” extra exigido, por exemplo, por uma planilha Lotus 1-2-3 particularmente intensa. O senhor queria que seu PC funcionasse a todo vapor, com a máxima velocidade possível, o tempo todo.

Acredito que essa filosofia de hardware também se aplica ao software e aos dois extremos do desenvolvimento de software:

Quer o senhor seja um programador ou um usuário, o desempenho é um enormemente recurso extremamente importante, como observa o codificador:

Em meu primeiro emprego em uma empresa de defesa, conheci dois caras (eu achava que eles eram velhos, mas provavelmente tinham a minha idade agora!) que escreviam código desde o final dos anos 50 e depois escreviam aplicativos em lote em um mainframe IBM. Como só podiam compilar/executar uma vez por dia (e obter as impressões no dia seguinte), eles trabalhavam em 6 a 8 projetos ao mesmo tempo e não se preocupavam com o fato de que esses projetos poderiam levar anos para serem concluídos. Depois de duas semanas nisso, eu estava pronto para enlouquecer e passei a trabalhar em um supermini que, pelo menos, tinha um sistema operacional em tempo real. Eu podia escrever código, compilá-lo e executá-lo ao mesmo tempo. A única desvantagem era que, no início, tínhamos sete pessoas compartilhando um terminal. As sugestões de que cada programador tivesse um terminal foram ridicularizadas no início. Ser produtivo em um tempo tão limitado era realmente difícil.

Depois de alguns anos, passei a trabalhar em PCs (que estavam sendo lançados) e ter meu próprio “computador” era maravilhoso. Trabalhar em Pascal e assembly ainda não era rápido, mas pelo menos eu tinha meu próprio espaço.

Então, adquiri o Turbo Pascal e minha vida mudou para sempre. Eu podia escrever, compilar e depurar aplicativos praticamente de forma instantânea e minha necessidade de velocidade nunca mais voltou a existir. Mesmo com o hardware de baixa qualidade comparado aos dias de hoje, nunca encontrei outro ambiente tão rápido até começar a usar o PHP este ano (que, obviamente, não tem compilação).

Mais tarde, quando comecei a codificar em C para Mac, começamos com um compilador/linker de C horrível que levava 20 minutos para funcionar. Quando o Think-C foi lançado, foi quase um momento Turbo novamente. Por fim, ele começou a ficar cada vez mais lento e mudamos para o Metrowerks Codewarrior, que era rápido, mas os aplicativos estavam ficando tão grandes que, às vezes, ainda levavam de 30 a 60 segundos para serem criados.

Quando mudei para o Java em 1998, a compilação e a vinculação ainda demoravam bastante até que os IDEs (e a JVM) começassem a acompanhar o hardware. Ainda assim, nada era tão instantâneo quanto o Turbo, apesar de o hardware ser 100 vezes mais rápido.

Eu também sou um fanático por velocidade. Na minha opinião, tudo em um PC deve acontecer instantaneamente. Ou, pelo menos, o mais próximo do instantâneo que as leis da física permitirem. Simplesmente fazer tudo mais rápidoSe todas as outras coisas forem iguais, o senhor conseguirá fazer mais coisas. Não estou sozinho nisso; Fred Brooks fez uma observação semelhante há muito tempo no livro The Mythical Man-Month (O Mítico Homem-Mês):

Ainda não há muitas evidências disponíveis sobre a real utilidade dessas ferramentas aparentemente poderosas. Há um reconhecimento generalizado de que a depuração é a parte mais difícil e lenta da programação de sistemas, e o retorno lento é a ruína da depuração. Portanto, a lógica da programação interativa parece inexorável.

Além disso, ouvimos bons testemunhos de muitos que criaram pequenos sistemas ou partes de sistemas dessa forma. Os únicos números que vi sobre os efeitos na programação de grandes sistemas foram relatados por John Harr, da Bell Labs. [..] Os dados de Harr sugerem que um recurso interativo pelo menos dobra a produtividade na programação de sistemas.

Nunca subestime o poder do pressionar o botão turbo do software. O que está impedindo o senhor de ir o mais rápido possível? Como usuário? Como desenvolvedor de software?