peter naur programming as theory building