Zig's Lovely Syntax 💬 Длинная дискуссия
Zig выглядит почти как Rust, но делает синтаксис ещё приятнее за счёт более простой семантики и ряда изящных решений.
Числа
Литералы 92
всегда имеют тип comptime_int
; при присваивании они неявно приводятся к нужному типу. Суффиксов нет.
Строки
Многострочные «сырые» строки пишутся через \\
в начале каждой строки; \
не экранируется, отступы не портятся, а лексер работает построчно.
Структуры
.{ .x = 1, .y = 2 }
— запись поля через .x =
совпадает с присваиванием, что позволяет грепом находить именно записи, а не чтения.
Типы
Все типы префиксные: u32
, [3]u32
, ?[3]u32
, *const ?[3]u32
. Разыменование постфиксное: ptr.*
.
Идентификаторы
Синтаксис @"имя с пробелом"
позволяет обходить ключевые слова и экспортировать любые имена.
Функции
fn add(x: i32, y: i32) i32
— без стрелки ->
, так как лямбд нет, а возвращаемый тип всегда обязателен. pub fn main() void {}
.
Переменные
const
и var
; часто используемое const
короче, чем в Rust, но всё же длиннее Kotlin-овского val
.
Комментарии (156)
- Обсуждение разделилось: кому-то синтаксис Zig кажется «прекрасным» минимализмом, другим — «шумным» и «капризным».
- Спор о порядке «имя: тип» vs «тип имя»: одни хотят видеть тип первым, другие — имя.
- Критика деталей: @-префиксы,
.{}
, отсутствие лямбд, перенос строк,orelse
без пробела. - Плюсы: raw-строки Zig решают проблему отступов; обработка ошибок через
try
нравится многим. - Сравнения: Kotlin, C#, Go, Rust, D — каждый считает «своё» лучше.
- Итог: «красота» синтаксиса субъективна и во многом привычна; после практики Zig начинает нравиться.
An AI-first program synthesis framework built around a new programming language
Universalis: язык, который читают эксперты, а пишут LLM
Автор: Erik Meijer
- Цель — дать знатокам предметной области возможность формулировать задачи естественным языком и получать готовые программы без участия разработчиков.
- Средство — язык Universalis (в честь Лейбница), исполняемый нейро-компьютером Automind. Код похож на Excel-формулы, обёрнутые в «живые» описания.
Пример
Вопрос: «Алиса купила килограмм яблок за @B и продала за @S. Какой процент прибыли @P?»
Ответ-Universalis:
[@D is (@S-@B)]
[@P is (@D/@B)*100]
Вводим @B=10, @S=17 → @P=70 %.
Особенности
- Синтаксис максимально приближен к естественному языку.
- Внутри — логические предикаты Prolog.
- Поддержка пред-/пост-условий для валидации данных.
- Среда «живого программирования» наподобие электронной таблицы: переключение между формулами и значениями.
Комментарии (14)
- Критика: статья расплывчата, синтаксис «языка» меняется, управляющие конструкции описаны прозой, примеры сводятся к «сделай всё за меня».
- Сомнения: это реальный язык или фантазия LLM?
- Опасения: упрощение ведёт к потоку «мусорного» кода.
- Технические детали: под капотом Kotlin DataFrames, возможна ad-hoc типизация.
- ACM Queue обвиняют в рекламе без упоминания ограничений.
- Перспектива: рано или поздно придётся заново изобретать модули, типы, ошибки, параллелизм и т.д.
Byte Buddy is a code generation and manipulation library for Java
Byte Buddy — библиотека для генерации Java-классов во время выполнения без компилятора. В отличие от встроенных средств, она позволяет создавать произвольные классы, а не только прокси по интерфейсам.
Поддержка
- Коммерческая: обучение, консультации, разработка — пишите rafael.wth@gmail.com.
- Общие вопросы: задавайте на Stack Overflow с тегом
byte-buddy
; для неформатных тем — рассылка. - Баги и фичи: issue tracker; пришлите пример кода и версию Java.
- Разработка: делайте pull-request; крупные фичи обсудите заранее в рассылке.
Проект ведёт Rafael Winterhalter с 2014 г.
Комментарии (27)
- В обсуждении сравнивают новый стандартный API для генерации байт-кода в JDK 24 (JEP 484) и старое решение ByteBuddy.
- Упоминают JavaPoet (теперь форк от Palantir) как удобный инструмент для генерации кода на уровне исходников.
- Micronaut показан примером фреймворка, избегающего runtime-генерации, делая всё во время компиляции.
- Поднимаются вечные споры «Java vs Kotlin»: кто-то считает Java «C для JVM», кто-то предпочитает Kotlin, а LLM якобы лучше понимают Java.