venerdì, ottobre 19, 2007

Coding in real time

Coding in Real TimeCoding in real time: how to write source code in real time, from natural language specifications, to digital source code, using the object oriented paradigm. Is it easy? Not at all! Above all if the natural-language specifications are ordered using instant messagging system (chats), from another State (for istance Dublin TCD). In less than 2 hours I made 1 project from scratch, 1 package, 8 class, using inheritance, poliformism and other object-oriented paradigms.

Am i nerd? No, I'm procedure man, and that's all. Do you know why someone calls me procedure man now?
Not yet? Ok, I can add some information: I'm using, at the same time, 3 programming languages and I'm following 3 projects, I mean projects that require to write source code, because there are several projects in which I'm involved.

In all likelihood I need a pint of Guinness, right now! Could anyone give me one please? Ok, i'm going back to "code": it's time since I don't code in an extreme way, and I like it. So cmon Luca, let's go! Good luck software developer of the world! Any suggestion? Any challenge Dondi? I'm waiting for it....always

Etichette: , , ,

sabato, gennaio 21, 2006

La vita è una Malloc

La vita di tutti noi è una Malloc().

Come volevasi dimostrare. L'allocazione della memoria è un problema da non sottovalutare, sia in un programma C, sia nella vita di ogni individuo. La memoria deve essere sollecitata per recuperare le informazioni, deve essere allenata per reperirle in maniera rapida, deve essere ben strutturata per recuperare le giuste informazioni, ma soprattutto deve essere allocata.

Come al solito i neofiti, o meglio dummies del linguaggio C commettono gli stessi errori. Va bene che il C non è un linguaggio semplice come il Visual Basic, e non è soprattutto inutile come il Visual Basic, però i newbie dovrebbero studiare un pochino di più.

Il problema che è sorto ad un caro amico di cui non faccio nomi per rispetto (:-), è appunto il problema dell'allocazione della memoria. I dati dinamici, come l'allocazione di variabili all'interno di cicli loop o costrutti if, for, procedure(man), hanno validità esclusivamente all'interno del costrutto in cui sono dichiarati. Come tali sono variabili memorizzate nel segmento stack, che cresce verso il basso. I dummies, non i nerd, dovrebbero imparare questa cosa e sapere che le variabili allocate con Malloc() sono memorizzate nel segmento Heap, non dinamico, che cresce verso l'alto. L'errore compiuto dal mio amico era appunto questo: pretendeva che le variabili del segmento stack avessero validità per tutto il ciclo di vita del programma, e pretendeva il loro utilizzo anche al di fuori dell'ambito in cui erano stati dichiarati.

La stessa cosa vale per il ciclo di vita di un individuo: non si può pretendere che un'informazione possa essere reperita se non viene memorizzata e quindi bisogna far uso di un potente allocatore di memoria, come il cervello. E' importante memorizzare ciò che si ritiene importante, anche una sola volta, in maniera fissa, in modo che, con specifiche ricostruzioni, è possibile reperire il dato in maniera più meno rapida dipendetemente dal suo utilizzo.

Ricordate dunque di usare la Malloc() e cercate di memorizzare le informazioni importanti, come questo post, in una parte celebrale non dinamica e volatile.

Etichette: , , ,

sabato, novembre 19, 2005

What computers still can't do? [1]


A critical of artificial reason.

Sono tante le cose che i computer non sono ancora in grado di fare. Ad esempio non possono fare la pizza. Vi immaginate una macchina che sforna pizza di ogni genere semplicemente compilando il seguente codice:


void main(){
char[50] pizzaName;
scanf("%s", pizzaName);
printf("Ritira la tua %s dal cassetto cdrom", pizzaName);
printf("Press any key to exit");
}

Non sarebbe bello? Comunque a parte gli scherzi anche il signor Dreyfus si è dovuto ricredete scrivendo il suo secondo libro dal titolo "What computer Still can't do?"
Naturalmente l'Intelligenza Artificiale è un campo in continuo cambiamento, quindi è lecito porsi delle domande e dopo qualche anno autosmentirsi.

Cosa secondo voi i computer non sono ancora in grado di fare? Io ho qualche idea, ma mi piacerebbe sentire le vostre. Thanks

[1] What Computers Still Can't Do: A Critique of Artificial Reason. by Hubert L. Dreyfus

Etichette: , , ,