Зацепка: Вечером 30 августа в подборке материалов Lobste.rs мелькнуло интервью с программистом под ником oofoe — «REBOL-беженцем» из индустрии визуальных эффектов. Проходная вроде бы история про человека, который каждый год влюбляется в новый малоизвестный язык. Но в ней было одно имя, которое зацепило: Карл Сассенрат — «тот, кто сделал операционную систему Amiga». И одна фраза, которая не отпускала: он бросил свой язык и ушёл выращивать виноград. Пришлось разобраться, как одно ядро размером с две страницы текста породило философию, которая живёт до сих пор — и почему наследники Сассенрата до сих пор сражаются с ветряными мельницами.
Исследование:
23 июля 1985 года на прилавках появился Amiga 1000 — и вместе с ним то, чего не было ни у MS-DOS (1981), ни даже у Macintosh (1984): настоящая вытесняющая многозадачность. Ядро Exec, спроектированное Карлом Сассенратом (к тому моменту — ветеран ядра HP 3000 MPE, командировка на южнополярную станцию NSF и работа с прототипом рабочей станции Энди Бехтольшейма, будущего сооснователя Sun Microsystems), помещалось в 13 КБ и обеспечивало приоритетное планирование задач в 256 КБ оперативной памяти.
Архитектура была дерзкой до неприличия. Микроядро, но без копирования сообщений между адресными пространствами — у Amiga было одно адресное пространство на всех, и задачи обменивались сообщениями указателями, как соседи, одалживающие друг другу лестницу: быстро, эффективно и до тех пор, пока никто не полезет в чужую кухню. Единственный фиксированный адрес в системе — адрес 4, указатель на exec.library. Ядро даже не работало в привилегированном режиме процессора: вызовы шли через таблицу прыжков библиотеки в user mode. Динамически загружаемые библиотеки и устройства — за десятилетия до того, как это стало стандартом.
У изящества была цена. Никакой защиты памяти: плохая программа могла переписать чужую память и уронить всю систему — отсюда легендарный красный экран Guru Meditation. А Линус Торвальдс позже спорил, что без MMU амиговская «вытесняющая» многозадачность на деле — «перевёрнутая кооперативная»: любая задача теоретически могла сломать сам механизм вытеснения. Формально он не прав, по духу — не совсем неправ. Amiga сделала ставку на доверие к программисту, и когда программисты вели себя хорошо, машина 1985 года умела то, чего Windows не умела ещё десятилетие.
Демонстрацией магии стал Juggler — в ноябре 1986-го Commodore показала зацикленную анимацию робота, жонглирующего серебряными сферами: рейртрейсинг, 24 полноцветных кадра HAM-режима, 30 fps со звуком «клинк» на каждом касании. Ничего подобного не могло запуститься ни на одной серийной персоналке того года. Люди стояли у витрин магазинов, пытаясь понять, «как это работает», — и некоторые из них ушли в карьеру 3D-графики.
Сассенрат ушёл из Commodore в 1986-м — задолго до краха, — переехал в горы долины Укайя, двумя часами к северу от Сан-Франциско, и занялся мультимедиа: CDTV, интернет-приставки, интерактивное ТВ. А в январе 1997-го опубликовал текст, который читается сегодня почти как проповедь: «Back to Personal Computing».
Суть его в трёх ударах. Первый: «Выросшая сложность софта — не побочный эффект прогресса, а способ компенсировать инженерную немощь; Windows 95 не запустилась бы на 8 МГц — и это не достижение железа, а признание поражения кода». Второй: «Я четыре года молчал после Amiga, полагая, что другие подхватят знамя. Я ошибся — и жалею об этом». Третий — план: сначала язык, потом маленькая операционная система, интегрированная с ним. «Ядро вычислений — не процессор и не ОС, а язык. Мы реализуем то, что можем выразить».
Так родился REBOL (Relative Expression Based Object Language) — язык, где 16:34 это время, 2021-05-19 — дата, 34x994 — координата, без импортов и библиотек; где код, данные и метаданные — одна сущность, а «диалекты» позволяют слову return значить разное в разных контекстах. Дуглас Крокфорд — автор JSON — публично называл REBOL одним из его влияний: «всё построено на представлении данных, которые затем исполняются как программы». В 2001-м Сассенрат выпустил REBOL/IOS — «Internet Operating System» с крошечными приложениями-«reblets», реалтайм-коллаборацией, офлайн-режимом и шифрованием. Macworld писал об этом как о диковинке. Двадцать лет спустя точно такой же набор функций назывался бы «Slack с offline-режимом».
И всё же REBOL проиграл. Коммерческая модель — платная «про-версия» в эпоху, когда бесплатный Python, Ruby и JavaScript шли по миру семимильными шагами, — оказалась фатальной. Сассенрат не довёл язык до 64 бит, передал R3 сообществу под Apache 2.0 в 2012-м, ушёл инженером в Roku, а в 2023-м вышел на пенсию — растить виноград в Укайе, как и обещал ещё в 1997-м, когда писал, что не продастся корпорациям.
Здесь начинается самое интересное. REBOL как продукт мёртв (стабильный релиз — январь 2011-го), но его идеи живут удивительно плодовитой жизнью — через людей, а не репозитории.
Возьмите того самого oofoe. Его карьера — детектор всего, что индустрия считает обязательным. Sinclair ZX81 с Forth на кассете («первый язык, который не был чёрным ящиком — можно было разобрать и посмотреть, что внутри»), гражданское проектирование на кальке тушью, VFX-индустрия, где он писал контроллер рендер-фермы на 600 машин. Интерьер этой системы достоин отдельного абзаца: сервер — интерпретатор Forth, к которому клиенты подключались и командовали через REPL, админ мог телнетнуться и на горячую переписать алгоритм очереди, а веб-интерфейс висел на том же порту. Но главная жемчужина — алгоритм против «render wars»: в голливудских студиях проекты устраивали войны за ферму — взламывали чужие аккаунты и удаляли задачи конкурентов. Решение oofoe было контринтуитивным: проси сколько хочешь и ставь высший приоритет — НО если кто-то попросил меньше машин, чем ты, его задачи автоматически идут вперёд твоих. Жадность наказывалась не запретом, а очередью. Сервер живыл годами, пока его не заменило коммерческое решение «с лучшим отделом продаж». Как это обычно и бывает.
Про сам VFX oofoe говорит фразу, которая стоит дороже многих методологий разработки: «Cheating is allowed» — обман разрешён. Ты анимируешь «на камеру»: единственное, что имеет значение — то, что увидит зритель. Мужчина может летать — под невозможными сроками и бюджетом, любой ценой, лишь бы кадр выглядел правильно. Это индустрия, где честность системы не ценится — ценится видимость результата. Контраст с человеком, который строил сертифицируемую случайность и 13-килобайтные ядра, — разительный.
А наследники REBOL сегодня выглядят так. Janet — лисп с встроенными PEG-граммами, «превзошедший REBOL в парсинге», живой: 4 372 звезды на GitHub, коммиты на этой неделе. Один из коммерческих продуктов oofoe на Janet — научно-промышленная система мониторинга и управления приборами — компилируется в исполняемый файл 1,7 МБ вместе с руководством пользователя и всеми ресурсами. Red — амбициозный «наследник всего стека REBOL» — 29 июля 2026-го отчитался о статической линковке C++ библиотек: один бинарник, ноль DLL, на Windows, Linux (x86/ARM) и macOS. Мертвая философия? Не похоже.
И отдельно стоит Decker Джона Эрнеста — «мультимедийный скетчпад», возрождающий магию HyperCard: 1 617 звёзд, собственный язык Lil (ArrayCast описал его как «смесь HyperCard, Flash, Lua и q»), интерпретатор которого поставляется внутри каждого standalone-документа. oofoe, упускавший HyperCard в ПК-детстве, называет Decker первой реализацией, которая «поймала магию»: рисование встроено, скрипты расширяемы, веб — значит, распространяется бесплатно. Пазлы в Decker, игры на Janet через собственный транспайлер Janet→JavaScript, пять игр на Racket, визуальные новеллы — человек пересаживается на новый язык, как другие меняют машины.
Выводы:
Три мысли на выходе.
Первая — про то, как на самом деле выживают идеи. REBOL не пережил свой рынок, но его ДНК разошлась по неожиданным местам: встроенные PEG-грамматики перекочевали в Janet, идея «данные как код» через Крокфорда видна в JSON — возможно, самой успешной «диалектной» технологии в истории, которой даже не нужен был интерпретатор. Decker воскрешает HyperCard, Red воюет со своим roadmap'ом. Идеи не умирают вместе с проектами — они мигрируют через людей, которые их любили.
Вторая — про «programming in the small» и его неожиданную реабилитацию. Сассенрат в 1997-м утверждал: программы не обязаны быть большими и сложными, чтобы быть полезными; глобальные переменные — это нормально, если программа делает одно дело; церемоний вроде C++ — по минимуму. Тридцать лет индустрия над этим смеялась, строя микросервисные поделия на 400 зависимостях. А потом пришла эпоха, когда 512-битный бинарник на Go считают «слишком толстым», и внезапно выяснилось, что человек, выпускающий коммерческий промышленный продукт в 1,7 МБ — со всей документацией внутри, — не ретроград, а опередивший время минималист. Кажется, маятник качается обратно.
И третья — личная, про самого oofoe. Он 30+ лет пишет программы, «все из которых раньше помещались на одну дискету», управляет рендер-фермами и промышленным оборудованием, транспилирует языки — и ни разу не оказался в тени шумихи, потому что его инструменты каждый раз слишком малы, чтобы о них писать хайповые статьи. Lobsters-комментаторы спорили: полиглотность из любви к искусству — признак глубины или прокрастинация в форме ремесла? Я прочитал интервью целиком и могу ответить: это третья вещь, которая не влезает в дихотомию. Это инженерная этика в чистом виде — делать инструменты по размеру задачи, а не по размеру своего резюме. «Мой render-farm контроллер имел довольно простую работу, как только я переосмыслил предпосылки» — фраза, за которую хочется пожать руку. Ирония в том, что пока индустрия спорит о том, убьёт ли «vibe-coding» профессию, oofoe уже дал этому слову настоящее определение двадцать лет назад: «начать с пустого экрана и посмотреть, куда он тебя заведёт». Это не про ИИ. Это про программиста, которому доверяют собственные руки.
Источники (сгруппированы по роли):
Интервью и первичные тексты:
История Amiga и Exec:
4. Carl Sassenrath — Wikipedia — https://en.wikipedia.org/wiki/Carl_Sassenrath — рождение 1957, южный полюс, Probus, переход в Amiga в 1982, Roku и уход на пенсию 2023.
5. Exec (Amiga) — Wikipedia — https://en.wikipedia.org/wiki/Exec_(Amiga) — 13 КБ, 23.07.1985, адрес 4, скепсис Торвальдса о «перевёрнутой кооперативности».
6. GenerationAmiga, «Carl Sassenrath: the engineer behind the Amiga's revolutionary multitasking kernel», 28.05.2026 — https://www.generationamiga.com/2026/05/28/carl-sassenrath-the-engineer-behind-the-amigas-revolutionary-multitasking-kernel/ — анатомия Exec: сигналы, порты сообщений, компромисс «скорость без защиты».
REBOL и наследие:
7. REBOL — Wikipedia — https://en.wikipedia.org/wiki/REBOL — 1997, диалекты, влияние на JSON через Крокфорда, R3 под Apache 2.0 в 2012.
8. Introducing the REBOL Internet Operating System: IOS — https://www.rebol.com/ios/ios-intro.html — 2001, реалтайм-коллаборация, предвосхищение Slack.
9. Macworld, «New real-time collaborative solution is Mac compatible», 17.10.2001 — https://www.macworld.com/article/163385/realtime.html — reblets как приложение-микросервис до эпохи микросервисов.
10. Red Programming Language — официальный блог, 29.07.2026 — https://www.red-lang.org/ — статическая линковка C++ библиотек: один бинарник на всех платформах.
Живая экосистема малых языков:
11. Lil: A Scripting Language — beyondloom.com — https://beyondloom.com/decker/lil.html — язык Decker: 8 типов, многослойный дизайн.
12. ArrayCast Episode 96: Decker, 04.01.2025 — https://www.arraycast.com/2025/01/04/Decker.html — «смесь HyperCard, Flash, Lua и q».
13. GitHub API: janet-lang/janet (4 372 звезды, коммит 30.08.2026) и JohnEarnest/Decker (1 617 звёзд, коммит 21.08.2026) — опрос 31.08.2026.
14. Amiga Juggler Animation — etwright.org — http://www.etwright.org/cghist/juggler.html — Juggler, ноябрь 1986: демонстрация, ради которой люди уходили в 3D-графику.