OSDev http://osdev.su/ |
|
Язык программирования Кантор http://osdev.su/viewtopic.php?f=30&t=1031 |
Страница 1 из 4 |
Автор: | Freeman [ 17 дек 2014, 19:22 ] |
Заголовок сообщения: | Язык программирования Кантор |
Хоть еще многое предстоит сделать, язык постепенно обретает конкретные черты. Удалось сделать для него подсветку синтаксиса по принятым на данный момент синтаксическим правилам. Посчитал это шагом в развитии и решил поделиться радостью. В других темах постараюсь быть непредвзятым. pavia писал(а): Концепция нового Языка. 1. должен быть проще существующих. 2. должен быть умнее существующих. 3. должен не позволять создавать ошибки. 4. должен ускорять разработку. 5. должен быть легко усвояемым. Простым в обучении. 6. легкость интегрирования и простота взаимодействия с другими приложениями. Не совсем по списку из родительской темы, но близко: "Особенности языка Кантор". Далеко не все вещи раскрыты, но собрать все лозунги воедино по-любому полезно. Заодно можете придумать синтаксис DSL для комплексных чисел из соседней темы, если хотите. Предметно-ориентированную тему я оставляю над откуп сообществу, поэтому плотно не думал. Пока не знаю что делать, если DSL внезапно станет много. По всей видимости, для мелких DSL вроде комплексных чисел придется зарезервировать какой-нибудь символ, после которого будет идти буквенная мнемоника или идентификатор, ибо чисто символов на всех не хватит. Скажем, если DSL-символ -- "*", а мнемоника - "i", объявление комплексного числа будет выглядеть так: Код: cmplx = {*i 2 + 3i *} Плагин-обработчик комплексных чисел прочитает это объявление и переделает в оператор new, который ляжет в байт-код. |
Автор: | Freeman [ 13 фев 2015, 19:20 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Вы будете смеяться, но ключевое слово elsif, похоже, придется вернуть, поскольку иначе возникает неоднозначность и вся предсказуемость разбора летит в тартарары. |
Автор: | Zealint [ 13 фев 2015, 22:05 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Этот вопрос всё-таки решается, если уйти от древней порочной практики разрешать опускать скобки, определяющие блоки кода. Они либо всегда должны быть, либо их не должно быть никогда, но блоки однозначно определяются как-то иначе (например, как в Python). В языке Си же нет elsif, хотя там есть неоднозначность при анализе того, куда относится else. Но я уже написал, и тов. Yoda согласился, что границы блоков кода должны быть всегда в том или ином виде. Хотя я боялся, что это вызовет лишь возражения. Есть такой совет, который я всегда даю в подобных случаях: если что-либо выглядит некрасиво или вынуждает поступать некрасиво, то это плохо продумано где-то раньше. Это эмпирическое правило никогда меня не подводило, а иногда останавливало и от совершения трудноисправимых ошибок. |
Автор: | Freeman [ 14 фев 2015, 12:01 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
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. |
Автор: | Himik [ 17 фев 2015, 20:15 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Предлагаю разрешить условные блоки со скобками и без скобок. Строгий синтаксис отступов, вместе с запрещением более одной команды в одной строке (по крайней мере с else, if, then), делает программу достаточно наглядной. else if должен жить |
Автор: | Freeman [ 17 фев 2015, 21:17 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Himik писал(а): Предлагаю разрешить условные блоки со скобками и без скобок. Строгий синтаксис отступов, вместе с запрещением более одной команды в одной строке (по крайней мере с else, if, then), делает программу достаточно наглядной. Это не ко мне, это к Юрию, у него и скобки, и отступы. Кантор -- язык со свободной записью и использованием скобок только в выражениях. У меня слова не расходятся с делом. Куча висячих скобок от блочных выражений типа подзапросов -- зло SQL, с которым приходится мириться на работе. Бр-р-р! В Канторе этого не будет. За неимением других предложений else-then по-прежнему считается рабочей гипотезой. Ее преимущество в том, что подходит она и для блоков операторов, и для выражений. |
Автор: | Freeman [ 10 апр 2015, 23:37 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Поскольку именно тут наибольший отклик на мою разработку, OSDev.ru отныне можно считать официальным форумом Кантора. Попробую чуть-чуть рассказать о том, что пока осталось за скобками разработки и блога. По итогам первой сессии разработки в 2015-м году можно делать первые выводы. Самое важное в теоретическом плане -- отказ от термина "байт-код". Во время разработки это стало очевидно. Байт-код кодирует низкоуровневые операции, а Кантор сохраняет сериализованные объекты в неком стандартизованном виде. Будет сохранять, точнее, поскольку иерархию и API я пока ищу. Правильней, думаю, называть это объектным кодом или же обратимым кодом -- в тех случаях, когда важно подчеркнуть обратимость. При этом объектный файл может содержать как класс (пространство имен со вложенными классами), так и данные, сохраненные в объектном формате Кантора, аналогично binobj. Машинного кода в объектном файле пока не будет. Машкодом имеет смысл заниматься вместе с кодогенерацией, а я до нее пока не дошел. Про планируемый интерпретатор Кантора в альфа-версии могу написать отдельно. Мне кажется, что он будет довольно сильно отличаться от интерпретаторов типа PHP и Питона, и по концепции будет похож на микроядро. В свете темы о выравнивании хотел бы также порассуждать об атрибутах классов в Канторе, чтобы заново систематизировать и переосмыслить накопленный опыт. Форум удобен тем, что мысли можно писать небольшими порциями, додумывая по ходу обсуждения. Но нужен отклик. Сам с собой разговаривать не буду. |
Автор: | iz56 [ 11 апр 2015, 09:31 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Отказ от байт-кода. Я так понял, по сути - исходный код будет перекодироваться в своё бинарное представление , без завязки на машинные инструкции. Это похоже на часть компилятора. Остальное допишешь потом, видимо. Кантор - решение более-менее универсальное. Правильный курс. |
Автор: | dragon [ 12 апр 2015, 13:04 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
Цитата: Но нужен отклик А если отклика не будет, какой план Б? |
Автор: | Freeman [ 12 апр 2015, 21:40 ] |
Заголовок сообщения: | Re: Язык программирования Кантор |
План Б -- шесть месяцев ничего не писать. В прошлом году так и было. |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |