Как стать автором
Обновить

Комментарии 16

Мне удалось скомпилировать для Web небольшой проект Delphi, внеся сравнительно небольшие изменения в исходный текст программы, а на сэкономленное время я написал эту статью. Тестирование показало, что обе версии программы: для Windows и для Web, работают абсолютно одинаково.
Где можно посмотреть исходный delphi-проект и полученный web-проект?
Проект касается лингвистического программирования и обработки текстов. Что-то вроде «Транскриптора» Артемия Лебедева, но с белорусской спецификой. То есть там в основном текстовая обработка, символы… Delphi-модуль задействован как часть большей системы, а Web-модуль после доработки функционала будет позже где-то доступен. Пока не решено, тестируем небольшой комьюнити.

Но тут вопрос не в конкретной программе, а в возможности задействовать свои знания Delphi для Web-разработки. И это здорово!
Можно отладить модули приложения в Delphi IDE, используя его мощный отладчик и редактор, и затем, добавив необходимую обвязку, получить готовое работающее приложение для сайта.

Как вы гарантируете идентичность поведения исходного приложения и сконвертированного варианта?


(я, если честно, не видел еще ни одного трансформера windows-web, который бы переживал хоть сколько-нибудь сложные сценарии)

На вход подаём одинаковые тексты, на выходе получаем другие тексты, сравниваем. Совпадает — значит, OK.

Это вы так сравниваете простой алгоритм. А как гарантировать коректность приложения?

Если под приложением понимать 1) GUI часть + 2) внутреннюю обработку, то для 1) с PAS2JS нет решения. У нас транспилируются из Delphi только модули, отвечающие за обработку информации.

Чтобы получить одинаковый код и для интерфейса пользователя, придётся воспользоваться другими решениями. Например, TMS Web Core, у которого под капотом тот же PAS2JS.
Если под приложением понимать 1) GUI часть + 2) внутреннюю обработку,

Ну… да. Это же приложение, а не модуль.


с PAS2JS нет решения

Понятно, ничего нового опять не произошло.

Я понимаю, что не открыл своей статьёй Америку, но может кто-то попадал на такие же грабли. Или у кого-то были свои проблемы с PAS2JS, которые удалось решить. Очень интересно было бы почитать.
Я использовал UniGUI. Для небольших проектов вполне работает, но чем больше проект, тем больше неожиданных и непредсказуемых багов появляется.
Delphi хорош для нативного ПО, но не для WEB.
В последних RAD Studio с использованием FireMonkey можно написать отлично работающие мульти-платформенные приложения (win32, win64, linux, android, OSx, iOS). Было бы классно, если бы они придумали какую-нибудь HTML5 обёртку для WEB…
Помнится было время, когда Delphi for web появился. Правда, не знаю чем эта история закончилась.
если не нужно работать с DOM, то не логичнее было сделать транспиляцию в WASM, а не JS? или PAS2JS — проект старый и тогда WASM ещё не было?
Судя по багтрекеру Free Pascal, баги на PAS2JS начали сабмитить с лета 2017 года. А «Вики» для него была создана в декабре 2017 г. Но не исключено, что этот проект был создан на основе ещё более ранних разработок.

Транспиляция в JavaScript более удобная и гибкая, если нужно что-то проверить на готовой HTML-странице, поправить руками. Это удобство для разработчика. Хотя WASM должен быть быстрее, что выгоднее пользователям. Компилятор из Delphi-подобного языка в байткод WebAssembly тоже существует, с января 2018 года, но он не бесплатен.
Чтобы сконвертировать проект из Delphi в JS надо переписать половину исходного проекта, чтобы конвертер это понял? Вы серьёзно?
А сколько ещё интересного Вам предстоит! Вы знаете про var-аргументы функций, например?
Ну, полпроекта — это Вы с плеча рубанули. :) Если бы проще было писать и тестировать параллельно на Delphi под Windows и JavaScript под Web, мы бы так и сделали.

А что не так с var-переменными? Вроде компилируются и работают. Или есть случаи, когда не компилируется код?
Обнаруженные в статье баги я отправил в багтрекер проекта Pas2JS, и на данный момент они уже взяты в работу!

Thank you, Mattias Gaertner!
Кросс-компилятором это называется.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.