Quanto um programador da “Velha-guarda” pode assustar?

5 mar 2013
assembly_POR

Recentemente, Eugene Kaspersky escreveu em seu blog um post sobre o chamado grande retorno dos programadores de vírus “old-school”. Sou velho o suficiente para lembrar desses caras e do seu trabalho brilhante. Não falo necessariamente dos criadores de malware, mas sim dos programadores, codificadores e mestres do Assembler. Eles são como os Jedis e o Sith do Antigo Império, a quem todos os heróis da saga Skywalker consideravam muito mais poderosos e hábeis com os sabres de luz (não é brincadeira, pergunte ao Yoda). E eu pensei… Caramba… Provavelmente, sobraram umas três pessoas que testemunharam o verdadeiro poder desses caras (eu, Kaspersky e Bill Gates). Sério, é muito difícil entender do que um hacker da velha-guarda é capaz, e eu decidi mostrar sobre o que Eugene estava falando para que você possa decidir por si mesmo se aquela era uma notícia assustadora.

Um treino puxado para calculadoras burras

Em 1992, os computadores eram basicamente calculadoras inteligentes com telas grandes (isto não é uma brincadeira, crianças). Mas havia vários grupos de entusiastas que ficavam felizes em enfrentar os desafios de software: alguns programadores conseguiram criar códigos que usavam cada bite de memória, todos os processadores e registradores de função, todos os comandos do sistema operacional e, o que é mais importante, 100% do poder de hardware – tudo espremido até a última gota e com resultados verificados. Tenho que salientar que, para realizar essas tarefas, era preciso ser criativo demais, beber muito café (ou fumar um monte de erva, vamos ser honestos) e ter um nível de QI absurdo. O movimento em si começou por volta de 1988, junto com a primeira versão mais ou menos difundida do MS-DOS. Ele ainda não tinha um nome oficial, mas, de acordo com as leis da evolução, mais cedo ou mais tarde eles teriam que competir entre si. E foi assim que a Assembly nasceu em 1992.

school_POR

O Future Crew vem de volta do futuro

Um grupo de programadores escandinavos chamado Future Crew (Tripulação do Futuro), junto com seus amigos dos grupos de programação Complex e Amiga, organizou um evento que ficou conhecido como The Assembly, em 1992, a fim de compartilhar os resultados do seu trabalho em linguagem Assembler e competir pelo título de Melhor Programador do Ano. Havia várias disciplinas, mas as duas mais interessantes são demos de plataforma (PC, Amiga, C64) e PC de 64 K. A primeira tinha o objetivo de demonstrar as mais elegantes soluções de codificação/melhores capacidades do hardware, com código minimalista e de ótima qualidade. O segundo era delicado, já que os codificadores estavam limitados a 64 KB, portanto, seus programas compilados (o que significa – arquivo(s) read2work) não poderiam ter mais do que 64 KB –, assim, essa nomeação acabou por ser um concurso de elegância em codificação.

Uma demonstração de codificação é basicamente uma série de eventos programados para demonstrar as capacidades de hardware e/ou soluções top de software para uma tarefa específica como, por exemplo, cálculos complexos de física.”

Em 1992, o Future Crew venceu a competição com sua demo “Unreal”. Veja o vídeo (lembre-se de que estamos falando de 1992 e ainda não existia o Windows. Essa demonstração foi chamada de “Unreal” porque ninguém (!) havia feito nada parecido antes):

Eles foram os primeiros a apresentarem um modelo de trabalho em ambiente 3D, camadas de gráficos, física complexa, cálculos de iluminação etc. E todo o código de compilação tinha cerca de um megabyte (incluindo música! E deixe-me salientar que não havia compressões mp3 ainda). A única maneira de alcançar tal resultado foi a masterização Assembler, que, na minha opinião, é a mais complexa das linguagens de programação de todos os tempos. Só para você ter uma ideia do que é Assembler, aqui está o que o pessoal do Future Crew me disse anos atrás:

“Aprender a codificar demos é um processo longo e muito difícil. Leva anos para aprender a codificar demos muito bem. Uma boa maneira de começar é com uma linguagem de alto nível como Pascal ou C e, em seguida, começar a fazer testes com Assembler. É preciso tempo e muitos experimentos para melhorar, e não há atalhos. A principal coisa é tentar entender o que você faz, em seguida, tentar mudar o programa para ver o que você consegue e acumular essa sabedoria sobre qual é a melhor maneira de fazer as coisas. Aprender a codificar bem requer muita paciência, muito entusiasmo e muito tempo. Não é fácil”.

Basicamente, aqueles que estavam envolvidos na competição acabaram se tornando a melhor fonte de inspiração para todos os desenvolvedores de software. Não estou dizendo que suas ideias foram roubadas. Todos estavam só… adotando sua visão criativa. A maioria dos produtos que temos hoje – TODOS os jogos, gráficos do Adobe e produtos de vídeo, meteo, GPS, Google Earth, entre outros –, todos esses programas multimilionários foram inspirados pela Assembly em algum momento (a propósito, até hoje, sessões de filmagem e fotos são estritamente proibidas dentro da sala do evento, e os infratores são banidos para sempre).

1993, o ano da “Second Reality” e do eclipse

A Assembly acabou por ser um sucesso tão grande que no ano seguinte o número de atendentes e de demonstrações apresentadas duplicou (a tendência foi bastante constante, uma vez que desde 1999 a Assembly acontece na maior área de futebol americano em Helsínquia, na Finlândia, que acomoda aproximadamente 5 mil participantes de todo o mundo).

Em 1993, o Future Crew apresentou algo… Fantástico! Algo que se tornou o padrão de qualidade para todos os concursos futuros e que mudou o mundo da programação para sempre – a demo “Second Reality”:

É essencial compreender que essa demo foi criada ANTES de a Intel apresentar seus processadores Pentium (a Intel anunciou o lançamento em 22 de março e os primeiros PCs equipados com o Pentium foram enviados comercializados somente em 1994, e a Assembly ocorre geralmente no verão, julho/agosto. Isso significa que o Future Crew fez essa demonstração pelo menos seis meses antes da comercialização dos primeiros Pentium). Ou seja, todos os gráficos e sons fantásticos estavam disponíveis nas CPUs x486 com blasters de som primitivas e SEM placas gráficas. A demo afastou o júri e a comunidade de codificação, mostrando que os resultados poderiam ser alcançados com o trabalho Assembler de nível profissional e com abordagem minimalista (o código compilado da “Second Reality” tinha cerca de 1,5 megabytes). Esse ano fez o Future Crew mundialmente famoso.

Este é um vídeo de “Por trás das câmeras” do Future Crew, de quando eles estavam trabalhando na “Second Reality”:

Em 1994, a demo “Versos” (do grupo EMC) ganhou o primeiro lugar

Basicamente, eles mostraram ao mundo que cálculos realistas para fazer gráficos de água podem ser feitos e que criar qualquer forma de objetos em 3D com o limite de velocidade de um Pentium é muito fácil:

E este vencedor de 64 KB, “Airframe”, do grupo Prime, é a mãe e o pai de todos os simuladores espaciais e de aviação 3D:

Só para você ter uma ideia da rapidez com que o código evoluiu, aqui está uma lista de todos os vencedores de 1995-2012.

Vencedor da Assembly 1995: “Estrelas” pelo grupo NoooN

Vencedor da Assembly 1996: “Machines of Madness” pelo grupo Dubius

Vencedor da Assembly 1997: “Boost” pelo grupo Doomsday

Vencedor da Assembly 1998: “Gateways” pelo grupo Trauma

A propósito, este é o ancestral dos efeitos visuais de “World of Warcraft”. Foi quando o visual 3D de MMORPG foi criado.

 Em 1999, a tecnologia 3DFX mudou os gráficos para sempre. E a demo “MatureFunk”, do grupo Virhe, fez todo mundo pirar: 

A Assembly revista

Em 2000, as regras mudaram um pouco. Em vez de competir em três categorias – Amiga, PC e C64 –, eles começaram a competir nas categorias Demonstração combinada, Demonstração old school e Limite introdutório de 64 KB. A competição 64 K se tornou obsoleta em 2010. Mas, ao final deste post, você verá alguns exemplos realmente fantásticos sobre o que um programador profissional de Assembler pode colocar dentro de 64 kilobites.

Esta é a lista dos vencedores na categoria Demonstração Combinada, que é a mais brilhante em termos de maestria em Assembler:

O primeiro prêmio de 2000 foi concedido a “Spot”, do grupo Exceed

Preste atenção aos efeitos de luz… Eles são incríveis! Lembre-se de que isso foi feito com tecnologias de 13 anos atrás!

Vencedor do Assembly 2001: “Lapsuus”, do grupo Maturefurk

Vencedor do Assembly 2002: “Liquid… Wen?“, pelo grupo Haujobb

Eu tenho que destacar o fato de que todos os gráficos, incluindo rostos e personagens em todas as demos da Assembly são feitas apenas usando o código. Não são arquivos de imagem nesta demo. Não, senhor! 🙂

Vencedor do Assembly 2003: “Legomania“, pelo grupo Doomsday. Diga olá a todos os consoles de game 3D. 🙂 E, tenho certeza de que foi aí que a visão para o novo Nintendo Wii nasceu: 

O primeiro lugar do Assembly 2004 foi para “Obsoleet“, do grupo Unreal Voodoo

O primeiro prêmio do Assembly 2005 foi para “Iconoclast“, do grupo ASD:

Em 2006, a demo “Starstuck” do grupo de codificação The Black Lotus surpreendeu a comunidade novamente:

O primeiro lugar do Assembly 2007 foi para “LifeForce“, do grupo ASD. E este, mas uma vez, foi um trabalho fantástico de Assembly:

2008 foi o ano do “Within Epsilon“, do Pyrotech:

O vencedor de 2009 é um dos meus favoritos: “Frameranger“, dos grupos Fairlight, CNCD & Orange:

Em 2010, “Happiness is right around the bend“, do grupo ASD, mostrou um tanque fanástico: 🙂

Vencedor do Assembly 2011: “Spin“, do ASD:

2012 foi fenomenal “Spacecut“, por Carillon & Cyberiad CNCD

Os melhores exemplos de limite de 64 kilobites

Só para você ter uma ideia do que um programador profissional pode fazer dentro do limite de 64 kilobites, assista ao melhor de 2005: “Che Guevara”, de Fairlight

Repito: isto tem apenas 64 kilobites de código Assembler. Nenhum bite a mais.

Mas, três anos depois, em 2008, o mesmo grupo demonstrou um imenso progresso em tecnologia e conseguiu encaixar dentro de 64 KB uma demonstração como o “Quarto do Pânico”, ganhando o primeiro lugar nessa categoria:

Mas a melhor demonstração de 64 K já apresentada foi “X marks the spot”, por processo de portal em 2010 – vencedor do primeiro lugar na categoria de Assembly em 64 K.

E agora… Deixe-me chamar a sua atenção… Todas essas demos, especialmente limitadas a 64 KB, mostram os resultados que um programador talentoso da velha-guarda pode entregar quando ele coloca a sua mente trabalhando nisso, mas, e o mais importante, é quando ele é um Mestre do Assembler – algo não muito comum hoje em dia, quando a maioria dos produtos é criada com Visual, até então chamada de programação de “alto nível”, como Visual C e Object C.

Imaginem por um segundo que um programador como esse ou um grupo como o Future Crew decida desviar toda a criatividade em 3D, músicas, física e se livrar de todo esse entusiasmo para focar em apenas um objetivo: criar um pequeno código que rouba seus dados financeiros ou ajuda a recalibrar um reator nuclear. Você acha que eles conseguiriam? Qual seria o tamanho desse código se 64 kilobites é mais do que suficiente? Será que eles encontrariam uma maneira de quebrar o Windows ou sistemas integrados de segurança da Apple? Eles são mobile? Eles são flexíveis? Será que eles têm o dinheiro para tornar esse cenário realidade, uma vez que eles realizam um evento gratuito para 5 mil participantes há 20 anos?

Eu não quero te dar a resposta. Você deve decidir por si mesmo. Mas, quando ouço alguém dizer: “Meu PC não requer proteção”, eu não posso deixar de lembrar da “Second Reality” e começar a rezar.

Graças a Deus, os caras do Future Crew estão muito ocupados agora. Se você é o melhor no ramo de codificação de demos, por que não torná-lo o seu negócio, certo? Da próxima vez que você executar um teste 3DMark 2011 em seu PC, pense no “Unreal”, na “Second Reality” e no Future Crew. Este último como equipe não divulgou nada depois do “Scream Tracker 3”, em dezembro de 1994. Embora o grupo nunca tenha sido oficialmente dissolvido, seus membros se separaram na segunda metade da década de 1990. Empresas como a Futuremark (3DMark), Remedy (Rally Morte, Max Payne, Alan Wake), Bugbear Entertainment (FlatOut, Glimmerati, Rally Trophy), Bitboys (uma empresa de hardware de gráficos) e Recoil Games (Rochard) começaram no todo ou em parte por membros do Future Crew.

Quero agradecer a todos eles, que mudaram o mundo para sempre e nos mostraram que tudo é possível se você se dedicar. Inclusive o Kaspersky Internet Security.

Obrigado por sua inspiração, pessoal! E lá no fundo, eu espero que nenhum programador que fez parte da Assembly jamais use suas habilidades para fins malignos.