|
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 dicevano
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 è né necessario né
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, Kernighan 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 perché mai dovremmo usarli???? Un
Vero Programmatore al massimo utilizza i 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, criptico 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 riscrivere 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
Vero Programmatore. Uno dei migliori Veri Programmatori che abbia mai
conosciuto è un sistemista della Texas Instruments. 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 Xeros 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, così 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 così 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 al volo
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 la compongono NON si trovano le informazioni che a lui servono.
Per questo la documentazione viene generalmente restituita intonsa, a
meno che qualche mangia Quiche nel
frattempo non l'abbia presa per fotocopiarla
Il Vero Programmatore sa che in tutti i casi le informazioni che
cerchi sono SEMPRE o nel libro che hai appena prestato all'amico
oppure in quello che ha mangiato il cane
Da tutto questo si deduce che se una persona ha nelle vicinanze del
terminale 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 PROGRAMMATORE 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 vuoti di noccioline e vaccate
simili. In generale un Vero Programmatore può lavorare anche 30 o 40
ore di fila, anzi, di solito lavora molto meglio sotto sforzo. Fino a
qualche tempo fa si concedeva dei pisolini mentre il computer
compilava 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 3 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 |