Archivio delle versioni MT. - pagina 6

 
Alexey Viktorov:

Ma secondo questo pezzo di codice

Il valore restituito da questa funzione deve essere elaborato in qualche modo. A cosa serve restituire "meno molti nove" se non c'è alcuna reazione ad esso nel resto del codice?

Restituendo un valore meno grande, questo passaggio verrà collocato in fondo ai risultati. Se non c'è stato nessun test (il test è stato fermato, nel mio caso all'apertura della prima barra), allora non c'è niente da calcolare, non ci sono dati da calcolare. Pertanto, quando tester_stop è impostato, viene restituito un grande numero negativo.

Inoltre, non uso questo risultato da nessuna parte nel codice, anche se, forse, può essere usato, ma come - al momento non lo so e non ne ho bisogno.

 
Сергей Таболин:

Il ritorno meno un valore grande metterà questo passaggio in fondo ai risultati. Se non c'è stato alcun test di principio (il test è stato fermato, nel mio caso all'apertura della prima barra), allora non c'è nulla da calcolare, non ci sono dati da calcolare. Pertanto, quando tester_stop è impostato, viene restituito un grande numero negativo.

Inoltre, non uso questo risultato da nessuna parte nel mio codice, anche se probabilmente può essere usato ma non so come, e non ne ho bisogno al momento.

Questo è un pessimo approccio alla risoluzione di compiti in generale e specialmente alla risoluzione di compiti di programmazione.

Per qualche ragione non credo nei test in generale e ancor meno nell'ottimizzazione. Ecco perché non posso darti consigli specifici su come organizzare l'algoritmo, ma vedo che il tuo algoritmo di sequenziamento ed elaborazione dei risultati è rotto.

Se prima di chiamare TesterStop() deve esserci almeno un passaggio, si prega di fornire questo passaggio. Qual è il suo problema? Che non so e non ho bisogno di sapere? Questo non è giusto.

 
Сергей Таболин:

Capisco tutto e non ho bisogno di stampelle. E ho dovuto cercare una stampella qui leggere per cosa.

È possibile. Ma non ricordo che qualcuno se ne sia lamentato.

I vostri desideri possono essere organizzati in modo molto più semplice senza codice aggiuntivo inutile.

Invece del ritorno di INIT_PARAMETERS_INCORRECT, pesa qualche variabile globale, diciamo ExtTesterStop=true.

Mettere il controllo sulla prima linea di OnTick

void OnTick()
  {
   if(ExtTesterStop)
     {
      TesterStop();
      return;
     }
...
 
Alexey Viktorov:

Questo è un approccio molto povero al problem solving in generale e specialmente per i problemi di programmazione.

Per qualche motivo non credo nei test in generale, e nell'ottimizzazione ancora meno. Quindi non posso dare consigli specifici sull'organizzazione dell'algoritmo, ma vedo che il tuo algoritmo di sequenza ed elaborazione dei risultati è rotto.

Se ci deve essere almeno un passaggio prima di chiamare TesterStop(), fornire questo passaggio. Qual è il suo problema? Che non lo so e non ne ho bisogno? Questo non è giusto.

Alexey, senza offesa, ma non hai assolutamente capito perché ho usato TesterStop(). Inoltre, non hai nemmeno provato a farlo. Dato che non hai letto per cosa l'ho usato, te lo spiego brevemente.

Lo uso per setacciare i passaggi inutili dei test e accelerare l'ottimizzazione. Soprattutto l'ottimizzazione genetica. Ecco perché non ho bisogno di un solo passaggio in questa situazione! Era la sostituzione diINIT_PARAMETERS_INCORRECT, perché nel caso della loro grande quantità in OnInit() portava al crash della genetica.

Credere o non credere, usare o non usare l'ottimizzazione sono affari vostri che non hanno nessuna relazione con la soluzione di questo problema ))))

Slava:

I vostri desideri possono essere organizzati in modo molto più semplice senza alcun codice inutile. Sarete d'accordo che è lo stesso rastrello in un modo diverso)))

Invece del ritorno di INIT_PARAMETERS_INCORRECT, pesa qualche variabile globale, diciamo ExtTesterStop=true

Mettere il controllo sulla prima linea di OnTick

Sono d'accordo che il codice sarà un po' più semplice, però!

La questione rimane sempre la stessa. La cancellazione del passaggio nella fase di inizializzazione non avviene. Lo stesso codice sarà in OnInit() e OnTick(). Cosa ci guadagniamo?

TesterStop() sarà ancora accigliato

TesterStop() called on 0% of testing interval

e, in questa versione di MT, il controllo sarà comunque passato a OnTester(). Sarai d'accordo che abbiamo gli stessi problemi, ma in modo diverso ))))

Sarebbe fantastico se ci fosse una funzione alternativa, per esempio, TesterStopImmediately(). Per i casi in cui dobbiamo fermare immediatamente il test passando il controllo non in OnTester() ma direttamente in OnDeinit(const int reason)...

Ma probabilmente non lo vedremo durante la nostra vita...

 
Сергей Таболин:

Alexey, senza offesa, ma non hai completamente capito per cosa ho usato TesterStop(). Inoltre, non hai nemmeno provato a farlo. Visto che non hai letto per cosa l'ho usato, te lo spiego brevemente.

Lo uso per setacciare i passaggi inutili dei test e accelerare l'ottimizzazione. Soprattutto l'ottimizzazione genetica. Ecco perché non ho bisogno di un solo passaggio in questa situazione! Era la sostituzione diINIT_PARAMETERS_INCORRECT, perché nel caso della loro grande quantità in OnInit() portava al crash della genetica.

Credere o non credere, usare o non usare l'ottimizzazione - questi sono affari vostri, che non hanno alcuna relazione con questo problema)))

Non mi sono espresso con precisione e lei mi ha completamente frainteso. Ma non importa.

 
Alexey Viktorov:

Non mi sono espresso con precisione e tu mi hai frainteso del tutto. Ma non importa.

Importante. Credo che tutti i problemi in generale siano il risultato di malintesi. Ma l'uomo è nato con la lingua per parlare, per negoziare )))) Naturalmente, tutti pensano di avere ragione, ma la testardaggine su questo tema è un segno di ... stupidità. Quindi, per favore, spiegate cosa intendete. Personalmente sono pronto a imparare)))

 
Сергей Таболин:

Importante. Credo che tutti i problemi in generale siano il risultato di malintesi. Ma l'uomo è nato con la lingua per parlare, per negoziare )))) Naturalmente, tutti pensano di avere ragione, ma la testardaggine su questo tema è un segno di ... stupidità. Quindi, per favore, spiegate cosa intendete. Personalmente sono pronto a imparare ))))

Cosa possiamo imparare da una persona che mostra segni di inettitudine? O stai parlando di te stesso? Sei tu che sei testardo e non vuoi fare il minimo di codice per cercare di capire cosa vuoi. Beh, ho già detto che non mi occupo di ottimizzazione e quindi non ho mai usato eventi legati ai tester. Le mie raccomandazioni erano rivolte solo ad un campo più ristretto. Slava ha ripetuto la mia raccomandazione. Forse l'hai usato in un modo diverso, dato che non ottieni quello che ti aspetti. È solo un'ipotesi per mancanza di informazioni sull'argomento.

 
Alexey Viktorov:

Cosa possiamo imparare da una persona con segni di scarsa intelligenza? O stai parlando di te stesso? Sei tu che stai prendendo tempo e non vuoi fare il codice minimo per cercare di capire cosa vuoi. Beh, ho già detto che non mi occupo di ottimizzazione, quindi non ho mai usato eventi relativi al tester. Le mie raccomandazioni erano rivolte solo ad un campo più ristretto. Slava ha ripetuto la mia raccomandazione. Forse l'hai usato in un modo diverso, dato che non ottieni quello che ti aspetti. È solo un'ipotesi per mancanza di informazioni sull'argomento.

Leggi almeno quello che ti scrivo?

"Alexey, senza offesa, ma non hai assolutamente capito per cosa ho usato TesterStop(). Inoltre, non hai nemmeno provato a farlo. Visto che non hai letto per cosa l'ho usato, te lo spiego brevemente.

Lo uso per setacciare i passaggi inutili dei test eaccelerare l'ottimizzazione. Soprattutto l'ottimizzazione genetica. Ecco perché non ho bisogno di un solo passaggio in questa situazione! Era la sostituzione di INIT_PARAMETERS_INCORRECT, perché quando la loro quantità in OnInit() era grande, portava al crash della genetica..."

Quale parte di questo non capisce?

P.S. A proposito, a differenza di te, Slava sa esattamente di cosa stiamo parlando. ))
 
Сергей Таболин:

Leggi almeno quello che ti scrivo?

"Alexey, senza offesa, ma non hai assolutamente capito per cosa ho usato TesterStop(). Inoltre, non hai nemmeno provato a farlo. Visto che non hai letto per cosa l'ho usato, te lo spiego brevemente.

Lo uso per setacciare i passaggi inutili dei test eaccelerare l'ottimizzazione. Soprattutto l'ottimizzazione genetica. Ecco perché non ho bisogno di un solo passaggio in questa situazione! Era la sostituzione di INIT_PARAMETERS_INCORRECT, perché se la loro quantità in OnInit() era grande, portava al crash della genetica..."

Quale parte di questo non ti è chiara?

P.S. A proposito, a differenza di te, Slava sa esattamente di cosa stiamo parlando. ))

Sergei, TesterStop() è usato per fermare prematuramente i test. Quello che dovrebbe essere l'output in questo caso è affare del programmatore. Non ho bisogno di sapere cosa dovete ottenere, l'importante è smettere di fare test. Tutto il resto è stabilito nell'algoritmo di calcolo.

Se non si è soddisfatti di qualche variante intermedia dei valori ottenuti, si interrompe il test e si restituisce un risultato inventato dallo sfondo. Se non puoi farlo, significa che il tuo algoritmo non è costruito correttamente da qualche parte. Dopo tutto, come smettere di testare ti viene detto più di una volta.

 
Alexey Viktorov:

Sergei, TesterStop() è usato per fermare prematuramente i test. E quello che si deve ottenere in questo caso è un affare da programmatore. Non ho bisogno di sapere cosa dovete ottenere, l'importante è smettere di fare test. Tutto il resto è stabilito nell'algoritmo di calcolo.

Se non si è soddisfatti di qualche variante intermedia dei valori ottenuti, si interrompe il test e si restituisce un risultato inventato. Se non potete farlo, significa che avete costruito l'algoritmo sbagliato da qualche parte. Dopo tutto, come smettere di testare ti viene detto più di una volta.

Se ti offro di comprare un secchio di chiodi, è improbabile che tu non sia assolutamente interessato da dove lo prendo e quanto costa. Quindi la tua risposta può essere qualsiasi cosa: no, non voglio, non lo voglio, bene, ecc. La cosa principale che io e te saremo in grado di capire. La mia risposta in un caso simile è "ho inventato un risultato da una torcia", che personalmente capisco assolutamente.

Ciò che è diventato chiaro nel corso di questa indagine è che TesterStop() e ExpertRemove() passavano il controllo immediatamente a OnDeinit() prima della nuova build, mentre nella nuova build, passano il controllo immediatamente a OnTester() (se esiste). E se nel primo caso il risultato del test era un NULL, ora onTester() dobbiamo controllare se l'output era disponibile in quegli eventi (ovviamente questo controllo deve essere organizzato) e fare il nostro output. E quale risultato specificare in questo caso (0 o -99999999) - è una questione di preferenze.