Проекты на PascalABC.NET

Всё описание на англ. и русс. на гитхабе.

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

2 лайка

Сергей, довольно амбициозный, хотя и интересный проект - ещё на ZX Spectrum в Бейсике сам начинал со взвешенных ходов, используя бэктрекинг для отсеивания тупиковых вариантов и замену игрока (бота) для предсказания возможных ходов оппонента (+x для белых = -x для чёрных), пока не упёрся почти в 40КБ долгоиграющей логики, без возможности свопа на диск и не застрял на переработке агрегатора, заменяя одно GOTO/GOSUB на другое.

Хотя как-то попадался неплохой “среднячок” юношеского разряда вроде на BP7, но там была смешанная оценка рисков (расстановки), что злоупотребляла прописанными шаблонами (записи дебютов, миттель- и эндшпилей нескольких гроссмейстеров) с небольшими вариациями, а основной код был в криптованой библиотеке с враппером, а с IDA и BlackIce тогда не разобрался, увы. Особенно печально, что на самом сложном уровне компьютер зря гнался за тяжёлыми фигурами, часто пропуская пешку в ферзя или даже мат, чего не было на среднем…

Когда узнал, что есть 3d шутер “kkrieger” размером 96КБ, даже не так удивлялся как тому, что с 80-х годов есть шахматы (пусть даже с упрощёнными правилами) до килобайта, после чего немного подостыл, а вот в свете нейросетей выглядит познавательно)

1 лайк

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

У меня полностью противоположный подход: минимум заранее прописанных правил, чтоб у ИИ было макс гибкости. Я ещё хочу на NEAT нейросеть перейти, для этого добавил заголовок в каждый файл-сохранение нейронной сети, типо версия в 2 байта.

Если говорить про шахматы на тостерах - я слышал кто то то ли в 200, то ли в 500 байт уместил шахматы и глупенького бота к нему)))

FastNeuralColor - приложение для автоматического окрашивания изображений с помощью нейронной сети. Результат окрашивания фотографии моего города, сделанной в 1960-х годах.

Хотел бы поблагодарить Сергея(Sun_Serega) за помощь в чтении весов данной нейросети из JSON, а также Jeffery Zhao(https://github.com/zeruniverse) за, собственно, сам JSON и разработку нейросети на Torch. Код опубликован на странице PABCSoft в GitHub: https://github.com/PABCSoft/FastNeuralColor

3 лайка

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

На этом я останавливаться не собираюсь, сейчас разрабатывается новая версия программы, которая позволит окрашивать абсолютно любые фотографии(текущая версия не предназначена для окрашивания фотографий людей) с помощью лучшей на данный момент архитектуры сети от Ричарда Шенга.

2 лайка

PhotoShop - многофункциональный графический редактор, разработанный и распространяемый фирмой Adobe Systems.

splashscreen

Да-да, это не шутка! Недавно музей компьютерной истории опубликовал исходный код одной из первых версий популярной программы, 1.0.1 версию. Код можно найти тут: http://www.computerhistory.org/atchm/adobe-photoshop-source-code/. Основная его часть написана как раз на Паскале(Турбо, скорее всего), и 15% на ассемблере. Думаю, этот проект вполне можно считать историческим.

3 лайка

PABCNETDownloader.pas
PABCNETDownloader.exe

Это установщик для паскаля.
Основные преимущества над основным:

  • У меня он делает всё за 7 сек (скачивание + установка).
  • Не надо ничего тыкать. Он может только попросить закрыть IDE, если оно будет мешать подменить какие то .dll-ки, а так он работает полностью самостоятельно

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

Ну и, чтоб он работал - надо чтоб был установлен на компьютере архиватор 7Z. И если он установлен не в Program Files - указать в исходниках другой путь.

1 лайк

А откуда такое ограничение?

Ну, можно, конечно, скачивать целый репозиторий паскаля и из него все файлы доставать… Но это будет на много дольше. Я скачиваю стандартный установщик паскаля. А он создан с помощью NSIS. То есть по сути, стандартный установщик - это архив к которому приделали несколько скриптов, которые указывают как куда какие файлы пихать. И вот я этот архив распаковываю (а для этого, конечно, нужен архиватор) и ручками все файлы куда надо сую.

Понятно.

Такое себе. К примеру, в “Программах и компонентах” так установленная программа не появится. В итоге она валяется горкой файлов, о которых ОС ничего не знает. Все-таки NSIS осуществляет именно установку, а не разархивирование.

То есть NSIS добавляет какие то сведения в реестр или что? Как то ж должно быть возможно сделать это по-велосипедному.

Конечно. Как вариант - нагнать Sysinternals’ RegMon и ProcMon на NSIS, посмотреть, что он меняет в реестре и файловой системе, сделать так же. Возможно, внутри операционной системой генерируются какие-нибудь ключи (с солью, не связанной с устанавливаемой программой), или прочее. Точного процесса, как программа становится установленной, я не знаю.

Но…

P.S. Полагаю, процесс документирован, и его можно нагуглить. Вряд ли это что-то секретное.

1 лайк

Больше говорите и бойтесь - никуда не уйдёте)))
А вот я уже нашёл:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\PascalABCNET

Достаточно запустить этот файлик чтоб всё установилось как это делает NSIS: uninstaller.reg

Но, там можно ещё больше значений сделать:
https://docs.microsoft.com/en-us/windows/desktop/Msi/uninstall-registry-key

Ну, а что касается зачем - в основном мне не нравилось что в установщике надо тыкать 50 кнопок чтоб он что то сделал. Ну и, как я и написал - 7 сек макс это очень даже не плохо)))).

Эта проблема решается ключами тихой установки в NSIS, а не так. Ну, канонично, по крайней мере.

Вся принципиальная разница (тормоза при установке) в скорости между NSIS-скриптом и банальной разархивацией в том, что первый прогоняет все основные сборки через утилиту ngen.exe, т.е. выполняет их локальную AOT-прекомпиляцию в native-код. Есть ли реальная польза от этого – вопрос, может и есть.

Да, пробовал. Намучался. И именно поэтому послал NSIS куда подальше)))

Единственное что я могу представить - валидация. Но 7Z тоже проводит валидацию, я проверил.

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

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

Причем тут валидация? Разумеется, любой разархиватор выполняет проверку контрольных сумм файлов, это обязательная практика, но не в этом дело.

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

А то что прекомпиляция выполняется - это точная информация, или ваши догадки?

И - конечно, если IDE и компилятор будут подстроены под компьютер на который их установило - это ускорит запуск, но это не должно влиять на скорость после запуска…