Привет, Хабр!
BayLang - это OpenSource технология разработки программного обеспечения.
Это экосистема, которая состоит из:
языка программирования,
фреймворка,
базового набора виджетов,
конструктора,
искусственного интеллекта.
Все эти блоки уже разработаны. Сейчас происходит работа по рефакторингу и сборку всех частей в единое целое.
Основная идея этой технологии, сделать разработку ПО качественной и высокоскоростной, за счет применения конструктора и ИИ.
Я очень много проводил экспериментов с этой технологией, и вот к каким выводам я пришел.
ИИ умеет разрабатывать код
Правда за ним нужно следить. И желательно заранее сказать ему какая будет структура проекта, и какой стиль программирования.
Это очень важный момент. Я думаю большая часть проблем с вайбкодингом является в том, что существует множество способов разработать программу. И из-за этого большого количества ИИ начинает путаться.
Логично детерменировать структуру проекта и способ разработки типовых задач. Этим и занимается BayLang. Он задает структуру как должен работать проект. Как происходит роутинг, где хранить модели и компоненты, как работать с api и базой данных.
Чем лучше будет определена структура, лучше ее делать частью стандарта, тем проще будет ИИ разрабатывать код программы.
Функциональное программирование сильно переоценено
ООП это сильная концепция, и тот факт, что в современных фреймворках Vue и React предпочитают функциональный стиль является ошибкой.
Причина очень простая. Разработка программы должна начинаться с модели данных.
Модель, структура данных и бизнес логика это ядро всего проекта. А компоненты это способ отображения этих данных. Тут даже дело не в реактивности, это само самой разумеется. У нас меняются данные, должен измениться html на странице. Тут в другом дело. Удобно хранить данные в объектах. И лучше если это будет не JSON, а классы с основными принципами ООП.
Это основная мысль данные нужно хранить в моделях используя ООП
Неизменяемые типы данных
У меня они раньше были. Я их убрал. Из всего опыта использования, я пришел к выводу, что они не нужны. Они всего лишь замедляют работу программы.
Возможно я их неправильно применял. Идея была какая. У нас есть состояние системы, которое неизменяемо и есть чистая функция рендер. Но весь нюанс в том, что состояние системы не может быть неизменно. Оно по определению меняется, потому что это данные. А данные могут загружаться, удаляться, изменяться через интерфейс. В итоге чтобы поменять данные, их нужно пересоздать, а пересоздание данных занимает очень много времени.
Я думал зачем нужны вообще неизменяемые данные. Есть несколько вариантов, где это может быть использовано:
Многопоточные системы. А JavaScript однопоточный. Вообще, я думаю, в многопоточных системах нужно использовать обмен сообщениями и сериализацию данных. Использование неизменяемых данных здесь неуместно.
Данные, когда никогда не меняются. Например JWT токен авторизации. Он действительно, один раз создается и не меняется. Если подумать, можно еще придумать, где можно использовать неизменяемые типы данных. Но суть в том, что их мало и редко где используется. А зачем вводить новую сущность, если она мало где будет использоваться?
Переиспользование кода
Я работаю в IT консалтинге, делаю веб приложения для клиентов. И очень часто клиенты просят разработать им систему и указывают конкретный фреймворк.
Меня всегда волновал вопрос. А как перенести код с одного фреймворка в другой?
Например, есть личный кабинет на Laravel, а теперь другой клиент просит сделать тоже самое, но на FastApi. И возникает вопрос. А как сделать общую библиотеку, чтобы каждый раз не разрабатывать с нуля один и тот же функционал?
Для классических компилируемых языков есть формат DLL. Но для веб, такого еще не придумали. Есть конечно вариант через FFI, но это такое себе.
BayLang может переносить код между разными платформами. Достаточно разработать библиотеку на языке BayLang и скомпилировать ее. Единственное, важно, чтобы BayLang эту платформу поддерживал.
Сейчас поддерживается WordPress. В планах Laravel. Это значит, что можно будет переносить код и компоненты между двумя этими системами.
Язык программирования BayLang
Позволяет конвертирует программу во фронтенд и бэкенд. Сейчас поддерживается PHP и Javascript. Есть интеграция с WordPress, что позволяет создавать реактивные сайты.
Зачем нужен новый язык?
Основная мысль это разрабатывать веб приложение на одном языке. Изначально я искал варианты запустить Angular или React компоненты на PHP, для того чтобы сделать Server Side Render. Решения на тот момент были либо запускать v8 модуль для PHP, или использовать микросервисы. Ни один вариант мне не понравился, и я решил сделать шаблонизатор. Очень быстро это превратилось в новый язык программирования.
Сейчас BayLang это полноценная FullStack технология, на которой можно создать современное веб приложение, и оно будет скомпилировано для PHP и JS.
Для Laravel, думаю, это будет полезно. Я разработал несколько проектов на нем, и там очень сильно не хватает веб компонентов.
Что дальше?
Сейчас буду работать над документацией. В планах публиковать новости по этой технологии.
PelmenBlin
Очень смелое заявление. Это домыслы автора статьи или чья-то цитатв?