Программирование: абстракции, семантика и исключения