Сплит языка¶
Сплит языка — термин из лингвистики и информатики, обозначающий разделение единого языка программирования, формата данных или текстового стандарта на несколько независимых ветвей (форков) вследствие расхождения в спецификациях, реализациях или сообществах пользователей. В более узком смысле сплитом называют сам момент раскола или его результат — две (или более) конкурирующие диалектные версии, несовместимые или частично несовместимые между собой.
¶Типология сплитов
Сплиты языков условно подразделяются по природе расхождения:
- Спецификационный сплит — разные реализации одного стандарта расходятся в трактовке отдельных пунктов, что приводит к появлению несовместимых диалектов. Классический пример — разногласия между различными реализациями языка SQL в 1980-е и 1990-е годы, когда отсутствие единого жёсткого стандарта привело к существованию множества несовместимых вариантов.
- Управленческий (общностный) сплит — раскол происходит из-за разногласий между разработчиками, компаниями или сообществом относительно дальнейшего развития языка. Пример — разделение Perl на Perl 5 и Perl 6 (позднее переименованную в Raku) после решения сообщества о кардинальном переписывании языка.
- Лицензионный сплит — изменение условий лицензии вынуждает часть разработчиков продолжать развитие старой версии под прежними условиями. Так произошло с LibreOffice, ответвившимся от OpenOffice после приобретения последнего корпорацией Oracle.
- Прагматический сплит — часть сообщества сознательно создаёт упрощённую или адаптированную версию языка для конкретной ниши. Пример — появление PHP, изначально задуманного как набор CGI-скриптов, разошедшегося с исходным языком Raku/Perl по синтаксису и семантике.
¶Исторические примеры
¶JavaScript
Один из наиболее показательных сплитов произошёл в истории JavaScript. Стандарт ECMAScript, на котором основан язык, прошёл через несколько кризисов:
- В начале 2000-х годов работа над ECMAScript 4 была приостановлена из-за разногласий между Microsoft и Mozilla относительно объёма изменений. Результатом стал компромиссный ECMAScript 3.1, впоследствии переименованный в ECMAScript 5.
- Часть участников, недовольная компромиссом, продолжила работу над ECMAScript 4 в одностороннем порядке, что привело к фактическому сплиту сообщества, хотя полноценной форкации языка не произошло.
- В 2015 году вышел ECMAScript 2015 (ES6), существенно обновивший язык и заложивший основу для ежегодного цикла обновлений.
¶Python
В 2000-х годах сообщество Python пережило сплит, связанный с переходом с версии 2 на версию 3. Python 3 ввёл несовместимые изменения (например, разделение строк и байтов, изменение семантики деления), что привело к многолетнему сосуществованию двух ветвей. Поддержка Python 2 официально завершилась 1 января 2020 года.
¶C и его диалекты
Язык C, разработанный в Bell Labs в начале 1970-х годов, породил множество диалектов и производных языков: C++, Objective-C, C#, D и другие. Стандартизация C (ANSI C в 1989 году, ISO C в 1990-м и последующие ревизии) была попыткой преодолеть сплит, возникший между различными реализациями языка в 1980-е годы.
¶Последствия сплитов
Сплит языка обычно влечёт за собой несколько последствий:
- Фрагментацию экосистемы — библиотеки и инструменты, написанные для одной ветви, могут не работать в другой.
- Удорожание поддержки — разработчикам приходится поддерживать несколько несовместимых версий или выбирать одну из них.
- Замедление развития — усилия сообщества распыляются на несколько параллельных направлений.
- Рост конкуренции — конкурирующие ветви вынуждены активнее развиваться, чтобы привлечь пользователей, что может ускорить инновации.
¶Сплит в контексте форматов данных
Понятие сплита применимо не только к языкам программирования, но и к форматам данных и протоколам. Пример — раскол в стандартах документов Office Open Microsoft Office Open XML и OpenDocument Format, каждый из которых претендовал на роль единого открытого стандарта. В России аналогичная ситуация сложилась с форматом ОФД (открытый формат документов), разработанным в рамках национальной политики в области информационных технологий.
¶Связанные понятия
Смежными с понятием сплита являются концепции форка (ответвления), диалекта, стандартизации и обратной совместимости. Форк — это технический акт создания независимой копии проекта; сплит — более широкое понятие, включающее социальные, юридические и технические аспекты раскола.
¶Источники
- Райан А. «JavaScript. Подробное руководство» — М.: Вильямс, 2012.
- Лутц М. «Изучаем Python» — СПб.: Символ-Плюс, 2011.
- Страуструп Б. «Принципы и практика использования C++» — М.: Вильямс, 2019.
- ISO/IEC 9899 — стандарты языка C.
- Спецификация ECMAScript (tc39.es).
