Static vs. dynamic typing: an introduction