Logo

Особенности языка Кантор

Краткая сводка особенностей языка программирования Кантор и его будущего компилятора. Выделенные курсивом пункты будут раскрыты позже.

Что есть в языке Кантор

  • Вывод типов, лямбды, замыкания и частичное применение функций.
  • Переменные и процедуры.
  • Классы и пространства имен — вложенные друг в друга классы.
  • Множественное наследование от взаимно-абстрактных классов.
  • Обобщения («дженерики», шаблоны) — параметризированные классы.
  • Абстрагирование операций — обобщенная альтернатива перегрузки операций.
  • Прототипирование и копирование объектов — оператор new from.
  • Исключения и их обработка.
  • Декларативный импорт внешних функций, следующих соглашениям вызова cdecl, fastcall, mcall, optlink, pascal, register, safecall, stdcall, syscall, thiscall.
  • Декларативный импорт интерфейсов OLE/COM/ActiveX.
  • Вики-разметка — легкая и независимая от целевой среды абстракция форматированного текста.

Чего нет в языке Кантор

  • Функций и классов, которых нельзя объявить синтаксически.
  • Неявных умолчаний. Значительная часть возможных умолчаний абстрагирована и разрешена архитектурно, все прочие умолчания явно заданы в настройках или равны null.
  • Неинициализированных переменных.
  • Встроенных функций.
  • Встроенных типов. Единственный тип — class, слова «класс» и «тип» — синонимы.
  • Деления типов на простые и все остальные, упаковки и распаковки значений (boxing и unboxing).
  • Конструкторов и деструкторов.
  • Сборки мусора. Кантор — язык системного программирования.
  • Указателей и ссылочных типов. При объявлении ссылки ключевое слово ref всегда задается явно.
  • Ключевого слова begin. Блочные операторы всегда допускают несколько вложенных операторов, разделенных точкой с запятой и завершаются обязательным end. В некоторых случаях число идущих друг за другом end сокращается из-за синтаксического совмещения блоков.
  • Операторов цикла. Вместо циклов — итераторы и охранные выражения.
  • Ключевого слова try.
  • Необрабатываемых исключений.
  • Меток и оператора goto.
  • Монад. Вместо монад — полноценные процедуры.
  • Макроопределений, условных символов, препроцессора и директив компилятора. Вместо них — обобщения с операторами if и case.
  • Включаемых файлов, директив экспорта и импорта. Классы адресуются полными именами, далее действуют области видимости public и protected.
  • Понятия файла и консоли, а также встроенных в язык операторов или функций ввода-вывода.

Чем Кантор отличается от других языков

  • Константы, переменные, процедуры, функции, методы, свойства, лямбды и замыкания — это функции. В Канторе только одна вычислимая сущность — функция.
  • Классы, интерфейсы, пространства имен, примеси, типажи и обобщения — это классы. В Канторе только одна агрегирующая сущность — класс.
  • Класс — тоже функция, поэтому допустимы перегруженные классы, обобщения-кортежи и частичное применение обобщений.
  • Структуры (записи), перечислимые типы, множества, списки, строки, статические и динамические массивы — это классы. Они объявляются как классы, допускают наследование и обобщение.
  • Строки — это не массивы байтов или слов, а классы, инкапсулирующие все действия по хранению и обработке строковых данных. Путем обобщения описаны строки из последовательностей байт, коротких и длинных слов, с наборами символов на основе кодовых страниц, UTF-8, UTF-16 и UTF-32, с прямым и обратным порядком байт.
  • Оператор ifсинтаксический сахар оператора case.
  • Блочный new.
  • Объектная алгебра.
  • Адресная арифметика реализована как небезопасное расширение некоторых классов и предназначена для импорта кода на других языках. Включается ключом командной строки, по умолчанию отключена.
  • Вызов функций с потерей результата реализован для совместимости с API ОС и задается явно — ключевым словом void.

Чем отличается компилятор (среда) Кантора

  • Объектный код первичен и обратим. Исходный текст — временное состояние, в которое код переводится для чтения и правки человеком. 
  • Кантор — язык с бесконечным числом синтаксисов. В разной степени проработки имеется около 12 синтаксисов — 6 с английскими ключевыми словами и 6 — с русскими.
  • Совокупность кода является объектно-ориентированной базой данных, между объектами которой соблюдаются отношения наследования, полиморфизма и агрегации, отслеживаются равноправные ссылки.
  • Входной язык служит не только для написания программ и библиотек, но еще и для файлов проектов, форм и конфигураций, — всё это пишется на Канторе.
  • Имеется API для подключения предметно-ориентированных языков (DSL) в виде модулей (плагинов) к компилятору.
  • Все предупреждения (warnings) трактуются как ошибки и останавливают компиляцию, — режим строгой проверки синтаксиса (warnings as errors) включен по умолчанию. В целях отладки его можно временно отключить ключом командной строки.

Пример для подражания

Квалификация программиста на языке Кантор обратно пропорциональна числу переменных в его коде.

3 комментария

  1. > Чего нет в языке Кантор:
    > Монад. При наличии полноценных алгоритмов они без надобности.

    Вы сказали, что в нём есть лямбды. А есть лямбды — есть и монады, хотите вы того или нет.

    Почему Кантор? Звучит ненадёжно.

    «Теоретико-множественный подход, получивший широкое развитие в конце XIX века, позволил возвести математику на прочном, и, казалось, надежном фундаменте — канторовой теории множеств. Развитие канторовой теории множеств привело к возможности выразить в терминах этой теории все основные математические понятия. Возможность построения математики на теоретико-множественном фундаменте Гильберт охарактеризовал как «рай для математиков», а уже построенную на этой основе часть математики называл «симфонией бесконечного». Однако восторги сменились шоковым состоянием, когда была обнаружена противоречивость данного подхода.»

    ОтветитьУдалить
    Ответы
    1. Строить город на болоте тоже выглядело ненадежно, однако ж культурная столица получилась.

      Я думаю над пересмотром некоторых определений и терминов. Кое-что уже устарело или не нравится самому. Страницы из правой колонки редактируются по мере продвижения проекта.

      Удалить
    2. Константы, переменные, процедуры, функции, методы, свойства, лямбды и замыкания — это функции. В Канторе только одна вычислимая сущность — функция.

      Класс — тоже функция, поэтому допустимы перегруженные классы, обобщения-кортежи и частичное применение обобщений.

      не плохо неплохо )

      Удалить

Выбрав в выпадающем списке пункт «Имя/URL», можно оставить комментарий от своего имени без предварительной регистрации.