Tecniche di lettura

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Tecniche di lettura

Messaggio da Blizzard »

ciao,
vorrei aprire una discussione sul modo in cui si dovrebbe affrontare la lettura di un sorgente di dimensioni... linux.

Per quello che mi riguarda non sono mai andato oltre l'irrlicht... ma non so perchè anche se enorme riuscivo a leggerne il sorgente in maniera davvero semplice (sarà che il C++ comunque aiuta.... senza polemiche però).
Mentre per quanto riguarda linux non sono riuscito mai a cavare un ragno dal buco... Ovviamente non mi sono messo con l'intenzione di capire linux... ma almeno lo scheduler pensavo di arivare a farmi un'idea di come potesse girare... invece mi perdo gia a partire dalle strutture dati enormi.

Quello che mi chiedo è:
Mettiamo caso che un tizio viene ingaggiato da M$ per lavorare su un pezzo del codice di Windows perchè questi non funziona (situazione realistica no???)
Deve mettersi dinanzi ad una parte di codice mai visto che coopera con altri milioni di righe di codice mai visti prima... come si srotola questa situazione???
Quando ho lavorato per una sviluppatrice avevo dei compiti e un progetto su cui lavorare che doveva integrarsi con un altro... la cosa è stata abbastanza tranquilla perchè avevo poche classi di giunzione cui fare capo... li resto era a me!
Ma se dovevo lavorare strettamente su qualche aspetto del progetto (il programma principale cui il mio doveva unirsi) non avrei saputo come raccapezzarmi in quello sterminato elenco di classi e codice!

Voi come affrontate situazioni simili??? (spero di non essere stupido io [-o< )

ciao
Gio

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Tecniche di lettura

Messaggio da nuitari »

Boh.. esperienza? :)
Per quel che mi riguarda ho lavorato su progetti enormi, e tutt'ora ci lavoro. Dopo il primo, il resto è in discesa.
Molto aiutano gli IDE. Già il fatto di poter richiamare la definizione di una funzione o delle variabili in base al contesto, aiuta. Stesso discorso la possibilità di poter "collassare" i blocchi (per il C/C++ strutture, classi, funzioni)

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Tecniche di lettura

Messaggio da cymon »

E' anche vero che le tecniche di lettura dipendono molto dalle tecniche di scrittura :roll:
Ho sempre pensato che del buon codice non sia solo del codice funzionante, ma anche del codice che si riesca a leggere facilmente.
Sfortunatamente una vasta branca di sottocultura informatica più gangstarappa crede sia più figo riuscire a chiudere diciotto riferimenti in mezza riga arrivando a dei capolavori di crittografia informatica piuttosto inquietanti, piuttosto che stendere chiaramente e CON COMMENTI quello le proprie linee di codice.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Tecniche di lettura

Messaggio da robbybby »

Un codice BEN commentato aiuto enormemente.
Purtroppo ho visto (e messo le mani) anche su codice quasi senza commenti, con nomi di variabili senza senso, e con formattazioni del testo "alla membro di segugio".
E li', perdi molto tempo solo a riuscire a leggere, prima di riuscire a capirlo.
Invece, con altro codice, ben scritto e ben commentato, la situazione e' piu' facile.
Quando ci metti mano, molte volte ti aiutano anche i debugger, oltre agli IDE.
Se metti mano a piu' porzioni di codice, scritte tutte dalla stessa persona, dopo un po' entri nel suo stile, e il lavoro e' piu' facile.

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Tecniche di lettura

Messaggio da Blizzard »

ciao,
in quanto ai commenti beh! sono uno dei sostenitori del fatto che sono fondamentali e commento sempre ampiamente il codice che scrivo... forse per prendere pratica dovrei cercarmi qualche codice bello grosso e parecchio commentato prima di passare a leggere codici ostici e magari anche scarsamente commentati.

@nuitari
se non vado troppo ad impicciarmi dei cavoli tuoi... per quale settore scrivi codice??

grazie

ciao
Gio

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Tecniche di lettura

Messaggio da nuitari »

Blizzard ha scritto:@nuitari
se non vado troppo ad impicciarmi dei cavoli tuoi... per quale settore scrivi codice??
Maddechè .
Attualmente lavoro nel settore web, curo lo sviluppo di un framework 50% MVC e 50% a componenti.

In passato ho lavorato in molti altri campi comunque, tra qui quello della pubblica amministrazione (tribunale minorile di Milano), quello videoludico (ho sviluppato gran parte di un server MMORPG), quello bancario, etc.

Avatar utente
FireEater
Linux 3.x
Linux 3.x
Messaggi: 508
Iscritto il: sab 5 feb 2005, 0:00
Nome Cognome: Giuseppe M.
Slackware: Current
Kernel: 2.6.32.7-smp
Desktop: kde 4.3.4
Località: Cagliari <---> Torino

Re: Tecniche di lettura

Messaggio da FireEater »

Blizzard ha scritto:ciao,

Quello che mi chiedo è:
Mettiamo caso che un tizio viene ingaggiato da M$ per lavorare su un pezzo del codice di Windows perchè questi non funziona (situazione realistica no???)
Deve mettersi dinanzi ad una parte di codice mai visto che coopera con altri milioni di righe di codice mai visti prima... come si srotola questa situazione???
Gio
Ciao
Io credo(SPERO) che i grossi progetti fatti in M$, o in qualsiasi società seria, oltre a milioni di righe di codice(commentate o meno) contengano anche documentazione e soprattutto diagrammi UML. :-k

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Tecniche di lettura

Messaggio da Blizzard »

@nuitari
e che ti posso dire.... :notworthy: sei un mito :P

Anche io ho lavorato su un mmorpg... ma per un breve periodo(roba estiva) con la winterdyne (tizi inglesi abbastanza sconosciuti tranne il boss :D ex warhammer online).
Dal conto mio mi occupavo di scrivere sul motore irrlicht la sezione riguardante il terrain rendering. Una bella esperienza... molto istruttiva, anche perchè irr dal canto suo ha un comparto di gestione del terrain davvero povero... pensa che fino a che lo utilizzavo non aveva neanche un qualche sistema di splatting... ma solo una detail map.

ciao
Gio

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Tecniche di lettura

Messaggio da Blizzard »

Ciao
Io credo(SPERO) che i grossi progetti fatti in M$, o in qualsiasi società seria, oltre a milioni di righe di codice(commentate o meno) contengano anche documentazione e soprattutto diagrammi UML. :-k
mmm... e se poi si accorgono di quello che stanno combinando??? =P~

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Tecniche di lettura

Messaggio da nuitari »

Ora vi faccio ridere:

Il mio lavoro per anni è stato quello di debuggare il codice altrui. Il mio modus operandi prevedeva, prima d'ogni cosa, il restyling estetico del codice: spazi, indentazione, etc.

Beh, quando mi ammalavo con febbroni assurdi, il mio incubo ricorrente era quello di dover sistemare listati di milioni di righe totalmente disordinati, con centinaia di livelli d'indentazione :lol: Arrivavo tipo a metà e m'accorgevo che avevo sbagliato tutto, per cui dovevo ricominciare dall'inizio, ma più sistemavo e più m'incasinavo . Malattie da programmatore..

@Blizzard
Ehe grazie, complimentoni anche a te! ^^ A saperlo avremmo potuto collaborare :P

Io mi sono occupato principalmente del network (basato su richieste asincrone con notifica di completamento, un meccanismo del kernel windoze) e del protocollo, dell'engine di gestione del DB (basato su file memory mapped), del sistema di clustering (perchè i server giravano su diverse macchine collegate dividendosi il carico), della gestione della memoria/buffer (con garbage collection etc) e di parte dell'engine di scripting.
Avevo anche cominciato con l'IA, ma poi... è finito tutto perchè non sono più riuscito a trovare fondi a causa della mancanza di collaboratori .

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Tecniche di lettura

Messaggio da Blizzard »

Beh, quando mi ammalavo con febbroni assurdi, il mio incubo ricorrente era quello di dover sistemare listati di milioni di righe totalmente disordinati, con centinaia di livelli d'indentazione :lol: Arrivavo tipo a metà e m'accorgevo che avevo sbagliato tutto, per cui dovevo ricominciare dall'inizio, ma più sistemavo e più m'incasinavo . Malattie da programmatore..
Hahaahhaahah! questa è davvero bella! o brutta... a seconda di quanto sei protagonista dell'incubo :-k
Comunque a me son capitate due cose assurde:
La prima era che stavo scrivendo il codice di Rebirth of Paradroid ed ero arrivato ad un punto che non riuscivo a risolvere... arrivo fino alle 2:00 e niente da fare ... quel coso non voleva girare come doveva. Mi butto sul letto... mi risveglio la mattina dopo che avevo capito errore e soluzione! (Chissà quale santo dovevo ringraziare!)

La seconda cosa è una mattina mi arriva un coinquilino (Che non conosceva neanche troppo i giochi moderni) e mi dice:
"Ma ieri notte che stavi a dì... parlavi di qualcosa F.E.A.R. ... il motore fisico di F.E.A.R. :-k "
e io:
"Che??? ma se io neanche ne so molto di motori fisici... e poi chissà che cavolo stavo a dire... perchè non mi ricordo niente??? Magari era qualcosa di sensato #-o "
@Blizzard
Ehe grazie, complimentoni anche a te! ^^ A saperlo avremmo potuto collaborare :P
Beh! sarebbe stato forte sviluppare assieme! comunque non crederti che ho chissà quali skills!
Io mi sono occupato principalmente del network (basato su richieste asincrone con notifica di completamento, un meccanismo del kernel windoze) e del protocollo, dell'engine di gestione del DB (basato su file memory mapped), del sistema di clustering (perchè i server giravano su diverse macchine collegate dividendosi il carico), della gestione della memoria/buffer (con garbage collection etc) e di parte dell'engine di scripting.
Avevo anche cominciato con l'IA, ma poi... è finito tutto perchè non sono più riuscito a trovare fondi a causa della mancanza di collaboratori .
ahhhhhhhhhh! è un peccato che non sia andata avanti la cosa... soprattutto se avevi realizzato tutto quel lavoro [-( [-(
Comunque qua in Italia è veramente proibitivo pensare di dedicarsi ad un progettone nell'ambito videoludico :doubt:

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Tecniche di lettura

Messaggio da nuitari »

Lascia perdere va... tra l'altro il codice ce l'ho ancora tutto, migliaia e migliaia di righe di codice buttate nel cesso.

Comunque, sul discorso del sonno: è scientificamente dimostrato che il cervello continua ad elaborare nel sonno ciò a cui hai pensato prima d'andare a letto. E' una vera e propria tecnica che, personalmente, ho usato più volte. Aiuta sia a memorizzare che elaborare (sono serio).

Avatar utente
Blizzard
Master
Master
Messaggi: 1509
Iscritto il: mar 2 gen 2007, 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox
Contatta:

Re: Tecniche di lettura

Messaggio da Blizzard »

Hei! ma dato che il codice è ad uno stadio parecchio avanzato (almeno il lato server) perchè non tenti di trovare qualche acquirente che magari è deciso ad acquistarlo...
Anche se in ogni caso è comunque un lavoro che può essere ripreso e portato avanti o riusato per futuri progetti... alla fine non penso sia lavoro perduto

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

Re: Tecniche di lettura

Messaggio da gattino_usb »

eheh e che devo dire io :| che spesso a scuola bestemmio contro "piccoli programini-cavolata" in C, al massimo 50 righe di codice :lol: ommioddio mi chiedo come diavolo facciano molti a debuggare milioni e milioni di righe di codice :lol:

sono normale (cio vuol dire che il C è abbastanza astruso) o sono GNUrante? :lol:

Avatar utente
gattino_usb
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: mar 25 dic 2007, 11:48
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu
Località: Cittadella (Padova)

Re: Tecniche di lettura

Messaggio da gattino_usb »

robbybby ha scritto:Un codice BEN commentato aiuto enormemente.
Purtroppo ho visto (e messo le mani) anche su codice quasi senza commenti, con nomi di variabili senza senso
ma figurati che mi è capitato di essermi talmente rotto degli inglesismi delle parole-chiave di C che con un'enorme lista di define scrivevo codice in dialetto veneto :lol: mi veniva molto piu spontaneo :lol:

era na roba del tipo
(escludendo i define)

#include <stdio.h>
#include <stdlib.h>
prinsipae()
scumissia
variabieintiera bepi xeuguaea 10;
variabieintiera toni xeuguaea 20;
variabieintiera jiji xeuguaea 0;

jiji xeuguaea bepi pi toni;
stampamefora("el risultato xe %d \n",jiji);
mesorottoescatoe;
finissi

(meno male che non tutti sono come me,altrimenti per programmare bisognerebbe possedere una laurea in lingue :badgrin: )
Ultima modifica di gattino_usb il lun 7 gen 2008, 3:23, modificato 1 volta in totale.

Rispondi