Un risultato davvero sorprendente!!! - pagina 6

 
Reshetov писал(а) >>

Clive Sinclair ha sviluppato l'economico personal computer ZX-Spectrum. Dopo che la prima versione è stata venduta in grandi quantità, si è scoperto che gli sviluppatori avevano un sacco di bug nella ROM. Così hanno preso la decisione di documentare i bug invece di correggerli per renderli completamente compatibili con le versioni precedenti. E la decisione si è rivelata giusta, perché i bug sono stati poi utilizzati per proteggere il software di questo stesso computer dal cracking.


Credo che il bug descritto in questo thread possa anche essere mantenuto e utilizzato per proteggere gli Expert Advisors, cioè per inserire una condizione errata dal punto di vista della logica, ad esempio per controllare la data di scadenza. E lasciate che quelli che decompilano diventino matti.

La discussione di questo errore, spero, motiverà gli sviluppatori di MQL5 a correggerlo. Dovrò comunque riscrivere tutti i programmi in MQL5.

 
nen >> :

Si spera che la discussione di questo errore ispiri gli sviluppatori di MQL5 a correggerlo. Dovrò comunque riscrivere tutti i programmi in MQL5.

Una prova che si tratta di un errore, diamola!

In realtà una dichiarazione al contrario:


Le leggi fondamentali dell'algebra booleana

Due formule di algebra booleana sono equivalenti se le funzioni loro assegnate sono uguali (cioè prendono gli stessi valori su tutti gli insiemi di valori degli argomenti). Qui sotto ci sono le leggi di base dell'algebra booleana che permettono trasformazioni identiche delle formule dell'algebra booleana (si noti quanto siano simili alle leggi dell'aritmetica classica):

  1. la legge della doppia negazione: non x = x
  2. la legge della commutatività (il risultato non cambia a causa della permutazione degli argomenti):
    x 1 o x 2 = x 2 o x 1
    x 1 e x 2 = x 2 e x 1

  3. La legge di associatività (l'ordine dei calcoli)
    x 1 o (x 2 o x 3 ) = (x 1 o x 2 ) o x 3
    x 1 e (x 2 e x 3 ) = (x 1 e x 2 ) e x 3

  4. la legge della distribuibilità (apertura delle parentesi):
    x 1 o (x 2 e x 3 ) = (x 1 o x 2 ) e (x 1 o x 3 )
    x 1 e (x 2 o x 3 ) = (x 1 e x 2 ) o (x 1 e x 3 )
  5. ...

Da cui segue che dal punto di vista dell'algebra booleana le operazioni o e hanno la stessa priorità.

 
Non è un errore. È un errore del cazzo.
 
TheXpert писал(а) >>

la legge della distributività (parentesi di apertura):
x 1 o (x 2 e x 3 ) = (x 1 o x 2 ) e (x 1 o x 3 )
x 1 e (x 2 o x 3 ) = (x 1 e x 2 ) o (x 1 e x 3 )

Ne segue che dal punto di vista dell'algebra booleana le operazioni e e hanno la stessa priorità.

Non fare il gatto. Il tuo esempio è diverso da quello che ha dato inizio alla discussione. Date un'occhiata più da vicino.

 
keekkenen писал(а) >>

In realtà, questo non è un argomento per un programmatore, perché la specifica di ogni linguaggio viene prima e non importa che ci siano altri standard da qualche parte...

e uno standard unico è un sogno irrealizzabile.

Penso che questa sia l'idea più adeguata.

Ogni lingua ha i suoi standard. Per esempio, C++ e Pascal hanno regole diverse per il calcolo dei numeri interi. In alcune lingue, gli indici iniziano con 0, mentre in altre iniziano con 1. Non credo che tutto ciò sia importante.

Ciò che è importante è un'errata interpretazione delle leggi della natura, cioè quelle leggi che sono al di fuori del controllo umano. E le regole e le leggi create dagli uomini sono una prerogativa dei loro creatori. In questo caso, è importante solo che le leggi siano promulgate; in questo caso, le regole sono pubblicate.

Concentriamoci meglio sul campo applicato:)

 

Signori, a pagina due di questo thread ho dato un link e una citazione dalla documentazione - Priorità e ordine delle operazioni. Lo darò di nuovo in forma condensata:

Attenzione: la priorità delle operazioni in MQL4 differisce leggermente da quella in C.


Pertanto, non è corretto parlare di un bug.

 

Mi viene in mente l'umorismo di Zadornov "Cos'è due più due volte due". Una buona illustrazione del dibattito religioso sulla priorità. E in generale, l'argomento è barbuto, avresti potuto usare la ricerca del sito - invece di creare un nuovo thread.

P.S. Eh, MuruFigi il nemico, e perché hai incastrato Pak ...

 
Mathemat писал(а) >>

L'argomento ha una barba, avresti potuto usare la ricerca del sito invece di creare un nuovo thread.

L'argomento continuerà ad essere rilevante. Agli sviluppatori sembra piacere.

Il prossimo programmatore "principiante" sbatterà la testa contro l'argomento... E tutto si ripeterà (hee-hee).

E non viene fuori dal nulla.

Gli sviluppatori hanno deciso di riqualificare tutti a modo loro...

Sarà un tema eterno... Finché l'altro capo della linea non si stanca di.... persistere

 
Mathemat писал(а) >>

Dibattiti religiosi sulla priorità

L'usanza qui è di fare un prodotto obliquo con le mani storte che crescono dal %, ma tutti stanno zitti perché non c'è un altro prodotto... o c'è, ma sarebbe meglio non esserlo ))

..

Un semplice esempio "per conto mio", quando si usa if() appare spesso un bug - quando si combinano && e una serie di condizioni >/</!=, che è molto strano,

si copia la catena Comment() per la revisione - 1, 1, 1, 1, 1, ecc - tutto è OK, ma if() non "funziona", si fa una "scala" if() { if() { if() { ... }}}

tutto funziona ... metacompiler glitch penso, ... e che cosa, gli sviluppatori pensano che saranno intimiditi e dimostrare, ... hehe

 
Rosh писал(а) >>

Signori, a pagina due di questo thread ho dato un link e una citazione dalla documentazione - Priorità e ordine delle operazioni. Lo darò di nuovo in forma condensata:

Attenzione: la priorità delle operazioni in MQL4 differisce leggermente da quella in C.

Pertanto, non è corretto parlare di un bug.

Beh, ero più o meno d'accordo nella seconda pagina che se fosse stato un bug nel compilatore, avremmo dovuto parlare di un bug nella mente dello sviluppatore piuttosto che nel compilatore. Senza offesa, ho fatto questo thread piuttosto per divertimento.

Quello che non capisco ora è questo.

Su cosa è sviluppato il compilatore MQL? Se è sviluppato in un linguaggio normale, i programmatori devono essere stati sconvolti, prima di tutto, dal fatto che le operazioni di moltiplicazione e aggiunta hanno la stessa priorità. Come hanno fatto a non accorgersene? Davvero tutti mettono le parentesi dove vogliono e dove no? A proposito, anche troppe parentesi rendono il codice più chiaro. E quando i vostri programmatori scrivono operazioni aritmetiche come 2+3*4 scrivono anche 2+(3*4), o Dio non voglia che un bug possa scivolare in un compilatore C++ e l'annidamento di 100 parentesi in un'espressione lo conti manualmente:)