Saya tidak benar-benar yakin dalam retrospeksi, tetapi apakah update
itu generik atau apakah X
abstrak (mis: dikloning dan dihancurkan) - yaitu, jika update
tidak dapat mengetahui apa pun yang konkret X
, maka untuk semua tujuan praktis saya akan menggambarkannya sebagai memiliki yang kuat jaminan pengecualian keamanan. Paling tidak itu dekat dengan jaminan-keamanan yang kuat yang pernah Anda dapatkan dalam konteks abstrak tanpa x-raying tipe data.
Namun, X
konkret, sehingga membuat pertanyaan ini jauh lebih kabur. Saya masih tergoda untuk mengatakan bahwa update
"memiliki jaminan keselamatan pengecualian yang kuat" karena melakukan segala yang dapat dilakukannya untuk menegakkannya. Apakah itu terdengar seperti pembicaraan gila? Itu berlaku untuk saya, tetapi saya tidak bisa mengatakannya lebih baik.
Terutama dalam konteks lingkungan tim di mana satu penulis mengimplementasikan update
dan yang lainnya mengimplementasikan X
, tidak ada yang bisa memberikan jaminan keselamatan-pengecualian yang kuat karena X
dapat dimodifikasi dengan cara yang melanggar jaminan dengan cara yang sepenuhnya di luar kendali update
. Untuk tujuan praktis, saya pikir jika update
melakukan apa saja yang dapat dan harus memutar kembali efek sampingnya di jalur yang luar biasa, praktis memberikan jaminan keselamatan pengecualian yang kuat.
Kalau tidak, jaminan keselamatan pengecualian yang kuat menjadi sesuatu yang tidak praktis untuk diberikan dalam banyak skenario. Berbagai hal dapat berubah di luar kendali fungsi. Hal-hal bisa abstrak dengan cara di luar pengetahuan fungsi. Seluruh jaminan hampir tidak mungkin diberikan di mana pun. Dalam hal ini, dapatkah kita mengatakan bahwa jaminan pengecualian yang kuat akan update
menyebarkan tanggung jawab X
untuk dipatuhi, atau apakah itu update
yang diperlukan untuk mengetahui bagaimana X
akan diterapkan setiap saat? Saya tidak tahu Bagaimanapun juga ini sangat tidak praktis, dan saya tidak suka ketidakpraktisan.
Jadi saya akan pergi dengan minyak mentah, ya, " update
adalah pengecualian-aman, tetapi X
pergi fubar dan mengacaukan segalanya. update's
Setidaknya itu bukan kesalahan. Jangan menuntut penulis pembaruan! Menuntut penulis X
!" . Saya ingin menggambarkan X
sebagai sekadar fubar di sini, dan update
mungkin memberikan jaminan keselamatan pengecualian yang kuat yang dikacaukan oleh fakta bahwa X
fubar. Yaitu, kecuali ada pemahaman tingkat antarmuka yang sangat sulit bahwa X's
destructor dirancang untuk melempar, dalam hal ini saya tidak tahu bagaimana menggambarkannya kecuali sebagai "masalah besar". Saya pikir kita perlu cetakan yang bagus dan disclaimer untuk mendapatkan jaminan ini.pembaruan memberikan jaminan keamanan-pengecualian yang kuat asalkan [...]. Tidak ada pengembalian uang jika ini bukan masalahnya!
Ini seperti pertanyaan filosofis bagi saya, menarik untuk dipikirkan tetapi mungkin satu tanpa jawaban yang sempurna. Dan apa pula jaminannya? Bisakah kita menjamin sesuatu? Saya mungkin menjamin bahwa minum bir akan membuat saya mabuk dan itu kelihatannya benar setiap saat, tetapi bagaimana jika makhluk luar angkasa mengintervensi dan menggunakan semacam teknologi asing yang membuat saya sadar tidak peduli berapa banyak saya minum? Saya tidak bisa menjaminbahwa ini tidak akan terjadi. Saya hanya dapat mengatakan bahwa ini sangat mustahil dan bahwa jika peristiwa seperti itu terjadi, saya tidak berdaya melawannya. Saya melakukan bagian saya. Saya minum bir saya. Aku seharusnya mabuk. Saya sangat menjaminnya. Tapi itu tidak pasti. Selalu ada beberapa kemungkinan, betapa pun jauh dari itu, bahwa jaminan itu mungkin tidak berlaku. Bagaimana dengan keamanan benang? Nah, bagaimana jika pesawat ruang angkasa alien datang dan zaps perangkat keras kami dan mengatur ulang instruksi dalam memori sehingga fungsi thread-safe yang sudah ada sekarang tidak lagi thread-safe saat runtime? Saya tidak dapat menjamin bahwa ini tidak akan terjadi. Tetapi saya akan menjamin keselamatan tanpa ada masalah tanpa harus membahas tentang kapal ruang angkasa alien, karena itu membuat orang merasa senang dan diyakinkan, dan apa yang saya katakan adalah bahwa saya '
Descartes pernah berkata, "Karena itu, saya pikir begitu." Bagaimana dia tahu? Bagaimana jika dia tidak? Dia bisa menjadi "tidak" tapi mungkin "tidak" dapat "berpikir". Saya bahkan tidak tahu apakah saya ada. Apa sih artinya berpikir? Itu seperti kata yang digunakan orang untuk menggambarkan beberapa proses yang tampaknya berlangsung secara introspektif dan tampak seolah-olah kita, yang mungkin bahkan tidak ada, sedang membuat keputusan.
Bagaimana jika kita semua hanya bit dan byte pada beberapa mesin? Seperti si pirang atau berambut cokelat di Matrix. Ngomong-ngomong, bagaimana bisa rambut pirang atau khususnya rambut coklat disimpan dalam aliran karakter yang begitu kecil? Apakah mereka suka UTF2048? Itu semacam aliran karakter alien, tetapi tampaknya tidak terlalu banyak karakter unik. Mungkin itu semacam panggilan fungsi. Lagi pula, saya tidak yakin kami bisa menjamin apa pun. Itu semua relatif terhadap apa yang kita yakini benar.