Diesel Pascal

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Diesel Pascal

Сообщение *Rik* » 19.04.2011 14:44:04

Здравствуйте участники форума.

Я хочу рассказать вам о своих разработках в области построения средств разработки и языков программирования.
Прежде чем рассказывать о самих проектах, начну с предыстории.
Много лет назад у меня появился интерес создать собственную среду разработки, захотелось иметь так сказать своё. Меня часто спрашивают, зачем я это всё сделал? Я и сам задаю себе этот вопрос. Наверно по большей части, сказался характер, меня всегда интересовала суть вещей, хотелось узнать как всё построено и как всё работает, сделать самому - лучший способ разобраться во всем, с другой стороны, сказалось влияние 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

Этот интерпретатор - первый блин, многое сделано, не так как хотелось-бы, но для начало нужно было просто сделать, чтоб работало...
Последний раз редактировалось *Rik* 27.11.2015 18:11:41, всего редактировалось 5 раз(а).
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

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

Сообщение devels » 19.04.2011 15:15:25

Вы не одиноки про 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).
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

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

Сообщение hinst » 19.04.2011 18:15:25

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

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

Сообщение stikriz » 19.04.2011 20:50:49

У меня тоже есть проект наподобие 1С с интерпретатором паскаля.
http://narod.yandex.ru/disk/all/
Компилируется в Delphi3.
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

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

Сообщение hinst » 19.04.2011 21:43:09

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

собственно, ссылка http://narod.yandex.ru/disk/all/ ведёт на мои файлы, которые хранятся на народе...
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

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

Сообщение Padre_Mortius » 19.04.2011 23:09:44

указанная ссылка ведет на страницу создания своего хранилища и сайта на сайте narod.ru

Добавлено спустя 39 секунд:
Все зависит от того есть ли регистрация на данном ресурсе или нет)
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

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

Сообщение VirtUX » 19.04.2011 23:48:53

Padre_Mortius писал(а):Все зависит от того есть ли регистрация на данном ресурсе или нет)

Так и есть. Я "попал пальцем в небо".
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

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

Сообщение stikriz » 20.04.2011 11:23:16

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
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

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

Сообщение Padre_Mortius » 20.04.2011 21:30:32

stikriz
при использовании пробелов в ссылке помещайте ее (ссылку) в теге url
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

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

Сообщение *Rik* » 23.09.2011 16:57:35

Портировал (пока не доконца) интерпретатор на 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

Со временем всё доведу до ума...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

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

Сообщение leo_bsv » 29.09.2011 12:12:06

Круто, но к сожалению не вижу существенной разницы между вашей разработкой и, к примеру, Lazarus+FPC.
Хотя сам сейчас примерно тем-же занимаюсь - создаю среду для автоматизации электронного документооборота под linux, для своих нужд конечно.
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

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

Сообщение Tango » 15.01.2013 15:42:47

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

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

Прозрачная компиляция в Lazarus (win, lin, osx) (x32, x64).
Последний раз редактировалось Tango 27.12.2023 22:44:40, всего редактировалось 3 раз(а).
Аватара пользователя
Tango
постоялец
 
Сообщения: 156
Зарегистрирован: 31.05.2012 17:07:30

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

Сообщение Kemet » 16.01.2013 20:31:16

Каждый кулик хвалит своё болото.
Tango, если бы Вы удосужились посмотреть на проект, то увидели бы, что Суржи это, в общем-то, не Паскаль, а наличие интерпретатора существенно упрощает жизнь в некоторых областях.
Kemet
постоялец
 
Сообщения: 241
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

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

Сообщение Tango » 18.01.2013 18:22:41

Всё равно не пойму, зачем! Очень хотелось попрограммировать? Вы сделали тот же Лазарус.
Не пойму.
Аватара пользователя
Tango
постоялец
 
Сообщения: 156
Зарегистрирован: 31.05.2012 17:07:30

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

Сообщение Kemet » 18.01.2013 21:25:01

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

PS: И да, открытые исходники DBI-Builder это ПЛЮС.
Kemet
постоялец
 
Сообщения: 241
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

След.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 3

Рейтинг@Mail.ru