IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Язык Суржи и среда разработки Суржи
Rik
сообщение 8.02.2011 11:18
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Чтобы сразу было понятно зачем это всё создавалась:
Проект рассчитан на программистов Delphi, желающих сделать свои программы максимально гибкими. Фактически эту систему я использую уже лет 8(раньше ядром системы был сторонний покупной интерпретатор), делаю на ней, для клиентов, "морды" к базам данных. Если клиент хочет что-либо изменить, ему не нужно заморачиваться по поводу лицензирования средств разработки, затрат на установку и т.д. Тут всё в одном флаконе и исходный код приложения и среда для его "конфигурирования". Многие мои пректы у заказчиков "живут" уже по нескольку лет без моего участия, все поддерживают своими силами.

Сейчас в системе используется собственный интерпретатор языка Суржи (Delphi - pascal тоже поддерживается)

Суржи - объектно ориентированный язык программирования, поддерживает русскую транскрипцию. Название языка происходит от слова суржик. В целом синтаксис языка базируется на синтаксисе Delphi, но есть элементы заимствованные из С подобных языков а так-же из Оберон и Модула.
В частности, из Си подобных языков заимствованы оператор присвоения = вместо :=, оператор сравнения == (или = тоже понимает), инкремент и декремент в виде ++, --, +=, -=, а так же операторы побитового сдвига << и >>. Синтаксис операторов if, for, while заимствован из оберон и модула. Разница с синтаксисом Delphi в том что эти операторы сами открывают блок, begin для открытия блока писать не нужно, но они всегда должны заканчиваться завершающей инструкцией end, даже в том случае, если в их теле всего один оператор. Кроме этого все процедуры и функции объявляются с ключевым словом method. Если ком интересно, подробнее об особенностях смотрите в справке.

"visualtech.shadr.ru/files/Surgy7Setup.exe" - Инсталлятор среды, включающий дизайнер и интерпретатор - машину Суржи. Приложения сохраняются в формате xml. В комплекте примеры с использованием русской транскрипции и без, один с базой данных. Для запуска примеров используйте менеджер приложений Пуск-Программы-VisualTech-Суржи7-Менеджер. Из менеджера можно запустить пример или загрузить в дизайнер. Если у кого при инсталляции примеры в менеджер приложений не прописались, идем в Пуск-Программы-VisualTech-Суржи7-Пример-[Привет мир] или [пример с базой] - Запускаем левой кнопкой мыши, правой - вызываем контекстное меню - Изменить и приложение загрузится в дизайнер.

Собственно предлагаю этот сабж и обсудить....

Сообщение отредактировано: Rik - 8.02.2011 14:46


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.02.2011 11:37
Сообщение #2


Гость






Цитата
В частности, из Си подобных языков заимствованы оператор присвоения = вместо :=, оператор сравнения == вместо =, инкремент и декремент в виде ++, --, +=, -=, а так же операторы побитового сдвига << и >>.
Присваивание может возвращать значение? Виртуальные конструкторы есть? Средства многопоточного/многозадачного программирования на уровне языка, а не на уровне системы? Переносимость?

Рассказывай, а то у тебя ни на сайте ни фига подобного нет, ни здесь. "Качайте тестовую версию". Сейчас, разбежались. Знаешь, сколько таких сурджиков в интернете валяется. Ты заинтересуй, чтоб скачали. Покажи пару примеров программ (да не надо мне твои "привет, мир", ты приведи пример многопоточной сортировки данных, или, скажем, реализацию задачи "Обедающие философы", вот тогда будет понятно, чего стОит этот язык)... То, что ты написал - меня не заинтересовало.
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 11:42
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> В частности, из Си подобных языков заимствованы оператор присвоения = вместо :=, оператор сравнения == (или = тоже понимает),

Что вам, мало граблей в вашем сраном Си, так вы и другие языки этой чумой заражаете? Гвоздь в голову надо забивать за такое!


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rik
сообщение 8.02.2011 12:11
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Цитата(volvo @ 8.02.2011 13:37) *

Присваивание может возвращать значение? Виртуальные конструкторы есть? Средства многопоточного/многозадачного программирования на уровне языка, а не на уровне системы? Переносимость?

Рассказывай, а то у тебя ни на сайте ни фига подобного нет, ни здесь. "Качайте тестовую версию". Сейчас, разбежались. Знаешь, сколько таких сурджиков в интернете валяется. Ты заинтересуй, чтоб скачали. Покажи пару примеров программ (да не надо мне твои "привет, мир", ты приведи пример многопоточной сортировки данных, или, скажем, реализацию задачи "Обедающие философы", вот тогда будет понятно, чего стОит этот язык)... То, что ты написал - меня не заинтересовало.

Все методы виртуальные, в т.ч. и конструкторы.
Проект создавался для создания клиентских интерфейсов к базам данных, в основе интерпретаор, не стоит требовать от него многое, в задачах которые стоят перед системой это просто не нужно...
Последний проект, сделанный в этой системе - управление торговлей, с успехом работает на более чем 50 рабочих местах с многогигабайтной базой данных и включает до 150 модулей...


Добавлено через 4 мин.
Цитата(TarasBer @ 8.02.2011 13:42) *

> В частности, из Си подобных языков заимствованы оператор присвоения = вместо :=, оператор сравнения == (или = тоже понимает),

Что вам, мало граблей в вашем сраном Си, так вы и другие языки этой чумой заражаете? Гвоздь в голову надо забивать за такое!

Спасибо, я вас тоже уважаю...


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 8.02.2011 12:24
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Спасибо, я вас тоже уважаю...

Да вы просто взяли худшее от обоих языков.
Лучше бы вы сделали Суржи наоборот - взяли С++ с его автодеструкторами, шаблонами и перегрузками операций (чего мне ещё в Дельфи не хватало...), и вычистили от граблей, то есть нормальные :=, =, нормальный оператор выбора (без break и с возможностью задавать диапазоны и перечисления), итд. Ну и модульность нормальную, чтобы не ждать несколько минут, пока он тексты в одну свалку скинет.
Хотя не надо, такой язык и так уже есть.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 8.02.2011 12:31
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


> Чтобы сразу было понятно зачем это всё создавалась:
Тебе тоже "здравствуй"..

> Проект рассчитан на программистов Delphi,
> желающих сделать свои программы максимально гибкими.
Максимально гибкие грабли, из любой позиции дающие точно серпом по .. мозгам..

> Фактически эту систему я использую уже лет 8
Сочувствую... У меня тоже геморрой уже застарелый.. ((

> делаю на ней, для клиентов, "морды" к базам данных.
Преприятненькое занятьице! Язык, знацицца, для морд..

> Если клиент хочет что-либо изменить, ему не нужно
> заморачиваться по поводу лицензирования средств разработки,
> затрат на установку и т.д. Тут всё в одном флаконе
> и исходный код приложения и среда для его "конфигурирования".
А сами данные не пытался присовокупить? Оччень эффективно выходит..

> Многие мои пректы у заказчиков "живут" уже по нескольку лет
> без моего участия, все поддерживают своими силами.
А куда деваться? Уплочено..

> Сейчас в системе используется собственный интерпретатор языка
> Суржи (Delphi - pascal тоже поддерживается)
Не, ну здесь я серьезно скажу, кроме шуток: с выбором названия вышел явный швах..

> Суржи - объектно ориентированный язык программирования,
> поддерживает русскую транскрипцию.
Вот даже как? Это серьезная заявка..

> Название языка происходит от слова суржик.
> Так называется хлеб или мука из разных видов зерна,
> а так же смешанный разговорный язык на приграичных
> территориях Украины и России.
Да-да, мы в курсе. Ни то, ни другое..

> Т.е. смысл в том, что Cуржи тоже смешанный язык,
> в котором встречаются элементы различных языков программирования.
> В целом синтаксис языка базируется на синтаксисе Delphi,
> но есть элементы заимствованные из С подобных языков
> а так-же из Оберон и Модула.
Короче - все что поапло под руку автору..

> В частности, из Си подобных языков заимствованы
> оператор присвоения = вместо :=, оператор сравнения ==
Да, это большой шаг вперед..

> (или = тоже понимает),
Последняя строка меня особенно позабавила.. Ну просто ВСЕ ПОНИМАЕТ!! lol.gif

> ...

> Собственно предлагаю этот сабж и обсудить....
Собственно - вот, обсуждаем.. ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rik
сообщение 8.02.2011 13:21
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Цитата(Lapp @ 8.02.2011 14:31) *

> Проект рассчитан на программистов Delphi,
> желающих сделать свои программы максимально гибкими.
Максимально гибкие грабли, из любой позиции дающие точно серпом по .. мозгам..

> Фактически эту систему я использую уже лет 8
Сочувствую... У меня тоже геморрой уже застарелый.. ((

> делаю на ней, для клиентов, "морды" к базам данных.
Преприятненькое занятьице! Язык, знацицца, для морд..

> Если клиент хочет что-либо изменить, ему не нужно
> заморачиваться по поводу лицензирования средств разработки,
> затрат на установку и т.д. Тут всё в одном флаконе
> и исходный код приложения и среда для его "конфигурирования".
А сами данные не пытался присовокупить? Оччень эффективно выходит..

> Многие мои пректы у заказчиков "живут" уже по нескольку лет
> без моего участия, все поддерживают своими силами.
А куда деваться? Уплочено..



Тем не мение это стабильно работает. Вы обсуждаете то, что сами не посмотрели. Это не только язык, это среда в стиле Delphi с дизайнером форм, инспектором, редактором кода, встроенным языком... Русский язык - пока эксперементально... Полной русификации добиться не удастся. Имена типов читаются из VCL.

Сообщение отредактировано: Rik - 8.02.2011 13:24


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 8.02.2011 13:33
Сообщение #8


Гость






Цитата
Вы обсуждаете то, что сами не посмотрели.
Интерес "посмотреть" - отсутствует. Вот, сравни:
Немного о синтаксисе и безопасности

Я тоже рассказал о языке программирования. В результате у людей появился интерес, как минимум один из пользователей этого форума взялся за изучение нового для себя языка. Заметь, я не заставлял для того "чтоб посмотреть" качать что-то, я привел фрагменты кода, привел сравнения. Что мешало тебе сделать также?
 К началу страницы 
+ Ответить 
Lapp
сообщение 8.02.2011 13:42
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Rik @ 8.02.2011 13:21) *
Тем не мение это стабильно работает. Вы обсуждаете то, что сами не посмотрели. Это не только язык, это среда в стиле Delphi с дизайнером форм, инспектором, редактором кода, встроенным языком... Русский язык - пока эксперементально... Полной русификации добиться не удастся. Имена типов читаются из VCL.

Ты действительно расскажи чуть подробнее (volvo уже просил). Опиши нечто типа примера. Ты пойми, что тратить время на кота в мешке никто не захочет.

И еще скажи - чего ты ожидаешь от обсуждения? кроме, конечно, саморекламы..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rik
сообщение 8.02.2011 14:05
Сообщение #10





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Ну что-же. Система поддерживает 2 языка: Delphi-pascal и Суржи. С паскалем и так всё ясно, хотя для него тоже поддерживается русская транскрипция. Как я говорил, это пока эксперементально, когда то меня спросили о поддержке русского языка, я подумал, почему бы и нет. Лично для себя плюс из этого извлек, показал систему дочке второкласснице, ей понравилось, теперь она "балуется" решает школьные примерчики. Классический англоязычный вариант ребенку объяснять бесполезно...
Сам я в рабочих проектах русскую транскрипцию не использую, да и печатать привык в слепую латинскими..

Вот пример кода на суржи.

Код

модуль Главная_форма;

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

конец.


Удобочитаемость вроде как есть, но, набирать код тяжело, т.к. я говорил что полная русификация не возможна, постоянное переключение раскладок не есть хорошо... А те нововведения, которые я сделал, как видите они не такие и глобальные. Проект я создавал в первую очередь как инструмент для себя и исходил из своих соображений по удобству. Оператор присвоения := больше подходит для понимания присвоения, но для промышленного применения роли не играет, а использовать = вместо := лично для меня (да и я поди не один такой) более удобно, как и другие опрераторы, которые я добавил. Если в операторах if, while, for можно обойтись без begin для открытия блока - почему бы не использовать эту возможность, я попробовал, мне понравилось. Тот же Вирт, считает оператор begin для открытия блока избытосностью, т.к. можно обойтись без него.
Думаю всё равно кто-либо из вас, уважаемые обсуждающие, сталкивался с проблемой - Есть приложение, код закрыт, нужно что-либо поменять, звонишь разработчикам и объясняешь - вот, надо. Ответ - если это надо ещё кому-нибудь мы сделаем, а так идите нафиг. Я считаю это не правильно, программа должна позволять себя модифицировать, как например сделано в 1С. 1С мне не нравится, но подход у них верный..
Ну что ещё сказать. Код обработчиков событий дизайнер делает автоматом как и в дельфи, так-же автоматом в класс прописываются компоненты добавленные на форму...
В целом меня интересует, может ли быть полезными национальная транскрипция и те нововведения которые я сделал, хотя про них я уже всё услышал...

Сообщение отредактировано: Rik - 8.02.2011 14:20


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rik
сообщение 14.02.2015 8:51
Сообщение #11





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Дизель-паскаль

Проект, о котором я когда-то рассказывал здесь, был перенесен на Lazarus и стал кросс-платформенным. Новая версия переименована в Дизель-паскаль. В состав проекта входят исключительно свободные компоненты.

Дизель-паскаль - это кросс платформенная среда разработки с открытым кодом на FreePascal/Lazarus. Если девиз Lazarus - "Написав один раз - собирай везде", то по отношению к Дизель-паскаль можно сказать: "Написав один раз - запускай везде". Главная идея проекта - запуск программ без перекомпиляции на разных платформах, внесение изменений в приложение без перекомпиляции. Интерфейс и функционал среды аналогичен интерфейсу Lazarus, имеет встроенные интерпретаторы FreePascal и DieselPascal. Оба языка поддерживают ООП. Можно объявлять классы, поддерживается наследование и полиморфизм. Встроенный интерпретатор FreePascal довольно тесно совместим с оригиналом за исключением некоторых нюансов, касающихся перегрузки процедур и функций и инициализации массивов. Приложения дизель-паскаль представляют из себя XML файл содержащий ресурсы (формы, фреймы, модули данных) и код для интерпретатора Free/Diesel Pascal. Приложения выполняются виртуальной машиной, компиляция кода во внутренний формат происходит при запуске приложения, поэтому приложения Дизель паскаль будут работать без перекомпиляции и переделок на любой платформе, под которую удастся собрать сам Дизель-паскаль. Сама система задумана как дополнение к Lazarus, предназначена для разработки бизнес программ либо других программ автоматизации какой либо деятельности, но подразумевающей немного иной подход в построении и выполнении приложения. Дизайнер и машина Дизель-паскаль могут загружать приложения как локально, так и по протоколам ftp, http, что дает дополнительное преимущество при многопользовательской работе.

Благодаря системе я смог полностью перебраться на Linux, а т.ж. запустить процесс перевода рабочих мест у моих клиентов на Linux, по мере выхода лицензионной Win XP из строя. Приложение размещается на FTP, откуда пользователи его запускают, ОС на компьютере пользователей значения не имеет. В случае внесения изменений достаточно заменить приложение на FTP, не нужно бегать по рабочим местам.

В ходе работы над системой возникли дополнительные компоненты, которые могут быть интересны программистам использующим Lazarus. В первую очередь это модифицированная версия IBX и TxDBF (клон TDBF).
IBX модифицирован по типу FIBPlus, может работать в рамках 2х транзакций, изменен доступ к API FireBird, клиентская библиотека загружается в момент установки соединения с базой и при отключении от сервера библиотека освобождается. Добавлена поддержка возвращаемых значений (RETURNING FIELD в Insert и Update запросах, поддержка возвращаемых значений из EXECUTE PROCEDURE), добавлена поддержка выражений EXECUTE BLOCK и т.д.

TxDBF - клон TDBF адаптированный для работы с кодовыми страницами 1251 и 866.

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Проект полностью бесплатен, доступен как в исходных кодах, так и в откомпилированном виде (Win32, Win64, Lin32, Lin64).

http://visual-t.ru


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 1.11.2024 4:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"