пятница, 7 февраля 2025 г.

Программирование без фрагментации памяти

Проблема организации памяти "динамическими списками над регулярным массивом" связана, в конце концов, с проблемой фрагментации памяти. Зачем нам сборщики мусора? Можно ли кодить без мусора? Гипотеза в том, что можно. В конце концов, все программирование можно описать метафорой фрагментации памяти в блоки или контейнеры и системой их управления. Если бы не было динамики, можно было бы обойтись таблицами или матрицами, где мы просто бы переписывали содержимое их элементов с адресным доступом. Но что делать, когда линамика рушит всю эту регулярность, а память не только не матричная, но просто линейная, а, нам например, надо элементарно вставить новый элемент во "внутрь" или даже изменить содержимое, не совпадающее с прежним размером.

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

Другой метод, акцентируемый проектом PicoLisp и, в приницпе, идеей связных списков, просто все время добавлять новые элементы в конец списка. Но тогда лучше не изменять размеры уже существующих элементов, а если у нас, например, новый параметр у объекта, с которым надо постоянно работать, то это вынуждает "юзать каретку" иногда неоправдано слишком далеко. Отсюда идея выделять "постоянные параметры", которые можно "перезаписывать" при необходимости некоторой процедурой балансировки. Отсда, собственно идея акцентировать "постоянные" параметры, позиционирование которых можно при случаи оптимизировать а так же тразитивные, параметры, которые приходят из внешей среды (создают внешние эффекты).

Что лучше? Пока не понятно. Вероятно, что балансировку можно сочетать с первым подходом. Точно ясно только то, что на базовым уровне у нас есть блоки, параметрами которых являются адрес и размер ... и это может меняться вместе с содержимым. Блоки именуются или являются анонимными "лямбдами". Собственно, исчисление последних, действительно, является базовым и должно быть реализовано в хостовых системах, в первую очередь и, даже с поддержкой графического интерфейса! Это и есть система без синтаксиса! И она может быть описана гораздо проще, чем существующие тома с мультиплицированными друг друга теориями! По факту! Демонстративно!

P.S. И ещё в связи с памятью два важных её принициа - персистентность и эластичность, которые связаны между собой и дополняют друг друга. И решения для обоих - распределенная база данных. Не обязательно иметь "постоянно расширяющуюся" память. Наши блоки или контейнеры, в конце концов, всегда конечны, а вот распределение и рещает прблему этого перманентного расширения. Какие здесь базовые значения параметров зависит от аппартных или технологических возможностей, скорости доступа ... На текущий момент это 4 - 10 Гб ... Но, кстати, и это может быть просто динамическим параметром. Ну и, если в двух словах о революционности Lisp-идеи, то она вся в точечной паре, в CONS, а в скобочном синтаксисе, как некоторые пытаются интерпретировать. По сути в фундаментальности представления ассоциативного массива или двудольного графа, которые являются базой для любых таблиц, бинарных деревьев и, в приниципе, любых сетей.

Постоянно перечитывать! От автора идеи потоков!

вторник, 28 января 2025 г.

PicoLisp и LLVM

Как-то само сабой получилось так, что инициировал тиддливики файл для исследования LLVM, на котором написан базовый "PicoLisp asm64", на котором уже, в свою очередь, написан сам интерпретатор Pil21, чтобы детальнее исследовать, собственно, интерппретатор, с целью попыток проделать тоже самое для WASM-WASI вместо LLVM.

Не знаю, как это далеко меня заведет, но пока даже интересно и все это только вдохновляет учиться и понимать современное состояние дел в кодировании. Что уже бросается в глаза ... современные ассемблеры, синтаксически, невольно от их создателей трансформируются в некоторый конвенциональный интерфейс ... пока ещё не один в один, но, видимо, это рано или поздно случится. По крайней мере на этих двух ассемблерах это уже явно, а ещё если к ним прибавить проект flat assembler. Такое впечатление, что после некоторой интеграции архитектур и синтаксисов может, в связи с домbнирование RISC V аппаратной архитектуры или какого-то дальнейшего её разития, а попытки уже есть ... это что-то полностью заменит C/C++, а еже с ними и все другое как хосты ... И страшное слово ассмблер или "макроассемблер" перестанет наводить ужас. Их ортогональность к аппаратным реализациям возьмет вверх. Более того, возобладает концепция адресности, вернувшись на своё законное место. Иначе со сложность не побороться.

Естественно, что "пара-ленточная" архитектура здесь останется пока "над" процессом, но явно как развитие процесса организации "динамических списков над регулярными массивами". Это тренд, вектор развития кодификации вычислительных процессов. Только потом все остальное, включая интеллектуальных агентов и их сетей.

И как помогает Tiddlywiki своим ортогональным интерфейсом! Вот так должны выглядеть универсальные приложения будущего, не касаясь какой-то специфической предметной сферы, которые все равно могут быть и плагинами. И такие аналоги агентов могут быть ограничены в памяти, но работать в некоторой общей распределенной среде. Форматы ... Протоколы ... И их трансформеры друг в друга ...

вторник, 21 января 2025 г.

PicoLisp + Tiddlywiki

Идея интеграции этих систем захватила полностью. Почти понятно, что делать с сервером приложений и есть отличный прототип для этого. А вот что делать с тольстым клиентом в браузере пока не ясно. Есть тенденция отказываться от поддержки плагнов в браузерах и разработчики поддталкивают к компиляции систем в Webassembly.

Пытался активно "серфить" тему в сети с помощью интеллектуальных ботов. Все смещают акценты в этом направлении. Посмотрел более внимательно, что там на текущий момент с WASM и WASI и на фоне знакомства с PicoLisp вдруг осознал как близки эти технологии друг другу сами по себе. В нектором смысле, реализация интерпетатора PicoLisp так и напрашивается в контейнере Webassembly. Ограничения по память в четыре гигабайта не препятствие. Кто сказал, что в случае развития здесь не сработают технологии распределительных систем.

Короче, инициировал отдельный тиддливики файл для изучения WASM. Насколько авантюрная идея? Пока сам до конца не осознаю что и как. Но интуиция подсказывает, что направление перспективное, а интуиция пока никогда не подводила! Есть ощущение, что это не под силу одному пенсионеру, который последний раз сам кодил почти полвека назад. Но есть "дорога" ... "без начала и конца ..." ... И это будет либо шаг в сторону персонального интеллектуального агента или контентной обучающей базы, либо просто фокус для интеллектуальной игры ... хотя бы на уровне создания теории и спецификаций. И на этом пути можно свободно рассматраивать свои форматы и протоколы, а по пути окончательно закрыть тему "динамические списки над регулярными массивами".

вторник, 14 января 2025 г.

Идеальная синтаксическая система

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

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


вторник, 7 января 2025 г.

PicoLisp и другие

Все идет по плану. В новом блоге на хешборде новые посты и в еженедельном режиме. Инициировал первую страницу на PicoLispWiki и параллельно растет число тиддлеров для конспектирования результатов исследования PicoLisp в Tiddlywiki

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

Теперь можно все остальное "вычищать" из ментальной памяти, что окажется важным, должно быть связано и так или иначе проявится в процессе погружения. Есть ещё только два аспекта, которые, видимо будут постоянно присутствовать рядом пока не найдется решения, ассимилирующего все три проекта. Tiddlywiki в части архитектуры интерфейса и синтаксис ASON Format-а, включая развитие проектов, продолжающие концепции Rebol типа Spry, Arturo, Ryelang и так далее. Последние могут быть источником новых идей и оптимизации философии компьютерных интерфейсов, включая такие концепции как персистентность (историческое моделирование, Фантом ОС, UNISON), которые лежат как принципы в основе ИИ, расширяя и ту же базовую идею неизменяемости в "функциональном программировании". Теория категорий или алгебраические типы данных - все это символизация, нейминг, теория определений или отношений, структуры, в основе которых "точечные пары" и новая теория должна конструироваться вокруг этой самой символизации и интерпретации, с минимум синтаксического сахара типа "истинности", "теории типов" и тривиальных "черных ящиков" ... "лямбда-исчисления". Организация памяти и её распределение, решаются в пользу связного списка над регулярным массивом, в пользу ассоциативного массива, в котором кодируются любые другие табличные структуры.

суббота, 28 декабря 2024 г.

Итоги и планы 2024 - 2025

Обычно к концу года я занимаюсь стратегическим планированием на следующий год, а в последнем посте года публикую просто список всех постов за год. Сейчас думаю, что достаточно привести на них ссылку. Какие итоги? Я нашёл базовую платформу - это PicoLisp! Оформилась структура для развития дисциплины МЕТАМОДЕЛИРОВАНИЯ. Я, наконец, закончил со словарем для лексики ГЛОТЕОНА. Ну и продолжаю "чистку" накопленных ресурсов, многие из которых, видимо, так и не прочитаю внимательно, хотя почти все, что пытался сохранить, все-таки, мимоходом пробегал глазами. Но 20 Гб архива - это неподъемно для меня. Кое-что забывается и надо начинать все сначала, систематизировать и оптимизировать. Вот систематизацией и оптимизацией документации PicoLisp я и займусь, параллельно, конечно, пытаясь на нем что-то делать. Сам собой возник проект тиддливики, её полная архитектура и интерфейс с заменой JS на PicoLisp. Сомневаюсь, что такое подъемно для меня одного, но может кто и поможет. Но идея снаружи и от неё выиграют оба проекта. Не удержался и зарегился на хешборде, сильно понравилось. Буду там вести журнал и в документе пытаться формулировать связный текст по метамоделированию и САР-грамматике ... Возможно, в отличие от этого блога, в ежедневном режиме, попробую, как получиться, а здесь подитоживать еженедельно, как обычно. Теперь, когда меня спрашмвают, чем я занимаюсь, то я бодро отвечаю - персональной базой знаний и генеративным интеллектом!

суббота, 21 декабря 2024 г.

PicoLisp и Chrome OS Flex

Поставил Chrome OS Flex и этот пост уже под ним. Но причина была не только в том, что последний апгрейд Win 11 24 H ломает интернет, но и в том, что стал замечать, что у некоторых рахработчиков стали явно проявляться предпочтенияи не в пользу Майкрософт. В частности, это можно увидеть по проекту PicoLisp. И, кстати, попадались ещё ряд проектов, которые имеют место под маркой "ГНУсного фонда" и игнорирующие МС. Ну что ж, когда-то я защищал первые Винды против Юникса и не предполагал, что Линукс получит такую мощную поддержку, но когда появились сервисы Google, то на Google site, ещё старой версии, вел сайт, посвященный гуглемании, их цели под знаменем Интернета казадись и кажутся самыми разумными. Потом энтузиазм поутих, когда они метались с глобальной базой знаний и особенно когда закрыли G+. Но как-то само собой получается, что отказаться от Google не получается и при всех минусах это не то что "наименьшее зло", но фирма, ещё способная на инновации, и не меньше, чем то же "Яблоко". Эпоха доминирования IBM и AT&T сменилась доминированием МС, Яблока и Гугл ... Специализации на ПО типа Оракла, купившего Sun, якобы "фонда свободного ПО" и даже попыток Амазона, без своего железа не выиграют конкуренцию, не случайно у последнего хотя бы есть своя электронная книжка, а те же HP или Xerox не бросают свои принтеры. Все-таки, сначала железо ... а потом сеть (фермы железа, что та же сеть, как впрочем даже один комп) ... а софт как интерфейс с этим будет развиваться сам собой и оптимизироваться. И дело не в том, какие у тебя программеры, а как ты реагируешь на внешние изменения и пользователя ... Пусть МС надеется на "умные очки" ... "Яблоко" на "умные часы" ... но "два раза в одну и ту же реку не войти" ... Персональный компьютер должен быть в сети и здесь пока флагманом ясно кто. Смотрите на японцев и корейцев, они как барометр ИТ-фронта с их Curl-яндиями и прочими культами ... Так что, я осознанно становлюсь "гражданином Гугляндии", в частности, с их Golang. Не обязательно должно нравиться все в стране, где ты проживаешь, но в целом, долна быть своя предпочтительная инфраструктура. Ну а туристом, можно наезжать куда угодно ... 

PicoLisp мне подсказал кто-то из новых поисковиков на базе нейросеток, чуть ли не ЖПТ ... и подсказал в свете аналогии Rebol  ... Ну да в сысле того, что не все выражения дожны вычисляться, они идейные аналоги ... Так что к проектам Spry, Arturo, Ryelang, Red, Boron, акцентирующие Rebol - синтаксис и его базовые идеи, прибавляется PicoLisp ... с его утверждением автора по поводу инетпретатора, который типа написан на нем самом ... Про компиляторы мы такое слышали, а вот про интерпретаторы ещё нет. Буду разбираться в деталях.