|
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 perdere 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 ÿ
|