C / C ++: chi utilizza le macro degli operatori logici da iso646.h e perché? [chiuso]

4

Ci sono stati alcuni dibattiti al lavoro sull'uso dei meriti dell'uso delle ortografie alternative per gli operatori logici C / C ++ in iso646.h :

and        &&
and_eq     &=
bitand     &
bitor      |
compl      ~
not        !
not_eq     !=
or         ||
or_eq      |=
xor        ^
xor_eq     ^=

Secondo Wikipedia , queste macro facilitano la digitazione di operatori logici in lingue internazionali (non statunitensi?) e non Tastiere QWERTY. Tutto il nostro team di sviluppo è nello stesso ufficio di Orlando, Florida, USA e da quello che ho visto tutti noi utilizziamo il layout di tastiera QWERTY inglese americano; anche Dvorak fornisce tutti i caratteri necessari.

I sostenitori dell'uso delle macro iso646.h affermano che dovremmo farlo perché fanno parte degli standard C e C ++. Penso che questo argomento sia discutibile dato che digraphs e trigraphs fanno anche parte di questi standard e non sono nemmeno supportati di default in molti compilatori.

La mia motivazione per opporsi a queste macro nel nostro team è che non ne abbiamo bisogno poiché:

  • Tutti i membri del nostro team utilizzano il layout di tastiera QWERTY in inglese americano;
  • Libri di programmazione C e C ++ degli Stati Uniti menziona a malapena iso646.h , se non del tutto; e
  • i nuovi sviluppatori potrebbero non avere familiarità con iso646.h (questo è previsto se provengono dagli Stati Uniti).

/ rant

Infine, alla mia serie di domande:

  • Qualcuno in questo sito utilizza le macro operatore logico iso646.h ? Perché?
  • Qual è la tua opinione sull'uso delle macro operatore logico iso646.h nel codice scritto e mantenuto sulle tastiere QWERTY in inglese americano?
  • La mia analogia digraph e trigraph è un argomento valido contro l'utilizzo di iso646.h con i layout di tastiera QWERTY in inglese americano?

EDIT:

Ho perso due domande simili in StackOverflow:

posta Jaime Soto 11.02.2011 - 19:20
fonte

4 risposte

8

L'unica cosa che noto immediatamente è che and e bitand sono molto più facili da mantenere dritti di && e & . Lo stesso vale per la coppia or . L'utilizzo di questo ridurrà il numero di bug stupidi, non attenti all'obbiettivo nella tua base di codice.

    
risposta data 11.02.2011 - 19:27
fonte
7

Ho aggiunto il supporto per "e", "o", ecc. quando ho iniziato a lavorare su un compilatore C ++. Non è una caratteristica che viene mai realmente utilizzata, o che era stata ignorata dai clienti e dagli utenti prima che l'avessi aggiunta!

Personalmente, mi piacciono gli operatori "and" e "or", perché scrivo anche codice in Python. Ho anche aggiunto quella forma di operatore in un linguaggio di scripting che ho progettato e implementato sulla base del fatto che era leggibile (ma anche, era la mia preferenza personale).

    
risposta data 12.02.2011 - 00:08
fonte
2

Per me è completamente inutilizzabile. È un nuovo linguaggio da apprendere, in cui devi riflettere su cosa significhi realmente and , è & o && ? Se fosse così fin dall'inizio, sarebbe OK, ma per ora lo vedo come un grosso passo indietro.

O forse aggiungi

#define begin {
#define end }

e possiamo passare a Pascal. Mentre iso646.h può alleviare i problemi con le tastiere programmabili-ostili, difficilmente può risolverli. Cambiare il codice sorgente a causa della mancanza di una tastiera adeguata e il fatto di non essere in grado di definire correttamente le chiavi necessarie è sbagliato. Lo stile eccessivamente dettagliato può rendere un programma leggibile per un principiante che non conosce correttamente la lingua. Ma per un programmatore avanzato lo rende più difficile da leggere, poiché il programma si trasforma in una lunga sequenza di parole, parole, parole ... con operatori che sembrano le stesse variabili. Portato a un estremo:

a times x plus b times y plus c times z

e

a*x + b*y + c*z

Cosa c'è di meglio?

    
risposta data 12.02.2011 - 02:30
fonte
2

Li stavo usando da un po 'di tempo mentre stavo compilando con g++ , ma a un certo punto ho optato per MSVC e non funzionerebbe perché apparentemente questa intestazione non è inclusa per impostazione predefinita.

Vivo in Francia e ho una tastiera QWERTY, ammetto che quelle macro possono essere molto utili, ma non risolvono il problema di dover digitare "[] {} ()".

La mia opinione è che rende il codice molto più leggibile, specialmente per ! , || e && operatori.

    
risposta data 11.02.2011 - 20:57
fonte

Leggi altre domande sui tag