Newsgroup: it.hobby.umorismo
Titolo: Il vero programmatore (repost)


 
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 e' 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=3D1,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 puo' essere battuto da un
ragazzino di 12 anni in qualunque videogioco, in cui chiunque puo'
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' percio' necessario
stabilire una netta distinzione tra Il Vero Programmatore ed un
universitario giocatore di Pac-Man... Se questa distinzione sara'
chiara questi giovani inesperti potranno avere un modello guida, un
padre spirituale a cui ispirarsi. Inoltre sara' possibile spiegare ai
datori di lavoro perche'  non e' 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 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 =E8 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 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 e' piu' 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 percio' 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 universita') e' di prendere un sorgente di
100.000 o 200.000 linee e farlo andare il doppio piu' veloce. In
questo caso qualunque Vero Programmatore vi potra' dire che la
programmazione strutturata non serve a nulla, quello che in realta'
serve e' del talento.... Alcune rapide considerazioni del Vero
Programmatore sulla programmazione strutturata: 
Il Vero Programmatore non ha paura di usare GOTO 
Il Vero Programmatore puo' 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 piu' divertente. 
Il Vero Programmatore scrive del codice automodificante, soprattutto
se  questo puo' salvare 20 nanosecondi all'interno di un ciclo. 
Il Vero Programmatore non ha bisogno di commenti, il codice e' ga'
autoesplicante a sufficienza. 
Dopo aver parlato di programmazione strutturata si e' anche parlato
molto di strutture di dati. Tipi di dati astratti, stringhe, liste e
chi piu' ne ha piu' 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 e' 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 e' 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 ???
Gia' meglio, crittico quel tanto che basta, facile da modificare, se
ce ne fosse necessita' , 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 perche' mai per compilare un programma uno debba  staccare le
mani dalla tastiera e cliccare su un menu quando e' tanto semplice
battere : 
  CL pippo.c -k -iC:\all -q -w -e -r +t -y +cvb +f -g +g +p =3Dl /f /a
/s 
In ogni caso il Vero Programmatore ha una sola nostalgia: il sistema
IBM OS/370 (sigh! n.m.p.). 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 e' successo... Un
Grande Programmatore poi sapra' i codici a memoria, mentre un
Grandissimo Programmatore potra' trovare l'errore osservando 6 mega di
dump senza neppure usare un calcolatore esadecimale...  L'OS/370 e'
VERAMENTE un SO potente, infatti e' possibile distruggere giorni e
giorni di lavoro con la semplice pressione di un tasto. Questo
incoraggia l'attenzione sul lavoro e forma una mentalita' che servira'
in futuro, quando per distruggere giorni di lavoro saranno ufficienti
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 piu' tastiere esadecimali, come pure non hanno piu'
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 e' 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 e' che se un tastierino ed una stampante possono far
comodo un Vero  Programmatore puo' arrangiarsi anche con solo un
telefono... Un altro tool fondamentale e' un buon text editor. Molti
dicono che il migliore sia quello della Xerox di Palo Alto, ma, come
gia' 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 e' quello che ottieni) si applica
ai computer malissimo, cosi' come si applica alle donne... Quello che
un vero programmatore vuole e' in effetti qualcosa di piu' complesso,
che implementi la filosofia del "You asked for it, you got it !!!"
(YAFIYGI, avrai solo quello che chiedi). Insomma, l'editor perfetto e'
il TECO. Alcuni hanno osservato che una linea di comandi per TECO
assomiglia molto di piu' al rumore sulle linee telefoniche che ad una
linea di comandi, ed in effetti uno dei giochi piu' divertenti da fare
e' quello di scrivere il proprio nome sulla linea di comando e vedere
cosa succede... Inoltre ogni piccolo errore avra' come risultato
quello di distruggere il vostro mma, o, peggio, di introdurre subdoli
errori che saranno in seguito difficilmente rintracciabili...  Per
questa ragione un Vero Programmatore e' molto riluttante a editare un
programma funzionante per dargli gli ultimi ritocchi. E sempre per
questa ragione un Vero Programmatore trova piu' semplice fare le
modifiche finali utilizzando un programma come lo Zap. Alcuni Veri
Programmatori utilizzano lo Zap stesso come editor, ma e' forse
esagerato... Procedendo su questa linea il risultato e' che tra il
codice sorgente e quello che in effetti c'e' scritto su disco c'e' una
discrepanza sempre maggiore, con il risultato che il lavoro e' sempre
piu' sicuro, perche' solo un Vero Programmatore potra' lavorarci sopra
in modo proficuo, nessun mangiatore di Quiche potra' fare
manutenzione, minimizzando cosi' 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 e' inutile e deviante. Il Vero
Programmatore se possibile legge i manuali in lingua originale, anche
se questo a volte pone dei problemi di reperibilita' . Il Vero
Programmatore non colleziona libri di raccolte di algoritmi.  Questo
perche' e piu' 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 trovera' quello che cerca. Se
nelle vicinanze del terminale sono presenti piu' di 5 manuali ci sono
delle forti probabilita' 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 e' in
grado di capire quello che dice il Debug... 
Compilatori ottimizzanti. L'ottimizzazione del programma scritto dal
Vero Programmatore e' gia'  il massimo, e percio' 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 piu'
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 lavora gioca. In
generale il Vero Programmatore gioca nello stesso modo in cui lavora:
con i computer. In generale lo stesso lavoro e' un gioco, ed alla fine
del mese il Vero Programmatore e' sempre abbastanza stupito di
ricevere un compenso per quello che, a tutti gli effetti, e' per lui
un divertimento. Anche se non lo dira' mai a voce alta...
Occasionalmente il Vero Programmatore uscira' 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 e' quello che controlla gli  schemi delle squadre
basandosi su quelli disegnati dal suo programma su  di un foglio
11x14. Sulla spiaggia il Vero Programmatore e' quello che disegna flow
chart  sulla sabbia. 
L'habitat del vero programmatore 
Dal momento che un vero programmatore e', 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 piu' 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. 6 o piu' tazze di caffe', quasi sempre fredde, ed alcune con
alcuni mozziconi  di sigaretta galleggianti. Attaccato al muro c'e' 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 puo'
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 compila 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 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 sara' mai abbastanza, e percio' 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 e' in grado di scrivere
programmi a spaghetti in qualsiasi linguaggio. In questo senso, il C
va a  pennello per la sua capacita' i scrivere programmi Write-only
che nessuno, a parte un altro Vero Programmatore, sara' mai in grado
di decodificare.[M] Il Vero Programmatore non mette mai commenti
perche' a suo parere il codice e' 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
probabilita' di incontrarne una e' estremamente bassa. Il Vero
Programmatore ha scarsa considerazione degli utenti, ritenuti ad  un
livello troppo basso. La probabilita' di trovare un utente competente
e' stimata inferiore a quella di trovare una Vera Programmatrice. 
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.
- Il 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, e' 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 (e' 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 modifichera' il codice gia' scritto per conformarlo
all'analisi. Comunqe inserira' 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
velocita' terminale di uno ione in una nube molecolare (il codice e'
stato riciclato efficentemente da un programma di contabilita').
- Il capitano Picard di Star Trek TNG e' un Vero Programmatore:
riprogramma Data usando un pezzo di ferro per cortocircuitarne il
circuito di input in binario. (Time's Arrow, part II, stardate
46001.3)
--
#615. Ho una moto talmente bassa che mi sembra di stare su un bidet... 
http://www.drzap.it
Oltre 39.700 battute e barzellette
Dr Zap (e-mail : v. sul sito)


|
| Il vero programmatore.
[MEGA CUTTONE]
    Il vero programmatore è quello che si è sempre chiesto che cazzo di
sistema di allocazione di memoria poteva imballarsi nel passaggio da 999 a
1000.
-- 
*..· ´¨¨))  -:¦:-
     ¸.·´ .·´¨¨))
   ((¸¸.·´  .·´   -:¦:- *R [ D / L ] + 1* -:¦:-
-:¦:-    ((¸¸.·´*        ICQ 275230217