Não tenho muita certeza em retrospecto, mas se update
era genérico ou X
abstrato (ex: clonado e destruído) - ou seja, se update
não pudesse saber nada de concreto X
, então, para todos os fins práticos, eu o descreveria como um forte garantia de exceção-segurança. No mínimo, isso é o mais próximo de uma forte garantia de exceção de segurança que você jamais terá em um contexto abstrato sem radiografar um tipo de dados.
No entanto, X
é concreto, o que torna essa pergunta muito mais confusa. Ainda estou tentado a dizer que update
"tem uma forte garantia de segurança de exceção", pois está fazendo tudo o que pode fazer para cumpri-la. Isso soa como uma conversa maluca? Faz comigo, mas na verdade não posso melhorar muito.
Especialmente no contexto de um ambiente de equipe em que um autor implementa update
e o outro implementa X
, nada poderia fornecer uma forte garantia de exceção-segurança, pois X
poderia ser modificado de maneira a quebrar a garantia de maneiras completamente fora do controle de update
. Para fins práticos, acho que, se update
fizer tudo o que puder e puder reverter seus próprios efeitos colaterais em caminhos excepcionais, praticamente fornecerá uma forte garantia de segurança de exceção.
Caso contrário, a forte garantia de segurança de exceção se tornará algo impraticável para fornecer em muitos cenários. As coisas podem mudar fora do controle da função. As coisas podem ser abstratas de maneiras além do conhecimento da função. Toda a garantia seria quase impossível de fornecer em qualquer lugar. Nesse caso, poderíamos dizer que a forte garantia de exceção update
propaga a responsabilidade X
de cumprir, ou update
é necessário saber como X
será implementado o tempo todo? Eu não sei. Isso é tudo muito impraticável de qualquer maneira, e eu não gosto de impraticabilidades.
Então, eu vou com o bruto, sim, " update
é seguro para exceções, mas X
foi fubar e estragou tudo. Não é update's
culpa, pelo menos. Não processe o autor da atualização! Sue the author of X
!" . Eu gostaria de descrever X
como simplesmente sendo fubar aqui e update
como possivelmente fornecendo uma forte garantia de segurança de exceção, que está sendo ferrada pelo fato de X
ser fubar. Ou seja, a menos que haja um entendimento muito difícil no nível da interface que o X's
destruidor foi projetado para lançar, nesse caso, não tenho idéia de como descrevê-lo, exceto como um "grande problema". Acho que precisamos de algumas impressões e isenções de responsabilidade para fornecer essas garantias.atualização fornece uma forte garantia de exceção-segurança, desde que [...]. Nenhum reembolso se este não for o caso!
Isso é como uma pergunta filosófica para mim, interessante de se pensar, mas talvez uma sem resposta perfeita. E o que são garantias, afinal? Podemos garantir alguma coisa? Posso garantir que beber cerveja me deixe bêbado e isso possa parecer verdadeiro o tempo todo, mas e se um extraterrestre intervir e usar algum tipo de tecnologia alienígena que me deixe sóbrio, por mais que eu beba? Não posso garantirque isso não vai acontecer. Só posso dizer que isso é altamente improvável e que, se esse evento acontecer, eu ficaria impotente contra ele. Eu fiz a minha parte. Eu bebi minha cerveja. Eu deveria ficar bêbado. Eu garanto isso fortemente. Mas não é certo. Sempre há alguma probabilidade, embora astronomicamente remota, de que a garantia não seja verdadeira. E quanto à segurança da linha? Bem, e se a espaçonave alienígena aparecer e zapear nosso hardware e reorganizar as instruções na memória, de modo que uma função formalmente segura para threads não seja mais segura para threads em tempo de execução? Não posso garantir que isso não aconteça. Mas eu garanto a segurança da linha, independentemente, mesmo sem entrar em detalhes sobre naves espaciais alienígenas, porque isso faz as pessoas se sentirem bem e tranqüilizadas, e o que estou dizendo é que eu '
Descartes disse uma vez: "Penso que sim". Como ele sabe? E se ele não estiver? Ele poderia ser um "não sou", mas talvez "não" possa "pensar". Eu nem sei se eu existo. O que significa pensar, afinal? É como uma palavra que as pessoas usam para descrever algum processo que parece continuar introspectivamente e parece que nós, que nem existimos, estamos tomando decisões.
E se todos nós somos apenas bits e bytes em alguma máquina? Como aquela loira ou morena na Matrix. A propósito, como uma loira ou especialmente morena pode ser armazenada em um fluxo tão pequeno de caracteres? Eles são como UTF2048? Era algum tipo de fluxo alienígena de personagens, mas não parecia haver muitos personagens únicos. Talvez seja algum tipo de chamada de função. De qualquer forma, não tenho certeza se podemos garantir alguma coisa. É tudo relativo ao que acreditamos ser verdade.