DevPrep

Все темы › Основные понятия программирования

Высокоуровневый язык программирования

Junior

Суть

Высокоуровневый язык скрывает детали машины — регистры, адреса, ручное управление памятью — за абстракциями: типами, функциями, коллекциями, объектами. Одна строка names.map { $0.uppercased() } разворачивается в сотни машинных инструкций, но программист думает о задаче, а не о процессоре. Цена — зависимость от компилятора/рантайма и меньше контроля над «железом».

Где Swift на этой шкале

Swift — высокоуровневый, но компилируемый в нативный код (через LLVM), без виртуальной машины и сборщика мусора:

// Высокий уровень: тип выведен, память и счётчики ссылок — забота компилятора
let names = ["Ann", "Bob"]
let upper = names.map { $0.uppercased() }
print(upper)                           // ["ANN", "BOB"]

// Низкий уровень доступен, но явно и с пометкой Unsafe
let p = UnsafeMutablePointer<Int>.allocate(capacity: 1)
p.initialize(to: 42)
print(p.pointee)                       // 42
p.deinitialize(count: 1)
p.deallocate()                         // забыл — утечка, компилятор не спасёт

Сравнение для контекста

На что смотрит интервьюер

Понимаете ли вы, что «высокоуровневый» не значит «медленный»: Swift сравним с C++ по скорости, потому что абстракции разрешаются на этапе компиляции. И знаете ли вы, какие именно вещи Swift скрывает (ARC, layout, диспетчеризация), чтобы уметь их увидеть, когда профилировщик покажет проблему.

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store