Константин Моршнев — о новой версии языка программирования Parser
Создатель языка и технический директор Студии Артемия Лебедева рассказал, как Parser упрощает создание веб-сайтов и какие новые возможности будут доступны разработчикам.
Единственный отечественный язык веб-программирования Parser в январе 2021 года вышел в новой версии — 3.4.6 . Язык в 1997 году начал разрабатывать Константин Моршнев, технический директор Студии Артемия Лебедева. После того, как компания в 2002-м открыла свободный доступ к Parser всем разработчикам, язык получил широкое распространение среди разработчиков— используя его, не только cтудия Лебедева, но и ИТ-специалисты из других компаний создали тысячи сайтов.
Язык содержит все необходимые инструменты для веб-разработчика, включая работу с базами данных, JSON, XML, возможность выполнения внешних запросов, инструменты безопасности, которые встроены непосредственно в сам Parser. Есть и существенные отличия от других языков программирования.
«Parser появился как язык обработки шаблонов. В отличие от других языков программирования, где вывод пользователя осуществляется отдельными командами, в Parser написанное по умолчанию выводится в браузер. Язык сразу ориентирован на генерацию контента, что делает его удобным для шаблонной веб-разработки», — говорит Константин.
Что нового?
Основным нововведением версии 3.4.6 стал встроенный веб-сервер, что существенно упростило использование Parser для локальной разработки. Об это, по словам разработчика, просили сами пользователи. Как и об упрощении использования Parser совместно с Nginx.
«Основной платформой веб-разработки исторически является веб-сервер Apache. Но сейчас гораздо популярнее стал Nginx, который не поддерживает CGI, основной режим работы Parser. Встроенный веб-сервер упрощает интеграцию с Nginx», — объясняет Константин Моршнев.
Причем, если Apache и Nginx для работы требуют многострочные конфигурационные файлы, то для того, чтобы использовать Parser в режиме веб-сервера, достаточно просто указать параметр при запуске в командной строке.
«Я реализовал три режима работы веб-сервера: последовательный, многопоточный и параллельный. Последовательный режим подходит для разработки и отладки, а параллельный — для хостинга и рекомендуется для использования в сочетании с Nginx», — рассказывает технический директор Студии Лебедева.
Любопытно, как реализована логика веб-сервера. Теперь в базовую поставку в конфигурационный файл включён код на Parser, реализующий обработку HTTP-запросов. Там можно настроить авторизацию, включить логи запросов, реализована также отдача статических документов, подключение и обработка файлов на языке Parser. В зависимости от запрошенного адреса выдается ошибка отсутствия файлов и там же опционально можно задать авторизацию. И всё это не зашито в C++ коде, а написано на самом языке — можно легко поменять настройки.
«Встроенный веб-сервер в Parser также значительно упростил совместное использование языка с Docker, — продолжает Константин. — Мы подготовили Docker-образы Parser и готовые конфигурации, включающие MySQL сервер , что позволяет быстро развернуть сайт на Parser с минимальными временными затратами».
JSON, 64-х битная версия под Windows и режим автоматической сборки «мусора»
Значимым фактором при работе над новой версией Parser стало и распространение формата текстового формата обмена данными, основанного на JavaScript – JSON. В новой версии любой объект языка можно преобразовать в JSON-представление. А для разбора формата используется эффективная библиотека. Константин Моршнев сделал акцент на безопасности. В частности, в Parser автоматически экранируются символы пользовательского ввода, что делает процесс ручного формирования JSON безопасным и удобным.
Важным улучшением стала поддержка 64-битного режима под Windows. Parser уже работал в этом же режиме, но только под Linux. Изменения, которые внес Константин Моршнев, улучшили производительность и обеспечили более полное использование ресурсов компьютера. Кроме того, он проделал большую работу над исправлением ошибок. Улучшил работу с русскими именами файлов под Windows, а также исправил около десятка других ошибок, что сделало Parser ещё более стабильным и надежным инструментом.
Parser — это высокоуровневый язык, в нем нет инструментов для ручной работы с памятью, говорит автор. Вместо этого используется отслеживание ссылок и сборщик «мусора». В версии 3.4.6 он добавил режим автоматической сборки, хотя необходимость делать это в последних версиях вручную или автоматически благодаря оптимизациям и увеличению производительности возникает достаточно редко.
Безопасность и надежность — в приоритете
В Parser реализован особый подход к обеспечению безопасности веб-приложений. Константин Моршнев придумал и реализовал автоматическое преобразование небезопасных символов в зависимости от контекста использования. Для этого он использовал разделение данных на безопасные, так называемые «чистые», и небезопасные. Безопасные данные — это то, что написал сам разработчик в коде веб-приложения. Всё остальное, что поступает из внешних источников — передано посетителем в качестве параметров в форме или загружено из файла или другого сайта, считается небезопасными данными.
«Да, это необходимость хранения информации об источнике каждого символа. Но мною сделано несколько оптимизаций, которые позволили минимизировать как падение производительности, так и потребление памяти», — говорит Константин Моршнев.
Когда разработчик смешивает «чистые» и небезопасные данные, Parser про каждый символ строки знает его источник и экранирует небезопасные данные, объясняет автор языка программирования. Механизмы работают по умолчанию, разработчику не нужно их активировать. Таким образом язык берёт на себя значительную часть работы по обеспечению безопасности в приложении, что делает код приложения проще и менее подверженным ошибкам.
Если сценарий работы с данными отличается от обычного, например, если пользователь уверен в безопасности пришедших данных, для этого тоже есть инструменты. Такие данные можно пометить как «чистые». Для этого разработчик предусмотрел оператор taint, подробнее об этом рассказано в документации языка.
«Я создавал Parser как удобный инструмент для создания сайтов, доступный не только профессиональным программистам, но и разработчикам с небольшим опытом. Считаю, эти накладные расходы и усложнение кода самого Parser многократно окупаются повышением безопасности тысяч сайтов, сделанных на этом языке», — говорит автор.
Константин Моршнев подчеркивает, что акцент в разработке Parser сделан на стабильности и обеспечении совместимости. Разработчик и команда студии не гонится за частыми выпусками новых версий, поскольку считают — стабильность и надежность являются важными факторами для пользователей, которые выбирают Parser.
Надежность позволяет применять язык не только для создания веб-сайтов. Например, в Студии Parser применяется для управления промышленным кондиционером DAIKIN-McQuay мощностью несколько десятков киловатт. Исходя из показаний датчиков меняются настройки компрессора для поддержания оптимальной температуры.
«Мы стремимся обеспечивать высокую совместимость между разными версиями языка. Код, написанный для старых версий, без проблем работает на новых. Поддержка Parser осуществляется уже более 20 лет — это большой срок, и мы гордимся этим достижением. Мы продолжаем развивать и поддерживать этот уникальный инструмент, на котором были созданы тысячи сайтов», — говорит Константин Моршнев.
Отметим, что большинство сайтов, которые создает Студия Артемия Лебедева, как и сам сайт студии, созданы именно на языке Parser.
Полезная разработка
Собственная разработка дала компании важное конкурентное преимущество, студия ежегодно получает десятки наград на российских и международных конкурсах. Многие из отмеченных экспертами разработок — заслуга именно языка Parser и его создателя Константина Моршнева. Студия создавала сайты крупным корпорациям, среди которых нефтегазовые компании, банки, производители авто, также интернет-страницы населенных пунктов, социальных и культурных объектов и не только. С 2000 года в списке наград — пара «Каннских львов», премии iF Design Communication, The Webby Awards , «Серебряный лучник», «Золотой сайт», «Рейтинг рунета», «Событие года» и другие.
В планах Константина Моршнева — развивать Parser и дальше, чтобы он оставался востребованным инструментом в мире веб-разработки. Работа над новыми возможностями и улучшениями, с учетом запросов и потребностей пользователей не останавливается, чтобы российский язык программирования продолжал облегчать вход в веб-разработку новичкам и оставался полезным для профессионалов.