OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 08 Июль, 2025 01:11

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




Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 00:45 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
arisu писал(а):
(задумчиво) на всякий случай покаюсь: никакого лиспа на Z80 не существовало. математику я на нём не считал, symbolic computations не делал. это всё LSD проклятое, наркотикам бой!
Там существовали микро-Лиспы и были в целом ничем не эффективнее тамошних Бейсиков.

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

Можно и на машине с 2 Кб писать на Лиспе два плюс два и сильно этим гордиться. Но если понадобится прошивочка, придётся брать треклятый Си. Не считая ассемблера конечно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 00:57 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1623
А вот кстати и компилятор для таких же маленьких машинок, работает через транспиляцию в C++ и до боли
напоминает кое-что другое.

https://ferret-lang.org/

Цитата:
Ferret is a free software lisp implementation designed to be used in real time embedded control systems.

  • Tailored for Real Time Control Applications. (Deterministic Execution.)
    ...
  • Easily Embeddable (i.e Ferret fns are just C++ functors.)
    ...
  • Module System


Не ровен час, может случайно оказаться и пофичастее Ofront+, впрочем, это не имеет большого значения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:08 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1559
бедные naughty dogs периода их расцвета. не сказал им никто, что фигня их лисп, и не могли они на нём игры написать, которые на то время никто технологически повторить не умел.

конечно, это был кросс-транслятор. удивительно, но почему-то и сишечка, и оберон для микро — тоже сейчас кросс-трансляторы. при этом оберон — кастрированый, без GC. я, однако, с удовольствием посмотрю на использование Hi-Tech C на спектруме. с магнитофончиком и 48К. а то как-то так получается, что лисп подразумевается нативный, а для сишечки нам кросс-транслятор подавай. у меня-то лисп самопальный был; ядро на GENS (и магнитофончик!), потом код уже на лиспе (и магнитофончик!). с GC, конечно. никто больше с symbolic computations не справлялся, что поделать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:22 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
arisu писал(а):
бедные naughty dogs периода их расцвета. не сказал им никто, что фигня их лисп, и не могли они на нём игры написать, которые на то время никто технологически повторить не умел.
Знаю только одну игру на Лиспе: Abuse. DOS'у на 486 хватало мощей, чтобы это потянуть. Но мы же сейчас про более маломощные машины? Так что ссылки в студию. Не надо быть голословным.

Я понимаю почему arisu тянет лапку за budden'а. Вы как таджики-мигранты, знаете, что поодиночку не выживете в агрессивном мире. ;)

Любовь к Лиспу понятна. Людям нравится шото такое эдакое. И если Форт был в своё время гениальным, без шуток. Потому что система влазила в несчастные 8 Кб, унифицировала различие разных процев в один Форт-подход. Не то, чтобы идеально, но как-то. А ещё там был экранный редактор, компиляция, интерпретация, встроенные команды ОС и бог знает что ещё. И не было требования, к примеру, линковать объектники, потому что их надо прочитать с какого-то носителя, а у нас кассета. Так что Форт в своё время и для своих задач был чем-то фантастическим. Сейчас же Форт выглядит уныло и самопально. Модульности нет, и ещё много чего. Но вот Лисп - и тогда, и сейчас - унылый, с требованием вывихнуть мозг, с чрезмерной нагрузкой на память и т.д.

Про самопал на GENS не надо, или, опять же, ссылки в студию. А то я сейчас расскажу как ИИ писал в 2 Кб. ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:26 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1623
Олег, Вы бы хоть не позорились и переименовали README.txt в README.md. У вас файл в формате Markdown, но из-за его расширения гитхаб его убого отрисовывает, а может отрисовывать красивые заголовки. Благодарностей не надо.

Во всяком случае, слов "работать без кучи" и "подсчёт ссылок" я в описании Ofront+ не вижу. В описании Вашего компилятора я не вижу ничего подобного следующему абзацу:

Цитата:
So the default memory management is done using reference counting. Unlike other lisp implementations, Ferret supports various memory management schemes,

* malloc/free - Allocations are handled by the system implementation. (Default memory management.)
* Memory Pooling - On memory constraint systems such as microcontrollers Ferret can use a memory pool to avoid heap fragmentation and calling malloc/free. Effectively running with no heap, allocating all memory at compile time on the stack.
* Third party allocators (i.e tcmalloc)
* Third party garbage collectors (i.e The Boehm-Demers-Weiser conservative garbage collector.) - All memory is managed by a third party GC disables reference counting.


Похоже на то, что в вопросах управления памятью ferret-lang кроет Ofront+ (равно как и большинство других оберонов) аки бык овцу. Другое дело, что Boehm GC - это скорее игрушка, но кто связался с транспиляцией через C/C++, тот будет страдать в любом случае, ввиду того, что Си не позволяет получить доступ к стеку и поэтому крайне проблематично сделать нормальный сборщик мусора. Думаю, что и в Вашем Обероне сборка мусора составляет проблему. Впрочем, Вы неприятный собеседник, и не потому, что Вы правы и знаете больше меня, а по другим причинам. Я с Вами разговор закончил и какое-то время буду воздерживаться от чтения Ваших сообщений. Однако этот вопрос всё же стоит 10 минут.

Пришлось самому скачать Ваш проект. Нельзя сказать, что я понял, что вот тут написано:
Код:
  PROCEDURE MarkStack0* (sp: ADDRESS); (* exported in order to prevent inlining by C optimizers *)
    VAR
      nofcand: INTEGER; inc, p, stack0: ADDRESS;
      align: RECORD ch: SHORTCHAR; p: S.PTR END;
      cand: ARRAY 10000 OF ADDRESS;
  BEGIN
    nofcand := 0; stack0 := SystemMainStackFrame();
    (* check for minimum alignment of pointers *)
    inc := S.ADR(align.p) - S.ADR(align);
    IF uLT(stack0, sp) THEN inc := -inc END;
    WHILE sp # stack0 DO
      S.GET(sp, p);
      IF uLE(heapMin, p) & uLT(p, heapMax) THEN
        IF nofcand = LEN(cand) THEN HeapSort(nofcand, cand); MarkCandidates(nofcand, cand); nofcand := 0 END;
        cand[nofcand] := p; INC(nofcand)
      END;
      INC(sp, inc)
    END;
    IF nofcand > 0 THEN HeapSort(nofcand, cand); MarkCandidates(nofcand, cand) END
  END MarkStack0;

Но похоже на то, что всё же это консервативный на стеке сборщик мусора. Если было бы не лень, можно было бы написать нечто подобное тому, что я в своё время сделал для BlackBox и показать, как это может привести к краху программы. Но в BB эта проблема решается ЕМНИП дроблением задачи на мелкие подзадачи в событийно-ориентированном подходе, т.е. стек регулярно опустошается, что сильно смягчает (или полностью устраняет) проблему, хотя стоимость решения я бы не назвал малой. Возможно, что если программы на Ofront+ писать так же, а на ferret - иначе, то Ofront+ даже будет работать лучше, чем ferret и меньше будет подвержен этим граблям. Однако надо понимать, что GC непредсказуемо по задержкам (кто-то же там выступал на тему приложений реального времени), а тот же подсчёт ссылок уже предсказуем, если мы понимаем структуру данных в программе, и его можно попытаться ещё вручную так разбить на мелкие слоёчки, либо создавать очередь на удаление, чтобы контролировать паузы на GC.

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

При всём при этом, Олег, спасибо! ferret - интересный проект, я включу его в область своих интересов. Иногда в спорах рождается истина (хотя редко).


Последний раз редактировалось budden Суббота, 16 Ноябрь, 2024 01:34, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:30 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
budden писал(а):
Олег, Вы бы хоть не позорились и переименовали README.txt в README.md. У вас файл в формате Markdown, но из-за его расширения гитхаб его убого отрисовывает, а может отрисовывать красивые заголовки. Благодарностей не надо.
Может я просто рассчитывал больше на то, что это текстовый файл, а не то, что его будут с упоением читать именно в веб-интерфейсе GitHub?

Благодарностей не требуется. Я про ferret нигугу. В Ofront конечно однопоточный сборщик, но ведь и сам язык Оберон предполагает лишь однопоточное использование (кроме AO, но его поддержки в Ofront+ нет).

Никого за пояс я затыкать не собирался, просто допилил инструмент под свои задачи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:32 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1559
как и ожидалось — «про лисп я не знаю, но неоспоримое мнение имею!» а я убогим по субботам не подаю. перед тем, как лезть со своим мнением — следовало бы потрудиться и изучить предметную область. но проклятый эффект Даннинга-Крюгера мешает, я понимаю.

p.s.: часть про нативные трансляторы характерно проигнорирована. неудобная потому что.


Последний раз редактировалось arisu Суббота, 16 Ноябрь, 2024 01:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:33 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Не, ты лучше давай подробности про свои symbolic computations на Z80. А то сейчас выяснится, что многие считали на калькуляторе, а многие - чур меня - даже без.

arisu писал(а):
p.s.: часть про нативные трансляторы характерно проигнорирована. неудобная потому что.
Часть про нативные трансляторы (коих, видимо, два из ста) разжёвана. И пояснено, что поддержка "настоящих чисел" слишком затратная. Для тех, кто в танке.


Последний раз редактировалось Oleg N. Cher Суббота, 16 Ноябрь, 2024 01:38, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:38 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1559
symbolic computations на калькуляторе. прелестно. казалось бы, чего сложного — просто сказать: «я не понимаю этого термина». но демонстратор эффекта Даннинга-Крюгера понимает всё и всегда.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:39 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Нет бы просто сказать: "я там конкатенировал строки". Нет же, надо выпендриться. В зеркало давно смотрел?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:50 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1559
олег, я полагаю, что все, кому это было хоть как-то интересно, уже многократно убедились, что ты потрясающе невежественен, и просто ходячее пособие для демонстрации того самого эффекта. никаких штрихов к портрету ты уже не добавишь: портрет совершенен. так что ты зря тратишь энергию на повторение очевидного. я, конечно, ни в коем случае не запрещаю тебе продолжать позориться — дело твоё. но может быть ты всё-таки рассмотришь альтернативу — учиться?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 01:54 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Не тебе меня судить, arisu. Ты здесь занимаешься только самоудовлетворением и иногда чешешь пузико тому, кто чешет тебе. И моё имя пишется с большой буквы. Мне пофиг, что тебе лень shift нажать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 02:27 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
arisu писал(а):
как и ожидалось — «про лисп я не знаю, но неоспоримое мнение имею!»
Кстати, писал в те времена и на Лиспе карточные алгоритмы - тасовку карт, сортировку, раздачу. Прямо на своей Орельке с 48 Кб ОЗУ. Тянет на символьные вычисления? Да я даже исходники тех времён тебе найду, если надо. На Лиспе. Только в ответ на твои.

Вот только быстро понял, что карточную игру на Лиспе не напишу. Памяти не хватит потому что. Потом вслед за Лиспом пришлось выкинуть туда же и Hisoft Pascal, хотя и с большой неохотой. И свой язык начать изобретать. Кстати, язык у меня тогда получился, но Форт на него повлиял больше. Впрочем, перед кем я распинаюсь. Просто одни пишут простыни с похвальбой себя, а другие это просто подразумевают с молчаливым достоинством.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 02:45 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1559
а-а-а-а-а-а! словами про «молчаливое достоинство» ты сделал мой день!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 05:10 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Денис, поскольку Вы зажали ответы на мои правильные вопросы, то резюмируем.

    • Лисп - это узкоспециализированный язык. Не надо пихать его везде. Не взлетит. А меня интересуют именно полноценные универсальные ЯП, в частности, Оберон.

    • Разработка для малых машин не подразумевает два плюс два. Нам нужно средство, которое позволит решать реальные задачи в очень ограниченных ресурсах. У меня есть опыт работы с такими ограниченными машинками. Лисп здесь точно не подходит.

    • Инсинуации arisu "я стопицот лет назад писал свой Z80 Лисп на GENS и делал на нём то-сё" не засчитываются, поскольку ему важно лишь повыпендриваться, как обычно. Неубедительно. Поможет только демонстрация практических результатов. Но я исхожу из того, что раз для задачи взята малая машина, значит из неё надо выжать всё.

    • "Настоящие" числа имеют реально самую минимальную применимость в очень узкой нише. Я за 25 лет программерского стажа не нуждался в них ни разу. Что я делаю не так? (Вынужден заметить, что Ваше упоминание о "настоящих" числах смахивает на подчёркивание собственной "элитарности", как бы намёк на неполноценность ЯП, где этого нет; но, опять же, этого нет там на уровне языка, но сколько угодно есть на уровне библиотек).

    • "Настоящая компиляция в настоящий машкод" никогда не была родной для Лисп-мира. Это компромисс, на который идут далеко не все лисперы. Обычно машины мощные, можно не изощряться. Задачи реального времени или требующие очень высокой производительности - это не ниша Лиспа.

    • Списки и прочие динамические структуры ложатся не самым эффективным образом на 99% существующих процессорных архитектур. То, что это вообще работает - всё благодаря мощному железу.

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

    • Мои доказательства, что я писал на Лиспе 20 лет назад будут неубедительны, arisu первый скажет, что их сгенерил ChatGPT. Да и хрен с ним.

    • Не претендую на знание всех диалектов и тонкостей, мне хватает знания принципов. Я и не записывался в эксперты по Лиспу, если Вы не заметили. И присутствие на Оберон-форуме не требует обязательного сертификата на знание Лиспа. Поэтому могу каких-то деталей и не знать, но только лишь деталей.

    • Когда-то я серьёзно интересовался языками Rebol и Red, которые являются гибридами Форта и Лиспа. Есть одна реализация Rebol-подобного языка Meta, на котором можно писать для 6502 (Я здесь должен начать чмурить arisu за полное невежество в отношении ЯП Rebol и Meta?). В частности, код будет работать на Атари. Ностальгия разработчика. Но на серьёзную разработку для ретро-железа это не тянет. Код красивых демок, в основном, писан там на встроенном ассемблере.

    • arisu не привёл никаких доказательств существования фантастических игр на Лиспе, выжимающих всё из машины и не имеющих аналогов. Как это понимать? Или поленился, или, как обычно, сказано просто для красного словца. В мире ретро-машин Лисп для разработки игр никто не использует. Максимум он годится для крестиков-ноликов в текстовом режиме. Возможно, для машин помощнее типа Amiga или PC/DOS всё иначе.

    • Ну и да, я профессиональный программист и много лет зарабатываю себе на жизнь этим ремеслом. Даже не говорил бы этого, если бы не метание говен от arisu.

На этом можно и закончить, но можете и ответить, если угодно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 06:00 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1559
полаханием некоего афедрона полностью удовлетворён. хихи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 06:20 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
По теме. Про "настоящие" числа. Я просто против навязывания их вместо "эрзац"-чисел везде. Для всех вычислений. Это плохо. Такая огромная точность просто не нужна для большинства применений. Она слишком расходна. Дорого обходится. Особенно в ситуациях жёсткой экономии ресурсов. А их экономить нужно всегда. Как мне ещё сформулировать, чтобы было понятнее?

Впрочем, это самое малое, что нам "из коробки" навязывает Лисп. Видимо, спеша нас этим осчастливить. Кому-то от этого радостно, а кому-то и нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Ноябрь, 2024 13:31 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 586
Откуда: Украина, Днепропетровская обл.
Ну и ещё. Лисп (и Rebol) не являются фуллстэк языками. Обычно Лисп накручен поверх языка реализации. Игры, где логика может быть на Лиспе, но графический движок, как и интерпретатор Лиспа - непременно на Си или чём-то другом, более низкоуровневом. Добрая половина игры Abuse, о которой я упоминал выше - писана на Си. Это что-то говорит о полноценности Лиспа.

Оберон и модный Rust же (как и Red) являются фуллстэк языками.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Ноябрь, 2024 13:29 

Зарегистрирован: Пятница, 11 Январь, 2019 21:33
Сообщения: 101
budden писал(а):
Вообще, пример было бы неплохо.
Не уверен, что читаемо, но пока так: CONTEXT and Co on AMD64_NT


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Ноябрь, 2024 14:47 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 305
Откуда: Russia
vvmtutby писал(а):
Не уверен, что читаемо, но пока так

Но ведь какой-нибудь сишный Header[2] это не то же самое, что Header: ARRAY [0..2]


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

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


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

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


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

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