Тема: Раскрутка компилятора, финансирование (2018)
Под раскруткой в данной теме подразумевается технология разработки компиляторов, а не получение известности или SEO.
За прошедшее время предыдущий план так и не был реализован, ожидания о его реализуемости оказались завышенными. Одновременно с этим участие в конференции по разработке языков программирования и знакомство с реализациями Nim и АЛФОР позволило пересмотреть отношение к транспиляторам. Разработка Кантора в виде транспилятора была признана допустимой.
Всё это вместе с вновь открывшимися обстоятельствами заставило радикально пересмотреть план реализации Кантора. На данный момент принято, что Кантор как самостоятельный язык не имеет практической ценности, так что задачей ранних этапов является его встраивание в существующие экосистемы в качестве альтернативной реализации, предоставляющей предоставляющей некие возможности, нереализуемые в рамках самой экосистемы и/или считающиеся невозможными. Реализация через Кантор покроет узкие места экосистемы, в первую очередь производительность, -- за счет компиляции в машинный код и частичные вычисления, а сам Кантор будет использоваться как ассемблер новой экосистемы -- вспомогательный язык. В будущем, по мере зрелости и появления сообщества пишущих на Канторе, постепенно будет развиваться сам язык и начнут появляться проекты на нем, -- сначала маленькие, а потом и большие. Раз миграция существующего кода будет отработана на ранних этапах, в дальнейшем нужно будет лишь поддерживать в актуальном состоянии и добавлять новые языки. В случае успеха может быть взрывной рост сообщества.
Tiny C в качестве цели транспиляции позволяет сразу получить генерацию исполнимых файлов и библиотек под несколько популярных платформ, а также REPL и JIT-исполнение. Возможности кодогенерации ограничены самим Tiny C:
Архитектуры: основные x86, x86-64; экспериментальные ARM, ARM64.
Платформы: Windows; дополнительно: UEFI, *nix, KolibriOS.
Компилятор Tiny C существует в виде библиотеки и может вызываться прямо из Кантора, без генерации промежуточных файлов. Скорость компилятора Tiny C соизмерима со скоростью Delphi, что соответствует идеологии Кантора. Tiny C распространяется под LGPL и может быть использован в коммерческих проектах с закрытыми исходниками.
0 этап
Разработка ядра Кантора как прослойки между входным языком Object Pascal и выводом в ANSI C с последующей трансляцией компилятором Tiny C. На этом этапе еще нельзя будет писать на самом Канторе. На выходе:
Компилятор входного языка Object Pascal (диалект Delphi 2007) в объектный код Кантора.
Ядро Кантора, реализующее хранение и обработку объектного кода в оперативной памяти.
Отекстовщик объектного кода в исходный текст на Канторе для контроля работы ядра.
Вывод объектного кода в исходный код на ANSI C (C99), сборка средствами Tiny C.
Сборка ядра Кантора самим собой.
Скомпилировать исходники на Канторе на этом этапе еще нельзя. Ядро Кантора пока написано на Delphi. Кодовое название этапа — мини-Кантор.
1 этап
Разработка компилятора входного языка Кантора, соответствующего выводу отекстовщика. На выходе:
Возможность разработки Кантора на Канторе, формальная отвязка от Delphi.
На этом этапе начинает работать обратимость кода, подталкивая к необходимости создавать хранилище для него.
1 этап, 2 стадия
Разработка хранилища кода на Канторе, реализующего раздельную компиляцию обратимого кода и функциональность пакетного менеджера. В зависимости от глубины проработки этапа возможна реализация обфускации кода и деление на Community- и Enterprise-версии согласно возможностям обфускатора. На выходе:
Удобство распространения кода.
Достижение технологического минимума для формирования сообщества, пишущего на Канторе.
Появление смысла в постепенной миграции сторонних проектов на Кантор.
Поскольку на данном этапе доступны лишь входные языки Кантор и Object Pascal, практическая применимость стека пока невелика, но создает заделы на будущее:
Достижение технологического минимума полного цикла разработки -- добавление новых языков и синтаксисов становится технической задачей и дает возможность строить реалистичные планы расширения охвата и раскрутки.
Миграция сторонних проектов на Кантор означает появление первых пользователей и заказчиков.
1 этап, дополнительно
Разработка русскоязычного синтаксиса Кантора, взаимно-обратного англоязычному. Расширение возможностей компилятора и отекстовщика для поддержки данного синтаксиса. На выходе:
Возможность проводить натурные эксперименты востребованности программирования на родном языке среди профессиональных программистов, любителей, в системе образования и пр.
С точки зрения столбовой дороги развития этот этап необязателен, но его национальная окраска предполагает возможность получения финансирования хотя бы в теории.
Финансирование
Думается, разбиение на этапы позволит предметно рассуждать о финансировании проекта. Сейчас трудно оценить скорость разработки. Из текущей точки видится примерно следующее:
1-2 года на 0-1 этапы.
2 000 000 - 5 000 000 ₽.
Процесс разработки подразумевает написание документации по окончании каждого этапа и регулярное ведение блога на Хабре для привлечения внимания к проекту. Этим должен заниматься отдельный человек -- евангелист.
Вероятно, нужен и второй разработчик, но не для написания кода, а для проведения технических консультаций и мозговых штурмов. Должен обладать широким кругозором. Частичная занятость.