Hacker News Digest

03 ноября 2025 г. в 10:40 • maximullaris.com • ⭐ 124 • 💬 42

OriginalHN

#awk#text-processing#scripting#unix#programming-languages#python

Awk Technical Notes (2023)

AWK был спроектирован без сборщика мусора, что делает его реализацию простой, быстрой и предсказуемой по потреблению памяти. Это ограничение запрещает возвращать массивы из функций, разрешая только скалярные значения, хотя массивы можно передавать в функции для модификации. Интересно, что переменные становятся локальными, если добавляются в параметры функции, что также служит механизмом автоматического освобождения ресурсов. Брайан Керниган сожалеет об этом дизайне, но на практике он работает хорошо.

В AWK реализована автовивификация — массивы объявляются простым использованием переменной как массива, а переменные неявно объявляются в зависимости от контекста. Это делает язык идеальным для компактных однострочников. Синтаксис языка содержит любопытные особенности: $ является унарным оператором, который может применяться к выражениям, и единственным оператором, разрешенным слева от присваивания. Для пользовательских функций нельзя ставить пробел перед скобкой, в отличие от встроенных, из-за решения использовать пустой оператор для конкатенации строк.