Dec. 20th, 2021

avva: (Default)
Программисты: как идут дела с Advent of Code у тех, кто продолжает этим заниматься?

Я где-то неделю не делал заданий из-за непредвиденных форс-мажоров. Теперь делаю по два задания в день, чтобы догнать. Сейчас закончил 15 и собираюсь к концу соревнования, к 25-му дню, догнать официальный график.

Пока что очень тяжелых не было. Мне нравится то, как каждый день разбит на две части, и вторая часть усложняет первую, но заранее не всегда ясно, как - она не открывается, пока не решишь правильно первую часть. Я обычно пытался угадать примерно, что будет сложнее во второй части, и подходит ли к этому мой дизайн. Два раза ошибся и пришлось для второй части писать по сути заново. Это было прикольно.

Я пишу на новом для себя языке Zig. Я бы описал его как попытку выжать максимум из парадигмы "C с человеческим лицом". По сути своей императивный язык без ООП и с ручной обработкой памяти, как C. Но, во-первых, хорошо продуманная система типов с runtime reflection и generic data structures. Во-вторых, очень много мелких удобств, облегчающих жизнь: type inference, безопасные массивы и указатели (проверка границ), безопасная работа с целыми типами (проверка на under/overflow, эксплицитное конвертирование), очень удобная поддержка slices, опциональные типы, гуманная обработка ошибок и еще много чего.

При всем при этом это остается языком довольно низкого уровня. Можно выстрелить себе в ногу и я несколько раз получал segmentation fault (держал указатель на элемент контейнера, не замечая того, и менял что-то в контейнере). Нет встроенного типа строки, которая передается по значению; вместо этого все передеают друг другу слайсы (указатель с длиной и известным типом) на существующую где-то в памяти строку, и чтобы создать другую ее копию, надо руками вызвать аллокатор.

В целом нравится!

April 2026

S M T W T F S
    1 2 3 4
5 6 7 89 1011
12131415161718
19202122232425
2627282930  

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 13th, 2026 04:13 pm
Powered by Dreamwidth Studios