Hacker News Digest

Обновлено: 28 ноября 2025 г. в 08:55

Постов: 4635 • Страница 334/464

Writing a C compiler in 500 lines of Python (2023) (vgel.me)

Краткий обзор компилятора C на 500 строк Python

Автор бросил себе вызов — написать компилятор C за 500 строк Python. Получилось трудно, но рабочий результат.

Архитектура

  • Однопроходный: парсинг и генерация кода идут одновременно. AST не строится, экономим строки.
  • Цель — WebAssembly: выбор странный (goto нет, стек-VM), но интересный. Пришлось реализовать собственный стек в памяти, т.к. стек WASM нельзя адресовать.

Что вырезали

  • switch, do/while, goto, break/continue, enum, union, typedef, const/volatile, static, inline, sizeof, float, double, long, long long, void *, массивы, указатели на функции, структуры в структурах, varargs, макросы, #include, стандартную библиотеку.

Лексер

Регулярки разбивают исходник на токены: ключевые слова, идентификаторы, числа, операторы, строки и символы.

Парсер

Рекурсивный спуск. Пример префиксного ~:

elif lexer.try_next("~"):
    meta = load_result(prefix())
    emit("i32.const 0xffffffff")
    emit("i32.xor")
    mask_to_sizeof(meta.type)
    return meta

Семантика типов

Поддержаны int, char, short, int *, char *, struct. Все сводится к 32-битным целым. Структуры выравниваются по 4 байта.

Управление памятью

  • Локальные переменные кладутся в стек.
  • Глобальные — в секцию data.
  • malloc/free нет, но можно вызвать внешнюю malloc из JS.

Циклы for

Из-за отсутствия goto пришлось генерировать вложенные блоки WebAssembly и использовать br_if для break/continue.

Функции

  • Поддерживаются int аргументы и возвращаемые значения.
  • Вызовы через call.
  • Рекурсия работает.

Сборка и запуск

python compiler.py input.c > output.wat
wat2wasm output.wat -o output.wasm
node run.js output.wasm

Итог

500 строк Python компилируют подмножество C в WASM. Код читаемый, эксперимент удался.

by ofou • 03 сентября 2025 г. в 16:28 • 231 points

ОригиналHN

#python

Комментарии (74)

  • Пользователь удивился, что даже GCC и Clang не реализуют весь стандарт C.
  • Обсуждали, что однопроходный компилятор проще, но без оптимизаций, и что C изначально проектировался именно под такой подход.
  • Упомянули книгу «Writing a C Compiler» Норы Сандлер как хорошее руководство.
  • Кто-то сравнил компиляторы с лингвистикой, другие отметили, что C несёт 50-летний технический долг.
  • Шутили о написании Python-компилятора на C за 500 строк и о том, что без импортов это будет «обёртка», а не компилятор.

Nuclear: Desktop music player focused on streaming from free sources (github.com) 🔥 Горячее 💬 Длинная дискуссия

nuclear — свободный музыкальный стриминговый плеер, который сам находит бесплатные треки.

Основное

  • Лицензия: GPLv3
  • Язык: TypeScript/Electron
  • Платформы: Windows, macOS, Linux

Возможности

  • Поиск и воспроизведение из YouTube, SoundCloud, Bandcamp, Jamendo
  • Плейлисты, очередь, «любимые» треки
  • Last.fm-скробблинг, Libre.fm
  • Тёмная/светлая темы, плагины, Discord Rich Presence

Установка

  • Скачать релиз с GitHub
  • Через AUR: yay -S nuclear-player-bin
  • Snap: sudo snap install nuclear

Сборка из исходников

git clone https://github.com/nukeop/nuclear.git
cd nuclear
npm install
npm run build
npm start

Сообщество

by indigodaddy • 03 сентября 2025 г. в 15:54 • 354 points

ОригиналHN

#github

Комментарии (247)

  • Пользователи жалуются на постоянные баги, ошибки JavaScript и невозможность воспроизвести треки.
  • Критика Electron: 300 МБ ОЗУ при запуске, хотя разработчики обещают переход на Tauri.
  • Spotify-поиск сломан с мая, автор не собирается чинить; поддержки авторизации в YouTube Music нет.
  • Несколько человек считают UI перегруженным и неинтуитивным; инструкции под Mac вызывают недоумение.
  • В отзывах на сайте даже негативные комментарии («фак всем музыкантам») оставлены без цензуры, что вызывает споры.

Understanding Transformers Using a Minimal Example (rti.github.io) 🔥 Горячее

Принцип работы Transformer на мини-модели

Автор: Robert Timm
Лицензия: MIT, код и данные — github.com/rti/gptvis

Идея

Показать, как внутри Transformer токены превращаются в предсказания, используя крошечную модель и наглядные визуализации.

Упрощения

  • Данные: 94 слова об 4 фруктах и их вкусах.
    Примеры: lemon tastes sour, i like spicy so i like chili.
    Валидация: i like spicy so i like chili (проверка, что связь «spicy-chili» выучена, а не запомнена).
  • Токенизация: 19 слов-токенов без BPE.
    Список: is, the, orange, chili, sour, of, taste, apple, sweet, juicy, a, spicy, so, like, tastes, i, lemon, UNKNOWN, PADDING.
  • Архитектура: декодер-only, 2 слоя × 2 головы, эмбеддинги 20-D, ≈10 000 параметров, tied embeddings (как у Gemma).

Обучение

10 000 шагов → низкий loss; при подсказке «i like spicy so i like» модель выдаёт «chili».

Визуализация

Каждый 20-D вектор кодируется пятью цветными «коробками» (4 числа на коробку).
Эмбеддинги вкусов (juicy, sour, sweet, spicy) получают уникальные, но похожие формы, что отражает их семантическую близость.

by rttti • 03 сентября 2025 г. в 15:30 • 257 points

ОригиналHN

#llm

Комментарии (16)

  • Читатели признали визуализацию «пять сложенных коробок» за креатив, но сочли объяснение трансформеров слишком кратким и не добавившим понимания.
  • Предложены альтернативы: интерактив от Georgia Tech, Illustrated Transformer, видео 3Blue1Brown и книга Себастьяна Рашки.
  • Некоторые рекомендовали разбить материал на длинное практическое занятие вместо 10-минутного чтения.

A Random Walk in 10 Dimensions (2021) (galileo-unbound.blog)

Случайное блуждание в 10 измерениях

Представьте точку, скачущую в 10-мерном пространстве: каждый шаг — равновероятный сдвиг по любой из координат. В одномерном случае расстояние от начала растёт как √n, где n — число шагов. В d измерениях это правило превращается в √(n·d): «объём» доступного пространства растёт, но каждая координата всё ещё дрожит независимо.

Интуиция подсказывает, что в 10D точка должна «улететь» далеко, однако симуляция показывает иное: медианное расстояние после 1000 шагов — всего ≈10 единиц. Почему? Плотность вероятности в высоких размерностях концентрируется в тонкой оболочке гиперсферы; случайные векторы почти ортогональны, и их длины редко бывают экстремальными.

Этот эффект лежит в основе многих задач: от статистической механики до машинного обучения, где «проклятие размерности» заставляет методы искать структуру в разреженных данных.

by just_human • 03 сентября 2025 г. в 15:20 • 116 points

ОригиналHN

#mathematics#statistics#machine-learning#random-walks#dimensionality#gradient-descent#stochastic-gradient-descent#hamiltonian-monte-carlo#curse-of-dimensionality

Комментарии (16)

  • В высоких размерностях случайное блуждание почти вся «растягивается» вдоль первых двух главных компонент (>80 % дисперсии), что противоречит интуиции.
  • Уточнили модель шага: выбирается одно из 10 измерений (вер. 1/10), затем направление ±1 (вер. ½), т.е. 20 возможных переходов.
  • Ошиблись в расчёте «горных пиков» в 10-D решётке: правильная вероятность ≈ 2 %, а не 18 %.
  • Обсудили, почему такие эффекты делают глубокое обучение возможным: случайные блуждания по ландшафту потерь помогают вместе с градиентным спуском.
  • Упомянули связанные методы (SGD, Hamiltonian MCMC) и классическую теорему Пойа: в 1-2-D блуждание возвращается, в ≥3-D может «потеряться навсегда».

Claude Code: Now in Beta in Zed (zed.dev) 🔥 Горячее 💬 Длинная дискуссия

Claude Code в Zed — бета уже доступна
Пользователи давно просили интеграцию Claude Code, и теперь она встроена в панель ассистента Zed.

Плюсы

  • Без терминала — всё внутри редактора.
  • ACP-протокол — агенты работают через открытый стандарт Anthropic.
  • Любые агенты — подключайте собственные или сторонние модели, не ограничиваясь Claude.

Попробуйте прямо сейчас.

by meetpateltech • 03 сентября 2025 г. в 15:07 • 651 points

ОригиналHN

Комментарии (398)

  • Пользователи хвалят скорость и архитектуру Zed, но жалуются на «сырую» интеграцию Claude Code: нет /compact, Plan Mode, нормального управления контекстом и поддержки подписки вместо API-ключей.
  • Критика UI/UX: шрифты, отсутствие undo для удаления файлов, слабый Git-интерфейс, нет вертикальных вкладок, неудобные настройки.
  • Автодополнение и AI-фичи уступают Cursor и Copilot; многие поэтому остаются на VS Code/JetBrains.
  • Нет Windows-версии, SSH-удалёнки и запуска агентов на сервере, что блокирует командную работу.
  • VC-финансирование вызывает опасения, что приоритет отдан «AI ради AI», а не зрелости продукта.

A queasy selling of the family heirlooms (commonreader.wustl.edu)

Продать наследство

Стерлинг и серебро мамы — вещи, что я унаследовала как священный долг. Ирландская прабабка отработала билет в Америку горничной, подсмотрела у богачей «правильный» быт и передала дальше. В каждом поколении вкус превышал деньги, покупали редко, но с жертвой.

Я не хочу полировать приборы и достаю фарфор только тогда, когда гости в панике. Розовый Lenox, купленный мамой с надеждой на блеск, никому не нужен: ни друзьям, ни интернету. После смерти отца «паттерн» жизни разбился. Я выбрала крепкую посуду и жизнь попроще.

Тридцать лет сервиз пылится в буфете, а кофейный набор чернеет в подвале. Я постарела, и мои планы «чаще принимать гостей» тускнеют вместе с серебром. Решила: расплавлю, выручу деньги на живые дела.

В ломбард «Midwest Money» — приличное место, где прошлое превращают в кэш без вопросов — я чувствую себя вором. Под скользит к центу тяжёлый «дип-чиллер» (ИИ не знает слова, которому мама дала душу). За всё серебро — 28 долларов, за коробочку стерлинга — тысяча.

Ценность оказалась капризной: в мамино время она казалась вечной.

by ilamont • 03 сентября 2025 г. в 14:55 • 86 points

ОригиналHN

Комментарии (74)

  • Наследуемые «ценные» вещи (фарфор, серебро, антиквариат) почти ничего не стоят на рынке, но требуют массы времени, денег и нервов на вывоз/хранение/продажу.
  • Родители собирали коллекции как символ «достатка» и воспоминаний; для детей это просто груз, особенно если жильё меньше и денег на содержание нет.
  • Популярный выход: снять видео с историями, оставить 1-2 памятных предмета, остальное — продать, пожертвовать или выбросить, пока родители живы (шведское «death cleaning»).
  • Аренда складов превращается в многолетнюю дыру в бюджете: $5 000/год за 10×10 футов, внутри — масс-маркет-коллекции, которые никто не хочет.
  • Главное правило: не быть рабом вещей; если предмет не приносит радости или пользы — избавляться без угрызений.

Show HN: Writing Arabic in English (sherifelmetwally.com)

Как я сделал фонетическую арабскую клавиатуру

Фонетическая раскладка — это когда английские клавиши отображаются на арабские звуки.
Проблемы: арабский пишут справа налево, буквы сочетаются в слове, 11 букв не имеют англогодных пар и ещё есть «хамза» и диакритики.

  1. RTL: direction: rtl; — готово.
  2. Скрипт: браузер сам стыкует буквы (Safari требует ZWJ).
  3. Прямые пары (17 букв):
    b → ب, t → ت, s/c → س и т. д.
  4. «Эмфатические» (5): произносятся в глотке, похожи на базовые, но «сильнее». Назначил заглавные:
    H → ح, S → ص, D → ض, T → ط, Z → ظ.
  5. «Уникальные» (6): добавляем точки к уже назначенным.
    sh → ش (с + 3 точки), th → ث (т + 3 точки), dh → ذ (д + 1 точка), kh → خ (ḥ + 1 точка), 3 → ع, gh → غ (ع + 1 точка).

Код: две таблицы — обычная и шифт; по нажатию выбираем нужную и отдаём UTF-символ.

by selmetwa • 03 сентября 2025 г. в 14:04 • 95 points

ОригиналHN

#transliteration#arabic#keyboard#rtl#css#utf-8

Комментарии (15)

  • Обсуждение крутится вокруг новой «арабской QWERTY»-раскладки, которая привязивает арабские буквы к латинским по принципу транслитерации (ع → e рядом с 3, ش → shift+S и т.д.).
  • Пользователи сравнивают проект с уже существующими решениями: Yamli (2005), Buckwalter, SATTS, старым Windows-переводчиком и даже пиньинь-вводом для китайского.
  • Главный аргумент «за» — не нужны наклейки на клавиатуре: запоминаешь английскую букву и сразу получаешь арабскую.
  • Некоторые ждали именно «чат-транслит»-режима (3=ع, 7=ح, 2=ء), но авторы делают упор на полноценную клавиатуру, а не на транслитерацию текста.
  • В итоге идею признают полезной для изучающих язык и для быстрого набора без смены раскладки, но отмечают, что подобные инструменты существуют уже два десятилетия.

Airbus B612 Cockpit Font (github.com)

Eclipse B612
Репозиторий polarsys/b612 на GitHub — открытый проект фонда Eclipse.

  • Назначение: инструментарий для анализа и визуализации критических систем (аэрокосмос, автомобили, медицина).
  • Технологии: Java, EMF, GEF, Sirius.
  • Лицензия: EPL-2.0.

Ключевые возможности

  • Моделирование требований, архитектуры, безопасности.
  • Проверка соответствия стандартам (DO-178C, ISO 26262).
  • Интеграция с Jenkins, Git, Capella.

Быстрый старт

git clone https://github.com/polarsys/b612.git
cd b612 && mvn clean install

by Bogdanp • 03 сентября 2025 г. в 14:02 • 143 points

ОригиналHN

#github

Комментарии (84)

  • Шрифт B612 создан для авиационных дисплеев: максимально читаем, с «light-traps» для борьбы со свечением экранов.
  • Есть пропорциональный и моноширинный варианты; часть пользователей ставит его на Kindle, Obsidian, matplotlib.
  • Название — от астероида Б-612 из «Маленького принца».
  • Критика: 0 и O почти не различаются, финальный сигма (ς) смещён вниз, скобки () похожи на [].
  • Реальные авиа-тележки ATLAS 30×40 см покупают как рабочие столики; цена 500–1000 $ за б/у.

Eels are fish (eocampaign1.com)

Угры: рыбы, но не совсем
Оказывается, угри — это рыбы. Обидно: казалось, они третий, тайный класс между рыбой и змеёй. На деле угри — страннейшие рыбы, и тайны в них глубже ярлыка.

Где берутся угри?
Тысячелетиями не знали. Аристотель — из грязи, японцы — из лунных червей. Научная охота началась в XIX веке: эволюция, скальпели, тщетные поиски половых органов.

Фрейд и угри
В 1876-м в Триесте молодой зоолог четыре месяца вскрывал угрей в поисках яичек. Не нашёл. Это был Зигмунд Фрейд. Кто знает, может, психоанализ родился из этой неудачи.

Саргассово море
Взрослых угрей при размножении никто не видел. Предполагают, что они метятся лишь в одном месте — Саргассовом море, посреди Бермудского треугольника.

Жизненный цикл

  • Лептоцефал — прозрачная личинка, дрейфует годами.
  • Стеклянный угорь — доходит до Европы, ползёт вверх по рекам.
  • Элвер — пигмент, аппетит.
  • Жёлтый угорь — десятилетия в пресной воде.
  • Серебряный угорь — чёрно-хромированный финальный облик, глаза увеличиваются, чтобы увидеть глубину, куда он уйдёт навсегда, чтобы метнуться и умереть.

Так что угри — не просто рыбы, а живые загадки, которые всё ещё обгоняют наше понимание.

by speckx • 03 сентября 2025 г. в 14:02 • 137 points

ОригиналHN

#sargasso-sea#bermuda-triangle#eels#biology#evolution

Комментарии (135)

  • Кроссворды и NYT подтолкнули многих к «угревой» rabbit-hole: откуда берутся европейские угри (около Багам), почему они рыбы и как они могут «пешком» колонизировать озёра.
  • Пользователи делились фактами: угри когда-то служили деньгами, в Португалии их едят как деликатес, а в Средиземноморье они на грани исчезновения.
  • Рекомендованы книги «The Book of Eels» и «The Gospel of the Eels», видео Хэнка Грина и песня A Capella Science.
  • Обсуждались налоговые документы ЕС по угрям, легенды о «создании» угрей и даже вопрос «есть ли вообще рыбы».

Комментарии (60)

  • Участники обсудили, что токарный станок считается базовым инструментом, способным «самовоспроизводиться» (в рамках книг Gingery).
  • Рекомендовали каналы Cylo’s Garage (сверхточный алмазный станок для оптики), Kasra Mehraky (5-осевой субмикронный станок) и Not An Engineer (DIY фреза).
  • Подчеркнули влияние Дэна Гелбарта и Робина Ренцетти как источников вдохновения для проектов высокой точности.
  • Упомянули, что проект Cylo временно приостановлен, но уже есть чертежи и первые тесты.
  • Отметили, что промышленные решения такого уровня существуют десятилетиями, но повторить их в гараже — огромное достижение.