|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#81 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
http://fcarucci.homeip.net:8080/crui...sults/diamonds Sotto Build Artifacts trovi l'eseguibile e tutti i sorgenti dopo ogni commit.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#82 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
strigapumpamphlet() è più sintetico semplice e chiaro di leggiIlFile() hai voglia a dire "non è vero" se non sai perchè o quantomeno se non cerchi di dare un possibile perchè. Ma ho il sentore che ci stiamo avventurando in una discussione già tentata |
|
|
|
|
|
|
#83 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
|
|
|
|
|
|
|
#84 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Per una formulazione piu' rigorosa, puoi partire da Wikipedia che contiene i link ai paper di McCabe: http://en.wikipedia.org/wiki/Cyclomatic_complexity Detto ancora piu' alla buona, la complessita' ciclomatica e' una misura della complessita del codice che si scrive. E' dimostrato empiricamente che il numero di difetti nel codice e' direttamente proporzionale alla sua complessita' ciclomatica. Intuitivamente, codice meno complesso e' piu' facile da mantenere e gestire. Qui un paper che affronta questa proporzione diretta in maniera piu' rigorosa: http://www.cs.umd.edu/users/mvz/pub/tian95.pdf Un modo veloce per misurare la complessita' ciclomatica del codice e' contare il numero di if/for/switch/while. In sintesi: se tolgo quell'if diminuisco la complessita' ciclomatica della mia soluzione, quindi diminuisco la complessita' del codice, quindi diminuisco il numero di test necessari per testarlo e diminuisco la probabilita' di avere difetti nel codice che ho scritto. Lo scopo di molti dei Refactoring di Fowler e' diminuire la complessita' ciclomatica. Ecco un altro motivo per il quale Java e' preferibile al C per un principiante: e' piu' facile scrivere codice con complessita' ciclomatica bassa.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#85 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
molto interessante questo discorso di 7-+2 e anche di 80 e passa
|
|
|
|
|
|
#86 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#87 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
E infine, gli if sono una brutta cosa nelle architetture in-order come il Cell o l'XCPU, prenche' introducono branch nel codice e la CPU non puo' riordinare le istruzioni da eseguire o fare esecuzione speculativa. I branch sono dei killer di performance su queste CPU. Si', sto lottando contro gli if al lavoro perche' l'XCPU e' un chiodo altrimenti
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#88 | |||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
di tanto in tanto all'università la gente mi viene a chiedere spiegazioni su come funzionano cose che i professori non spiegano (che ovviamente sono tante); particolarmente gettonate sono le interfacce grafiche (visto che all'università in C si fanno solo programmi CUI), ma non sono assolutamente l'unico argomento. a certa gente piace capire molto in dettaglio il funzionamento delle cose, è naturale curiosità e in me è sempre stata particolarmente sviluppata; ricordo ancora quando a 14 anni col debugger entravo nella VCL di Delphi e analizzavo il codice passo-passo perché volevo ASSOLUTAMENTE capire come faceva un programma Delphi a disegnare la GUI... bei tempi :') con questo sistema scoprii le API Win32 Quote:
Quote:
|
|||
|
|
|
|
|
#89 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#90 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Sulla questione sono fondamentalmente d'accordo con fek (a parte la scelta del linguaggio, visto che preferisco Python, ma de gustibus... ).
Imparare a programmare è come imparare a girare una grossa città. Si può cominciare dalle basi, girandola a piedi, e nel corso degli anni imparare a menadito tutti i vicoli, i sottoscala e le gradinate per arrivare prima a destinazione. Poi pero' quando finalmente cominci a girarla in macchina devi imparare che nonostante lo scopo sia lo stesso, e il metodo fondamentalmente uguale, la strada da percorrere per arrivare all'altro capo della città non sono le viette del centro ma la tangenziale
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele Ultima modifica di marco.r : 14-05-2006 alle 22:49. |
|
|
|
|
|
#91 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
|
|
|
|
|
|
|
#92 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Quote:
Riguardo al filmato del browser è molto carino, ma pensavo, avendo a disposizione gli stessi oggetti non si potrebbe fare la stessa cosa anche in VB? |
|
|
|
|
|
|
#93 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
esempio: nei makefiles puoi definire una macro $(MOCK_PATH) che in configurazione "Run" (per così dire) sia nulla, mentre in configurazione "Test" sia uguale a "Mock/" se per esempio tutti i mock li hai messi in una directory di nome "Mock"; se poi nei makefiles usi questa macro nei path, le translation unit cambiano a seconda che compili in "configurazione Run" o "Test". ti assicuro che si perde molto meno tempo a farlo che a dirlo, sebbene io rimanga d'accordo che con istanze di classi sia tutto più semplice; volevo solo dire che non è impossibile EDIT: in alternativa, in caso nel testing di certi programmi si debbano usare le versioni mock di alcune translation units in certi test e le versioni originali in altri test, la cosa si complica un po' ma anche qui nulla è impossibile e si fa prima a farlo che a spiegarlo. sempre agendo nei makefiles, si potrebbe richiedere al compilatore la generazione di tutti i file oggetto, sia originali che mock, e poi si potrebbe effettuare un linking diverso a seconda del test; naturalmente nella configurazione "Run" i mock non sarebbero mai linkati. il tutto viene molto più efficiente di quello che sembra visto che il make richiama solo le regole le cui dipendenze si risolvono in files con data di modifica anteriore a quella in cui si risolve la regola stessa. Ultima modifica di 71104 : 15-05-2006 alle 00:09. |
|
|
|
|
|
|
#94 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
|
||
|
|
|
|
|
#95 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
|
||
|
|
|
|
|
#96 | |||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Dai un'occhiata a questo link: http://msdn.microsoft.com/vbasic/def...5_overview.asp da cui ti estraggo un esempietto: Codice:
Public Class TypedVector(Of T)
' Create a one-dimensional array of
' the specified type.
Private arrayValue() As T
Public Sub New(ByVal Size As Integer)
ReDim arrayValue(Size - 1)
End Sub
Default Public Property Item(ByVal Index As Integer) As T
Get
Return arrayValue(Index)
End Get
Set(ByVal Value As T)
arrayValue(Index) = Value
End Set
End Property
End Class
...
Dim myVector As New TypedVector(Of Integer)(4)
myVector(0) = 73
myVector(1) = 27
Quote:
![]() Il problema, Alberto, è che il C è un linguaggio lasciato nel dimenticatoio, la cui evoluzione è stata soffocata dal C++. Tutto ciò ha portato all'uso e alla richiesta di usare quasi sempre la versione ANSI, ma non la 99. Quote:
Un modulo/unit/package diciamo che è un contenitore di simboli, riferimenti e codice: è qualcosa di più di un semplice file oggetto, insomma, ma NIENTE DI MENO. A te cambia qualcosa se dentro al .o, oltre ai simboli e al codice, infilano altro? Nulla. In fase di compilazione dell'eseguibile, verranno del tutto rimosse. E' una grossa mancanza che i produttori di compilatori hanno cercato di sopperire con gli header precompilati, ma non è certo la stessa cosa. Quote:
http://www.petros-project.com/pages/info.htm "PETROS® has been designed and built from first principles using a high level language based on Object Pascal. The emphasis at all stages of the PETROS® project has been to apply the KISS principle (Keep It Small and Simple) Some of the primary features of PETROS® include: A micro kernel of about 190K, allowing much more memory for applications. A full working TCP system can be achieved in approximately 300 K It is fast loading, fast and easy to run. It runs on 486 and above level of processor. It has a minimum memory requirement of 2 MB. Standard peripherals are built in. It is fully multitasking. It has loadable driver modules It has virtual paged memory It will allow continued use of superceded machine configurations. It contains industry standard disk structures and executable formats." Quote:
Quote:
|
|||||||
|
|
|
|
|
#97 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
|
|
|
|
|
|
|
#98 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Divide & conqueror si applica in altri contesti. |
|
|
|
|
|
|
#99 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Tra l'altro, parlando di eliminazione di if, da quando lavoro con linguaggi ad alto livello come Python, Java, ecc. preferisco sostituirli coi costrutti che questi ultimi mettono a disposizione. Ad esempio, prima scrivevo roba come questa: Codice:
if MyDict.has_key("pippo"):
Value = MyDict["pippo"]
mio codice
else:
altro codice
Codice:
try: Value = MyDict["pippo"] mio codice except: altro codice Ad esempio scorrere un intero array fermandosi quando la JVM solleva un'eccezione di index out of bound, intrappolandola con un try / catch, anziché far uso del classico for contenente la condizione di controllo sull'ultimo elemento. EDIT: corretto esempio.
Ultima modifica di cdimauro : 15-05-2006 alle 09:29. |
|
|
|
|
|
|
#100 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
1) in VB.NET, C#, Delphi, ecc. la stessa cosa si realizza in 1/10 del tempo; 2) si comprende quanto "IDE" come quelli del filmato siano BEN LONTANI dai canoni di comodità e semplicità d'uso degli altri IDE che ho elencato. Personalmente, quando ho visto aprire il WORDPAD per scrivere il codice per legare la finestrella appena creata, e il PROMPT DEI COMANDI per compilare il tutto e farlo partire, mi sono stropicciato gli occhi e le orecchie ((C) 2006 by Silvio B. ). Poi sono scoppiato in una fragorosa risata... Veramente, sono ancora fermi ai tempi della clava (informatica). Dovrebbero dare un'occhiata a Delphi 1.0, il primo ambiente RAD creato per Windows, e rendersi conto di quanto devono ancora lavorare per arrivare a qualcosa di appena comparabile... E stiamo parlando di QT, che non è neppure totalmente "libero", visto che si tratta di un framework proprietario, dotato di doppia licenza (commerciale e GPL). |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:44.




















