Разработчик показал язык Copper, замену C с обобщениями и option-типами

Copper, язык программирования, который, по словам его автора, он сам использует как замену C. Страница проекта на tibleiz.net коротко перечисляет главные отличия от C: наследование типов для любого типа, обобщённое программирование (genericity), несколько возвращаемых значений, определения в произвольном порядке, простая система импорта без заголовочных файлов, отсутствие «всего в глобальном пространстве имён», отложенные операторы (deferred statements), простые итераторы, синтаксис в стиле Ruby, опциональные типы (option types), быстрая компиляция и минимализм.

Минимализм автор называет самым важным свойством: язык задуман настолько простым, чтобы его мог полностью понять человек с «ограниченными умственными способностями, вроде меня» (так в самоироничной формулировке автора). Синтаксис простой, почти всё записывается явно, а большинство конструкций привычны.

В качестве примера «вместо бессмысленного hello world» приведена программа с классом Point. У класса два атрибута x и y типа Int, метод init(x, y) и метод translate(dx, dy), сдвигающий точку. Блоки закрываются словом end, как в Ruby. В функции main объявляется переменная pt типа Point!, затем вызываются pt.init(3, 5) и pt.translate(1, 0), после чего println выводит координаты по шаблону со вставками \a. Код начинается с import "std".

В разделе «Дополнительно» даны ссылки: краткий обзор языка, документация, шпаргалка (для тех, кто не хочет изучать язык, но хочет понимать чужой код), другие примеры, а также исходный код стандартной библиотеки и компилятора. Copper распространяется по лицензии BSD.

Ключевые факты

  • Copper, язык, который автор использует вместо C; на странице проекта перечислено двенадцать отличий от C.
  • Среди них: наследование типов для любого типа, обобщённое программирование, несколько возвращаемых значений, отложенные операторы, option-типы, импорт без заголовков.
  • Синтаксис в стиле Ruby: классы, методы def и блоки, закрываемые словом end.
  • Главным свойством автор называет минимализм: простота, явность и привычные конструкции.
  • Исходный код компилятора и стандартной библиотеки открыт для просмотра, лицензия, BSD.

Почему это важно

Copper, пример попытки сделать язык, который заменит C в повседневной работе, но уберёт его типичные неудобства: заголовочные файлы, единое глобальное пространство имён, отсутствие нескольких возвращаемых значений. Проект интересен сочетанием привычной низкоуровневой роли с возможностями вроде обобщений, наследования типов и option-типов при заявленном минимализме. Это личный проект автора, а не продукт компании.

Кому это важно

Прежде всего тем, кто интересуется проектированием языков программирования и системным программированием и ищет альтернативы C. Также любопытно тем, кому близок синтаксис в стиле Ruby, но нужен язык с явным, предсказуемым поведением.

Как это применить

Скорее всего, начинать стоит с краткого обзора языка и шпаргалки, затем посмотреть примеры и документацию. Исходный код компилятора и стандартной библиотеки открыт для просмотра на странице проекта. Copper распространяется по лицензии BSD.

Можно ли доверять

Источник, страница самого автора, и все утверждения о языке исходят от него. Текст не содержит замеров: «быстрая компиляция» названа лишь пунктом списка, без цифр. В тексте нет имени автора, номера версии или даты выпуска, не сказано, под какие платформы собирается код и в какой вариант BSD-лицензии входит проект. Других пользователей или проектов, кроме собственного использования автором, страница не упоминает.

Риски и подводные камни

Для зрелости языка нужны проверка на практике и экосистема, а страница не даёт сведений о числе пользователей и о проектах на Copper. Автор сам описывает язык как намеренно простой, поэтому ждать от него богатства возможностей крупных языков не стоит. Подробности об устройстве обобщений и наследования на самой странице не раскрыты, их придётся искать в документации.

«Минимализм, самое важное свойство: язык задуман простым, чтобы человек с ограниченными умственными способностями, вроде меня, мог понять его целиком.»

— автор Copper, страница проекта на tibleiz.net