OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 27 Март, 2024 08:20

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




Начать новую тему Ответить на тему  [ Сообщений: 54 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Четверг, 28 Сентябрь, 2017 15:47 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Может интерпретатор?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Четверг, 28 Сентябрь, 2017 16:04 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
budden писал(а):
1. Именованные параметры?

Нет, но принципиальных трудностей сделать это не существует.
budden писал(а):
2. Возможность переопределить отдельную функцию модуля во время выполнения, при этом не находясь в этом модуле (не знаю, как устроены права доступа в Обероне, в лиспе всё можно делать откуда угодно).

Нет, но процедурные переменные спасут мир.
budden писал(а):
3. Возможность переопределить модуль, сохранив данные. Например, я пишу бота, который общается с пользователем (сейчас модно). У меня есть база данных ответов пользователя. Она является переменной в моём модуле. Также в нём есть функция "ответить". Я хочу поменять функцию "ответить", но база ответов не должна разрушиться.

Процедурные переменные или делегаты в Активном Обероне, но вообще, нужно озаботиться архитектурой приложения, что бы отделить данные от алгоритмов.
budden писал(а):
4. Можно ли переопределить функцию модуля с изменением сигнатуры на несовместимую. При этом реальный вызов с некорректной сигнатурой должен приводить к ошибке времени выполнения. Общий сценарий использования этой возможности в лиспе выглядит так: сначала меняем функцию,потом делаем глубокий вдох и делаем пальцы крестиком. Потом меняем все точки вызова. Потом выдыхаем. Впрочем, если изменение состоит в добавлении именованного параметра, то делать вдох и держать пальцы крестиком не надо. Сигнатура получается другая, но совместимая со старой.

нет, ибо статическая типизация. ну или меняй и модуль перекомпилируй, а потом забудь перекомпилировать клиенты и будет то, что ты так хочешь.
budden писал(а):
5. То же касается объектов. Есть ли возможность расширять объекты (добавлять поля) без разрушения данных в них?

Канешна, если ты сделаешь модель и верти её как хочешь, а объекты на уровне языка в рантайме менять низя. Но. теоретически, используя рефлекшен можно извратиться. Но зачем?
budden писал(а):
6. Макросы в смысле Лиспа. В Лиспе макрос - это функция, которая выполняется во время компиляции. Она берёт на вход AST и некую информацию об окружении, в котором введено это AST. На выходе должно получиться новое AST. ПРи этом можно пользоваться всеми возможностями для преобразования AST (хоть из гугла скачивать новое AST).

не реализовано, но потенциально возможно.
budden писал(а):
7. Насколько развита сборка мусора? Сборка мусора в реальном времени - это круто, но есть другие направления развития. Например, в Эйфеле отдельны сборщик мусора на каждый тред. Во многих языках поколенческая сборка мусора. Есть ли такое?

В А2/Активном Обероне сейчас есть и сборка мусора с поколениями. в lock-free версии - неблокирующий сборщик.
budden писал(а):
8. Есть ли слабые ссылки (weak pointers)?

В Активном обероне есть небезопасные указатели (UNSAFE POINTERS) - это просто типизированный адрес. Ну и нужно чтобы переменная такого типа была UNTRACED. это и будет слабая ссылка var u{untraced}: pointer{unsafe} to T;
budden писал(а):
9. Есть ли настоящие треды?

Да, в Активном Обероне
budden писал(а):
10. Доступно ли всё перечисленное под пермиссивной лицензией (MIT,BSD и т.п., но не GPL и LGPL).
Да


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Четверг, 28 Сентябрь, 2017 16:05 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Rifat писал(а):
Может интерпретатор?
Я видел транслятор в Си, и компилятор для линукса i386


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Четверг, 28 Сентябрь, 2017 19:37 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Да он уже ушёл. Писать бесполезно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Среда, 04 Октябрь, 2017 14:32 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Илья Ермаков писал(а):
К этому (пониманию безальтернативности статической типизации) приходят все, наевшись кактусов и достигнув приличного объёма проекта.

Где подписаться?

ilovb писал(а):
Т.е. будущее за метаязыками, которые будут ограничивать сверху язык разработки. Причем
предметно и локально. Фиксированная семантика языка - это тупиковый путь.

Нет у них никакого будущего.
Язык должен быть с фиксированной семантикой. А вот словарь -- должен быть резиновым.
Язык должен расширяться производными частями, а не ядро коверкаться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Суббота, 07 Октябрь, 2017 00:10 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
У фирмы JetBrains есть такой бесплатный продукт MPS - типа студия для DSL, где можно вставлять тексты и графики в код.
Советую посмотреть. Там как раз можно создавать разные предметно ориентированные языки, а потом из них замешивать приложение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Суббота, 07 Октябрь, 2017 00:55 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
prospero78 писал(а):
Илья Ермаков писал(а):
К этому (пониманию безальтернативности статической типизации) приходят все, наевшись кактусов и достигнув приличного объёма проекта.

Где подписаться?

ilovb писал(а):
Т.е. будущее за метаязыками, которые будут ограничивать сверху язык разработки. Причем
предметно и локально. Фиксированная семантика языка - это тупиковый путь.

Нет у них никакого будущего.
Язык должен быть с фиксированной семантикой. А вот словарь -- должен быть резиновым.
Язык должен расширяться производными частями, а не ядро коверкаться.


Я говорил об ограничении наоборот. Понимаешь?
Метаязык должен ограничивать язык разработки, а не расширять.

Пример:
В языке разработки есть тип INT32
Идея в том, что ты можешь ограничить с помощью метаязыка его использование.
Ну, к примеру, что значение должно быть в некотором диапазоне.
В Ada это вкручено в язык. А я хочу чтобы такие возможности были сбоку и специфическими для конкретного проекта.
Т.е. нужен метаязык сбоку, который просто будет контролить компиляцию.
Пишешь ты как обычно, на Обероне. А рядом с компилятором лежит метапрограмма, которая не дает тебе нарушить инварианты проекта.

Что-то типа статического анализа, только прикладного и создаваемого как часть проекта на специальном языке.
По сути это будет такой материальный формальный (и гавкающий!) кусок спецификации проекта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Воскресенье, 08 Октябрь, 2017 00:44 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
CheckStyle ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Воскресенье, 08 Октябрь, 2017 22:15 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Я с инструментами, следящими за соответствием стилю кодирования не работал, но неужели они способны следить за тем, чтобы INT32 не превышал диапазона INT8?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 23:14 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Valery Solovey писал(а):
Я с инструментами, следящими за соответствием стилю кодирования не работал, но неужели они способны следить за тем, чтобы INT32 не превышал диапазона INT8?

Да. Собственно, это инструмент статического анализа (ещё есть FindBug, PMD) программы. Он способен не только следить за правильностью расстновки скобочек и отступов, но и в принципе делать любые проверки по AST дереву. Поэтому часть правил смотрит на оформление, а часть - на код.


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

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Ограничение типа INTEGER?
Т.е. ты про создание пользовательского типа?))) Который мониторится компилятором?))
Или, даже ASSERT спасёт отца русской демократии?))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Среда, 11 Октябрь, 2017 01:54 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
prospero78 писал(а):
Ограничение типа INTEGER?
Т.е. ты про создание пользовательского типа?))) Который мониторится компилятором?))
Или, даже ASSERT спасёт отца русской демократии?))

ASSERT - это проверка в определённом месте, а статический анализатор кода будет следить сразу за всеми возможными изменениями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Среда, 11 Октябрь, 2017 10:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Madzi писал(а):
prospero78 писал(а):
Ограничение типа INTEGER?
Т.е. ты про создание пользовательского типа?))) Который мониторится компилятором?))
Или, даже ASSERT спасёт отца русской демократии?))

ASSERT - это проверка в определённом месте, а статический анализатор кода будет следить сразу за всеми возможными изменениями.

Сейчас в компиляторе Блэкбокса за этим следит фронтенд часть. Если будете пытаться присвоить константу, выходящую за границы INTEGER, то он не разрешит на этапе до компиляции.
Вложение:
comp_parcer.png
comp_parcer.png [ 9.7 КБ | Просмотров: 9015 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопросы от лиспера
СообщениеДобавлено: Среда, 11 Октябрь, 2017 10:25 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Madzi вроде о другом говорит. Статический анализатор как я понял может вывести, что в определенном месте потенциально может быть переполнение. Обычный компилятор такое в принципе сделать не может, т.к. это можно узнать только запустив программу.
Есть методы статического анализа, которые позволяют вычислять такие вещи без запуска программы. Сюда же относится автовывод типов.


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

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


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

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


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB