Tuesday, January 23, 2007

RealProgrammer.IsBackAgain();

Ebbene signori, e' con estremo ritardo che il Vero Programmatore vi aggiorna sulle sue vicissitudini personali (delle quali non ve ne frega niente: piu' post! piu' post!).
Il Vero Programmatore ha lasciato la MegaDitta.
Il Vero Programmatore si e' fatto un po' di ferie.
Il Vero Programmatore si e' trovato un altro impiego (in un'ulteriore MegaDitta).
Il Vero Programmatore IS BACK IN ACTION!

Ps:
il Vero Programmatore ringrazia tutti coloro che hanno visitato il blog mentre non c'era. Il Vero Programmatore vi ama tutti.

10 Comments:

Anonymous Anonymous said...

e noi amiamo il VP

1:29 AM  
Anonymous greenkey said...

è possibile fare il debug del post di cui sopra e mettere un Watch alla variabile MegaDitta??

giusto per curiosità eh... se possibile...

no perchè anche io sono in una MegaDitta

8:08 AM  
Anonymous Anonymous said...

Per il VP
hip hip urrah

12:18 AM  
Anonymous Anonymous said...

Bentornato Vero Programmatore! Auguri con la nuova Megaditta..

Märçø

9:11 AM  
Anonymous Anonymous said...

Ciao Vero Programmatore, vorrei una informazione... mi aspettavo un errore in fase di esecuzione del codice che ti sto per allegare, invece entra in un loop infinito, io ho una mezza idea ma aspetto il tuo responso.

int main (void) {
int i = 0;
int A[10];

for (i=0; i<=20; i++) {
A[i] = 0;
printf("%d\n", i);
}

}

12:48 AM  
Anonymous sandman said...

Non sono il vero programmatore ma non sono neanche un mangiatore di quiche...

Intanto tutto dipende dal compilatore! Usando compilatori diversi, si possono avere risultati diversi.

Usando gcc su una macchina linux a 64 bit, prima di compilare quel codice ho compilato questo:

#include <stdio.h>
int main (void) {
int i = 0;
int A[10];
printf("%lld, %lld, %lld, %lld\n", &i, A, A+8, A+9);
}

E il risultato è stato:
140736112341420, 140736112341376, 140736112341408, 140736112341412

Il risultato cambia legggermente ad ogni esecuzione, comunque si può vedere che A è memorizzato all'indirizzo x, A+9 (l'ultimo elemento dell'array) è nell'indirizzo x+9*4 e i è nell'indirizzo x+11*4.

Eseguendo il programma, quando i arriva a 10 viene scritto (int)0 nell'indirizzo x+10*4. Evidentemente questo non causa danni, e viene stampato 10.

Poi scrive (int)0 nell'indirizzo x+11*4, che casualmente equivale all'indirizzo di i. Quindi i viene azzerato, stampa 0 e da qui ha origine il loop infinito, senza che questo generi segmentation fault.

10:53 AM  
Anonymous AkiRoss said...

Madooo' che pecca! Mi ero dimenticato di questo favoloso sito :D
Welcome back vero programmer!

La birra del vero programmatore e' fatta col LOOPPOLO!

XD

3:47 PM  
Anonymous Anonymous said...

Pensavo di essere rimasto l'unico, invece no. Non sapevo neanche di potermi definire VP. Lo so che il termine è sarcastico per questo non mi offendo, lo indosso a pennello.
Sono giunto qui seguendo un link presente sotto l'omonima voce in Wikipedia (ho anche dato un piccolo contributo).
A proposito del quizzino del loop infinito: io che uso il TurboC sotto DOS so che le variabili vengono messe in memoria in ordine inverso rispetto a come sono scritte nel sorgente, per cui A[10] si sovrappone a 'int i' e scrivendovi 0 il tutto ricomincia. Se invece si invertisse l'ordine delle variabili chissà dove va a scrivere forse sull'eseguibile, chissà che bel botto ne potrebbe uscire !!! evviva.
Camillo
PS che significa tag HTML?
PPS sono proprio tonto ci ho messo un bel po' a capire quello che avviene qui sotto con quella finestra in cui va scritta la parolaccia che in anglouzbecho significa proprio c...

10:36 AM  
Blogger Nucleo said...

Welcome back! :)

5:38 AM  
Anonymous Lorenzo said...

@ anonymous 10:36 AM

la locazione della memoria dipende dall'implementazione della macchina.. o meglio del processore.. non è detto che vada a sovrascrivere proprio la i!

4:54 AM  

Post a Comment

<< Home