Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 16 июн 2025, 18:01

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 25 янв 2018, 19:37 
Не в сети

Сообщения: 350
Zorko, и ещё спасибо за список - посмотрю по мере сил. Пока больше всего понравился Oberon-D - тамошняя "эволюция схемы", в каком-то приближении и есть то, что я понимаю под "горячей заменой кода".


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 25 янв 2018, 19:49 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Угу, велькам =) Ещё OberonX можно посмотреть. Там перегрузка операторов сделана. Однако это всё же больше косметика, нехарактерная для языков из Оберон-мира.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 13:11 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Цитата:
1. INTEGER - это целое число неограниченного размера, живёт в куче и является ссылочным типом. Также есть RANGE(MIN,MAX), частными случаями которого являются нынешние SHORTINT и т.п. Существующий INTEGER придётся переименовать.

Не факт, что в куче, не факт, что ссылка. Если описана константа -- зачем ей куча и ссылка?))

И, строго говоря, INTEGER -- имеет вполне ограниченный физический размер. Определяется реализацией, обычно отображается на физический размер машинного диапазона.

Цитата:
2. Точная сборка мусора. Я остаюсь при своём мнении: консервативная сборка мусора - нанадёжный механизм. Точная сборка может привести к сокращению диапазона INTEGER на 1-2 бита, поскольку понадобится отличить указатель от числа.

Эээ... Типизация же, не?)))

Цитата:
3. Тип BOX или VARIANT - ему может быть присвоен объект любого типа. BOX знает runtime тип своего объекта, т.е. это - не void *, а поэтому он безопасен. Конструкция with соответствующим образом обобщается. Заметьте, что здесь вводится не больше динамической типизации, чем в случае расширения типов, просто она обобщается и на другие типы. Конкретную семантику нужно ещё уточнять.

Можно и так. Но тогда и базовых типов должно быть с гулькин нос. Иначе памяти не хватит никакой. Вообще, не могу предложить адекватный пример, где без варианта жизнь закончится.

Цитата:
ANYPTR в BB недостаточен, т.к. в нём (если я правильно понял) нельзя хранить произвольные массивы. Невозможность хранения примитивных типов можно было бы обойти, включив для каждого из них отдельное поле.

Использовать ANYPTR вообще ооочень плохая идея.

Цитата:
4. Ненулевые указатели - такие, которым нельзя присвоить NIL. Соответственно, добавляется конструкция IFNULL P P1 <Ветка если NIL> ELSE <Ветка если не NIL>, где P - нулевой указатель на T, а P1 - имя переменной . В ветке "если не NIL" указатель P1 имеет тип ненулевого указателя на T и равно значению P в момент проверки условия. В ветке "если NIL" P1 отсутствует.

Чем ASSERT не угодил?

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

Хм. Вообще не проблема. В управляемой памяти так и делается.

Цитата:
6. Иммутабельность. В простейшем случае это подразумевает добавление одной функции "заморозить", см. Object.freeze. Но лучше добавить ещё и поддержку ключевого слова const. Для указателя, как и в Си, ввести два понятия - иммутабельность самого указателя, и иммутабельность указываемого объекта.

В Обероне нельзя изменять экспортированные переменные по умолчанию. Чем тебе не иммутабельность?

Цитата:
7. Ввести больше разновидностей char, чтобы поддерживать разные виды международной письменности. 16-разрядный CHAR в BB недостаточен, 8-разрядный из Оберона-2 - тем более. Хотя для европейских языков 16 разрядов хватит. Другое дело, что наличие тега типа может уменьшить количество доступных полезных разрядов на 2-4 бита.

В Обероне-7 CHAR будет такой, какой захочешь. Но, таки да. Должно хватать всем. Тег типа -- это физически отдельное поле. Не уменьшит))

Цитата:
8. API, позволяющее подменять функцию во всех точках вызова. Первое применение этого API - трассировка, но есть и другие.

АПИ не язык. Делай, если надо))

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

Вот с этого и надо было начинать. В своём языке -- делай, что тебе нравится, и как нравится)

Цитата:
Соответственно, я ищу либо попутчиков, желающих поучаствовать в реализации хотя бы некоторых пунктов этого плана, или, возможно, ссылки на проекты, которые уже идут в том же направлении.

В качестве диванного аналитега -- без проблем. Как шкодер -- едва ли. И Лиспа не знаю, и его концепция мне на мозг не ложится.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 13:22 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Цитата:
п 1 действительно вытекает из опыта лиспа. Подход к целым числам как к числам неограниченной точности - единственный надёжный подход.

С этим никто не спорит. Это идеальный вариант. Но тут надо понимать: Оберон и бесконечные числа несовместимы. Это как математика и физика: математика позволяет записать число "пи" с бесконечной точностью, а физика говорит: эээ, нет! У меня есть предел точности измерений макрообъектов, который заканчивается на квантовом уровне.
Хотя, конечно, реализовать алгоритм бесконечных чисел -- это запросто. Так что, здесь надо понимать, что Оберон -- высокоуровневый ассемблер со строгой семантикой.

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

Ну, исходная предпосылка неудачная. У меня Обероны по причине кривого сборщика мусора не падали ни разу)))

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

Не совсем так. Тут подойдут слова из песни Высоцкого:
Открыт закрытый порт Владивосток,
Париж открыт, но мне туда не надо.

Если меня не интересует, что в памяти, а интересно состояние некоего девайса с 3 степенями свободы -- зачем мне это пользовать? А так, да. За всё уплочено. Недорого, надо сказать.

Цитата:
Пп 4 и 6 отражают прогресс в программировании. Было осознано, что иммутабельность объекта делает программы гораздо более понятными и надёжными.

Уже написал, повторюсь ещё раз: в Обероне-7 объекты экспортируются только для чтения.

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

Опозданчик!))

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 13:56 
Не в сети

Сообщения: 35
prospero78su писал(а):
Уже написал, повторюсь ещё раз: в Обероне-7 объекты экспортируются только для чтения.

Допустим, указатель экспортируется только для чтения, но изменить объект, на который этот указатель ссылается ничто не мешает.
Если конечно у объекта есть экспортируемые поля.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 14:10 
Не в сети

Сообщения: 350
Цитата:
Допустим, указатель экспортируется только для чтения, но изменить объект, на который этот указатель ссылается ничто не мешает.
Есть разница между иммутабельным объектом (который никто и никогда не изменит) и объектом только для чтения (который нам нельзя менять, а кому-то другому, может быть, можно).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 14:50 
Не в сети

Сообщения: 350
Цитата:
И, строго говоря, INTEGER -- имеет вполне ограниченный физический размер

Платформо-зависимый INTEGER - это вообще бред. На таком языке нельзя даже написать правильную программу, считающую от 1 до N. То, что в С тоже неправильный INTEGER, не может служить оправданием. В Обероне-07 сделано уже более осмысленно. Это язык, на котором можно писать переносимые программы. В этом случае большие числа могут быть библиотекой. Сделать большие числа не ссылками нельзя, поскольку размер результата операции их сложения или умножения неизвестен во время компиляции.

Цитата:
У меня Обероны по причине кривого сборщика мусора не падали ни разу)))

Попозже постараюсь написать пример строк из 10 для BB.

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

Цитата:
Чем ASSERT не угодил?
ASSERT хорош, но не про то. Ненулевые указатели позволяют выявить (а точнее, исключить) разыменование нулевого указателя ещё во время компиляции.

Цитата:
Использовать ANYPTR вообще ооочень плохая идея.
Вы не аргументировали, но я и не хочу об этом спорить. Мне ANYPTR нужен, т.е. нужно ещё больше, чем ANYPTR.

Цитата:
Вообще, не могу предложить адекватный пример, где без варианта жизнь закончится.
print любого объекта. В лиспе есть print-object, в других языках - какой-нибудь tostring. Жить без tostring, в принципе, можно, но зачем себя мучать? Как минимум, отладчик должен в себе содержать определение tostring.

Цитата:
В качестве диванного аналитега -- без проблем.
Хорошо. Пока ресурсов на эту тему за пределы обсуждений нет. Скорее всего, я возьму oberonjs, выкину из него всё, что сверх Оберона-2 и дальше буду добавлять своё. Потому что мне нужно учить JS для хлеба насущного, вот и будет повод. Только сейчас у меня уже есть один проектик на JS. Оберон-07, кстати, мне в целом не понравился. BB повеселее, хотя отдельные корявости наблюдаются.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 18:18 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
budden писал(а):
В Обероне-07 сделано уже более осмысленно. Это язык, на котором можно писать переносимые программы.
В Обероне-07 сделано нифига не более осмысленно. Там размер типа INTEGER никак не регламентируется (раньше регламентировался до 32 бит, потом Вирт это отменил), поэтому (чаще всего) в реализации для 64 бит он 64-битный, а для 32 бит — 32-битный. А иногда плавающий и заведомо не скажешь какой (в OBNC размер INTEGER задаётся ключом компиляции, и у меня ещё много вопросов о неявных предположениях о том, что размер INTEGER всегда равен разрядности платформы, допущенных в псевдомодуле SYSTEM). И сознательно выбрать разрядность расчётов как в КП или Обероне-2 нельзя, придётся полагаться на умолчания. То есть, выбирая 64-битную платформу, мы лишаемся всей 32-битной арифметики, со всеми вытекающими недостатками, вплоть до того, что 64-битная медленнее, а хранить числа, тратя на них в два раза больше памяти — затратнее. Поэтому писателю компилятора оч-чень заманчиво напихать в SYSTEM массу целых типов разной разрядности и забыть о переносимости навсегда, как это сделано в Patchouli-Compiler.

Так что, я подозреваю, Оберон-07 вовсе не переносимый язык, и уж точно не универсальный.

И считаю, что идея свести все целые типы к одному провалилась с треском: даже в Обероне-07 есть доп. тип BYTE, и смешивание его с INTEGER вовсе не очевидно. А вот нормально работать вместе с 32-битной и с 64-битной арифметикой — некак, остаётся только незнамо что.

budden писал(а):
Скорее всего, я возьму oberonjs, выкину из него всё, что сверх Оберона-2 и дальше буду добавлять своё.
А там и не реализован Оберон-2, только 7 и Eberon.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 19:08 
Не в сети

Сообщения: 350
Цитата:
Там размер типа INTEGER никак не регламентируется

Значит, русская Википедия лжёт. Извините :)

Цитата:
Поэтому писателю компилятора оч-чень заманчиво напихать в SYSTEM массу целых типов разной разрядности и забыть о переносимости навсегда, как это сделано в Patchouli-Compiler.

Ммм. Ну вообще такой SYSTEM, если им пользуются все, как раз и может стать началом переносимости, если пользоваться не INTEGER-ом, а вот этими типами разной размерности. Другое дело, что скорость и компактность при переносе не будут гарантированы, но хотя бы корректность - будет. С платформо-зависимым INTEGER-ом вообще ничего не гарантировано.

Цитата:
А там и не реализован Оберон-2, только 7 и Eberon
. Понял, спасибо. В контексте объёма расширений, добавленных Eberon-ом, самым трудоёмким будет избавиться от них в коде самого компилятора, на этом фоне отличия 7 от 2 не кажутся (пока) большими.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: реформа
СообщениеДобавлено: 29 янв 2018, 19:20 
Не в сети

Сообщения: 108
budden писал(а):
Цитата:
И, строго говоря, INTEGER -- имеет вполне ограниченный физический размер

Платформо-зависимый INTEGER - это вообще бред. На таком языке нельзя даже написать правильную программу, считающую от 1 до N. То, что в С тоже неправильный INTEGER, не может служить оправданием.


Это не оправдание, а доказательство, что и с "неправильным" INTEGER можно написать кучу полезного софта. Да, плавающая разрядность может создавать проблемы, просто мне кажется, что ты переоцениваешь их значимость на фоне всех остальных проблем характерных для многоплатформенного софта. Я лично переносил большую С++ code base сначала с big-endian на little-endian (PowerPC -> Intel). Недавно закончил перенос с 32-битного long на 64-битный (macOS 32 -> 64). На миллионы строк кода возникло только несколько run-time багов. Чуть больше проблем было диагностировано при компиляции.


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

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


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club