Visualizzazione post con etichetta La sottile arte della programmazione. Mostra tutti i post
Visualizzazione post con etichetta La sottile arte della programmazione. Mostra tutti i post

martedì 16 settembre 2008

Estensioni fantasma

Cari lettori so bhe sarete infuriati con me per il lungo periodo di aggiornamento ma, durante questi mesi, non è successo nulla di rilevante da riportare sul blog e quindi, con sommo dispiacere, non vi ho potuto allietare con le mie disavventure....

Ovviamente ho passato l'estate a programmare tutto per un "lavoretto" che sulla carta doveva prendere non più di 2-3 settimane ma che in realtà mi ha preso esattamente tutta l'estate, passata di conseguenza in università.

Verso la fine di agosto ricominciano a sbucare le prime anime coraggiose (ad agosto c'è una desolazione pari a quella del deserto del gobi) tra cui due miei compagni intenti a prepare un esame di programmazione...i quali ogni tanto approfittavano della mia clausura in laboratorio per risolvere qualche piccolo problema.
Ora non c'erano grossi problemi se non che la programmazione andava fatta in ambiente linux quando questi due miei compagni aborrano quel sistema operativo con tutte le loro forze. Stanno compilando il codice quando sulla shell vedo:

studente@studente:~$ gcc esercizio.c -o prova.exe

e da questa riga di codice nasce tutta la storia

IO: Scusa ma perchè metti -o prova.exe?
LORO: e ma perchè così diamo un nome all'eseguibile
IO: Sì lo so ma perchè .exe?
LORO: ehhh ma scusa è un eseguibile
IO: Lo sapete che siete su linux vero?
LORO: e quindi?
IO: e quindi non ha senso metti solo -o prova

lì per lì non hanno risposto e sono tornati ai loro esperimenti io, nel frattempo, aspettavo la fine di una simulazione (stavo testando un algoritmo di tracciamento oggetti che grazie al codice interpretato di Matlab mi prendeva circa un'ora di attesa). Mentre attendo giro per il laboratorio e do un'occhiata ai miei compagni quando mi cade l'occhio sulla shell dove campeggia fieramente:


studente@studente:~$ gcc esercizio2.c -o prova2.exe

IO: Ma ci rifate con sto .exe?
LORO: ehh ma è un eseguibile quindi .exe
IO: no perchè su linux il .exe non ha senso di esistere...quando fai gcc qualcosa.c di default ottieni un file che si chiama a.out se tu gli dai pippo.exe questo è il nome del file da eseguire quindi in realtà generi un file eseguibile che si chiama pippo.exe.out dove pippo.exe è il nome e out è l'estensione NON sei su $sitemaoperativocostosissimo chiaro???
LORO: eh ma sugli appunti di $compagnodicorso c'era -o prova.exe
IO: andiamo bene 'e pensare che lui l'ha pure passato sto esame' comunque ricordatevi che su Linux .exe non ha senso infatti se dai ./pippo.exe ti da errore...... tutto chiaro?

ovviamente non è esattamente finita lì prima che il dilemma dell'estensione fosse risolto, per arrivare alla fine della storia, dovete iterare l'ultima scena un altro paio di volte.

Morale della favola: se su un sistema operativo fai una cosa e funziona non è detto che questo vada bene su tutti i sistemi operativi....

domenica 30 marzo 2008

Il laboratorio maledetto

Carissimi lettori mi scuso per questo prolungato silenzio ma, con le feste di mezzo, non ho assistito a nessuna scena degna di nota...quindi scavo un po' nel passato e riesumo qualche vecchio aneddoto....

Ero al primo semestre del primo anno della laurea triennale e tra gli esami c'è "Fondamenti di Informatica 1" (che poi basterebbe fondamenti di informatica dato che "Fondamenti di Informatica 2" che era già opzionale ora è stato cassato definitivamente) che prevedeva una bella sessione di laboratorio (C++ a manetta) con gli esercitatori che ti davano dei programmi da implementare mostrandoti poi la soluzione....quindi alla peggio copiavi la soluzione una volta mostrata oppure chimavi l'esercitatore che con compassione ti aiutava anche a fronte di domande assurde e insensate....

Dovete sapere che in corso con me a quell'epoca c'era un ragazzo che come ripeto sempre ogni volta che cade il discorso su di lui "è un ragazzo tanto bravo e tanto caro ma tanto molesto".
Per molesto intendo che ti chiama sul cellulare ad orari assurdi (tipo le 11 di sera) per farti domande del tipo: "Scusa il prof TaldeiTali ha spiegato il paragrafo 1.x?" (Risposta non lo il libro non l'ho comprato).
Oltre a questo aggiungete che ha una propensione per l'informatica pari a quella di un aborigeno del borneo (forse anche meno).
Aggiungete inoltre che il bastasu di turno gli ha dato pure il mio numero di celluare e quindi mi ha eletto a suo "Risolutore più che abile di problemi" chiamandomi per ogni sciocchezza immaginabile.

Ma torniamo al laboratorio: Il programma era una cosa demente del tipo implementa una funzione che fa qualcosa e chiamala dal main nel caso si verifichi un certo evento quindi risultava qualcosa di simile:

#include < iostream >
using namespace std;

void funz(){
cout<<"quale parte di NON DIGITARE § non ti è chiara?"<<"\n";
}

int main(){
char t;
while(1){
cout<<"Scrivi quello che vuoi ma non §"<<"\n"<<"per uscire scrivi 0"<<"\n";
cin>>t;
if(t=='§'){
funz();
break;
}
if(t=='0'){
break;
}
}
return 0;
}


ero lì che mi provavo il codice (che succede se gli do una stringa? e do a capo???) quando lui che è qualche pc davanti al mio si gira...panico...la discussione è stata breve ma interessante

US: Scusa puoi venire a vedere?
IO: 'Sgrunt'....ok...

arrivo lì e lui mi mostra il lavoro degli ultimi 20 minuti ben 10 righe di codice...una cosa indecifrabile....non ci ho capito una mazza definiva le funzioni a caso dentro le parentesi tonde di altre funzioni.....

US: Secondo te perchè non funziona?
IO: Grazie al cavolo non ha un main, le funzioni sono tutte a caso, usi variabili che non hai dichiarato e altre cose...
US: Tu come lo correggeresti???
IO: Così......ctrl+A Canc

Certe cose non hanno prezzo, per tutto il resto c'è GCC !!!!!!!!

lunedì 18 febbraio 2008

La sottile arte della programmazione

A volte mi chiedo se quest'arte sia compresa da tutti....ora non è che io sia un fenomeno a programmare però sta di fatto che tutti i programmi con cui mi sono confrontato fino ad oggi siano risultati funzionali e abbastanza sensati (poi vale sempre la regola che riguardando un codice stilato in passato si trovi sempre qualche miglioria da apporvi ottimizzando la complessità computazionale dell'algoritmo)....e continuo ad essere certo che per programmare sensatamente non serva tanto la conoscenza della sintassi quanto quell'estro che permette di trovare un algoritmo sensato al problema e la comprensione del senso di ogni comando e cosa questo comando implichi in quelli successivi.....per la sintassi c'è il man di linux (sì avete capito bene tutti voi o sucubi dei sistemi operativi proprietari....), vi serve sapere di tutto e di più sulla funzione funzionechesalvalechiappeinquestoalgoritmo ? Bene vi basta aprire una shell e digitare

man 3 funzionechevisalvalechiappeinquestoalgoritmo

e tutto vi sarà svelato a partire dalle librerie necessarie a tutte le varianti del comando stesso...anche perchè a dirla tutta non credo che sia sensato imparare la sintassi di tutte le funzioni esistenti....peccato che ci sia una schiera di biechi esseri che ritenga l'esatto opposto ossia sei un bravo programmatore se sai a memoria tutte le dispense che questi ti forniscono, non sia mai che ti facciano programmare per vedere che tu sia in grado di farlo....l'importante è che tu sappia tonnelate di regolette peraltro incluse nel sacro manuale di linux o alla peggio reperibili su wikipedia o Google.....

...ma non temete o miei fidati lettori....questa particolare specie di "programmatori" non è pericolosa in quanto, orgogliosa della propria conoscenza teorica, non si avvicina ad un pc nemmeno col pensiero (se non per giocare a solitario o controllare la posta) pertanto andate subito a recuperare il cellulare che avevate lanciato dalla finestra nel timore che esplodesse a causa di una programmazione insensata......

mv -rf /home/programmatori\ fasulli /dev/null

ciao a tutti