Linuxtrent: OT: il vero programmatore

  • From: fred <fred@xxxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxxxxxx
  • Date: Thu, 10 May 2001 17:07:47 +0200

Sei un vero programmatore? Scoprilo leggendo questo documento!!



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


Un pinguino al giorno leva il bug di torno

My personal homepage    Lavarone homepage:              Linuxtrent
http://continue.to/fred         http://www.lavarone.com=20
http://linuxtrent.grinta.net/



-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts:

  • » Linuxtrent: OT: il vero programmatore