Why are Null References the "Billion Dollar Mistake"?

Tony Hoare introduced Null references in ALGOL W back in 1965 “simply because it was so easy to implement”. He talks about that decision considering it “my billion-dollar mistake”. Here is what he said in a talk in 2009 I call it my billion-dollar mistake. At that time, I was designing the first comprehensive type system for references in an object-oriented language. My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years. Refs Tony Hoare @ Infoq (2009)

September 9, 2024 · 1 min

Rayon in Rust

What is Rayon? A data-parallelism library for Rust Super lightweight Makes it easy to convert a sequential computation into a parallel one No data races A quick example Parallel iterators Rayon provides drop in replacements for common operations For example, just replace iterator.iter() to iterator.par_iter() and let rayon do its thing. use rayon::prelude::*; fn sum_of_squares(input: &[i32]) -> i32 { input.par_iter() .map(|&i| i * i) .sum() } ...

August 24, 2024 · 1 min

Points in Qdrant

Points are the central entity in Qdrant A point consists of Either A default unnamed vector Or multiple named vectors An optional Json payload A point id - which can be either a uuid or a 64-bit unsigned integer Qdrant supports dense and sparse vectors Dense vectors are fixed length vectors that have a fixed length Sparse vectors are variable length vectors that are mostly zeros

August 20, 2024 · 1 min

Reflection

Reflection refers to the ability of a program to examine and modify its structure, properties, and behavior at runtime Reflection is used in meta programming Reflection in python dir() inspect module isfunction() ismethod() getargspec()

August 20, 2024 · 1 min