Perché una lingua dovrebbe consentire al programmatore di gestire la divisione per zero

3

Questo succede in Javascript, per esempio, che la divisione per zero non è gestita dal linguaggio stesso. C'è un motivo valido per questo?

Vedo che questa è un'eccezione di base che un linguaggio dovrebbe essere in grado di gestire (essi gestiscono anche lo 0/0 come NaN NaN).

or take the square root of a negative number or use arithmetic operators with non-numeric operands that cannot be converted to numbers.

    
posta CppLearner 04.08.2011 - 04:14
fonte

3 risposte

6

Nella mia esperienza, questo genere di cose raramente avvengono a qualsiasi tipo di limitazione tecnica, ma più a causa di credenze / idee architettoniche dei progettisti di linguaggi.

Sì, la lingua potrebbe gestire la divisione per zero ... ma forse pensavano che sarebbe stato "migliore" se il linguaggio non fosse così e gli sviluppatori dovessero definire in modo esplicito cosa dovrebbe accadere in uno scenario del genere.

In modo simile, Objective-C "gestisce" il tentativo di chiamare un oggetto inesistente senza alcun reclamo o avvertimento, ma molti sviluppatori di C # si accorgono di ciò come possibile funzione linguistica.

Tutto dipende da dove ti trovi e da cosa stai cercando di ottenere.

    
risposta data 04.08.2011 - 07:02
fonte
0

JavaScript è in realtà un buon candidato per quel tipo di comportamento perché esegue codice da un'origine sconosciuta / non attendibile. Consentire alle divisioni non supervisionate consentirebbe al codice nelle pagine Web di forzare l'interprete a dividere per zero, facendo sì che la CPU innalzi un interrupt che a sua volta farà sì che il sistema operativo siluri il processo dell'interprete. Se il browser che esegue l'interprete non sequestrerà l'interprete nel proprio processo, verrà affondato.

Penso che in questo caso cada sotto il titolo di mantenere la stabilità a spese del programmatore, dovendo capire che fare un'operazione illegale risulterà in una risposta sbagliata invece di avere l'intera faccenda kablooey .

    
risposta data 04.08.2011 - 15:46
fonte
0

Il problema è decidere quale sia il risultato corretto. Chi altro se non il programmatore può prendere questa decisione. Il designer del linguaggio o lo scrittore di compilatori non possono.

es.

int32 x= 0/0 ; 
int32 x= 1/0 ; 

È 0 o NaN o Infinity rispettivamente - se NaN o Infinity, come lo rappresenti, il suo numero binario a 32 bit?

    
risposta data 04.08.2011 - 11:09
fonte

Leggi altre domande sui tag