Информация
- В рейтинге
- 1 574-й
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Фулстек разработчик, Архитектор программного обеспечения
Ведущий
От 1 ₽
Java
Java EE
Java SE
Java core
ООП
Java Spring Framework
Spring Boot
Hibernate
PostgreSQL
Высоконагруженные системы
Подумаю над одним экзешником.
Статьей я хотел показать что мир и вся его сложность построена на простых правилах из которых строится сложное. Это как написать простой язык программирования на котором можно создавать программы.
Я сейчас готовлю другую статью. Эта была с позиции сверху вниз. Следующая с позиции снизу вверх. Там всего одно правило. Но объясняется гравитация, появление вселенной из ничего. Почему бозон Хиггса не частица. Появление частиц. Объясняется время. Почему черные дыры должны со временем исчезать или уменьшаться. Объясняется как можно создать квантовый двигатель. И многие другие вещи. Но пока надо поправить программу моделирующая квантовое пространство. Это не будет научная статья но будет интересно. И самое интересное это появление частиц.
ellochka.exe examples\hello.ell
ждет любой текст и потом выполняется.
> .\ellochka.exe .\examples\hello.ell
Привет Введите ваше имя: Привет, Привет! Итерация номер 1 Итерация номер 2 Итерация номер 3 Итерация номер 4 Итерация номер 5 Готово!
Сейчас не совсем правильно. В том плане что выводится пустой экран и ждет ввода, а нужно чтобы:
1. выводится тест: Введите ваше имя:
2. ввести имя
3. программа выполнилась
https://github.com/malexple/ellochka-zig/releases/tag/v0.0.1
Добавил релизную версию https://github.com/malexple/ellochka-zig/releases/tag/v0.0.1 теперь можно запустить без установки Zig, просто скачать и попробовать примеры.
Там кстати по
TRANесть тест test_tran.ell. На системеX1²+X2²-4=0, X1-X2=0пример с хорошим и намеренно плохим стартом (X1=-3, X2=10) — в обоих случаях сходится кX1=X2=1.41421, backtracking отрабатывает как надоПрограмма сама подбирает, что подставить в неизвестные, чтобы уравнения сошлись. Берёт текущую догадку, смотрит, насколько сильно каждая формула «промахивается» мимо нуля, прикидывает, в какую сторону и насколько двигать каждую переменную, чтобы промах уменьшился, и делает шаг. Если шаг оказался слишком большим и промах вместо уменьшения вырос — шаг уменьшается вдвое и пробуется снова. Повторяет, пока промах не станет достаточно маленьким.
По сути это метод последовательных приближений: не «вычислить ответ по формуле», а «угадать — проверить — поправить», раз за разом всё точнее.
Писал в Perplexity паралельно используя обычный ИИ в браузере от Google чтобы уточнять и искать дополнительную информацию. По каждому оператору отдельные уточняющие вопросы. На самом деле я восхищен вами. В DOS много ограничений и вы так мастерски придумали кучу разных обходных путей и ухищрений. Очень достойно! Если писать с нуля и без ИИ тут на месяцы разработки. Редактор я не реализовывал. Меню, графику я добавил. Очень много вопросов было по последнийм операторам LIRA/POLI/REAK... Много вопросов с графикой. Очень не хватало реальных скриптов. Но еще быстро получилось потому что у вас очень хорошо описан язык.
Лексер реализован построчный (язык построчный, GOTO/ESLI работают по номерам строк, так что усложнять токенизацию сквозным контекстом смысла не было) — разбивает одну строку на токены. Результат — не байткод, а просто дерево (ExprNode, тегированный union с указателями через аллокатор) — и отдельная функция evaluate() рекурсивно обходит это дерево, на каждом узле подглядывая текущее состояние интерпретатора (значения переменных/массивов). Если пришлете примеры скриптов или исходники переделаю так как изначально задумывалось. И было очень много ньюансов связаных с Dos и современными Windows. Но было очень интересно!
Добрый день! Ссылки добавил — и в README на GitHub, и в файлы сборки (build.zig/build.zig.zon), теперь везде явно указано на ваш оригинал: https://erichware.com/inform/ellochka.htm.
Про написание за обед — тут не весь язык а часть методов как шаблон. Остальное пилил вечером с ИИ.
Что уже сделано. Интерпретатор практически полностью переведён — реализованы и проверены все 62 оператора языка.
Ваш sample.ela в оригинале (без единой правки) я прогнал через получившийся интерпретатор — дошёл до главного меню и раздела «графика» без ошибок. Остальные пункты надо шлифовать.
Что осталось. По мелочи: KEYS/WAIT пока не различают клавиши-стрелки (нужно для игр вроде «Змейки» — планирую доделать); метакоманды !nul/!one/!err; PUTF/GETF только для 4-байтовых значений (1/2 байта не сделаны);
Zig — язык действительно малоизвестный, но набирает популярность. Пока еще первая версия даже не вышла. Выбрал его за: отсутствие скрытых аллокаций и рантайма (важно для маленького интерпретатора, где хочется полностью контролировать память, — в чём-то похоже на дух самой Эллочки, только наоборот, «снизу»), простой и прямой FFI в WinAPI без обёрток (графика и консоль написаны напрямую через extern на user32/gdi32/kernel32), и просто личный интерес — хотелось попробовать язык на нетривиальной задаче, а не на «hello world».
Интересно! На обеде решил посмотреть язык "Эллочка" создал небольшой прототип на windows на языке zig. https://github.com/malexple/ellochka-zig
Со ScriptGuard я думаю еще добавлю некоторые проверки. Но это буду уже делать в связке UI с расширение, пока в процессе. А вот с мотивацией действительно получилась дополнительная сложность. Но как мне кажется, если сделать в UI удобный и понятный конструктор. То он снимет мнигие вопросы. И так как язык простой. Мне думается можно автоматизировать создание заглушек, то есть тестировщику вообще не придётся писать код руками, только собирать логику визуально
А как вы и где записываете задачи или идеи? Есть ли структура. Какие программы используете?
Спасибо! Рад, что пригодилось.
Вы правы LiteLLM умеет это и многое другое. LiteLLM требует postgres и нужно в памяти держать 2GB RAM. В моем же сервисе нет БД и требования скромнее.
Хороший инструмент. Спасибо! На досуге попробую.
Отличное решение. Доработаю на досуге.
У меня есть продолжение этого дела, но это уже не совсем скрипт. Я делал плагин для perplexity по сочетанию клавишь alt+ctrl+p появляется окошко, где ты в дереве файлов выбираешь, то что нужно отправить нейросети. Тоже все одним файлом формируется. Но плагин не стал публиковать, потому что там были функции парсинга ответов от нейросети и создания файлов по ответу. Этакий cloude code только кнопку нужно нажать, чтобы изменились файлы или создались новые. DeepSeek, Perplexity дают пользоватся чатом практически без ограничений, но любые парсеры запрещены на странице. Сделаю потом отдельным плагином, в котором будет только выбор файлов и се одним контекстом из буфера.
Если говорить о Claude.ai да пока открыт тред он помнит, но в бесплатной версии лимиты быстро заканчиваются.
Если говорить Claude Code то он действительно по моему сейчас умеет запоминать контекст между сессиями, но это платный продукт.
Основной сайт работает, а сложности наблюдались именно со страницами тестов в некоторых корпоративных сетях, где трафик может фильтроваться прокси и политиками безопасности.
Groq не работает из РФ поэтому API встроен в сервис и вызывается сервером, а сам сайт крутится на Hugging Face, то есть запросы идут с зарубежной инфраструктуры, не из браузера пользователя в РФ. Сам ответ из нейросети вызывается уже по результатам теста.
На Hugging Face Spaces, и на free hardware Space засыпает от неактивности по правилам платформы. Скорее всего вы попали в этот промежуток времени. Запуск занимает примерно 30 сек. После чего сервис отвечает нормально.
По результатам теста рекомендация генерируется через модель llama-3.1-8b-instant в groq.
Я и не претендую на научность — в статье нигде не написано «доказано наукой». Это инструмент самонаблюдения, не диагноз
Если честно — и сейчас сплю не по учебнику) Просыпаюсь в 2-3 ночи, пару часов работаю над идеями пока голова свежая, потом снова ложусь. Это не 4 часа как было на пике — но всё равно не восемь. Зато в выходные отсыпаюсь. Когда идёт поток идей и хочется что-то проверить — сложно бывает уснуть.
Полностью согласен! Мне с одной стороны хотелось об этом рассказать и дать возможность всем понять и найти себя.