OberonCore
https://forum.oberoncore.ru/

вопросы от лиспера
https://forum.oberoncore.ru/viewtopic.php?f=1&t=6103
Страница 1 из 3

Автор:  budden [ Понедельник, 11 Сентябрь, 2017 14:26 ]
Заголовок сообщения:  вопросы от лиспера

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

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

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

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

Автор:  Rifat [ Понедельник, 11 Сентябрь, 2017 15:31 ]
Заголовок сообщения:  Re: вопросы от лиспера

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

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

Автор:  Comdiv [ Понедельник, 11 Сентябрь, 2017 15:54 ]
Заголовок сообщения:  Re: вопросы от лиспера

Вряд ли программистов на Lisp в России меньше, чем программистов, использующих Oberon, поэтому не стоит рассматривать переход именно из-за этой причины. Исходя из того, о чём Вы спрашиваете, Вам важны в языке такие вещи, которых в чистом Обероне можно повторить только с большим количеством дополнительного кода, и вряд ли Вам захочется программировать на Обероне в стиле Лиспа. На мой взгляд, логичней всего переходить не на Oberon, а на сам язык Яр, а значит, первоначально транслятор должен быть разработан на наиболее близком к Яру языке, чтобы после достижения определённого уровня зрелости можно было легко перевести его на Яр.

Автор:  Valery Solovey [ Понедельник, 11 Сентябрь, 2017 16:29 ]
Заголовок сообщения:  Re: вопросы от лиспера

Rifat писал(а):
Думаю многое из того, что вы перечислили в каком-то виде есть и в Оберонах.
Большая часть перечисленного отсутствует в Обероне. А всё потому, что оно относится к синтаксису и среде исполнения.

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

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

Автор:  Info21 [ Понедельник, 11 Сентябрь, 2017 16:57 ]
Заголовок сообщения:  Re: вопросы от лиспера

На Обероне можно написать хороший лисп, а на лиспе хороший Оберон -- нет ))

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

Автор:  Иван Денисов [ Понедельник, 11 Сентябрь, 2017 19:19 ]
Заголовок сообщения:  Re: вопросы от лиспера

Вирт обращается ко всем начинающим разработчикам новых языков вот тут:
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

Автор:  Пётр Кушнир [ Понедельник, 11 Сентябрь, 2017 21:37 ]
Заголовок сообщения:  Re: вопросы от лиспера

Опять двадцать пять.
Поражающие в самое сердце вопросы "Почему императивный язык не декларативный?" и "Можно ли сделать из рантайма императивного языка рантайм декларативного языка?" с намёком на то, что все уже знают ответ.

Автор:  budden [ Понедельник, 11 Сентябрь, 2017 22:55 ]
Заголовок сообщения:  Re: вопросы от лиспера

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

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

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

Автор:  budden [ Понедельник, 11 Сентябрь, 2017 23:03 ]
Заголовок сообщения:  Re: вопросы от лиспера

Хотя, по большому счёту, если есть желающие сделать такой транслятор, то можно поучаствовать.

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

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

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

Автор:  Comdiv [ Понедельник, 11 Сентябрь, 2017 23:44 ]
Заголовок сообщения:  Re: вопросы от лиспера

Тут, похоже, начать нужно с постановки задачи, потому что вышеизложенное наталкивает на мысль, что таким вопросом Вы пока ещё не озадачивались.

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

Автор:  Comdiv [ Вторник, 12 Сентябрь, 2017 00:02 ]
Заголовок сообщения:  Re: вопросы от лиспера

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

Автор:  budden [ Вторник, 12 Сентябрь, 2017 11:21 ]
Заголовок сообщения:  Re: вопросы от лиспера

Ага, специфика русского форума уже начала проявляться.

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

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

Автор:  Comdiv [ Вторник, 12 Сентябрь, 2017 11:49 ]
Заголовок сообщения:  Re: вопросы от лиспера

budden писал(а):
Ага, специфика русского форума уже начала проявляться.
mail.ru в Украине заблокирован, поэтому я даже не пытался почитать, что там написано, но могу сказать, что в данном случае это специфика здравого смысла, а не чего бы-то ни было ещё, увы.

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

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

Автор:  budden [ Вторник, 12 Сентябрь, 2017 12:05 ]
Заголовок сообщения:  Re: вопросы от лиспера

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

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

Автор:  Comdiv [ Вторник, 12 Сентябрь, 2017 12:58 ]
Заголовок сообщения:  Re: вопросы от лиспера

Насколько помню, лицензия на последний BlackBox Component Builder не требует публикации производных продуктов, поэтому она не GPL - подобна. Есть и чистые компиляторы без ОС в нагрузку, да и из BB можно получить отдельный исполняемый файл при большом желании.

Автор:  Info21 [ Вторник, 12 Сентябрь, 2017 13:04 ]
Заголовок сообщения:  Re: вопросы от лиспера

budden писал(а):
могу предположить, что это условие является препятствием

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

Автор:  Иван Денисов [ Вторник, 12 Сентябрь, 2017 13:32 ]
Заголовок сообщения:  Re: вопросы от лиспера

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

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

Автор:  budden [ Вторник, 12 Сентябрь, 2017 13:46 ]
Заголовок сообщения:  Re: вопросы от лиспера

Понял, спасибо. А как насчёт Active Oberon и A2? Вот сам нашёл в исходниках - 3-clause BSD. Что ж, хорошо.

Автор:  Rifat [ Вторник, 12 Сентябрь, 2017 13:52 ]
Заголовок сообщения:  Re: вопросы от лиспера

Вопрос по поводу Яра, у этого языка есть формальный синтаксис, записанный в ЕБНФ?

Автор:  budden [ Вторник, 12 Сентябрь, 2017 13:59 ]
Заголовок сообщения:  Re: вопросы от лиспера

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

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/