{FONT 9}{COLOR 5} Amiga Dead{FONT 1}{COLOR 1} Nel mio precedente articolo "Pensieri di un coder nel Regno delle Tenebre" ho esposto alcune delle mie teorie sul coding in risposta a quelle di Manta che propugnano l'uso di librerie e in generale di tecniche di programmazione system friendly. La conclusione che io ho opposto alle idee di Manta è che, ai fini della produzione di demo, bisogna sviluppare su una piattaforma che permetta al coder di esprimere la proprie capacità. Quindi, in un certo senso ho posto sullo stesso piano le differenti architetture lasciando libera scelta al coder in base alla sue preferenze. Ora intendo sviluppare ulteriormente le mie teorie sostendendo tesi più radicali e in parte in contraddizione con la suddetta conclusione. Prima di farlo, però, voglio spiegare brevemente perché ho deciso di scrivere due articoli separati. Innanzitutto l'ho fatto perché un unico articolo sarebbe stato troppo lungo. Ma c'è un'altra ragione più importante. Come ho appena detto le tesi del presente articolo sono piuttosto radicali e temo che ben pochi dei miei quattro lettori le condividano, mentre spero di suscitare qualche consenso con le tesi dell'articolo precedente. Pertanto separandole, ho inteso rendere evidente al lettore che le tesi del primo articolo stanno in piedi anche senza le altre. In questo modo chi non concorderà con le tesi che esporrò ora, non rifiuterà necessariamente tutto il mio pensiero in blocco e se quanto ho detto nell'altro articolo lo convince continuerà a convincerlo anche dopo aver letto questo. Tra l'altro come vi accorgerete proseguendo nella lettura, mentre le argomentazioni che ho usato nel primo articolo sono ispirate da riflessioni e analisi razionali, quelle di questo articolo hanno un carattere maggiormente emotivo e conseguentemente più soggettivo. Naturalmente per comprendere pienamente quello che intendo dire in questo articolo è necessario leggere prima l'altro. Ribadisco comunque che sia le tesi di questo che dell'altro articolo riguardano la produzione di demo e non di altri tipi di programmi. Ho comprato il mio primo Amiga nel 1987. All'epoca l'Amiga era talmente tanto più avanzato da ridicolizzare qualsiasi altro calcolatore acquistable con meno di dieci milioni. Per le persone che si interessavano di computer (pochissime rispetto ad oggi ma molto più competenti) fu un evento sconvolgente, una rivoluzione copernicana. La caratteristica che colpiva maggiormente era la potenza dell'hardware, in particolare per quanto riguardava grafica e sonoro (l'OS 1.x pur avendo già molte delle caratteristiche che tanto apprezziamo, non era il massimo della stabilità; il salto di qualità c'è stato a partire dalla versione 2.04). La mia anima (allora non ancora oscura) si riempì del desiderio di programmare quella immane potenza, di sfruttarla totalmente per placare la mia sete di fantasia. Risultò subito evidente che l'unico modo per sfruttare al meglio l'hardware era la programmazione a basso livello. La graphics library era lenta e macchinosa. Inoltre, come scoprii subito, la programmazione diretta dell'hardware Amiga ti poneva di fronte a problemi originali e interessanti che passando attraverso l'OS sarebbero stati risolti da qualche libreria. La programmazione diretta era più divertente e forniva risultati migliori (per quanto riguarda grafica e animazione). Scelsi dunque di programmare solo in questo modo. Tale scelta, inizialmente dettata solo dalle considerazioni precedenti, pose dei limiti molto netti alle risorse che potevo usare per risolvere i problemi: tutto l'hardware di Amiga era a mia disposizione, ma solo quello. Tutte le istruzioni elaborate dalla CPU e dai chip custom dovevo scriverle personalmente. Questo principio mi apparve subito molto bello e onorevole. Facendo demo volevo mostrare le mie capacità di programmatore, dunque non dovevo accettare di usare alcun aiuto da altri programmatori. Ancora oggi ritengo che questo sia lo spirito da seguire per programmare demo. Un coder scrive del software quindi se è bravo non ha bisogno che altri lo scrivano per lui. Utilizzare del software scritto da altri (si tratti di una libreria di sistema o di una routine scritta da altri coder) è una implicita ammissione della propria incapacità di risolvere tutti i problemi da solo. Se si accoglie il principio di usare anche routine scritte da altri piano piano si finisce con l'evitare di risolvere i problemi con la propria testa. Allora fare demo diventa semplicemente mettere in sequenza una serie di effetti scritti da altri. Può farlo anche un grafico basta che gli si spiega veramente un minimo di asm. In quest'ottica per me usare le funzioni della RTG library, usare routine PD o rippare codice è esattamente la stessa cosa. Sono d'accordo con Manta quando dice che non si impara a programmare bene l'OS in una settimana, ma è altrettanto vero che usare delle funzioni di libreria è comunque più facile che programmare direttamente l'hardware. Le librerie sono fatte proprio per aiutare i programmatori ma se un coder ha talento non ha bisogno di aiuto. Non è onorevole usare la RTG library per fare demo e non è neanche divertente perché è troppo facile. E lo stesso è usare un linguaggio diverso dall'asm perché in quel caso è il compilatore che scrive parte del software. Mi rendo conto che questa idea è molto radicale ma questo per me è essere un coder. Capisco bene che se tutti facessero così, molti bellissimi demo non sarebbero stati realizzati. Ma per me la cosa più importante non è ottenere risultati ad ogni costo, ma affrontare i problemi e risolverli grazie alle proprie capacità non grazie a quelle degli altri. Confesso comunque (e questo è il primo dei motivi per cui mi ritengo un pessimo coder) la mia incapacità di mettere in pratica fedelmente queste idee: in tutti i miei demo ho usato routine PD per il play dei moduli audio (sebbene abbia sempre customizzato le routine aumentandone l'efficienza). Purtroppo ho informazioni minime sul formato dei moduli e non so nulla di come si realizzano gli effetti audio. Inoltre non ho abbastanza tempo per farmi anche il player da solo. Ma queste non sono giustificazioni, considererò questa sempre una macchia per il mio onore e il rimorso susciterà in me per sempre incubi che popoleranno l'immensa e oscura notte che è la mia esistenza. Per evitare che gli incubi proliferino io evito di usare routine c2p scritte da altri. Il prezzo che pago è che le mie routine 3d sono molto lente, ma questo è uno stimolo a migliorare e un problema con cui è interessante cimentarsi. Io programmerò sempre demo in questo modo. Questo è il modo giusto di farlo, questo è il solo modo che dà onore al coder. Lasciate il C e la RTG a chi non è abbastanza forte da risolvere i suoi problemi da solo, non importa se poi fa demo più belle delle vostre (e becca i premi ai party), non sono importanti solo i risultati ma anche il modo in cui li si ottiene. E ciò che voi otterrete sarà pura espressione del vostro talento, non dell'altrui. Purtroppo in futuro la programmazione diretta dell'hardware sarà resa impossibile. I sistemi operativi moderni non la permettono. In molti (cito il mio amico Nikdom per tutti) si illudono che "gli smanettoni troveranno sempre il modo di violare i limiti del sistema operativo", ma come fa giustamente rilevare Manta nei suoi articoli l'Amiga OS era bypassabile per scelta progettuale. Non credo che in futuro ci sarà ancora questa posibilità. Allora ci si dovrà ridurre a fare demo con l'OS ? Forse in molti lo faranno, ma non io. Ho iniziato ha fare demo con l'Amiga perché l'Amiga era qualcosa di innovativo e entusiasmante. L'Amiga è morta. Non si può chiamare Amiga un qualsiasi ammasso di componenti elettronici solo perché ha il logo stampato sopra. L'Amiga è un 680x0 con un chipset Commodore e l'OS che conosciamo. Tutto ciò che è venuto dopo e che verrà in futuro, PowerPC, RTG e il "nuovo fantastico Amiga" sognato da Nikdom è qualcosa di diverso. Qualcuno dirà che lo spirito e la filosofia di Amiga rimangono gli stessi. Io sono scettico in proposito, ma il punto non è questo. Dal punto di vista del programmatore non è più Amiga, è un'altra cosa, l'hardware è totalmente diverso e il software ha solo vaghe somiglianze. Ma la cosa peggiore è che quello che cercano di rifilarci come Amiga è tutt'altro che entusiasmante. Vi sembra che questi sistemi PowerPC + scheda grafica RTG (che sono basate su comunissimi chipset VGA) siano belli o innovativi? A me sembra piuttosto, come dice anche Rocketeer, che siano "accrocchi che stanno insieme con lo scotch". Diciamo la verità: il progetto PowerPC ha fallito. Con esso Motorola, Apple e IBM volevano creare una CPU che fosse tanto più potente del Pentium da convincere la gente a cambiare sistema. Non ci sono riusciti. Il PowerPC è un po' meglio del Pentium stando ai benchmark, ma in pratica non ci sono cose che il PowerPC fa che non si possano rifare anche su architettura Intel. Quando nacque, l'Amiga non si limitava a fare meglio le cose che facevano Mac e PC. L'Amiga (con 68K e chipset) faceva cosa che gli altri erano anni luce dal fare. L'Amiga ha inventato nuove applicazioni e ne ha portato sulle scrivanie di tutti altre prime riservate a workstation grafiche. Quella era l'Amiga, un architettura innovativa e entusiasmante. Le nuove macchine non lo sono. Non mi abbasserò mai a programmarci demo sopra. Magari in futuro le userò, ci programmerò anche sopra, ma non certo demo. Le demo si fanno per divertirsi, per dar sfogo alle proprie capacità di programmatore e alla propria creatività di artista. Bisogna usare una piattaforma che sia degna di uno scopo così nobile, una piattaforma che sia essa stessa il prodotto di menti creative e fantasiose, che abbia rappresentato una tappa importante nella storia dei calcolatori, come il C64, il Mac, l'Archimedes o l'Amiga. Non mettetevi a programmare demo su una macchina solo perché è l'ultima novità o perché la usano tutti. Fatelo solo su una macchina che vi entusiasma perché è innvativa e migliore di tutto il resto. E se nell'immediato futuro non ci sono macchine del genere, allora continuate a fare demo con Amiga, col 68K e il chipset C=, in accesso diretto all'hardware. Io ormai sono diventato troppo vecchio e oscuro e stanco, per le demo. Non aspetterò "nuove fantasctiche macchine", caro Nikdom. Non programmerò mai demo se non su Amiga. {FONT 13}{COLOR 5}The Dark Coder