The Spirit of C: An Introduction to Modern Programming