Repository 32bit  Forum
Repository 64bit  Wiki

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.

Tecniche di lettura

Messaggioda Blizzard » dom gen 06, 2008 13:54

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
Blizzard
Master
Master
 
Messaggi: 1509
Iscritto il: mar gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda nuitari » dom gen 06, 2008 14:05

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
nuitari
Linux 2.6
Linux 2.6
 
Messaggi: 777
Iscritto il: dom ott 14, 2007 11:51
Località: San Colombano al Lambro
Slackware: 12.0

Re: Tecniche di lettura

Messaggioda cymon » dom gen 06, 2008 14:23

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
cymon
Linux 2.4
Linux 2.4
 
Messaggi: 430
Iscritto il: ven gen 05, 2007 1:40
Località: Milano
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda robbybby » dom gen 06, 2008 14:53

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
robbybby
Linux 3.x
Linux 3.x
 
Messaggi: 1178
Iscritto il: sab dic 16, 2006 10:48
Località: Fra Trantor e Terminus
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5

Re: Tecniche di lettura

Messaggioda Blizzard » dom gen 06, 2008 17:33

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
Blizzard
Master
Master
 
Messaggi: 1509
Iscritto il: mar gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda nuitari » dom gen 06, 2008 18:47

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
nuitari
Linux 2.6
Linux 2.6
 
Messaggi: 777
Iscritto il: dom ott 14, 2007 11:51
Località: San Colombano al Lambro
Slackware: 12.0

Re: Tecniche di lettura

Messaggioda FireEater » dom gen 06, 2008 19:28

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
FireEater
Linux 2.6
Linux 2.6
 
Messaggi: 508
Iscritto il: sab feb 05, 2005 0:00
Località: Cagliari <---> Torino
Nome Cognome: Giuseppe M.
Slackware: Current
Kernel: 2.6.32.7-smp
Desktop: kde 4.3.4

Re: Tecniche di lettura

Messaggioda Blizzard » dom gen 06, 2008 19:35

@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 gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda Blizzard » dom gen 06, 2008 19:37

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
Blizzard
Master
Master
 
Messaggi: 1509
Iscritto il: mar gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda nuitari » dom gen 06, 2008 20:36

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
nuitari
Linux 2.6
Linux 2.6
 
Messaggi: 777
Iscritto il: dom ott 14, 2007 11:51
Località: San Colombano al Lambro
Slackware: 12.0

Re: Tecniche di lettura

Messaggioda Blizzard » dom gen 06, 2008 21:45

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
Blizzard
Master
Master
 
Messaggi: 1509
Iscritto il: mar gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda nuitari » dom gen 06, 2008 22:15

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
nuitari
Linux 2.6
Linux 2.6
 
Messaggi: 777
Iscritto il: dom ott 14, 2007 11:51
Località: San Colombano al Lambro
Slackware: 12.0

Re: Tecniche di lettura

Messaggioda Blizzard » dom gen 06, 2008 22:42

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
Blizzard
Master
Master
 
Messaggi: 1509
Iscritto il: mar gen 02, 2007 22:53
Nome Cognome: Giovanni Santostefano
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: Fluxbox

Re: Tecniche di lettura

Messaggioda gattino_usb » lun gen 07, 2008 3:13

eheh e che devo dire io :| che spesso a scuola bestemmio contro "piccoli programini-cazzata" 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.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

Re: Tecniche di lettura

Messaggioda gattino_usb » lun gen 07, 2008 3:16

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 gen 07, 2008 3:23, modificato 1 volta in totale.
Avatar utente
gattino_usb
Linux 2.4
Linux 2.4
 
Messaggi: 205
Iscritto il: mar dic 25, 2007 11:48
Località: Cittadella (Padova)
Nome Cognome: Alberto Rosso
Slackware: Current
Kernel: 2.6.27
Desktop: Xfce
Distribuzione: Debian, XUbuntu

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti