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

Там же в первой строчке описания проекта указана статья в википедии

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

Сама программа ABC/TRAC4Z.pas заодно показывает как определить новую функцию HelloWorld и вызывать макропроцессор.

Если даже в коротеньком readme не обратили внимание или просто не пошли по ссылке в первой строчке, то какой смысл в подробном?

1 лайк

Я заглянул в википедию, в examples и doc, и нашёл тестовый Hello World. Когда я смотрел в википедии - я не догадался посмотреть в ссылках. Но и теперь, когда я пролистал пару первых .pdf файлов для самообучения, остаётся вопрос, который у меня был в самом начале. Как происходит ввод-вывод? Я пытался запускать строчки из примеров, записывая их в поле ввода, которое появляется когда запускаешь ABC\TRAC4Z, но ничего не выводит.

Когда запускаете TRAC4Z.exe реализуется так называемый REPL

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

Например можно ввести после ‘
#(ds,name,User)’

Потом для проверки #(name)’

Должно напечатать

User

Чтобы не маяться с вводом введена нестандартная функция lf для чтения программы с диска.

#(lf,factorial.trac)’

Дле окончания набирается #(st)’ - это тоже не совсем стандарт, в оригинале #(hl) от Halt, но к тому времени кода я об этом узнал , hl у меня уже было занято под “начало списка” head of list

1 лайк

Вот тут ещё есть перевод на русский в директории doc (TRAC на js, no comment :slight_smile: )

Возвращаясь к нейронной сети для распознования цифр.

При компиляции исходника PascalABC NET 3.3.5.1662 выдаёт ошибку

MnistNet.pas(197) : Абстрактный класс не может иметь атрибут sealed

Но при этом создаёт работающий исходник. Если убрать Sealed Abstract, компилируется без ошибки и тоже работает. Там описания никакого нет и комментариев. Так что для меня это было почти как closed source - сложно разобраться.

Просто, как раз недавно разбирался с подходами к использованию нейронных сетей на Pascal, даже TensorFlow собрал и запустил его как динамическую библиотеку из Lazarus. Ещё пытался понять, можно ли в принципе по похожей схеме подключить к PascalABC NET. Тут у меня совсем нет опыта, но нашёл статью о библиотеке для Дельфи, где было написано, что она основана на структуре библиотеки TensorFlow для C#. Значит для языков .NET это в принципе возможно.

Об этом недавно говорили, договорились на том что в паскаль введут static вместо sealed abstract. Вот ждём. Я пока заменяю sealed abstract на {static}.

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

Да там есть такое. Код писался на январской версии, следовательно на тот момент это было единственное обозначение для статического класса.

А вот тут попрошу поподробнее, даже инструкцию :slight_smile: Может, Алису на Паскале сварганить? :blush:

Как можно видеть из MnistNet, возможно даже написать все инструменты с нуля на чистом .NET(C# либо PascalABC.NET без PABCSystem.pas). Думаю, Вы увидели из кода, что использовался ЧИСТЫЙ .NET без дополнительных библиотек, даже паскалевских, значит перед разработчиками(то бишь нами) открыты колоссальные возможности для оптимизации, которые позволят в конкретных продуктах даже обойти Google с их C++ или TypeScript(у меня уже есть разработка, по некоторым критериям превосходящая Google). А посему предлагаю использовать TensorFlow и подобные ML библиотеки только для обучения и извлечения из их исходников алгоритмов и переписывания на Pascal. В качестве простой ML(Mashine Learning) библиотеки можно использовать ConvNetCS. Это библиотека, написана на C# имеет открытый исходный код.

22 сообщения перенесены в тему Болталка PascalABC.NET

Ещё одна моя разработка - приложение для восстановления выцветших фотографий, ColorRestorer.

045_21 => 23 ColorRestorer.zip (169,0 КБ)

Код также доступен на GitHub по следующей ссылке: https://github.com/PABCSoft/ColorRestorer.

Также по теме обработки изображений: автоматическое окрашивание методом тов. Welch. Его работу можно найти по следующей ссылке: http://www.cse.iitd.ernet.in/~pkalra/col783/colorize.pdf. По сути программа перекладывает цвет с одного изображения на другое по специальному статистическому алгоритму. Также должен предупредить, что алгоритм имеет некоторые элементы случайности, поэтому результаты с одними и теми-же входными данными могут быть разными, следовательно, можно несколько раз произвести операцию окрашивания, не меняя входные данные, чтобы добиться наилучшего результата.

+ => Код доступен на странице PABCSoft в GitHub: https://github.com/PABCSoft/ColorShifter. Данная программа уже демонстрировалась на нескольких конференциях и была отмечена жюри.

1 лайк

По обработке изображений у меня есть ещё одна Open Source программа - ImageEngraver. Эта программа использует один из фильтров первого свёрточного слоя нейросети VGG16 для наложения на изображение эффекта гравюры.

=> Разработка доступна в GitHub: https://github.com/PABCSoft/ImageEngraver.

На GitHub был залит MnistNet: https://github.com/PABCSoft/MnistNet.

Есть ещё одно приложение: PABCPlayer. Это простой медиаплеер, написанный для демонстрационных целей.

Код доступен на GitHub: https://github.com/PABCSoft/PABCPlayer.

1 лайк

В связи со всякими там образцами как-то вдруг образовался релиз TRAC4 4.27.1 Лежит на GitHub всё там-же. TRAC4 (он же MACAR) в основном и отличался от TRACТ T64 образцами и списками. Кстати, этот вариант был лет 30 назад написан. Новый релиз пришлось делать, так как оказалось что из-за мелкого бага в программе, PascalABC.NET версия выдавала … range check error который таки был отключён всюду кроме ABC, где его и поймали.

Там добавлено три примера: match.trac (вводится match на основе примитива te), def_pets.trac - пример определения образцов с таким match (сама идея примера из Википедии где подобное описано для OCaml). Ну и тест таких образцов в test_pets.trac. То есть, если эти три файла лежат в директории с exe, то после запуска достаточно набрать #(lf,test_pets.trac)’

Реализовал приложение для стилизации изображений под работы известных художников. Это аналог популярных приложений Artisto и Prisma, имеющий одно преимущество: он полностью автономен (работает без подключения к Сети) и работает на операционных системах семейства Windows(xp и выше) независимо от их разрядности. Все исходные коды доступны на GitHub: https://github.com/PABCSoft/ImageStyler.

Оригинал:

Стилизованное изображение:

На данный момент доступно 6 стилей.

8 лайков

Интересно, в среде PABC. NET пока не хватает примеров, что можно сделать, поэтому список готовых проектов был бы весьма кстати, не говоря уже о более человеческом описании хода работы - что? почему? как? и т.д.

Например, как появилась идея? Почему именно PABC ,NET? Почему без поддержки графической карты, ведь даже встроенные модели неплохо поддерживают шейдеры? Что получилось, что нет, что изменилось, а что планируется? и прочее. Хотя для этого больше подходит если не read.me, то блоги.

Удачи)

2 лайка

Идея появилась тогда, когда у меня на планшете закончился интернет, и я не смог воспользоваться аналогичными приложениями, перечисленными мной ранее. :smile: Ну а если серьёзно, то более-менее понятной и простой реализации подобного приложения я не нашёл. К тому же для Паскаля высоконагруженные системы - большая редкость. К сожалению.

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

У меня были мысли реализовать использование видеокарты, но после более подробного изучения вопроса выяснилось, что нужна не обычная видеокарта, которая есть у любого компьютера, а специальная, очень мощная и дорогая. От NVIDIA. Помимо того, мне хотелось сделать приложение максимально простым. Ведь именно собственноручная запись всех алгоритмов приложения позволяет понять принцип его работы, и читающим его исходный код программистам тоже. По поводу встроенных моделей не понял. Можете чуть подробнее?

То, что получилось, Вы вполне можете оценить по репозиторию на GitHub. При разработке я не использовал ничего, кроме PascalABC.NET и стандартных библиотек Платформы, поэтому Вам не составит труда откомпилировать и запустить приложение. В настоящий момент я работаю над добавлением новых стилей, оптимизацией приложения и реализацией алгоритма Гатиса, который позволит стилизовать под абсолютно любое изображение. В ближайшее время я начну работать над статьёй для Хабрахабр, в которой попытаюсь максимально подробно расписать процесс разработки приложения.

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

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

2 лайка

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

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

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

1 лайк

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

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

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