Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 19:34   #11
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от xyz80 Посмотреть сообщение
Все отлично выполнено! Молодец Юрий! Я рад что и мой голос в пользу введения русского языка программирования был у слышен, за что Вам отдельное спасибо.
Я согласен упущения есть, также есть и не доработки, но все стоит еще на стадии проекта, т.е. все еще развивается. Я давно вел перепись с Юрием и видел как этот проект развивался. Конечно да, переплетение данного языка больше ведет к тому, что людям придется осваивать новый язык программирования ведь в итоге многое возможно изменится. Также смущает не возможность в скрипте создавать описания собственных классов и записей, но думаю данную проблему можно также решить. Что до переключение раскладки клавиатуры, то думаю данный проект еще в стадии тестирования, потому об этом еще прежде-временно говорить.
Но вообще работа проделана огромная и в реальности Юрий потратил много времени и сил на создание всего этого. Потому считаю, что огромный плюс точно заслуживает.
Также Юрий хочу сразу спросить удалось вам реализовать PascalScript от Remobject?
Спасибо за отзыв.

Если вы имеете ввиду поддержку PascalScript от RemObject в системе, её уже смысла нет делать, сделан свой интерпретатор с поддержкой Object pascal. В скрипте поддерживается объявление классов, наследование, полиморфизм, конструкторы, деструкторы. Сборка с поддержкой деструкторов и массивами в классах пока не выложена... Кроме этого система работает с записями, но их можно только импортировать из Delphi. Если есть желание попробовать, могу поделиться исходниками, только с документацией пока проблема и собрать всё можно только в Delphi XE...
В системе можно создавать 4 варианта проектов:
1 классический Object Pascal
2 Object Pascal с поддержкой русского языка
3 Суржи (свой язык на любителя экзотики)
4 Суржи с поддержкой русского языка.

Вот пример кода на экзотическом языке.
Код:
модуль Главная_форма;

тип
  ТГлавнаяФорма = класс(TForm)
    КнПриветМир: TButton;
    Редактор1: TEdit;
    Циклы_и_массивы: TButton;
    ЛистБокс: TListBox;
    ТестМножества: TButton;
    УсловныеОператоры: TButton;
    метод Циклы_и_массивыПриНажатии(Отправитель: TObject);
    метод КнПриветМирПриНажатии(Отправитель: TObject);
    метод ТестМножестваПриНажатии(Отправитель: TObject);
    метод УсловныеОператорыПриНажатии(Отправитель: TObject);
  закрытые
  защищенные
  открытые
  конец;

  ТПеречисление = (П1, П2, П3, П4, П5, П6);
  ТМножИзПеречисл = множество из ТПеречисление;

пер ГлавнаяФорма: ТГлавнаяФорма;

реализация

метод ТГлавнаяФорма.КнПриветМирПриНажатии(Отправитель: TObject);
начало
  Редактор1.Текст = 'Привет мир!';
конец;

метод ТГлавнаяФорма.ТестМножестваПриНажатии(Отправитель: TObject);
пер
  Множ: ТМножИзПеречисл;
начало
  ЛистБокс.Элементы.Очистить;
  ЛистБокс.Элементы.Добавить('Тест множества');
  Множ = [П1..П3, П6];
  если П1 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П1') конец;
  если П2 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П2') конец;
  если П3 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П3') конец;
  если П4 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П4') конец;
  если П5 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П5') конец;
  если П6 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П6') конец;
  ЛистБокс.Элементы.Добавить('Завершено');
конец;

метод ТГлавнаяФорма.УсловныеОператорыПриНажатии(Отправитель: TObject);
пер
  П: ТПеречисление;
начало
  ЛистБокс.Элементы.Очистить;
  ЛистБокс.Элементы.Добавить('Тест если (if)');
  П = П3;
  если П = П1 тогда ЛистБокс.Элементы.Добавить('П = П1')
  иначеесли П = П2 тогда ЛистБокс.Элементы.Добавить('П = П2')
  иначеесли П = П3 тогда ЛистБокс.Элементы.Добавить('П = П3')
  иначеесли П = П4 тогда ЛистБокс.Элементы.Добавить('П = П4')
  иначеесли П = П5 тогда ЛистБокс.Элементы.Добавить('П = П5')
  иначеесли П = П6 тогда ЛистБокс.Элементы.Добавить('П = П6')
  конец;

  П = П4;
  ЛистБокс.Элементы.Добавить('Тест выбор(case)');
  выбор П из
    П1: ЛистБокс.Элементы.Добавить('П = П1');
    П2: ЛистБокс.Элементы.Добавить('П = П2');
    П3: ЛистБокс.Элементы.Добавить('П = П3');
    П4: ЛистБокс.Элементы.Добавить('П = П4');
    П5: ЛистБокс.Элементы.Добавить('П = П5');
    П6: ЛистБокс.Элементы.Добавить('П = П6');
  конец;
  ЛистБокс.Элементы.Добавить('Завершено');
конец;

метод ТГлавнаяФорма.Циклы_и_массивыПриНажатии(Отправитель: TObject);
пер
  Мас: массив [1..10] из Целое;
  Стр: Строка = 'Заполнение массива';
  Число: Целое;
начало
  ЛистБокс.Элементы.Очистить;
  ЛистБокс.Элементы.Добавить(Стр);
  для Число = 1 до 10 выполнять Мас[Число] = Число * 10 конец;
  ЛистБокс.Элементы.Добавить('Массив заполнен');
  ЛистБокс.Элементы.Добавить('Вывод значений элементов массива');
  Число = 10;
  пока Число > 0 выполнять
    стр = ЦелоеВСтроку(Мас[Число]);
    ЛистБокс.Элементы.Добавить(Стр);
    Число--
  конец;
  ЛистБокс.Элементы.Добавить('Завершено');
конец;

конец.

Последний раз редактировалось Rik; 17.02.2011 в 20:50.
Rik вне форума Ответить с цитированием
Старый 20.04.2011, 21:27   #12
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 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.

Этот интерпретатор - первый блин, многое сделано, не так как хотелось-бы, но для начало нужно было просто сделать, чтоб работало...
Rik вне форума Ответить с цитированием
Старый 21.04.2011, 07:37   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Какая будет дальейшая судьба языка? Будете ли Вы его развивать? Особенно интересует русскоязычный вариант.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2011, 12:47   #14
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Какая будет дальейшая судьба языка? Будете ли Вы его развивать? Особенно интересует русскоязычный вариант.
Развивать обязательно буду, в т.ч. и русскоязычный вариант, я сам использую эту среду для разработки всех проектов для своих клиентов. Очень буду рад, если ещё кто-нибудь подключится к проекту. Проект полностью бесплатен, исходный код и откомпилированную версию можно загрузить с сайта.
Сейчас есть некоторые вопросы.
Для русскоязычного варианта загружаются импортируемые типы, их методы и свойства в английской и русской транскрипции, из-за этого русский вариант будет компилироваться медленней. Я думаю для русского варианта полностью перевести и добавить весь функционал в русской транскрипции а английский не грузить вообще, нагрузка будет уже меньше. Кроме этого можно добавить для публикуемых свойств русскую транскрипцию, тогда можно будет свойства типа Left, Right, Name и т.д. использовать в коде как слева, справа, имя и т.д. Вот сейчас и думаю, стоит или нет совсем разделить русскую и английскую транскрипцию, буду рад услышать мнения на этот счет.
В последней версии подсказчик в редакторе кода просматривает для текущего модуля, все вложенные модули через раздел uses и читает оттуда объявления, кроме этого всё что импортируется из Delphi, тоже загружается в подсказчик. А т.к. для всего того что импортируется используется одна глобальная таблица, нагрузка на подсказчик получается большая, там полная каша... Я предполагаю импорт разнести по модулям, будет как в Delphi, всё что импортировано из Classes будет в Classes из Forms будет в Forms, но все эти модули нужно будет подключать в раздел uses, подсказчик будет читать только то что подключено (возможно немного ускорится компиляция), в данный момент всё что импортировано доступно без всяких подключений. Тоже хотел бы услышать мнения на этот счет.
Rik вне форума Ответить с цитированием
Старый 10.05.2011, 13:29   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Насчет времени компиляции, если не в три раза медленней, то ничего страшного наверное в этом нет.
Далее в чем идея проекта? То есть меня интересует следующее - Вы пытаетесь создать некий клон какого-то языка (Дельфи как я понял) или же будете вводить свои фишки?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2011, 17:21   #16
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Далее в чем идея проекта? То есть меня интересует следующее - Вы пытаетесь создать некий клон какого-то языка (Дельфи как я понял) или же будете вводить свои фишки?
Идея собственно не в языке. Язык только часть системы для разработки корпоративных приложений - альтернатива 1С.


Приложение сделанное в этой среде:

Свои фишки уже собственно тоже добавлены. Кроме Object Pascal, есть язык Суржи, в котором некоторые элементы синтаксиса заимствованы из Modula и Oberon.
В исходниках, которые идут вмести с Delphi XE, все кишит {$IFDEF LINUX} и {IFDEF MACOS}, видимо Embarcadero не шутили, когда говорили о разработке Delphi под Mac и Linux и разработки такие действительно ведутся.
В перспективе, когда надеюсь все-таки появится Delphi под другие не Windows платформы, постараюсь портировать среду на все платформы, на которых сможет работать Delphi. Как результат - реальная кроссплатформенность, запуск приложения без перекомпиляции на любой поддерживаемой ОС.
Rik вне форума Ответить с цитированием
Старый 10.05.2011, 20:22   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

М-м-м, Дельфи вполне себе работает под Моно, а это как минимум линукс...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.08.2011, 18:49   #18
noisy
 
Регистрация: 01.08.2011
Сообщений: 4
По умолчанию

Сложно импортировать библиотеку EhLib в систему?
И вообще, интересует сложность подключения сторонних библиотек.

Каково быстродействие системы с большим объемом данных?
а лучше если будет доступен такой пример, чтоб оценить быстродействие самому

Сам проект замечательный!
Автору заслуживает уважения.
noisy вне форума Ответить с цитированием
Старый 02.08.2011, 03:07   #19
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

Потрясающий проект, всегда восхищался людьми которые тащат на одних плечах такие проект. Удачи вам.. Попробую изучить исходники и если это получится постараюсь вам хоть чем-то помочь в проекте.
execom вне форума Ответить с цитированием
Старый 02.08.2011, 10:22   #20
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от noisy Посмотреть сообщение
Сложно импортировать библиотеку EhLib в систему?
И вообще, интересует сложность подключения сторонних библиотек.
Сложность понятие относительное. Всё зависит от вашего уровня подготовленности и желания. Если вы загрузили исходный код, вы можете посмотреть как происходит импорт на примере FIBPlus, Ribbon, ADO и т.д. Есть документация в комплекте с исходниками DBI-Builder-Sources.chm, но она отстает, кое что сильно изменилось и в документации не учтено. Вы можете столкнуться с проблемой, что, что-то к чему вы привыкли в Delphi, впихать в эту разработку невозможно. Нужно быть к этому готовым и думать как это обойти или заменить или жить без этого, в противном случае, вы разочаруетесь и всё бросите.
Цитата:
Сообщение от noisy Посмотреть сообщение
Каково быстродействие системы с большим объемом данных?
а лучше если будет доступен такой пример, чтоб оценить быстродействие самому
Если речь идет об объеме данных поставляемых SQL сервером, то он на быстродействие встроенных языков не влияет. Единственное что тут может быть - если проект большой, содержит много форм и кода, это будет влиять на скорость запуска приложения, т.к. компиляция во внутренний формат происходит при запуске. Приложение сначала компилируется целиком, затем запускается на выполнение. Добавление компонент, типов будет увеличивать таблицу типов, что может замедлть поиск по ней при компиляции (в программе используется хеширование, поэтому существенного замедления пока не замечено, но теоретически такое возможно), поэтому не рекомендуется пытаться подключить к системе всё что есть в Delphi, добавляйте то, что вам необходимо для ваших задач.
Из своего опыта могу сказать, что приложение обслуживающее базу размер которой на данный момент в 6 гигабайт, содержащее 80 модулей с формами и без, >15000 строк кода, компилируется на процессоре su7300 1300Мгц - 2 секунды, всего на запуск уходит 3-4 секунды, на более быстрых компьютерах соответственно быстрее. Проекты строю по принципу "как можно больше впихать в базу", сколько в базу влазит, столько туда и толкаю, все расчеты, бизнес правила выношу в хранимые процедуры, триггеры. Поэтому объем кода клиентских приложений у меня не большой. Визуально (на глаз) по скорости работы разницы с приложениями сделанными в самой Delphi пока не замечаю.
Более-мение интересный пример потихоньку делаю, но он будет готов пока не скоро....

Спасибо за отзывы. На самом деле, я сделал не так много, это только надводная часть айсберга, то что подводой - заслуга инженеров Borland ныне Embarcadero, я имею ввиду RTTI, лежащую в основе VCL.

Последний раз редактировалось Rik; 02.08.2011 в 12:02.
Rik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что же я написал? 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