SPECIALE FUN SOFTWAREIl mondo della programmazione è molto vario e comprende una moltitudine infinita di varianti di tipologie di software. Quella che andremo ad analizzare oggi è la componente un po’ più ludica della programmazione, quella che viene volgarmente definita "Fun Software"Programmi scherzosidi Matteo BaccanProvate a chiedere ad un vostro collega di indicarvi il primo programma che gli viene in mente. Ci sono ottime probabilità che vi dirà quello che usa maggiormente in ufficio o di cui ha appena letto la recensione.Se rifate la stessa domanda ad un bambino, probabilmente vi indicherà il nome di un videogioco.Crescere vuol dire, in alcuni casi, concentrarsi troppo sul proprio lavoro e perdere un po’ di quelle che sono le distrazioni della vita e, perché no, della programmazione.Com’è nato il primo gioco per computer? Forse da un programmatore annoiato che doveva assolutamente distrarsi. Come sono nati i primi virus? Forse per la stessa ragione.Vediamo di capire il perché esiste un universo parallelo di programmi "inutili" ai fini pratici, ma che, se ben osservati, nascondono una miriade di sfaccettature interessanti, sia dal punto di vista delle idee che li hanno generati, sia dal punto di vista della programmazione pura. Programmi che permettono di spaziare con la fantasia e provare soluzioni tecniche che non è possibile rischiare in un normale programma.Il "Fun Software"Questa tipologia di programmi raggruppa, per lo più, tutto il software scritto per diletto. Qualcuno definisce anche questi tipi di software "Inutility", pertanto programmi completamente inutili.Non mi dimenticherò mai quando, alcuni anni or sono, mi recai in edicola a comprare, alla cifra di 39.000 lire, un CD pieno di demo grafiche. Passai la notte intera a guardarle e riguardarle. I programmi presenti erano dei piccoli gioielli di programmazione, come la famosa demo dei Future Crew: Unreal.L’effetto che però fece nei miei colleghi fu totalmente diverso. La domanda più frequente che mi fecero fu: "Ma a cosa servono?".Perché occorre dare sempre un senso alle cose? Si trattava di programmi che, per l’epoca in cui erano stati scritti, erano delle vere perle di programmazione. Il livello raggiunto era abbastanza alto da poter affermare che nessuno dei miei colleghi sarebbe mai riuscito a programmare una qualcosa di simile.Sicuramente quelle demo facevano parte del "Fun Software". Non vi era nessuno scopo tangibile, se non quello di dimostrare che, un gruppo di ragazzi di 16 e 17 anni, era in grado di arrivare ad un livello qualitativo tale da essere paragonato a quello di un consunto programmatore professionista.Non di sole demo vive il programmatoreFun Software non vuol dire solo demo. Pensiamo ad esempio ai programmi di screen saver, nelle loro forme più disparate. Quale utilità hanno, se non quella di far riposare lo schermo, anche se il vero riposo sarebbe uno schermo spento? Probabilmente il primo inventore di screen saver non era altro che un programmatore di demo che, essendo stato colto durante la preparazione di una di esse, inventò la banale scusa della costruzione di uno screen saver.Altri esempi famosi di fun sono i programmi di simulazioni di Virus. Esistevano in passato una serie di virus molto ben riconoscibile, il cui effetto maggiore era quello di far scivolare le lettere dello schermo sull’ultima riga del video. Sempre in quel periodo circolava però anche la versione fun di quel virus. Un programma che faceva esattamente la stessa cosa, tranne che moltiplicarsi e creare danni.La prima volta che ci si imbatteva in questa "simulazione di virus", l’effetto era quello, quasi immediato, di voler spegnere il computer, ma di solito, alla seconda esecuzione, si capiva subito che si trattava di una simulazione.Altri esempi famosi di fun sono, ad esempio, tutti i programmi di auguri che ci si trova a scambiare via posta elettronica in concomitanza di feste o eventi particolari, come un compleanno o il Natale.Allo stesso modo, tutti i vari messaggi di posta elettronica che avvisano di non aprire messaggi con subject "April fool", per non veder cancellato in modo irrimediabile il proprio disco o non perdere in modo irreparabile la propria posta, non sono altro che fun software.Cosa c’è dietro a questi programmiIn effetti è lecito pensare che programmi del genere non portino a nessun beneficio diretto. E’ altresì vero che, chi sviluppa un buona inutility può avere la fortuna, come è capitato a molto demomaker, autori di programmi demo, di entrare a far parte o di creare dei veri e propri team di sviluppo di videogiochi, o programmi di grafica o di CAD. Esistono infatti alcune famose case produttrici di videogiochi che seguono con molto interesse lo sviluppo del mondo delle demo, ed arrivano a fare delle offerte, anche molto vantaggiose, ai programmatori più capaci.Sempre da questo mondo, ma soprattutto da quello dei musicisti informatici, è sempre più frequente vedere persone che intraprendono, con successo, l’attività di deejay.Alcuni programmi famosiDi programmi fun famosi ve ne sono parecchi. Allegati a questo articolo ne troverete tre dei più famosi: Sylvia, scmpoo16 e CRobotsSicuramente il più vecchio di questi, stiamo parlando del 1985, è Crobots. ha segnato una svolta nel modo di insegnare a programmare, ed ha iniziato la serie dei programmi Robot.CrobotsIl concetto di base di questo programma era molto semplice. Immaginate che esista una griglia di 60 righe per 25 colonne.All’interno di tale griglia avete a disposizione un piccolo cursore, il robot, che potete pilotare programmandone le traiettorie. A questo punto immaginate che in questa arena vi siano più robot, anch’essi programmati in modo da muoversi all’interno della griglia. Ora immaginate che ognuno abbia a disposizione un piccolo cannoncino in grado di sparare agli altri robot.A completare questo immaginate che sia un programmino C quello che anima i diversi robot. Questa è la filosofia di gioco dei Crobots, una simpatica simulazione sportiva programmabile da parte del giocatore che la deve utilizzare. Un’ottima palestra per chi deve iniziare a programmare in C e non lo conosce per nulla. Su questa falsariga si sono poi sviluppati, col passare degli anni, anche delle varianti di questo gioco. Una famosa variante è stata Probots, la versione PASCAL, la versione Tlc, TclRobots, e la versione C++, C++ robots, ma soprattutto Arobots, la versione ASM, particolarissima nel suo insieme, ma sicuramente la più evoluta per quanto riguarda la grafica e il modo di essere utilizzata.Un altro programma inutile, siamo ormai arrivati nel 1987, è Syilvia.Questo simpatico programmino era veramente fuori dal comune. Basandosi su una serie di regole e di algoritmi era in grado di simulare una conversazione.Si iniziava col chiedere al programma il nome e il cognome e si poteva finire a parlare di qualsiasi cosa, fino ad illudersi che, chi rispondeva, non fosse un computer, ma una persona vera.Il fine pratico di questo programma non c’era, ma sicuramente l’autore aveva creato qualcosa di nuovo, innovativo e fuori dal comune.Ultimo dei programmi allegati è scmpoo16. In questo caso il programma è veramente fun. Si tratta di una simpatica pecorella che corre all’impazzata per lo schermo, si appoggia sopra le finestre attive, si butta dai bordi di queste stesse finestre e, se trova altre pecorelle attive sullo schermo, inizia delle battaglie a suon di cornate. Anche in questo caso vi sono degli spunti di programmazione interessante. Prima di tutto il fatto che queste pecorelle, pur essendo delle finestre Windows, non sono quadrate, ma scontornate. Interessante è anche il fatto che possano interagire fra di loro. Dal punto di vista della programmazione non sono altro che due programmi, in due task diversi, che riescono a capire a che coordinate video sono posizionati e a calcolare un algoritmo di collisione in modo di simulare uno scontro.Questi sono solo alcuni dei programmi più famosi: in realtà ve ne sono molti altri, e molti altri ve ne saranno. Questi dovrebbero però darvi una buona indicazione di quello che fa parte di questo mondo e di come, la fantasia del programmatore fun, è molto orientata verso la ricerca che verso un fine pratico.ConclusioniFun Software in fondo è un modo interessante per circoscrivere tutti quelli che sono i lati divertenti e le frontiere della programmazione sperimentale. Creare un programma per la sola voglia di farlo o per il solo gusto di provare delle nuove soluzioni tecniche o semplicemente per dimostrare di essere capaci di fare una certa cosa, non porta a dei risultati tangibili nel breve periodo. Sicuramente, col passare del tempo, rende il suo autore, sempre più capace di districarsi in situazioni diverse e permette di distrarsi un po’ rispetto a quello che può essere il normale lavoro di routine.Bibliografia[2] Computer Viruses and False Authority Syndrome. http://www.kumite.com/myths[3] Tom Poindexter, l’autore di Crobots, http://www.nyx.net/~tpoindex/[4] C++ Robots. http://www.gamerz.net/~c++robots/Matteo Baccan è uno specialista di progettazione e sviluppo in C++, JAVA e Lotus Notes. È coautore di dBsee 4 e dBsee++, ed autore di dBsee400. Attualmente si occupa dello studio di tecniche avanzate di programmazione in ambito Internet/Intranet tramite Lotus Notes, presso ISA Italian Software Agency, e può essere contattato tramite e-mail all’indirizzo baccan@infomedia.it [1] Matteo Baccan, DEV 58, Introduzione ai virus
Post N° 1
SPECIALE FUN SOFTWAREIl mondo della programmazione è molto vario e comprende una moltitudine infinita di varianti di tipologie di software. Quella che andremo ad analizzare oggi è la componente un po’ più ludica della programmazione, quella che viene volgarmente definita "Fun Software"Programmi scherzosidi Matteo BaccanProvate a chiedere ad un vostro collega di indicarvi il primo programma che gli viene in mente. Ci sono ottime probabilità che vi dirà quello che usa maggiormente in ufficio o di cui ha appena letto la recensione.Se rifate la stessa domanda ad un bambino, probabilmente vi indicherà il nome di un videogioco.Crescere vuol dire, in alcuni casi, concentrarsi troppo sul proprio lavoro e perdere un po’ di quelle che sono le distrazioni della vita e, perché no, della programmazione.Com’è nato il primo gioco per computer? Forse da un programmatore annoiato che doveva assolutamente distrarsi. Come sono nati i primi virus? Forse per la stessa ragione.Vediamo di capire il perché esiste un universo parallelo di programmi "inutili" ai fini pratici, ma che, se ben osservati, nascondono una miriade di sfaccettature interessanti, sia dal punto di vista delle idee che li hanno generati, sia dal punto di vista della programmazione pura. Programmi che permettono di spaziare con la fantasia e provare soluzioni tecniche che non è possibile rischiare in un normale programma.Il "Fun Software"Questa tipologia di programmi raggruppa, per lo più, tutto il software scritto per diletto. Qualcuno definisce anche questi tipi di software "Inutility", pertanto programmi completamente inutili.Non mi dimenticherò mai quando, alcuni anni or sono, mi recai in edicola a comprare, alla cifra di 39.000 lire, un CD pieno di demo grafiche. Passai la notte intera a guardarle e riguardarle. I programmi presenti erano dei piccoli gioielli di programmazione, come la famosa demo dei Future Crew: Unreal.L’effetto che però fece nei miei colleghi fu totalmente diverso. La domanda più frequente che mi fecero fu: "Ma a cosa servono?".Perché occorre dare sempre un senso alle cose? Si trattava di programmi che, per l’epoca in cui erano stati scritti, erano delle vere perle di programmazione. Il livello raggiunto era abbastanza alto da poter affermare che nessuno dei miei colleghi sarebbe mai riuscito a programmare una qualcosa di simile.Sicuramente quelle demo facevano parte del "Fun Software". Non vi era nessuno scopo tangibile, se non quello di dimostrare che, un gruppo di ragazzi di 16 e 17 anni, era in grado di arrivare ad un livello qualitativo tale da essere paragonato a quello di un consunto programmatore professionista.Non di sole demo vive il programmatoreFun Software non vuol dire solo demo. Pensiamo ad esempio ai programmi di screen saver, nelle loro forme più disparate. Quale utilità hanno, se non quella di far riposare lo schermo, anche se il vero riposo sarebbe uno schermo spento? Probabilmente il primo inventore di screen saver non era altro che un programmatore di demo che, essendo stato colto durante la preparazione di una di esse, inventò la banale scusa della costruzione di uno screen saver.Altri esempi famosi di fun sono i programmi di simulazioni di Virus. Esistevano in passato una serie di virus molto ben riconoscibile, il cui effetto maggiore era quello di far scivolare le lettere dello schermo sull’ultima riga del video. Sempre in quel periodo circolava però anche la versione fun di quel virus. Un programma che faceva esattamente la stessa cosa, tranne che moltiplicarsi e creare danni.La prima volta che ci si imbatteva in questa "simulazione di virus", l’effetto era quello, quasi immediato, di voler spegnere il computer, ma di solito, alla seconda esecuzione, si capiva subito che si trattava di una simulazione.Altri esempi famosi di fun sono, ad esempio, tutti i programmi di auguri che ci si trova a scambiare via posta elettronica in concomitanza di feste o eventi particolari, come un compleanno o il Natale.Allo stesso modo, tutti i vari messaggi di posta elettronica che avvisano di non aprire messaggi con subject "April fool", per non veder cancellato in modo irrimediabile il proprio disco o non perdere in modo irreparabile la propria posta, non sono altro che fun software.Cosa c’è dietro a questi programmiIn effetti è lecito pensare che programmi del genere non portino a nessun beneficio diretto. E’ altresì vero che, chi sviluppa un buona inutility può avere la fortuna, come è capitato a molto demomaker, autori di programmi demo, di entrare a far parte o di creare dei veri e propri team di sviluppo di videogiochi, o programmi di grafica o di CAD. Esistono infatti alcune famose case produttrici di videogiochi che seguono con molto interesse lo sviluppo del mondo delle demo, ed arrivano a fare delle offerte, anche molto vantaggiose, ai programmatori più capaci.Sempre da questo mondo, ma soprattutto da quello dei musicisti informatici, è sempre più frequente vedere persone che intraprendono, con successo, l’attività di deejay.Alcuni programmi famosiDi programmi fun famosi ve ne sono parecchi. Allegati a questo articolo ne troverete tre dei più famosi: Sylvia, scmpoo16 e CRobotsSicuramente il più vecchio di questi, stiamo parlando del 1985, è Crobots. ha segnato una svolta nel modo di insegnare a programmare, ed ha iniziato la serie dei programmi Robot.CrobotsIl concetto di base di questo programma era molto semplice. Immaginate che esista una griglia di 60 righe per 25 colonne.All’interno di tale griglia avete a disposizione un piccolo cursore, il robot, che potete pilotare programmandone le traiettorie. A questo punto immaginate che in questa arena vi siano più robot, anch’essi programmati in modo da muoversi all’interno della griglia. Ora immaginate che ognuno abbia a disposizione un piccolo cannoncino in grado di sparare agli altri robot.A completare questo immaginate che sia un programmino C quello che anima i diversi robot. Questa è la filosofia di gioco dei Crobots, una simpatica simulazione sportiva programmabile da parte del giocatore che la deve utilizzare. Un’ottima palestra per chi deve iniziare a programmare in C e non lo conosce per nulla. Su questa falsariga si sono poi sviluppati, col passare degli anni, anche delle varianti di questo gioco. Una famosa variante è stata Probots, la versione PASCAL, la versione Tlc, TclRobots, e la versione C++, C++ robots, ma soprattutto Arobots, la versione ASM, particolarissima nel suo insieme, ma sicuramente la più evoluta per quanto riguarda la grafica e il modo di essere utilizzata.Un altro programma inutile, siamo ormai arrivati nel 1987, è Syilvia.Questo simpatico programmino era veramente fuori dal comune. Basandosi su una serie di regole e di algoritmi era in grado di simulare una conversazione.Si iniziava col chiedere al programma il nome e il cognome e si poteva finire a parlare di qualsiasi cosa, fino ad illudersi che, chi rispondeva, non fosse un computer, ma una persona vera.Il fine pratico di questo programma non c’era, ma sicuramente l’autore aveva creato qualcosa di nuovo, innovativo e fuori dal comune.Ultimo dei programmi allegati è scmpoo16. In questo caso il programma è veramente fun. Si tratta di una simpatica pecorella che corre all’impazzata per lo schermo, si appoggia sopra le finestre attive, si butta dai bordi di queste stesse finestre e, se trova altre pecorelle attive sullo schermo, inizia delle battaglie a suon di cornate. Anche in questo caso vi sono degli spunti di programmazione interessante. Prima di tutto il fatto che queste pecorelle, pur essendo delle finestre Windows, non sono quadrate, ma scontornate. Interessante è anche il fatto che possano interagire fra di loro. Dal punto di vista della programmazione non sono altro che due programmi, in due task diversi, che riescono a capire a che coordinate video sono posizionati e a calcolare un algoritmo di collisione in modo di simulare uno scontro.Questi sono solo alcuni dei programmi più famosi: in realtà ve ne sono molti altri, e molti altri ve ne saranno. Questi dovrebbero però darvi una buona indicazione di quello che fa parte di questo mondo e di come, la fantasia del programmatore fun, è molto orientata verso la ricerca che verso un fine pratico.ConclusioniFun Software in fondo è un modo interessante per circoscrivere tutti quelli che sono i lati divertenti e le frontiere della programmazione sperimentale. Creare un programma per la sola voglia di farlo o per il solo gusto di provare delle nuove soluzioni tecniche o semplicemente per dimostrare di essere capaci di fare una certa cosa, non porta a dei risultati tangibili nel breve periodo. Sicuramente, col passare del tempo, rende il suo autore, sempre più capace di districarsi in situazioni diverse e permette di distrarsi un po’ rispetto a quello che può essere il normale lavoro di routine.Bibliografia[2] Computer Viruses and False Authority Syndrome. http://www.kumite.com/myths[3] Tom Poindexter, l’autore di Crobots, http://www.nyx.net/~tpoindex/[4] C++ Robots. http://www.gamerz.net/~c++robots/Matteo Baccan è uno specialista di progettazione e sviluppo in C++, JAVA e Lotus Notes. È coautore di dBsee 4 e dBsee++, ed autore di dBsee400. Attualmente si occupa dello studio di tecniche avanzate di programmazione in ambito Internet/Intranet tramite Lotus Notes, presso ISA Italian Software Agency, e può essere contattato tramite e-mail all’indirizzo baccan@infomedia.it [1] Matteo Baccan, DEV 58, Introduzione ai virus