Страница 1 из 13

Diesel Pascal

СообщениеДобавлено: 19.04.2011 14:44:04
*Rik*
Здравствуйте участники форума.

Я хочу рассказать вам о своих разработках в области построения средств разработки и языков программирования.
Прежде чем рассказывать о самих проектах, начну с предыстории.
Много лет назад у меня появился интерес создать собственную среду разработки, захотелось иметь так сказать своё. Меня часто спрашивают, зачем я это всё сделал? Я и сам задаю себе этот вопрос. Наверно по большей части, сказался характер, меня всегда интересовала суть вещей, хотелось узнать как всё построено и как всё работает, сделать самому - лучший способ разобраться во всем, с другой стороны, сказалось влияние 1С и других корпоративных систем, которые устремились к гибкости, я постоянно слышал восторженные возгласы, как там всё здорово, можно что угодно добавить, поправить и т.д. А т.к. я сам занимаюсь автоматизацией различной деятельности, я решил что непременно сделаю свою среду для разработки корпоративных приложений, которая обеспечит гибкость и позволит вносить изменения в приложения без перекомпиляции программы. Разработка велась и ведется на Delphi. Многие жалуются, что исполняемые файлы на Delphi (и на FreePascal в т.ч.) получаются большие, за удобство разработки приходится платить, вместе с кодом в выполняемом файле содержится RTTI информация о типах, благодаря которой обеспечивается позднее связывание. Но, если вы хотите создать собственное средство разработки, наличие RTTI неоценимое преимущество, т.е. для обеспечения позднего связывания изобретать ничего не нужно, RTTI содержит всю рутину. Первая версия движка появилась в 2000м году, в то время, я только начинал углубляться в Delphi, в интернете раздобыл информацию о недокументированных методах VCL и какими-то невероятными усилиями удалось изготовить некое подобие дизайнера форм, сильно примитивное, но все-же, я смог "мастерить" формы сам, уже без Delphi, кроме этого удалось прикрутить сервер скриптов Windows и наладить сток событий в VB скрипт, со временем к своему движку написал редактор с подсветкой синтаксиса под VB. Радости не было предела, я мог разрабатывать приложения уже без Delphi, первое приложение было - Расчет зарплаты. Конфигурация хранилась в папке, формы сохранялись каждая в своем DFM файле, код поведения приложения на VB с обработчиками событий хранился в одном гигантском файле.
Однажды в книжном магазине, мне попалась книга "Delphi Руководство разработчика" авторы С. Тейксейра и С. Пачеко. Во втором томе достаточно хорошо описана RTTI и как ей пользоваться, информация из книги оказалась неоценимо полезной. Зародилась навязчивая идея, сделать среду в стиле Delphi. Избавиться от этой навязчивой идеи пришлось только способом её воплощения. Пришлось сделать собственную реализацию интерфейсов дизайнера форм Delphi. Оставалась проблема с ядром системы - встроенный язык. Попытался сделать сам, искал информацию, но к сожалению нашел не так много и понял что не осилю. Но к тому времени появился FastScript, я решил его приобрести, т.к. ничего лучшего с русскоязычной поддержкой не нашел. В общем - то всё оказалось вполне работоспособным, сделал много проектов на этом движке. Но оставалось последнее, для получения полного удовлетворения - написать свой собственный интерпретатор для ядра системы.
Не так давно в книжном интернет магазине увидел книгу Никлауса Вирта "Построение компиляторов", заказал не думая и с нетерпением ждал доставки. В довесок ещё заказал книгу "Разработка паскаль компилятора" автор Л. Залогова. Наконец настал момент когда книги были у меня в руках. Самым сложным, для меня самоучки, показалось описание БНФ грамматики, несколько листов я перечитывал не одну неделю, пока не "въехал" что к чему. Помогло то, что до этого мне приходилось писать парсеры и я был знаком с конечными автоматами и не нужно было на них тратить время. Могу сказать что книга Вирта - лучшая книга на эту тему. Разработка интерпретатора заняла 3 мес и ещё столько-же на интеграцию с системой. Из книги Залоговой очень пригодились синтаксические схемы Паскаля. Потом начались эксперементы, было добавлено ООП, интерпретатор Pascal был переделан в Object Pascal. А потом и вовсе родился язык Суржи, который я сделал для своего удобства. Сейчас в ситеме 2 языка Object Pascal и Surgy. В языке Суржи я изменил конструкции некоторых операторов:
if, while, for, with - сами открывают блок, как это реализовано в Oberon, begin для открытия блока писать не нужно, но эти операторы должны всегда заканчиваться завершающей инструкцией end, Оператор присвоения := заменен на =, добавлены операторы увеличения и уменьшения ++, --, +=, -=, операторы бобитового сдвига << и >>, procedure и function заменены на method. Оператор := более подходит для понимания присвоения, но для промышленного применения, где речь не идет об обучении - роли не играет, а пользоваться более удобно (на мой взгляд, хотя я уже давно привык и к := и мне на самом деле уже все равно, но бывает когда переключаешься между SQL и кодом паскаля, начинаешь путаться...). Ну и ещё я поэкспериментировал с русской транскрипцией языка, но пока это только эксперимент, полной русификации добиться не удастся. Русскую транскрипцию поддерживают оба языка и Object Pascal и Суржи. Приложение созданное в этой среде сохраняется в 1м файле в формате XML.

Возможно мои разработку ещё кому-нибудь пригодятся, исходный код раздаю бесплатно (высылаю по e-mail), скомпилирован он может быть в Delphi 2010, Delphi XE. Посмотреть всё можно на http://visual-t.ru

Этот интерпретатор - первый блин, многое сделано, не так как хотелось-бы, но для начало нужно было просто сделать, чтоб работало...

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 19.04.2011 15:15:25
devels
Вы не одиноки про RTTI и т.п., http://develstudio.ru/ сделано по такой-же технологии, что вы описали в рассказе. Только там было еще круче, язык был взят PHP, в него были встроенные RTTI функции для gui, и сама среда по кусочкам была написана на php + vcl + rtti, т.е. практически сама на себе, за счет чего получилась очень гибкая, открытая, где любой разработчик с легкостью может добавить самые невообразимый функционал в среду. Причем дополнения для среды (формы и не только) можно писать в самой среде.

А сейчас я как и вы пишу свой аналог языка PHP - Orion. Посмотреть можно тут: viewforum.php?f=42, только это не интерпритатор, а полноценный компилятор + байт-код, за счет чего скорость выполнения сравнима с современными динамическими языками, таким как php, ruby, python, lua и т.д.

Можно было бы пообщаться, т.к. у меня похожая разработка, можно было бы поделиться опытом, про RTTI я тоже знаю очень многое, но последнее время хочу перевести проект на lazarus с его RTTI от LCL.

Добавлено спустя 2 часа 40 минут 33 секунды:
Могу кстати помочь с генерацией байт-кода, icq 861287 (mail dz@dim-s.net).

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 19.04.2011 18:15:25
hinst
ну, очень замечательно. Осталось теперь только сделать, чтобы это было реально круто, то есть, придумать фичи поинтереснее замены := на = и inc() на ++. Правда, придумать сейчас что-то интересное, по-моему, оч. сложно. Всякой интерпретацией и виртуализацией все и так сыты по горло. Разве что вот сделать компиляцию естественного языка уже наконец. :shock:
ну или интерпретацию естественного языка, на худой конец

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 19.04.2011 20:50:49
stikriz
У меня тоже есть проект наподобие 1С с интерпретатором паскаля.
http://narod.yandex.ru/disk/all/
Компилируется в Delphi3.

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 19.04.2011 21:43:09
hinst
stikriz писал(а):У меня тоже есть проект наподобие 1С с интерпретатором паскаля.http://narod.yandex.ru/disk/all/Компилируется в Delphi3.

собственно, ссылка http://narod.yandex.ru/disk/all/ ведёт на мои файлы, которые хранятся на народе...

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 19.04.2011 23:09:44
Padre_Mortius
указанная ссылка ведет на страницу создания своего хранилища и сайта на сайте narod.ru

Добавлено спустя 39 секунд:
Все зависит от того есть ли регистрация на данном ресурсе или нет)

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 19.04.2011 23:48:53
VirtUX
Padre_Mortius писал(а):Все зависит от того есть ли регистрация на данном ресурсе или нет)

Так и есть. Я "попал пальцем в небо".

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 20.04.2011 11:23:16
stikriz
hinst писал(а):
stikriz писал(а):У меня тоже есть проект наподобие 1С с интерпретатором паскаля.http://narod.yandex.ru/disk/all/Компилируется в Delphi3.

собственно, ссылка http://narod.yandex.ru/disk/all/ ведёт на мои файлы, которые хранятся на народе...



http://narod.ru/disk/10542440000/Delphi3%20(copy%202).7z.html

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 20.04.2011 21:30:32
Padre_Mortius
stikriz
при использовании пробелов в ссылке помещайте ее (ссылку) в теге url

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 23.09.2011 16:57:35
*Rik*
Портировал (пока не доконца) интерпретатор на Lazarus, спешу поделиться этой новостью. Портирование заняло 2 дня.
Проверял только вариант с языком Object Pascal (на Linux Ubuntu (64) и Windows 7 (64)), работоспособность языка Суржи не проверял.
Под Windows поддерживается OLE, можно как и в Delphi с успехом обращаться к COM серверам, проверял на Excel (в тестовом приложении пример для Excel - зашит в SynEdit), это значит что из скрипта можно будет подключать и торгово-кассовое оборудование, поддерживающее OLE. В отличае от Delphi для вывода русских строк, указвать UTF8Decode (Пример: Sheet.Cells(1, 1).Value := UTF8Decode('ываыва'); )

В архиве приложение, которое нужно просто скомпилировать. Архив большой запаковал исходники со всем хламом, сортировать не было времени, окончательную сборку проводил под Win7-64, поэтому экзешник, который в архиве под Win32 не запустится.

под Windows проект компилируется, но не запускается, падает отладчик (я Lazarus под Win поставил час назад. в чем причина пока не разобрался), поэтому после компиляции, если у кого будет такая-же проблема можно просто запустить скопилированный файл руками.

http://visualtech.shadr.ru/files/SuTest.zip

Со временем всё доведу до ума...

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 29.09.2011 12:12:06
leo_bsv
Круто, но к сожалению не вижу существенной разницы между вашей разработкой и, к примеру, Lazarus+FPC.
Хотя сам сейчас примерно тем-же занимаюсь - создаю среду для автоматизации электронного документооборота под linux, для своих нужд конечно.

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 15.01.2013 15:42:47
Tango
Я тоже не пойму зачем люди разрабатывают Delphi подобные системы разработки, скорости они не прибавляют, удобства тоже, всё равно надо знать язык программирования и тыкать мышкой в дизайнере. Извините, но это бред. Я тоже как и Вы пришёл к разработки своей системы разработки приложений. Но там нет Pascal подобного языка, зачем заменять один компилятор, прослойкой своего? Там цель ориентированный язык, нацеленный на выполнение ЗАДАЧ, а не для упражнений для программирования.

Если интересно, вот ознакомьтесь.
https://gitflic.ru/team/dcl5

Прозрачная компиляция в Lazarus (win, lin, osx) (x32, x64).

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 16.01.2013 20:31:16
Kemet
Каждый кулик хвалит своё болото.
Tango, если бы Вы удосужились посмотреть на проект, то увидели бы, что Суржи это, в общем-то, не Паскаль, а наличие интерпретатора существенно упрощает жизнь в некоторых областях.

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 18.01.2013 18:22:41
Tango
Всё равно не пойму, зачем! Очень хотелось попрограммировать? Вы сделали тот же Лазарус.
Не пойму.

Re: Среда разработки и язык Суржи

СообщениеДобавлено: 18.01.2013 21:25:01
Kemet
Tango писал(а):Всё равно не пойму, зачем! Очень хотелось попрограммировать? Вы сделали тот же Лазарус.
Не пойму.
Это не я сделал, мы его просто используем в работе, передавая клиентам(модифицированную версию) DBI-Builder и соответственно приложение, которое они в итоге сами могут поправить под свои нужды, не покупая Delphi и дорогостоящие компоненты, которые входят в поставку DBI-Builder - за них уже уплачено, нами, это раз, а интерпретатор, добавляющий гибкость это два. Описывать весь профит не буду, чтобы не вступать в очередной бессмысленный холивар. Вы же вроде в своём проекте тоже интерпретатор используете, а зачем, не пойму. Кстати, на скачанный файл антивирус ругается.

PS: И да, открытые исходники DBI-Builder это ПЛЮС.