Unlike many programs you may be familiar with, Blender is not monolithic and static. You can extend its functionalities without having to modify the source and recompile.
There are two ways of extending Blender: Python scripting and Binary Plugins. The former method being the preferred and most widely used. This Part will describe both.