OSDev

для всех
Текущее время: 14 дек 2017, 23:54

Часовой пояс: UTC + 3 часа




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 36 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Язык программирования Кантор
СообщениеДобавлено: 17 дек 2014, 19:22 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Хоть еще многое предстоит сделать, язык постепенно обретает конкретные черты. Удалось сделать для него подсветку синтаксиса по принятым на данный момент синтаксическим правилам. Посчитал это шагом в развитии и решил поделиться радостью. В других темах постараюсь быть непредвзятым.

pavia писал(а):
Концепция нового Языка.
1. должен быть проще существующих.
2. должен быть умнее существующих.
3. должен не позволять создавать ошибки.
4. должен ускорять разработку.
5. должен быть легко усвояемым. Простым в обучении.
6. легкость интегрирования и простота взаимодействия с другими приложениями.

Не совсем по списку из родительской темы, но близко: "Особенности языка Кантор". Далеко не все вещи раскрыты, но собрать все лозунги воедино по-любому полезно.

Заодно можете придумать синтаксис DSL для комплексных чисел из соседней темы, если хотите. Предметно-ориентированную тему я оставляю над откуп сообществу, поэтому плотно не думал. Пока не знаю что делать, если DSL внезапно станет много. По всей видимости, для мелких DSL вроде комплексных чисел придется зарезервировать какой-нибудь символ, после которого будет идти буквенная мнемоника или идентификатор, ибо чисто символов на всех не хватит.

Скажем, если DSL-символ -- "*", а мнемоника - "i", объявление комплексного числа будет выглядеть так:
Код:
cmplx = {*i 2 + 3i *}

Плагин-обработчик комплексных чисел прочитает это объявление и переделает в оператор new, который ляжет в байт-код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 13 фев 2015, 19:20 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Вы будете смеяться, но ключевое слово elsif, похоже, придется вернуть, поскольку иначе возникает неоднозначность и вся предсказуемость разбора летит в тартарары.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 13 фев 2015, 22:05 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
Этот вопрос всё-таки решается, если уйти от древней порочной практики разрешать опускать скобки, определяющие блоки кода. Они либо всегда должны быть, либо их не должно быть никогда, но блоки однозначно определяются как-то иначе (например, как в Python).

В языке Си же нет elsif, хотя там есть неоднозначность при анализе того, куда относится else. Но я уже написал, и тов. Yoda согласился, что границы блоков кода должны быть всегда в том или ином виде. Хотя я боялся, что это вызовет лишь возражения.

Есть такой совет, который я всегда даю в подобных случаях: если что-либо выглядит некрасиво или вынуждает поступать некрасиво, то это плохо продумано где-то раньше. Это эмпирическое правило никогда меня не подводило, а иногда останавливало и от совершения трудноисправимых ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 14 фев 2015, 12:01 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Zealint писал(а):
Этот вопрос всё-таки решается, если уйти от древней порочной практики разрешать опускать скобки, определяющие блоки кода.

Синтаксис Кантора создавался с сильной оглядкой на SQL -- язык с большими блочными операторами. Просто так в Си его не переделаешь. Да и зачем, ради одного ветвления?

Блоки кода сейчас определяются открывающим оператором (of, if, case, do и др.) и завершающим end. Нужно искать решение в рамках этих правил.

С утра пораньше пришла мысль, что можно не возвращать elsif, а разрешить писать условие после else:
Код:
if условие1 then
  операторы;
else условие2 then
  операторы;
else условие3 then
  операторы;
else
  операторы;
end;

Возможно, конструкция else-then смотрится слегка шизофренично, но в целом решение вполне в духе Кантора. Вариант else без условия также остается.

Поутру вытащил из черновиков этюд с группировкой свойств (а-ля union в Си), в нем также есть множественный else.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 17 фев 2015, 20:15 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
Предлагаю разрешить условные блоки со скобками и без скобок. Строгий синтаксис отступов, вместе с запрещением более одной команды в одной строке (по крайней мере с else, if, then), делает программу достаточно наглядной.
else if должен жить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 17 фев 2015, 21:17 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Himik писал(а):
Предлагаю разрешить условные блоки со скобками и без скобок. Строгий синтаксис отступов, вместе с запрещением более одной команды в одной строке (по крайней мере с else, if, then), делает программу достаточно наглядной.

Это не ко мне, это к Юрию, у него и скобки, и отступы.

    Изображение Кантор -- язык со свободной записью и использованием скобок только в выражениях.

У меня слова не расходятся с делом. Куча висячих скобок от блочных выражений типа подзапросов -- зло SQL, с которым приходится мириться на работе. Бр-р-р! В Канторе этого не будет.

За неимением других предложений else-then по-прежнему считается рабочей гипотезой. Ее преимущество в том, что подходит она и для блоков операторов, и для выражений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 10 апр 2015, 23:37 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Поскольку именно тут наибольший отклик на мою разработку, OSDev.ru отныне можно считать официальным форумом Кантора. Попробую чуть-чуть рассказать о том, что пока осталось за скобками разработки и блога.

По итогам первой сессии разработки в 2015-м году можно делать первые выводы. Самое важное в теоретическом плане -- отказ от термина "байт-код". Во время разработки это стало очевидно. Байт-код кодирует низкоуровневые операции, а Кантор сохраняет сериализованные объекты в неком стандартизованном виде. Будет сохранять, точнее, поскольку иерархию и API я пока ищу. Правильней, думаю, называть это объектным кодом или же обратимым кодом -- в тех случаях, когда важно подчеркнуть обратимость. При этом объектный файл может содержать как класс (пространство имен со вложенными классами), так и данные, сохраненные в объектном формате Кантора, аналогично binobj.

Машинного кода в объектном файле пока не будет. Машкодом имеет смысл заниматься вместе с кодогенерацией, а я до нее пока не дошел. Про планируемый интерпретатор Кантора в альфа-версии могу написать отдельно. Мне кажется, что он будет довольно сильно отличаться от интерпретаторов типа PHP и Питона, и по концепции будет похож на микроядро.

В свете темы о выравнивании хотел бы также порассуждать об атрибутах классов в Канторе, чтобы заново систематизировать и переосмыслить накопленный опыт. Форум удобен тем, что мысли можно писать небольшими порциями, додумывая по ходу обсуждения. Но нужен отклик. Сам с собой разговаривать не буду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 11 апр 2015, 09:31 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Отказ от байт-кода. Я так понял, по сути - исходный код будет перекодироваться в своё бинарное представление , без завязки на машинные инструкции. Это похоже на часть компилятора. Остальное допишешь потом, видимо.
Кантор - решение более-менее универсальное. Правильный курс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 12 апр 2015, 13:04 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Цитата:
Но нужен отклик

А если отклика не будет, какой план Б?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Язык программирования Кантор
СообщениеДобавлено: 12 апр 2015, 21:40 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
План Б -- шесть месяцев ничего не писать. В прошлом году так и было.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 36 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB