accounts = map()
function create_account(int account_number) { accounts[account_number] = 0}
function deposit(int account_number, int amount) { accounts[account_number] += amount}
function withdraw(int account_number, int amount) { accounts[account_number] -= amount}
Pretty simple right?
Well, not if you want this to have transactional semantics, to scale to millions of transactions per second, to be secure, to run reliably for a decade with .0001% downtime, etc. I would dare say that it's nearly impossible to actually write the above program in a way that is reliable, secure, available in the ways that we want common business applications to be.
Why is this still so hard?