OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 16 Декабрь, 2017 02:19

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




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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
Добрый день! Языков, поддерживающих горячую замену кода, довольно мало. В т.ч. Оберон и Лисп. Я разрабатываю ещё один, он называется Яр и является русскоязычным. Сейчас я разрабатываю его в Лисп. Проблема в том, что Лисп очень непопулярен в России. Рассматриваю возможность перехода на Оберон. Однако, насколько я понимаю на данный момент, Лисп намного мощнее и гибче. Известно, что Оберон в ядре умеет мало, но многое может быть реализовано в виде модулей. Т.е. нужно сравнивать не Лисп с ядром ОБерона, а лисп с (Ядро Оберона + библиотеки).

Соответственно, хочу сравнить возможности Оберона с модулями с лиспом. Есть ли в Обероне следующее:

1. Именованные параметры?
2. Возможность переопределить отдельную функцию модуля во время выполнения, при этом не находясь в этом модуле (не знаю, как устроены права доступа в Обероне, в лиспе всё можно делать откуда угодно).
3. Возможность переопределить модуль, сохранив данные. Например, я пишу бота, который общается с пользователем (сейчас модно). У меня есть база данных ответов пользователя. Она является переменной в моём модуле. Также в нём есть функция "ответить". Я хочу поменять функцию "ответить", но база ответов не должна разрушиться.
4. Можно ли переопределить функцию модуля с изменением сигнатуры на несовместимую. При этом реальный вызов с некорректной сигнатурой должен приводить к ошибке времени выполнения. Общий сценарий использования этой возможности в лиспе выглядит так: сначала меняем функцию,потом делаем глубокий вдох и делаем пальцы крестиком. Потом меняем все точки вызова. Потом выдыхаем. Впрочем, если изменение состоит в добавлении именованного параметра, то делать вдох и держать пальцы крестиком не надо. Сигнатура получается другая, но совместимая со старой.
5. То же касается объектов. Есть ли возможность расширять объекты (добавлять поля) без разрушения данных в них?
6. Макросы в смысле Лиспа. В Лиспе макрос - это функция, которая выполняется во время компиляции. Она берёт на вход AST и некую информацию об окружении, в котором введено это AST. На выходе должно получиться новое AST. ПРи этом можно пользоваться всеми возможностями для преобразования AST (хоть из гугла скачивать новое AST).
7. Насколько развита сборка мусора? Сборка мусора в реальном времени - это круто, но есть другие направления развития. Например, в Эйфеле отдельны сборщик мусора на каждый тред. Во многих языках поколенческая сборка мусора. Есть ли такое?
8. Есть ли слабые ссылки (weak pointers)?
9. Есть ли настоящие треды?
10. Доступно ли всё перечисленное под пермиссивной лицензией (MIT,BSD и т.п., но не GPL и LGPL).

Также интересно узнать, используется ли Oberon в каких-то живых проектах в России.


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

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 620
Откуда: Казань
Думаю многое из того, что вы перечислили в каком-то виде есть и в Оберонах.
Только терминология будет другая, как "русская баня" и "финская сауна", вроде бы разные вещи, но служат для одной цели.
И думаю, что Оберон будет поудобнее и помощнее, чем даже Лисп, так как на Обероне можно полностью написать операционную систему, а я не слышал, чтобы была операционная система полностью написанная на Лиспе.

Общего у Оберона и Лиспа то, что есть сборщик мусора.
Думаю, что не сложно в Обероне реализовать несколько функций и будете чуствовать себя как в Лиспе.


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 500
Откуда: Киев
Вряд ли программистов на Lisp в России меньше, чем программистов, использующих Oberon, поэтому не стоит рассматривать переход именно из-за этой причины. Исходя из того, о чём Вы спрашиваете, Вам важны в языке такие вещи, которых в чистом Обероне можно повторить только с большим количеством дополнительного кода, и вряд ли Вам захочется программировать на Обероне в стиле Лиспа. На мой взгляд, логичней всего переходить не на Oberon, а на сам язык Яр, а значит, первоначально транслятор должен быть разработан на наиболее близком к Яру языке, чтобы после достижения определённого уровня зрелости можно было легко перевести его на Яр.


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

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1526
Откуда: Беларусь, Минск
Rifat писал(а):
Думаю многое из того, что вы перечислили в каком-то виде есть и в Оберонах.
Большая часть перечисленного отсутствует в Обероне. А всё потому, что оно относится к синтаксису и среде исполнения.

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

А часть вещей было запрещено специально, чтобы программисту было сложнее ошибиться, а злоумышленнику сделать то, что не предполагал разарботчик.
Rifat писал(а):
И думаю, что Оберон будет поудобнее и помощнее, чем даже Лисп, так как на Обероне можно полностью написать операционную систему, а я не слышал, чтобы была операционная система полностью написанная на Лиспе.
Во-первых, Лисп по-мощнее Оберона. И для того, чтобы Оберон не обладал лишней мощностью, прилагались дополнительные усилия.
Во-вторых, операционные системы на Лиспе были.
И в-третьих, операционная система - странный аргумент в доказании мощности языка программирования.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7728
Откуда: Троицк, Москва
На Обероне можно написать хороший лисп, а на лиспе хороший Оберон -- нет ))

Очень странно сравнивать лисп с обероном.


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1977
Откуда: Красноярск
Вирт обращается ко всем начинающим разработчикам новых языков вот тут:
https://youtu.be/wrGytM2YTQY?t=4m48s

Все части интервью:
https://www.youtube.com/watch?v=xCA5d87DtB0
https://www.youtube.com/watch?v=Cck53cQgFQg
https://www.youtube.com/watch?v=wrGytM2YTQY


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

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2448
Откуда: Россия, Ярославль
Опять двадцать пять.
Поражающие в самое сердце вопросы "Почему императивный язык не декларативный?" и "Можно ли сделать из рантайма императивного языка рантайм декларативного языка?" с намёком на то, что все уже знают ответ.


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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
Спасибо всем за ответы. Получился широкий спектр мнений: от "написать несколько функций" до "будет тяжело сделать". Во всяком случае, я пытался использовать горячую замену в Дельфи, там для этого есть "пакетная архитектура". Ограничений столько, что сразу заходишь в тупик. Мне думается, что всё же в Обероне не слишком гибкая горячая замена. Но при этом есть GCL - реализация Common Lisp на Си. При каждом вызове инкрементного компилятора CL генерируется маленький файлик на Си, затем вызывается внешний компилятор Си, он генерирует разделяемую библиотеку, которая динамически компонуется запущенной программе. Т.е. не только на Обероне, но и на Си можно написать Лисп. Обратное, действительно, затруднительно - на Си можно сделать больше всяких "чудес".

Видимо, чтобы сделать такую же гибкую горячую замену в Обероне, нужно действовать по аналогии с этим компилятором. Каждая функция должна быть отдельным модулем. При этом получится плоская структура модулей.

В целом, похоже, что идея перейти на Оберон не слишком хорошая. С другой стороны, то, что Оберон компактен - это огромный плюс. Может быть, стоит сделать вариант трансляции Яра в Оберон, но это когда-нибудь потом (и явно не очень скоро).


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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
Хотя, по большому счёту, если есть желающие сделать такой транслятор, то можно поучаствовать.

Пока что Яр развивается как синтаксическая оболочка вокруг Лиспа, соответственно в него может затянуться слишком много возможностей. Если параллельно бы развивался транслятор на Оберон, это было бы дополнительное ограничение, которое бы снизило число "фишек" в Яре и позволило бы сохранить язык простым. Сейчас я очень быстро могу добавлять сложные возможности из Лиспа в Яр, например, в лиспе очень сложное ООП. Если будет одновременно развиваться транслятор в Оберон, это будет бить по рукам и заставлять держаться простоты. Но для этого мне нужен человек со стороны Оберона, который бы участвовал в процессе.

Возможно, в этой версии горячая замена была бы "как в Обероне", т.е. с меньшим количеством возможностей. Есть такая технология "разрабатывай в лиспе, поставляй в Си" и есть продукты, которые её реализуют. Можно было бы переделать в "разрабатывай в лиспе, поставля в Обероне".

Сейчас самое время начать, потому что кодогенератор + среда выполнения пока что меньше 100 кб в исходниках. Чем больше они разрастутся, тем будет труднее.


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 500
Откуда: Киев
Тут, похоже, начать нужно с постановки задачи, потому что вышеизложенное наталкивает на мысль, что таким вопросом Вы пока ещё не озадачивались.

И позвольте поинтересоваться
1. Как давно Вы закончили школу?
2. Не приходила ли Вам раньше идея о создании транслятора Оберона-07 в Go, С, PHP, Rust и Kotlin?


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 500
Откуда: Киев
Надо же было сразу поделиться конкретикой
https://www.youtube.com/watch?v=KlrLV_3WV8k&feature=youtu.be
То, что не-под-ртутью - это хорошо. И вообще, Вас можно похвалить - при такой постановке вопроса Вы продвинулись довольно далеко, но я думаю, Вы сами хорошо понимаете, насколько это нужно другим людям.


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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
Ага, специфика русского форума уже начала проявляться.

Всё же озвучу цели. Цели образуют иерархию. Программа минимум - обёртка для CL, удобная в использовании лично для меня. В CL кое-что недоработано, а где-то неудачные решения по дизайну. К достижению этой цели я довольно близок, но к Оберону она не имеет отношения. Другая цель - это простой русскоязычный язык программирования, что-то типа бейсика. Эта цель является в какой-то степени подмножеством первой, но и частично противоречит. Лисп - богатый язык, а не простой. Здесь было бы уместно сотрудничество с оберощниками, поскольку у Оберона есть свои плюсы. Ну и программа-максимум - современный универсальный язык программирования. На неё тоже сделаны заходы, хотя здесь до результата далеко и эту информацию я пока что даже не публикую.

Дальше если кто-то заинтересовался - есть способы со мной связаться - например, через мой канал на Youtube. Личные сообщения на этом форуме вряд ли буду читать. Спасибо за внимание. Последнее время прогресс не особо быстрый, а нападки на форумах отбирают много энергии и ничего не дают для поиска помощников. Всем спасибо за участие в теме.


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 500
Откуда: Киев
budden писал(а):
Ага, специфика русского форума уже начала проявляться.
mail.ru в Украине заблокирован, поэтому я даже не пытался почитать, что там написано, но могу сказать, что в данном случае это специфика здравого смысла, а не чего бы-то ни было ещё, увы.

Цитата:
Программа минимум - обёртка для CL, удобная в использовании лично для меня
Совершенно нормальная цель.
Цитата:
Другая цель - это простой русскоязычный язык программирования, что-то типа бейсика. ... Здесь было бы уместно сотрудничество с оберощниками
Нет, не уместно. В сообществе, связанном с Oberon, BASIC, в целом, считается плохим языком. К тому же существуют реализации русскоязычного Оберона, качество воплощения которых выше, чем то, что есть у Вас.

Цитата:
Ну и программа-максимум - современный универсальный язык программирования. На неё тоже сделаны заходы, хотя здесь до результата далеко и эту информацию я пока что даже не публикую.
Нужно адекватно оценивать силы, а Вам этого не хватает. Не сочтите за нападки.


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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
А, я ведь забыл расставить точки над i в вопросах лицензирования. Насколько я понял, лицензия на BlackBox подобна GPL. Мне это совсем не подходит, мне нужны пермиссивные лицензии. Более того, поскольку Oberon является средой выполнения, а не только компилятором, могу предположить, что это условие является препятствием для конкурентоспособности Оберона (см. лицензии на Clang, Swift, Go и др. новые языки).

Существуют ли реализации Оберона под пермиссивными лицензиям: MIT, BSD, Public Domain?


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

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 500
Откуда: Киев
Насколько помню, лицензия на последний BlackBox Component Builder не требует публикации производных продуктов, поэтому она не GPL - подобна. Есть и чистые компиляторы без ОС в нагрузку, да и из BB можно получить отдельный исполняемый файл при большом желании.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7728
Откуда: Троицк, Москва
budden писал(а):
могу предположить, что это условие является препятствием

Ваше предположение неверно.
См. раздел документации о компилировании в exe и dll (DevLinker).


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1977
Откуда: Красноярск
budden писал(а):
Существуют ли реализации Оберона под пермиссивными лицензиям: MIT, BSD, Public Domain?

У Блэкбокса лицензия BSD 2-clause
https://opensource.org/licenses/BSD-2-Clause
Так что можете разрабатывать, что угодно с закрытыми исходниками.


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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
Понял, спасибо. А как насчёт Active Oberon и A2? Вот сам нашёл в исходниках - 3-clause BSD. Что ж, хорошо.


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

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 620
Откуда: Казань
Вопрос по поводу Яра, у этого языка есть формальный синтаксис, записанный в ЕБНФ?


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

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 12
Нет. Кроме того, описание языка на данный момент не распространяется, распространяются только исходники и реализация. Гонка между новыми языками программирования достаточно бодрая в наши дни, не хочу кормить конкурентов идеями. Понимаю противоречивость своей позиции - с одной стороны, ищу соратников, а с другой зажимаю самое главное. Факт в том, что в течение 2 лет я нашёл только одного человека, который помогает мне достаточно немного (часов 20 в месяц). Если будет ясно, что вы действительно заинтересованы помогать, вышлю описание на условиях нераспространения. Пока что смотрите тесты в исходниках.


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

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


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

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


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

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