Sobre o debate de tipos não anuláveis

Eu continuo ouvindo as pessoas falarem sobre como os tipos de referência não anuláveis resolveriam tantos bugs e tornaram a programação muito mais fácil. Até o criador de null chama isso derro de bilhões de dólares e Spec # introduziu tipos não anuláveis para combater esse problem

EDITAR Ignore meu comentário sobre Spec #. Eu não entendi como isso funciona.

EDIT 2: Eu devo estar falando com as pessoas erradas, eu realmente esperava que alguém discutisse com: -)

Então, eu acho que, sendo minoria, estou errado, mas não consigo entender por que esse debate tem algum mérito. Eu vejo nulo como uma ferramenta de busca de erros. Considere o seguinte

class Class { ... }

void main() {
    Class c = nullptr;
    // ... ... ... code ...
    for(int i = 0; i < c.count; ++i) { ... }
}

BAM! Violação de acesso. Alguém esqueceu de inicializarc.

Agora considere isso:

class Class { ... }

void main() {
    Class c = new Class(); // set to new Class() by default
    // ... ... ... code ...
    for(int i = 0; i < c.count; ++i) { ... }
}

Whoops. O loop é ignorado silenciosamente. Pode demorar um pouco para rastrear o problema.

Se sua turma estiver vazia, o código falhará de qualquer maneira. Por que o sistema não informa a você (ainda que de maneira grosseira), em vez de ter que descobrir você mesm

questionAnswers(8)

yourAnswerToTheQuestion