[Torna
Indietro]
Tnx to "michipu" per questa perla
Il sistema piu' rapido
e sicuro per distinguere un Vero programmatore dal resto del mondo e'
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
puo' 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 e' 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 contabilita' in C
- Il Vero Programmatore crea simulatori di reti neuronali in C
- Il Vero Programmatore starnutisce in C
- Il Vero Programmatore fa TUTTO in C
Se per caso il C non
fosse sufficiente il Vero Programmatore lavorera' in assembler, se neppure
questo fosse sufficiente allora il lavoro non e' fattibile, ma la cosa
e' impossibile, un Vero Programmatore in C ed assembler puo' 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 utilizza l'area di memoria di un codice già
eseguito e che non servirà più come area di memoria per
i dati, ottimizzando in questo modo lo spazio a disposizione.
- 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 puo' 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? NO!, 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 avventure,
modificare Rogue e mandarsi il tutto via UUCP.
MS-DOS? Gia' meglio, critico 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 il comando:
CL pippo.c -k -iC:\gnu\c\all -q -w -e -r +t -y +cvb +f -g +g +p =l /f
/a /s
Comunque il Vero Programmatore
ha una sola nostalgia: il sistema IBM OS/370. Questo era infatti il
SO che qualunque Vero Programmatore vorrebbe vedere 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 gia' piu' 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 del- l'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 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, 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! Poco masicuro!
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, altri
scrivono il programma direttamente in codice eseguibile, 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 e' 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è è 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.
Ecco 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.
- Durante un black out un Vero Programmatore generalmente sviene in
quanto vengono a mancare i vitali afflussi di energia provenienti dal
Pc che gli permettono di vivere.
L'HABITAT DEL VERO PROGRAMMATORE
Dal momento che un vero programmatore è, per l'azienda che lo
usa, generalmente molto costoso, vediamo come fare 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 piu' o meno cronologico, su ogni superficie
piatta disponibile intorno.
- Sei 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 megli 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 progetto, 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 puo' 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.
- Il Vero Programmatore non mette mai commenti perchè a suo parere
il codice è autodocumentante. Questo vale anche per i dump esadecimali
di codice assembly.
- 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.
- Ai funerali di un collega, il Vero Programmatore commenta: "Peccato...
la sua routine di sort O(logN) stava quasi per funzionare"
- Le Vere Programmatrici esistono in ragione di 1 per ogni 256 Veri
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.
- Il Vero Programmatore conta in base due.
ERRATA CORRIGE
- QUALE hard disk? mangianastri e ferriti!
- QUALI nastri? Cassetti di schede perforate! Solo i ricchi avevano
i nastri!
- QUALI tastiere e display esadecimali? File di interruttori e LED in
binario.
- l Vero Programmatore non usa commenti: se è stato difficile
da scrivere, deve essere difficile da leggere. Ma se è un VERO
PROGRAMMATORE lo legge ugualmente con facilità.
- Il Vero Programmatore usa il C, e QUINDI usa anche Unix e i Preprocessori.
Unix, almeno nelle prime versioni, è il vero sistema operativo
contemporaneo, l'unico che consente ancora di azzerare un intero file
system con un comando di sette 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.
POSTILLE
- Il Vero Programmatore edita direttamente il file Postscript di un
documento, se deve modificarlo.
- Il Vero Programmatore conosce sempre almeno 16 cifre di pi greco,
di cui conosce anche la rappresentazione IEEE in esadecimale, e (se
anche fisico) tutte le cifre di C (è definito con 9 cifre), in
modo da non aver bisogno di noiosi include files.
- Il Vero Programmatore e la programmazione ad oggetti: se costretto
a simili pratiche, il Vero Programmatore PRIMA scrive il programma,
e POI, quando funziona, ne fa un'analisi ad oggetti. Per nessuna ragione
comunque modificherà il codice già scritto per conformarlo
all'analisi.
Comunqe inserirà nel programma un numero sufficente di variabili
globali usate da TUTTE le classi, in modo da renderne impossibile la
manutenzione da un mangiatore di Quiche (vedi praragrafo sulla sicurezza
dei programmi).
- Il Vero Programmatore chiama le variabili con nomi autoespicativi
di massimo 5 lettere (es. CVfrZ). Solo mangiatori di Quiche usano nomi
tipo "Massimo_Numero_Di_Dipendenti" per una variabile. Se
un Vero Programmatore usa un nome simile, probabilmente la variabile
indica la velocità terminale di uno ione in una nube molecolare
(il codice è stato riciclato efficentemente da un programma di
contabilità).
Tnx
to "michipu" per questa perla
[Torna Indietro]