September 21st, 2012

flow

Изменения

Где-то с начала сентября я завершил свою постоянную вовлечённость в проект .15926, сейчас только консультирую в фоне. Скоро выходит следующая версия редактора - фичастее, быстрее и с новым UI. Об этом и других новостях проекта можно прочитать в dot15926.

...

На ближайшие несколько месяцев в планах активный отдых, капоэйра и другие радости бытия.

...

А также, небольшими порциями, большой и тяжёлый рисёч по созданию практичного языка программирования и обмена данными.

1. Создание текстового синтаксиса, платформенных ABI и бинарного контейнера обмена, ориентированных на уменьшение объёма, занимаемого данными, и увеличение скорости их обработки. Это касается не только машинных ресурсов (с учётом кэша и медленной памяти), но и когнитивных ресурсов человека, работающего с описанием алгоритма или фрагментом данных инженерного проекта. Расширяемость словарями, нормализация через использование общих словарей (не 100 разных enums с MYENUM_NOWAIT, а std.async).

2. Стабильные механизмы многоуровневой идентификации сущностей, с возможностью приведения к общей системе координат. Z в контексте Y в контексте X; N как f(M); описание детали P по версии на момент T документа S из репозитория R; и так далее.

3. Стартовый минимум коллекций. Всегда будут шибко умные люди с аппликативными функторами, а также шибко тупые с проксифакториадаптерами. Но любой перегиб вызовет проблемы с доступностью языка. Нужны предельно простые для понимания вещи, а кому надо - нарисует поверх Set свой ZFSet, не теряя совместимости по ABI с другими фрагментами проекта.

4. Макросистема как основа языка (единственное решение, позволяющее не идти на компромис между затратами когнитивных и машинных ресурсов), pattern mathing с полноценной монадой (никогда не упоминать слово "монада" в документации), многое-многое другое.

...

Работая над стандартами интеграции данных я был сильно разочарован технической базой, местами, её отсутствием. Есть старые решения, которые работают в ручном режиме (реляционные СУБД и нечитаемые простыни на XML), и эзотерика, которая обычно не работает. В качестве схем идентификации ад из URI и UUID. Авторы рады выбрать что-то более эффективное, но пока не из чего выбирать.

Внедрить весь необходимый функционал во что-то готовое не получится. Нужен язык, на котором удобно описываются не только "вычисления в парадигме X", а в первую очередь данные. Без единой схемы и "одного правильного взгляда на мир", но поддерживающий эти схемы и взгляды (включая стандарты) не теряя типизации. Разумеется, позволяющий загрузить описания из текста или бинарного контейнера в систему на другом языке (по аналогии с загрузкой JSON). С учётом разницы в словарях. Для обмена данными нужны "pump" и "degree_celsius", а транслятору (например, в нативный код) придётся понимать "if", "return", "_mm_add_ps", ...

Делать новое страшно, ведь, в отличие от десятого клона обрезанного варианта C++ или хипстерского переклада Лиспа, нет базы, исторической точки опоры. Решение - максимально не-делать и очень внимательно смотреть, оценивать результаты. До того момента, когда они сами станут достаточной точкой опоры для.