Sono pericolosi i vecchi programmatori?

Di recente Eugene Kaspersky ha pubblicato un post nel suo blog che parlava del Grande Ritorno degli Scrittori di Virus old school. Io sono sufficentemente vecchio da ricordarmi di queste

assembly_ITA

Di recente Eugene Kaspersky ha pubblicato un post nel suo blog che parlava del Grande Ritorno degli Scrittori di Virus old school. Io sono sufficentemente vecchio da ricordarmi di queste persone e del loro brillante lavoro – non mi riferisco solo ai creatori di malware, ma anche ai programmatori, agli sviluppatori di codici e agli esperti di assembler. Sono come gli Jedi della saga di Star War, eroi potenti con spade laser (sto scherzando, chiedete a Yoda). E stavo pensando… ci sono probabilmente 3 persone che sono testimoni del potere di queste persone (io, Eugene Kaspersky e Bill Gates). Dico sul serio, non ci sono molte persone che sanno di che cosa è capace un hacker old school. Ho dunque deciso di mostrarvi quello di cui parlava Eugene. In questo modo ognuno di voi potrà dare una risposta alla nostra domanda e giudicare se si tratta di una buona o di una cattiva notizia.

Un duro allenamento per calcolatori stupidi

Nel lontano 1992, i computer erano fondamentalmente dei calcolatori intelligenti con grandi schermi (e non sto scherzando, ragazzi!). Tuttavia c’erano diversi gruppi di persone a cui piacevano le sfide: alcuni programmatori riuscirono a creare dei codici che utilizzavano fino all’ultimo byte di memoria, ogni funzione del processatore, ogni comando del sistema operativo e – cosa ancora più importante – il 100% dell’hardware. Bisogna dire che per riuscire a fare ciò, si deve essere davvero creativi, bere un sacco di caffè (o fumare molta erba), e possedere un QI incredibile! Il movimento stesso nacque attorno al 1998 insieme alla prima versione di MS-DOS. Non aveva un nome ufficiale ma, prima o poi, in virtù della teoria dell’evoluzione, dovevano competere tra loro. E questo è il modo in cui, nel 1992, nacque The Assembly.

school_ITA

Future Crew e il suo Ritorno al Futuro

Nel 1992 un gruppo scandinavo di programmatori chiamato Future Crew organizzarono, insieme ad alcuni amici appartenenti ai programmatori di Complex e Amiga, un evento dal nome The Assembly con il fine di condividere i risultati delle loro ricerche sul linguaggio assembly e dare vita a una gara dove i partecipanti gareggiavano per il titolo di ‘Migliore Sviluppatore di Codici dell’Anno’. C’erano diverse discipline, ma le due più interessanti erano le demo di piattaforma (PC, Amiga, C64) e di PC 64k. La prima aveva il compito di dimostrare l’eleganza, le abilità e le migliori soluzioni in quanto a hardware, rispettando un codice minimalista. La seconda nascondeva un trucco: gli sviluppatori di codici avevano un limite: 64kb. I loro programmi non potevano superare i 64 kilobyte. Ecco perché questa nomination divenne una ‘gara di eleganza’.

Una code demo è basicamente serie di eventi programmati per dimostrare le prestazioni dell’hardware e/o soluzioni del software per un particolare compito, come calcoli di fisica complessi

Ritornando al 1992, il gruppo Future Crew vinse una gara con la demo dal titolo “Unreal”. Eccola qui! Non dimenticate però che siamo nel 1992 e che non c’era ancora Window. Questa demo si chiamava “Unreal” per una semplice ragione: prima d’allora nessuno (!) aveva fatto nulla del genere.

Inoltre, furono i primi a dimostrare un modello di lavoro in ambiente 3D, con strati di grafici, effetti di luce, ecc. Il totale del codice assemblato era di circa 1 megabyte (incluso musica! E lasciatemi sottolineare che non c’era la compressione mp3). L’unico moco per raggiungere tali risultati era il linguaggio assembly – secondo me – il linguaggio di programmazione più complesso mai esistito. Per darvi un’idea di quello che il programma assembler rappresenta, ecco quello che i ragazzi del gruppo Future Crew mi hanno raccontato alcuni anni fà:

Imparare a programmare demo è un processo molto molto difficile. Ci vogliono anni per imparare a programmare bene. Un buon modo è iniziare con un livello alto di Pascal o C, e poi incominciare a provare assembler. Ci vuole molto tempo e tanta pratica, non ci sono scorciatoie. La prima cosa da fare è cercare di capire cosa stai facendo, poi cercare di cambiare il programma per vedere come va e capire qual è il modo migliore per fare le cose e avanzare. Imparare a programmare richiede molta pazienza, entusiasmo e tanto tempo. Non è facile.

In generale coloro che parteciparono alla gara divennero la Grande Fonte di Ispirazione per tutti gli sviluppatori di software. Non sto dicendo che qualcuno stava rubando le loro idee; no, ognuno si affidava alla… propria visione creativa. La maggior parte dei prodotti che abbiamo oggi – tutti i giochi, i prodotti Adobe, meteo, GPS, Google Earth – furono inspirati in un certo senso da The Assembly – fotografie e video erano severamente vietati durante l’evento e i trasgressori puniti severamente.

1993, l’anno di “Second Reality”e Eclipse .

Assembly ebbe un grande successo e l’anno seguente il numero di partecipanti e di demo raddoppiò (divenne una moda e dal 1999 Assembly si inziò a tenere nello stadio di football di Helsinki dove possono entrare fino a 5000 persone)

Nel 1993 Future Crew presentò qualcosa di… fantastico, qualcosa che aumentò gli standard di qualità delle gare future e cambiò il mondo della programmazione per sempre. Si tratta di “Secondo Reality”:

E’ importante capire che questa dimostrazione fu creata PRIMA che Intel presentò il suo processore Pentium. Intel lo annunciò il 22 marzo e entrò in commercio nel 1994 – mentre Assembly normalmente aveva luogo d’estate, verso luglio-agosto. Ciò significa che Future Crew presentò la sua demo circa sei mesi prima della scesa in campo di Pentium. Questo dimostra che tutti questi grafici fantastici e suoni erano disponibilli solo su CPU x486 con schede audio Sound Blaster e senza scheda video. Questa demo conquistò la giuria e il mondo della programmazione. Mostrò come si possono ottenere grandi risultati con una buona conoscenza di assembler e un approccio minimalistico (codici assemblati di “Second Reality” raggiungevano 1.5 megabyte). Questo è l’anno in cui Future Crew divenne famoso in tutto il mondo.

Questo è il video di “Behind the scene” di Future crew, quando stavano lavorando su “Second Reality”:

Un altra vittoria del 1993 è la demo “Eclipe” del gruppo EMF. Questo codice è il numero 1 della categoria 64k:

Avete visto cosa si può fare con 64k e a assembler? Tutto questo includendo grafica, musica, effetti, transizioni, testi e menù scrolling.

Nel 1994, la demo “Verses” del groppo EMF vinse il primo premio.

Fondamentalmente mostrarono al mondo che le animazioni e il morphing di oggetti 3D all’interno del limite di velocità di Pentium è un gioco da ragazzi:

Il vincitore “Airframe” del gruppo Prime è la madre di tutte le moderne tecniche 3D e dei simulatori spaziali:

Per avere un’idea della velocità con cui i metodi di programmazioni si sono evoluti, ecco una lista di tutti i vincitori, dal 1995 al 2012:

Vincitore di “Assembly” 1995: “Stars” del gruppo Nooo

Vincitore di Assembly 1996: “Machines of Madness” del gruppo Dubius

Vincitore di Assembly 1997: “Boost” del gruppo Doomsday

Vincitore di Assembly  1998: “Gateways” del gruppo Trauma

Questo è l’antenato di World of Warcraft, ovvero quando nacque il 3D MMORPG.

Nel 1999 la tecnologia 3DFX cambiò per sempre la storia della grafica. La demo di MatureFunk chiamata “Virhe” riscosse un grande successo:

La revisione di Assembly

Nel 2000 le regole cambiarono un po’. Invece delle tre categorie – Amiga, PC e C64 – iniziarono a essere introdotte categorie come ‘Demo Combinate’, ‘Oldschool demo’ e ’64kb limit intro’. La categoria 64k divenne obsoleta nel 2010. Tuttavia alla fine di questo post vedrete quello che può fare uno sviluppatore, usando assembler, con 64 kilobyte.

Questa è la lista dei vincitori della categoria ‘Combined Demo’, la più difficile in termini di padronanza del linguaggio assembly:

Vincitore del primo premio di Assembly 2000: “Spot” del gruppo Exceed

Controllate gli effetti della luce… sono incredibilli e tenete presente che è una tecnologia di 13 anni fà !

Vincitore di Assembly 2001: “Lapsuus” del gruppo Maturefurk

Vincitore di Assembly 2002: “Liquid… Wen?” del gruppo Haujobb

Devo puntualizzare che tutte le grafiche, inclusoi il disegno della faccia e dei personaggi, in tutte le demo di Assembly sono disgnate SOLO usando la programmazione, non si tratta di file-immagine inclusi nella demo. No, signori! 🙂

Vincitore di Assembly 2003: “Legomania” del groppo Doomsday. Date il benvenuto alle console 3D 🙂 E sono sicuro che questo è il momento in cui nascque la Nintendo Wii.

Nell’anno 2004 il primo premio lo ha vinto “Obsoleet”, del gruppo Unreal Voodoo:

Nell’anno 2005 il primo premio lo ha vinto “Lconoclast”, del gruppo ASD:

Nel 2006 la demo “Starstuck”, del gruppo The Black Lotus, lasciò di nuovo tutti a bocca aperta per il livello di sofisticazione della grafica. Si alza il livello:

Vincitore di Assembly 2007: “LifeForce” del gruppo ASD. Un’altra opera maestra in termini di assembler:

Nell’anno 2008 il primo premio lo ha vinto “Within Epsilon”, del gruppo Pyrotech:

Nell’anno 2009 il primo premio lo ha vinto “Frameranger”(uno dei miei preferiti) dei gruppi Fairlight, CNCD & Orange:

Nell’anno 2010 il primo premio lo ha vinto “Happiness is right around the bend”, del gruppo ASD, un altro ottimo lavoro :

Il vincitore del 2011 è stato “Spin”, del gruppo ASD:

Nell’anno 2012 il primo premio lo ha vinto il fenomenale “Spacecut”, del gruppo Carillon & Cyberiad CNCD:

I migliori esempi della categoria ’64 kilobytes limit’

Per darvi un’idea di quello che può fare un programmatore professionista con 64kilobyte, eccolo la miglire demo del 2005, realizzata dal gruppo Fairlight:

Ripeto: 64km, nemmeno un byte in più.

Tre anni dopo, nel 2008, lo stesso gruppo dimostrò di aver fatto grandi progressi tecnologici e con 64k realizzò una demo come questa. “Panic room” è la vincintrice del primo premio del 2008 di questa categoria:

Tuttavia la migliore demo con 64k mai presentata prima è “X marks the spot”, del gruppo Portal Process, del 2010, vincitrice del primo premio di Assembly di questa categoria:

E ora, permettetemi di dirvi una cosa. Tutte queste demo, in particolare quelle realizzate con 64k, mostrano i risultati e il talento dei programmatori old school, ma – cosa ancora più importante – del loro dominio di assembly, un linguaggio che non è molto comune oggi giorno, dato che la maggior parte dei prodotti sono creati con linguaggi di programmazione così detti high-level, come Visual C e Object C.

Immaginate per un secondo che programmatori come questi, o un gruppo come Future Crew, decida abbandonare il lavoro creativo e l’entusiasmo per focalizzarsi su di un unico obiettivo: creare un codice che rubi i dati del tuo conto in banca o ricalibrare un Reattore Nucleare. Pensi che riescano nello loro impresa? Riusciranno a trovare un modo per ingannare il sistema di sicurezza di Windows o Apple? Avranno le risorse economiche necessarie per realizzare tutto?

Non vi darò la risposta. Dovete decidere voi stessi. Ma quando sento qualcuno che dice “Il mio PC non ha bisogno di protezione”, non posso fare a meno di pensare a “Second Reality” e iniziare a pregare.

Grazie a Dio i ragazzi del gruppo Future Crew sono davvero molto occupati  Se sei il migliore nel programmare demo, perché non fai in modo che diventi il tuo lavoro? La prossima volta che avvi un test 3DMark sul tuo PC pensa a “Unreal”, “Second Reality” e Future Crew. Future Crew come gruppo non realizzò più nulla dopo “Scream Tracker 3” (dicembre 1994). Sebbene non si sia mai sciolto ufficialmente, i suoi membri si sono divisi nella seconda metà negli anni Novanta. Aziende come Futuremark (3DMark), Remedy (Death Rally, Max Payne, Alan Wake), Bugbear Entertainment (FlatOut, Glimmerati, Rally Trophy), Bitboys (una azienda di graphics hardware) and Recoil Games (Rochard) hanno avuto tutte origine da un membro di Future Crew.

Voglio ringraziare tutti loro: hanno camabiato il mondo per sempre e ci hanno mostrato che tutto è possibile quando ci sono le capacità e l’impegno. Anche Kaspersky Internet Security.

Grazie per averci ispirato, ragazzi. E con tutto il mio cuore spero che nessun programmatore che abbia partecipato a Assembly usi o abbia usato le sue abilità per scopi criminali.

 

Consigli