Разработчик показал язык 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