|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.02.2011, 19:34 | #11 | |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Цитата:
Если вы имеете ввиду поддержку PascalScript от RemObject в системе, её уже смысла нет делать, сделан свой интерпретатор с поддержкой Object pascal. В скрипте поддерживается объявление классов, наследование, полиморфизм, конструкторы, деструкторы. Сборка с поддержкой деструкторов и массивами в классах пока не выложена... Кроме этого система работает с записями, но их можно только импортировать из Delphi. Если есть желание попробовать, могу поделиться исходниками, только с документацией пока проблема и собрать всё можно только в Delphi XE... В системе можно создавать 4 варианта проектов: 1 классический Object Pascal 2 Object Pascal с поддержкой русского языка 3 Суржи (свой язык на любителя экзотики) 4 Суржи с поддержкой русского языка. Вот пример кода на экзотическом языке. Код:
Последний раз редактировалось Rik; 17.02.2011 в 20:50. |
|
20.04.2011, 21:27 | #12 |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Предыстория Суржи.
Много лет назад у меня появился интерес создать собственную среду разработки, захотелось иметь так сказать своё. Меня часто спрашивают, зачем я это всё сделал? Я и сам задаю себе этот вопрос. Наверно по большей части, сказался характер, меня всегда интересовала суть вещей, хотелось узнать как всё построено и как всё работает, сделать самому - лучший способ разобраться во всем, с другой стороны, сказалось влияние 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. Возможно мои разработку ещё кому-нибудь пригодятся, исходный код раздаю бесплатно (высылаю по e-mail), скомпилирован он может быть в Delphi 2010, Delphi XE. Этот интерпретатор - первый блин, многое сделано, не так как хотелось-бы, но для начало нужно было просто сделать, чтоб работало... |
21.04.2011, 07:37 | #13 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Какая будет дальейшая судьба языка? Будете ли Вы его развивать? Особенно интересует русскоязычный вариант.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
10.05.2011, 12:47 | #14 | |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Цитата:
Сейчас есть некоторые вопросы. Для русскоязычного варианта загружаются импортируемые типы, их методы и свойства в английской и русской транскрипции, из-за этого русский вариант будет компилироваться медленней. Я думаю для русского варианта полностью перевести и добавить весь функционал в русской транскрипции а английский не грузить вообще, нагрузка будет уже меньше. Кроме этого можно добавить для публикуемых свойств русскую транскрипцию, тогда можно будет свойства типа Left, Right, Name и т.д. использовать в коде как слева, справа, имя и т.д. Вот сейчас и думаю, стоит или нет совсем разделить русскую и английскую транскрипцию, буду рад услышать мнения на этот счет. В последней версии подсказчик в редакторе кода просматривает для текущего модуля, все вложенные модули через раздел uses и читает оттуда объявления, кроме этого всё что импортируется из Delphi, тоже загружается в подсказчик. А т.к. для всего того что импортируется используется одна глобальная таблица, нагрузка на подсказчик получается большая, там полная каша... Я предполагаю импорт разнести по модулям, будет как в Delphi, всё что импортировано из Classes будет в Classes из Forms будет в Forms, но все эти модули нужно будет подключать в раздел uses, подсказчик будет читать только то что подключено (возможно немного ускорится компиляция), в данный момент всё что импортировано доступно без всяких подключений. Тоже хотел бы услышать мнения на этот счет. |
|
10.05.2011, 13:29 | #15 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Насчет времени компиляции, если не в три раза медленней, то ничего страшного наверное в этом нет.
Далее в чем идея проекта? То есть меня интересует следующее - Вы пытаетесь создать некий клон какого-то языка (Дельфи как я понял) или же будете вводить свои фишки?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
10.05.2011, 17:21 | #16 | |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Цитата:
Приложение сделанное в этой среде: Свои фишки уже собственно тоже добавлены. Кроме Object Pascal, есть язык Суржи, в котором некоторые элементы синтаксиса заимствованы из Modula и Oberon. В исходниках, которые идут вмести с Delphi XE, все кишит {$IFDEF LINUX} и {IFDEF MACOS}, видимо Embarcadero не шутили, когда говорили о разработке Delphi под Mac и Linux и разработки такие действительно ведутся. В перспективе, когда надеюсь все-таки появится Delphi под другие не Windows платформы, постараюсь портировать среду на все платформы, на которых сможет работать Delphi. Как результат - реальная кроссплатформенность, запуск приложения без перекомпиляции на любой поддерживаемой ОС. |
|
10.05.2011, 20:22 | #17 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
М-м-м, Дельфи вполне себе работает под Моно, а это как минимум линукс...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
01.08.2011, 18:49 | #18 |
Регистрация: 01.08.2011
Сообщений: 4
|
Сложно импортировать библиотеку EhLib в систему?
И вообще, интересует сложность подключения сторонних библиотек. Каково быстродействие системы с большим объемом данных? а лучше если будет доступен такой пример, чтоб оценить быстродействие самому Сам проект замечательный! Автору заслуживает уважения. |
02.08.2011, 03:07 | #19 |
Редкий тунеядец
Форумчанин
Регистрация: 29.10.2006
Сообщений: 595
|
Потрясающий проект, всегда восхищался людьми которые тащат на одних плечах такие проект. Удачи вам.. Попробую изучить исходники и если это получится постараюсь вам хоть чем-то помочь в проекте.
|
02.08.2011, 10:22 | #20 | ||
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Цитата:
Цитата:
Из своего опыта могу сказать, что приложение обслуживающее базу размер которой на данный момент в 6 гигабайт, содержащее 80 модулей с формами и без, >15000 строк кода, компилируется на процессоре su7300 1300Мгц - 2 секунды, всего на запуск уходит 3-4 секунды, на более быстрых компьютерах соответственно быстрее. Проекты строю по принципу "как можно больше впихать в базу", сколько в базу влазит, столько туда и толкаю, все расчеты, бизнес правила выношу в хранимые процедуры, триггеры. Поэтому объем кода клиентских приложений у меня не большой. Визуально (на глаз) по скорости работы разницы с приложениями сделанными в самой Delphi пока не замечаю. Более-мение интересный пример потихоньку делаю, но он будет готов пока не скоро.... Спасибо за отзывы. На самом деле, я сделал не так много, это только надводная часть айсберга, то что подводой - заслуга инженеров Borland ныне Embarcadero, я имею ввиду RTTI, лежащую в основе VCL. Последний раз редактировалось Rik; 02.08.2011 в 12:02. |
||
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что же я написал? | Sibedir | Свободное общение | 26 | 04.10.2010 05:01 |
Я написал текстовую игру... | saggy | Софт | 11 | 05.06.2010 22:32 |
Написал редактор карт | sasha1993 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 8 | 18.07.2009 21:31 |
Написал прогу в паскале... | deu4er | Помощь студентам | 2 | 19.11.2008 20:08 |
Написал бэкдор, оцените | KORN | Софт | 7 | 18.11.2007 08:55 |