continua (next page) Il Capobanda!!! main index

Some notes about computer programming...
Musica suggerita durante la visione di queste pagine: Chopin, Valzer op.18.

Gran parte dei mie potentissimi software sono caduti nell'oblio, in attesa di essere completati alla versione 1.00. Un genio non può non essere un perfezionista, non può accontentarsi di lasciare senza fiato chi guarda una sua opera: deve togliergli anche il fiato per i prossimi anni!!!

Non c'è bisogno di spiegarne i motivi: sarebbe pretendere che un genio abbia idee solo dopo aver completato un software senza bug.

Ma una mente superiore ha a dir poco del problematico:

  1. frulla idee di continuo, ventiquattr'ore su ventiquattro. Non è una battuta: ci si sveglia con una nuova lampante idea, da implementare al più presto, tanto presto che si può sacrificare il paper-planning. Va a cena? Ecco una grandissima idea. Esce da casa? Rimugina un'idea e gliene vengono di nuove. E non chiediamoci quante idee vengono al bagno...
  2. sa sempre come migliorare i software altrui. Grezzi? Lenti? Pomposi? Ridicoli? Esagerati? Spreconi? Bacati? Eccomi qua, son pronto ad accettare la sfida che pure non mi avete posto.
  3. fa di necessità virtù (cioè: di necessità vizio). Sta cominciando un software. Ha bisogno di una libreria. Mette mano ad una nuova, potente libreria di funzioni. Diverse parti uguali, è noioso fare il taglia e incolla: scrive un interprete per delle macro. Cioè: comincia a scriverlo, e neanche ad un decimo del lavoro si rende conto che l'editor che usa fa schifo, per cui progetta e comincia a programmare un nuovo potente editor. Ma ci vuole un'interfaccia grafica degna... ed il circolo vizioso continua...
  4. comincia con l'imitare, e già un minuto dopo crea. Un minuto secondo, ovviamente. Se prova o anche solo viene a conoscenza di qualcosa di nuovo, non resiste: deve imitarlo. Anzi, costruirlo meglio.

Chi di voi non ha mai cominciato scrivendo un videogioco, alzi la mano. Ed un portentoso wordprocessor? Ed un mirabolante software di archiviazione? Ed un interprete (o compilatore, o preprocessore) di un nuovo linguaggio (dei nuovi linguaggi) di programmazione? Ed un intero sistema a finestre? Ed un terrificante software di crittografia? Ed un maestoso software di progettazione tridimensionale di arredamento di interni? Ed un kernel di sistema operativo a 8 bit? Ed a 16? Ed a 32?

Io stesso, in persona, da solo, ho fatto tutte queste cose, ma nessuna di queste ha mai superato lo stadio "beta". Se dovessi citare anche quelle che raggiunsero almeno lo stadio "alpha" la lista centuplicherebbe.

Insomma: can che abbaia, non dorme. Infatti non dormivo. E neppure abbaiavo. Scrivevo un cumulo immane di linee di codice. Per la mia tesi di laurea, aggiungere sei chilo-linee di codice C++ fu una vera bazzecola (infatti il problema fu farle funzionare tutte).

La mia maledizione è stata quella di tutti i programmatori (in erba e non): il salvataggio del lavoro fatto. Salvavi e ti ritrovavi con un pugno di mosche in mano perché per qualche altro motivo (disk crash, cancellazioni accidentali, backup illeggibili, etc) non riuscivi a recuperare il lavoro.

Non salvavi spessissimo, e la sorte ti puniva. Qualche esempio?

Lo Zx Spectrum aveva il connettore di alimentazione che, col passare del tempo, era diventato morbidissimo e particolarmente sensibile al movimento. Bastava soffiare da mezzo metro di distanza, e il connettore in gomma ultra-morbida per un attimo non faceva passare l'alimentazione. Ovvero, in termini Spectrum, un colossale reset. E col QL, quasi lo stesso problema (non per nulla era un Sinclair).

Con i PC-compatibili bastava che andasse via la luce. In tanti anni non è mai successo tanto spesso quanto nel periodo in cui ho lavorato di più. Pareva che alla centrale elettrica avvenissero i guasti solo quando non salvavo il lavoro ogni due minuti.

Sui PC che ho avuto da quattordici anni a questa parte, il tasto F2 si è arrotondato, a furia di premerlo ("ammacca F2 per salvare") per mettere al sicuro le preziose ore di lavoro.

E poi, i supporti di salvataggio?

Le cassette dello Zx Spectrum erano decenti, ma l'aleatorietà del nastro faceva sì che il salvataggio di un file poteva tranquillamente andare a cancellare quel centimetro di nastro iniziale o finale di un altro file. Voto: sei più - per il misero budget dell'epoca, non era poco.

A differenza di questa pagina di lagne nata in un momento di rabbia nei confronti di ben altra periferica, in quest'altra pagina parlo in termini più realistici (ossia meno severi) del registratore a cassette. Pure il ferocissimo giudizio sul connettore di alimentazione dei computer Sinclair, espresso poche righe fa, andrebbe rivisto (altrimenti non si capirebbe come avrei fatto a tirare avanti per anni con un problema del genere). Ma non mi va di snaturare la goliardia similfantozziana di questa pagina...!

Le cartucce del microdrive del Sinclair QL, da 110k circa: era impossibile non perdere qualcosa. Anche con backup doppi e tripli - sì, avevo tre copie di backup e un giorno risultarono irrimediabilmente rovinate tutte e tre. Voto: tre meno, con ardua china di risalita verso il tre pieno.

I flopponi da 5.25" da 720k del Sinclair QL: una vera delizia, peccato che l'interfaccia floppy si fuse il secondo giorno (e non si potè mai più ripararla o sostituirla). Voto: otto più, stando a quella prima mirabile giornata.

I floppetti da 5.25" da 360k del PC: mi hanno tradito rare volte (ma quando mi hanno tradito, lo hanno fatto con discreta cattiveria). Voto: sette.

I floppetti da 5.25" da 720k del PC - avevo cioè riciclato il drive da 80 tracce per 9 settori del QL, e formattavo a 720k i dischi da 360k, con risultati molto utili all'epoca. Voto: tra sette e mezzo ed otto meno meno; dopotutto il defunto controller del QL era un siluro a confronto.

I floppetti da 720k e 1440k del PC: traditori fin dagli inizi. Bastardi infami. I primi giorni avrei assegnato loro come minimo un bel sei, ma col passare del tempo (già dal 1990) la qualità era in caduta libera. Dischetti di marca preformattati, che dovevo riformattare per evidenziare i loro bravi 9, 18, o... 350k di bad-sectors. Voto: da tre meno a due e mezzo, con innegabile possibilità di scendere a due più.



Qui sotto riciclo parte di un altro messaggio che cominciai a scrivere per non più spedire...

Nel 1984 cominciai col Basic dello Zx Spectrum. Ovviamente, nel vedere la colossale differenza tra il mio primissimo software di corsa automobilistica a confronto col leggendario Manic Miner, volli passare all'assembler.

Per colmo della sfortuna passò un altro anno prima di mettere le mani su un assemblatore degno delle mie più grandi aspirazioni (il CHAMP, chi lo ricorda?).

I miei migliori moduli libreria software: diversi effetti grafici (per una demo che non venne mai scritta).

I miei software migliori: un wordprocessor in Beta Basic 3, un software per disegni in b/n.

Il mio più ardito progetto (riuscito, peraltro): un programma di un gioco di società che come periferica di input non usava la tastiera ma... l'audio!!! La grafica era uno schifo, ma riconosceva davvero i rumori.

Nel 1985 mi prestarono un Sinclair QL espanso a 512k, e dall'assembler Z80 passai a quello 68000, ma non ebbi tempo di avere grandi soddisfazioni. Scrissi solo una miriade di funzioni in estensione al SuperBasic. Nonché un inizio di "Spectrum emulator" (avevo perfino copiato A MANO il font dello Zx). La carriera fu breve: di tanto in tanto i Microdrive dirottavano nell'oblio i miei migliori lavori. Talora di notte sogno ancora di recuperare quei files. Inutile dire che, durante quei sogni, mi dico io stesso "no, sto sognando, è semplicemente impossibile".

Passai finalmente nel 1987 ad un PC con 512k. Il GWBasic era ridicolo; ottenni discreti successi con il dBase III+, e perfino una pubblicazione (!!!), la mia prima ed unica pubblicazione software su una rivista.

Era su un numero di Elettronica Flash durante la seconda metà del 1987 o l'inizio del 1988: con la "spalla" dell'amico Enzo, pubblicai un programma di gestione log per radioamatori. Per averlo, inviare il dischetto 5.25" e i francobolli, ed eccovelo in sorgente - non ricordo più quanti kappa di codice scrissi, credo intorno ai 180k.

Dopo aver scritto le mie prime routine in un selvaggio assembler 8086, fui assunto dalla MegaDitta di Roma.

Lì ho lavorato in assembler 8051 (e familiari); ancora nel 199X avevo accesso a quella roba. I miei migliori lavori furono in C, ma in qualche occasione utilizzai (pagavano: perché scandalizzarsi) ancora qualche dialetto di Basic.

Il mio lavoro più potente di tutti i tempi è stato al... no, i dettagli li racconto in questa pagina qui.

Gli operatori sui carrelli davano la loro disponibilità al computer centrale (tramite terminalini collegati via radio con un concentratore locale in rete con l'host), e quest'ultimo dava ordini. E in soprappiù (finché pagavano, io lavoravo: e pagavano sempre!) la stampa termica delle etichette.

Risultato: aiutai er Paolino a scrivere il software sui terminalini (in linguaggio PL/M, una sorta di assembler con un po' di istruzioni a più alto livello), scrissi da solo il software del concentratore (diverse migliaia di linee in C) che interrogava i terminalini e l'host e convertiva e trasmetteva i pacchetti in entrambe le direzioni.

La stampa delle etichette pure dipendeva dall'host. Scrissi ex novo un driver RS232 in assembler, ottimizzato al brucio, perché al software di emulazione terminale (tedescone ferroso e coriaceo) non piaceva essere interrotto per più di qualche nanosecondo.

Poi scrissi un driver di by-pass per emulare una stampante proprio sotto il naso del suddetto emulatore di terminale che ovviamente pretendeva di avere a che fare solo con vere stampanti, ma lo illusi comunque. Decomprimevo le sequenze, generavo i flussi di stampa, ricomprimevo e trasmettevo (sulla seriale) alla stampante col minor carico di lavoro.

Quelli del magazzino vedevano questo ragazzetto poco più che ventenne alle prese con dei mostri. Ricordo una figuraccia che feci fare a quelli dell'altra società di software, dimostrando con un banale diagramma tempo/operazioni che la grana era loro, e non toccava a me risolverla.

Scoprii anche un clamorosissimo bug del sistema operativo dell'host locale, uno di quelli più infami perché casuale e sporadico (un errore che conteneva la parola "DURCH"; immagino una divisione per zero) quando riuscii a documentarlo, uno dei capoccia cercò di urlare "noooo!" a squarciagola ma senza alzare la voce...


Google
 
Web www.alfonsomartone.itb.it

Monte Stella

send e-mail - continua (next page)