|
Il vero programmatore
Tornando indietro ai
vecchi e gloriosi giorni dell'informatica primordiale era
relativamente facile distinguere tra veri uomini e ragazzini
(nella letteratura classica [1] la distinzione è tra "veri
uomini" e "mangia-quiche").
Durante quei tempi i Veri Uomini erano gli unici che si
intendevano di computer, gli altri (i ragazzini o
"mangiatori di quiche") erano quelli che di computer non se
ne intendevano... I Veri Uomini dicevano cose come "DO 10
I=1,10" o "ABEND" (ovviamente parlando in lettere maiuscole,
mi sembra ovvio), mentre il resto della gente diceva
semplicemente che i computer erano cose troppo complicate
per loro... (sempre il lavoro [1] dice appunto che non
esistono cose troppo complicate per il vero uomo...). Ma,
come in tutte le cose, i tempi cambiano, adesso viviamo in
tempi in cui anche le vecchiette hanno dei computer dentro i
loro forni a microonde, in cui qualunque Vero Uomo può
essere battuto da un ragazzino di 12 anni in qualunque
videogioco, in cui chiunque può comperare, usare e capire un
computer. Il Vero Programmatore rischia di intraprendere la
via dell'estinzione, sopraffatto da universitari che basano
la loro vita su Mouse ed Icone... E' perciò necessario
stabilire una netta distinzione tra Il Vero Programmatore ed
un universitario giocatore di Pac-Man... Se questa
distinzione sarà chiara questi giovani inesperti potranno
avere un modello guida, un padre spirituale a cui ispirarsi.
Inoltre sarà possibile spiegare ai datori di lavoro perché
non è ne necessario ne giusto sostituire dei Veri
Programmatori con dei giocatori di Pac Man, anche se il
risparmio sugli stipendi sarebbe considerevole...
Linguaggi Il sistema più rapido
e sicuro per distinguere un Vero programmatore dal resto del mondo è
considerare il linguaggio che usa: il Vero Programmatore programmava in
FORTRAN, mentre ora programma in C. I
mangiatori di Quiche programmano in Pascal. Da questo si deduce che
sicuramente Niklaus Wirth era un mangiatore di Quiche e NON un Vero
Programmatore. Ad un Vero Programmatore non servono tutte le
strutture ed i meccanismi del pascal, un Vero Programmatore può
essere felice con un perforatore di schede o un terminale a 1200 baud,
un C a standard K&R (ANSI... a che serve, il K&R è fin troppo chiaro..),
ed una birra... A proposito, Kerningan e Ritchie sicuramente erano
dei Veri Uomini... probabilmente anche dei veri programmatori...
- Il Vero Programmatore processa liste in C
- Il Vero Programmatore processa numeri in C
- Il Vero Programmatore manipola stringhe in C
- Il Vero Programmatore elabora programmi di IA in C
- Il Vero Programmatore fa contabilità in C
- Il Vero Programmatore fa TUTTO in C
Se per caso il C non fosse sufficiente il Vero
Programmatore lavorerà in assembler, se neppure questo
fosse sufficiente allora il lavoro non è fattibile, ma
la cosa è impossibile, un Vero Programmatore in C ed
assembler può fare TUTTO, per definizione.
Programmazione Strutturata
Gli accademici negli ultimi anni hanno stabilito, dall'alto delle loro
cattedre, che un programma è più facilmente leggibile se il
programmatore utilizza particolari tecniche, strutture e costrutti.
Ovviamente essi non sono d'accordo su quali questi costrutti e queste
tecniche precisamente siano, e perciò le loro teorie sono discordanti ed
erratiche. In questo modo solo alcuni mangia-Quiche si lasciano
convincere dai loro assiomi. Un tipico lavoro
del mondo reale (e non un lavoro teorico da università) è di prendere un
sorgente di 100.000 o 200.000 linee e farlo andare il doppio più veloce.
In questo caso qualunque Vero Programmatore vi potrà dire che la
programmazione strutturata non serve a nulla, quello che in realtà serve
è del talento.... Alcune rapide considerazioni
del Vero Programmatore sulla programmazione strutturata:
- Il Vero Programmatore non ha paura di usare GOTO
- Il Vero Programmatore può scrivere un ciclo DO lungo 5
pagine senza fare confusione.
- Il Vero Programmatore usa i costrutti CASE basati su
calcoli aritmetici, essi rendono un programma più divertente.
- Il Vero Programmatore scrive del codice
automodificante, soprattutto se questo può salvare 20 nanosecondi
all'interno di un ciclo.
- Il Vero Programmatore non ha bisogno di commenti, il
codice è già autoesplicante a sufficienza.
Dopo aver parlato di programmazione
strutturata si è anche parlato molto di strutture di dati. Tipi di dati
astratti, stringhe, liste e chi più ne ha più ne metta...
Wirth (il mangiatore di Quiche menzionato poco sopra) ha scritto un
intero libro [2] tentando di dimostrare che si può scrivere un intero
programma basandosi solo sulle strutture di dati. Come ogni Vero
Programmatore sa invece l'unica struttura che serve VERAMENTE è l'array,
dato che tutti gli altri tipi di dato altro non
sono che sottoinsieme limitati di questi... e dato che sono limitati
egli usa solo puntatori, soprattutto se questi rendono possibile bombare
irrimediabilmente il computer, se no dove
starebbe il divertimento????
Sistemi Operativi
Che SO usa un Vero Programmatore ??? Unix ??? Noooo, Unix è qualcosa di
simile a quello che si aspetta un vero Hacker, dato che qualunque Vero
Programmatore non trova alcun divertimento nel tentare di indovinare
come cavolo il comando PRINT viene chiamato questa settimana...
La gente non fa lavori seri su Unix, lo usano soprattutto per fare
adventure, modificare Rogue e mandarsi il tutto via UUCP.
MS-DOS ??? Già' meglio, crittico quel tanto che basta, facile da
modificare, se ce ne fosse necessità, facile da bombare, con tante cose
sconosciute e strane... Una cosa sicuramente
possiamo dire: Il Vero Programmatore non usa il mouse e le icone,
infatti il Vero Programmatore non capisce perché mai per
compilare un programma uno debba staccare le mani dalla tastiera e
cliccare su un menu quando è tanto semplice battere :
CL pippo.c -k -iC:\all -q -w -e -r
+t -y +cvb +f -g +g +p =l /f /a /s
In ogni caso il Vero Programmatore ha una
sola nostalgia: il sistema IBM OS/370. Questo era infatti il SO che
qualunque Vero Programmatore vorrebbe veder implementato su TUTTI i
computer del mondo. Un Vero Programmatore sa
che se vede comparire l'errore IJK3051 basta andare a vedere nel manuale
del JCL per capire cosa è successo... Un
Grande Programmatore poi saprà i codici a memoria, mentre un Grandissimo
Programmatore potrà trovare l'errore osservando 6 mega di dump senza
neppure usare un calcolatore esadecimale...
L'OS/370 è VERAMENTE un SO potente, infatti è possibile distruggere
giorni e giorni di lavoro con la semplice pressione di un tasto. Questo
incoraggia l'attenzione sul lavoro e forma una mentalità che servirà in
futuro, quando per distruggere giorni di lavoro saranno sufficienti tre
tasti...
Tool di programmazione
Quali tool di programmazione necessita realmente un Vero Programmatore
??? In effetti, come detto prima sono
sufficienti un terminale a 1200 baud o un lettore di schede perforate,
ma anche una semplice tastiera esadecimale sarebbe già' più che
sufficiente. Ma purtroppo adesso i computer
non hanno più tastiere esadecimali, come pure non hanno più quei
magnifici pannelli frontali pieni di lucine e tastini che facevano tanto
futuro... I primi veri programmatori sapevano
a memoria l'intero settore di boot dell'hard disk, e lo potevano
iscrivere a memoria ogniqualvolta che il loro programma lo rovinava...
La leggenda narra che Seymore Cray (creatore del Cray I) scrisse il SO
del primo CDC7600 usando il pannello frontale del computer la prima
volta che questo venne acceso. Senza bisogno di dirlo Seymore era
un VeroProgrammatore. Uno dei migliori Veri
Programmatori che abbia mai conosciuto è un sistemista della Texas
Instrument. Una volta rispose alla telefonata di un cliente a cui si era
bombato il sistema durante il salvataggio del lavoro. Il Vero
Programmatore rimise a posto tutto facendo scrivere le istruzioni per
terminare il lavoro di I/O sul pannello frontale (allora c'erano
ancora), riscrivendo i dati rovinati in esadecimale e facendosi dire i
risultati per telefono. La morale della storia
è che se un tastierino ed una stampante possono far comodo un Vero
Programmatore può arrangiarsi anche con solo un telefono...
Un altro tool fondamentale è un buon text editor. Molti dicono che il
migliore sia quello della Xerox di Palo Alto, ma, come già' detto, il
Vero Programmatore non parla al suo computer attraverso un mouse.
Altri preferiscono EMACS o VI, ma in effetti il concetto di WYSYWYG
(quello che vedi è quello che ottieni) si applica ai computer malissimo,
cosi' come si applica alle donne... Quello che
un vero programmatore vuole è in effetti qualcosa di più complesso, che
implementi la filosofia del "You asked for it, you got it !!!" (YAFIYGI,
avrai solo quello che chiedi). Insomma, l'editor perfetto è il TECO.
Alcuni hanno osservato che una linea di comandi per TECO assomiglia
molto di più al rumore sulle linee telefoniche che ad una linea di
comandi, ed in effetti uno dei giochi più divertenti da fare è quello di
scrivere il proprio nome sulla linea di comando e vedere cosa
succede...
Inoltre ogni piccolo errore avrà come risultato quello
di distruggere il vostro programma, o, peggio, di introdurre subdoli
errori che saranno in seguito difficilmente rintracciabili...
Per questa ragione un Vero Programmatore è molto riluttante a editare un
programma funzionante per dargli gli ultimi ritocchi. E sempre per
questa ragione un Vero Programmatore trova più semplice fare le
modifiche finali utilizzando un programma come lo Zap.
Alcuni Veri Programmatori utilizzano lo Zap stesso come editor, ma è
forse esagerato... Procedendo su questa linea
il risultato è che tra il codice sorgente e quello che in effetti c'è
scritto su disco c'è una discrepanza sempre maggiore, con il risultato
che il lavoro è sempre più sicuro, perché
solo un Vero Programmatore potrà lavorarci sopra in modo
proficuo, nessun mangiatore di Quiche potrà
fare manutenzione, minimizzando cosi' i rischi di malfunzionamenti
ulteriori del programma. Questa è SICUREZZA....
Altri tool importanti sono le documentazioni su cui il vero
programmatore basa gran parte del suo lavoro:
- Il Vero Programmatore non legge mai i manuali
introduttivi, bastano ed avanzano i Reference Manual.
- Il Vero Programmatore ha imparato il C sul K&R,
qualunque altro testo è inutile e deviante.
- Il Vero Programmatore se possibile legge i manuali in
lingua originale, anche se questo a volte pone dei problemi
di reperibilità.
- Il Vero Programmatore non colleziona libri di raccolte
di algoritmi. Questo perché e più lento cercare l'algoritmo in
3000 pagine di manuale che scriverlo di getto.
- Il Vero Programmatore non ha bisogno di manuali
sull'assembler, sono sufficienti i data sheet dei microprocessori
- Il Vero Programmatore non scrive MAI i manuali dei
programmi che fa, non ne ha il tempo materiale.
- Il Vero Programmatore generalmente ha da qualche parte
la documentazione completa del SO su cui lavora, pubblicata dalla casa
che ha fatto il SO, ma sa che SICURAMENTE nelle 3500 pagine che in media
compongono la documentazione non troverà quello che cerca. Se nelle
vicinanze del terminale sono presenti più di 5 manuali ci sono delle
forti probabilità che NON sia un Vero Programmatore.
Alcuni Tool NON usati da un Vero
Programmatore:
- Preprocessori di linguaggio.
- Traduttori di linguaggio
- Full Screen Debugger a livello sorgente. Il Vero
Programmatore è in grado di capire quello che dice il
Debug...
- Compilatori ottimizzanti. L'ottimizzazione del programma scritto
dal Vero Programmatore è già' il massimo, e perciò altre
modifiche non farebbero altro che peggiorare la situazione.
Il lavoro del vero programmatore
In generale il Vero Programmatore non fa lavori semplici come gestione
di indirizzari o programmi gestionali, ecco alcuni dei lavori più adatti
ai veri programmatori:
- Il Vero Programmatore scrive programmi per la
simulazione di una guerra termonucleare per l'esercito.
- Il Vero Programmatore lavora per lo spionaggio, per
decrittare le trasmissioni in cifra del nemico.
- E' in gran parte dovuto al lavoro dei Veri
Programmatori che gli americani sono arrivati sulla luna.
- Il Vero Programmatore programma i sistemi guida di
satelliti e missili.
- In ogni caso il Vero Programmatore lavora su progetti
molto importanti o molto ben pagati.
Il vero programmaore mentre gioca
Il generale il Vero Programmatore gioca nello stesso modo in cui lavora:
con i computer. In generale lo stesso lavoro è
un gioco, ed alla fine del mese il Vero Programmatore è sempre
abbastanza stupito di ricevere un compenso per quello che, a tutti gli
effetti, è per lui un divertimento.
Anche se non lo dirà mai a voce alta...
Occasionalmente il Vero Programmatore uscirà dall'ufficio per prendere
una boccata d'aria e farsi una birra, ecco alcuni sistemi per
riconoscere un Vero Programmatore fuori dal suo posto di lavoro:
- Ad un party i Veri Programmatori sono quelli che
stanno in angolo parlando di Sistemi Operativi, mentre di fianco a
loro passano ragazze che si fermano, ascoltano per alcuni secondi
e poi, dato che non capiscono una parola, se ne vanno. A volte un
vero Programmatore incontra una Vera Programmatrice... vi
risparmio per decenza il racconto di come si svolgono i
fatti....
- Ad una partita di football il Vero Programmatore è
quello che controlla gli schemi delle squadre basandosi su quelli
disegnati dal suo programma su di un foglio 11x14.
- Sulla spiaggia il Vero Programmatore è quello che
disegna flow chart sulla sabbia.
L'habitat del vero programmatore
Dal momento che un vero programmatore è, per l'azienda
che lo usa, generalmente molto costoso, vediamo come far
per farlo rendere al meglio sul posto di lavoro: Il Vero
Programmatore vive davanti ad uno o più monitor,
attorno, sopra, dietro e sotto questi terminali si
trovano generalmente le
seguenti cose:
- I listati di TUTTI i programmi a cui il Vero
Programmatore ha mai lavorato, accatastati, in ordine più o meno
cronologico, su ogni superficie piatta disponibile intorno.
- 6 o più tazze di caffè, quasi sempre fredde, ed alcune
con alcuni mozziconi di sigaretta galleggianti.
- Attaccato al muro c'è un ritratto di Spock con in mano l'
enterprise stampato con una vecchia stampante a margherita.
- Sparsi per terra ci sono pacchetti vuote di noccioline
e vaccate simili.
- In generale un Vero Programmatore può lavorare anche
30 o 40 ore di fila, anzi, di solito lavora molto megli sotto sforzo.
Fino a qualche tempo fa si concedeva dei pisolini mentre il
computer compilare il programma, ma purtroppo il
diffondersi di computer e periferiche veloci ha reso
questa pratica difficile.
In generale un Vero Programmatore se ha 5 settimane per
terminare un programma passa le prime 4 cincischiando
con aspetti secondari, ma interessanti, del programma,
mentre il grosso del lavoro viene fatto in una settimana
di lavoro ininterrotto. Questo
provoca sempre grosse preoccupazioni al principale che
teme sempre che il lavoro non sia mai pronto in tempo,
ed offre al Vero Programmatore una buona scusa per non
scrivere la documentazione.
Varie ed eventuali
- Il Vero Programmatore a volte può scordare il nome della moglie
o della ragazza, ma sa a memoria il codice ASCII.
- Il Vero Programmatore non si cura della tastiera, le
sue dita si adattano automaticamente a qualunque layout.
- Il Vero Programmatore sa che anche avendo 8 mega di
RAM questa non sarà mai abbastanza, e perciò tenta di fare
programmi piccoli.
- Il Vero Programmatore tiene sempre i backup da quando
ha dovuto riscrivere 327000 linee di assembler 68020.
- Il Vero Programmatore scrive programmi di pubblico
dominio, anche se di solito sono programmi talmente specialistici che
serviranno solo ad altre tre persone al mondo oltre a lui.
Altri corollari
- Il Vero Programmatore si trovava a suo agio con il
Fortran in quanto consentiva la programmazione a spaghetti senza
limitazioni.
- Va comunque detto che il Vero Programmatore è in grado
di scrivere programmi a spaghetti in qualsiasi linguaggio. In questo
senso, il C va a pennello per la sua capacità di scrivere
programmi Write-only che nessuno, a parte un altro Vero
Programmatore, sarà mai in grado di decodificare.[M]
- Il Vero Programmatore non mette mai commenti perché a
suo parere il codice è autodocumentante. Questo vale anche
per i dump esadecimali di codice assembler.
- Nel tempo libero, il Vero Programmatore va abbastanza
spesso in discoteca, ma si limita ad osservare il gioco di luci.
Ultimamente, viene stranamente attratto dal terminale del
controllore laser.
- Le Vere Programmatrici esistono in ragione di 1 per
ogni 256 Vero Programmatori, come tale la probabilità di
incontrarne una è estremamente bassa.
- Il Vero Programmatore ha scarsa considerazione degli
utenti, ritenuti ad un livello troppo basso. La probabilità di
trovare un utente competente è stimata inferiore a quella di trovare una
Vera Programmatrice.
ErrataCorrige
- l Vero Programmatore non usa commenti: se e` stato
difficile da scrivere, deve essere difficile da leggere. Ma
se e` un VERO PROGRAMMATORE lo legge ugualmente con
facilita`.
- Il Vero Programmatore usa il C, e QUINDI usa anche
Unix e i Preprocessori. Unix, almeno nelle prime versioni, è il
vero sistema operativo contemporaneo per il VP, è l'unico che
consente ancora di azzerare un intero file system con un comando
di 7 lettere blank compresi: rm -r /
- OS/370 era seriamente migliore, ma non bastava battere
un tasto per erdere tutto, era sufficiente sbagliare la posizione
di un blank.
REFERENZE Referenze
[1] Feirstein, B., "Real Men don't Eat Quiche", New York, Pocket Books,
1982. [2] Wirth, N., "Algorithms + Data
structures = Programs", Prentice Hall, 1976.
[0] sdcarl!lin, L'idea originale:"Real Programmers",
UUCP-net, Thu Oct 21 16:55:16 1982 ˙
|