> Often I hear people say "well pointer size is constant, so log(64) = O(1)", but that is misleading: if you assume constant pointer size, any function of that is O(1) as well, so any bounded algorithm is O(1). The notation just becomes meaningless.
It's not meaningless. We're designing for a real machine here, and the actual goal is to bound the runtime to a small known constant.
You're right that big O is not great notation for this. Hell, even O(1) isn't good enough because the constant factor is unspecified.
But the misuse of notation does not invalidate the problem. Taking the worst case for a log leaves you with a feasible runtime. Taking the worst case for n or n^2 or "any bounded algorithm" overwhelmingly does not.
> Asymptotic bounds must be presented and understood in context.
Yes, context is exactly what keeps it meaningful!