Личный кабинет

DBI-Builder - Суржи

подойдет ли для обучения программированию?
Юрий Копнин ( Пользователь )
Здравствуйте.
Я инженер, занимаюсь автоматизацией различной деятельности. Для этих целей использую собственную среду DBI-Builder аналогичную Delphi, но со встроенными интерпретаторами Object Pascal и Суржи. Язык Суржи - собственная разработка - можно рассматривать как модифицированный паскаль. Оба языка поддерживают ООП и русскую транскрипцию. Вся среда разработки бесплатна и распространяется в исходных кодах, разработана на Delphi (Delphi XE).
Разработка среды велась для промышленных целей, но думаю может подойти и для обучения программированию, русская транскрипция языков может здесь оказаться весьма полезной. Хотелось бы услышать мнения по поводу возможности применения среды для обучения программированию..

Подробнее о среде разработки:
Интерфейс в стиле Delphi и построен на интерфейсах самой Delphi.
Имеются:
-Дизайнер форм, поддерживает работу с формами, фрэймами, модулями данных, с визуальными и не визуальными компонентами.
-Инспектор объектов
-Редактор кода с подсветкой синтаксиса и авто завершением кода. Поддерживается автозаполнение классов форм, фрэймов и модулей данных при добавлении в них компонент через дизайнер.

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

Сейчас ведутся работы по русификации наименований типов объектов, чтобы скажем вместо TEdit, можно было использовать ТРедактор.

Пример кода на Суржи с русской транскрипцией:

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

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

конец.

Если разработка для целей обучения перспективна, можно добавить консоль. В настоящее время возможно только GUI, т.к. изначально среда разрабатывалась для разработки пользовательских интерфейсов к базам данных и необходимости в консоли нет.

Посмотреть и загрузить на пробу можно здесь.
Дмитрий Изергин ( Пользователь )
"подойдет ли для обучения программированию?" - скажу так (ИМХО), в меньшей степени чем дельфи. Значительно хуже, чем специализированные системы для обучения программированию рассматриваемые на этом форуме. Если коротко, обучение программированию это отрасль, со своими задачами и требованиями к ЯП, обучающей системе, документации, методологии обучения.... Обычные идеи которые закладываются при создании подобных систем (очень упрощенно) -
1.- классическое IDE (c которым большинство может интуитивно работать) модифицируется согласно представлениям авторов об обучении (ББ, Pabc.net....).
2. - специализированные системы, создаваемые вокруг определенных методик преподавания (Кумир).
Каждый подход имеет определенные достоинства и недостатки (я имею ввиду идеологию). Но несомненно одно - все используемые на практике (в потоке) системы имеют определенную информационную поддержку (примеры, методологическая литература, документация). Ваша система мною классифицируется
как не модифицированная первая категория, с делфи в качестве прототипа. Однако, она не имеет , в отличии от оригинала, той массы литературы для скорейшего внедрения ее в учебный процесс .. Изменения в ЯП носят скорее хаотический характер программерского фичевания ЯП, чем глубокую методологическую основу, что тоже не есть хорошо для обучения (пример- улучшили конструкцию условного оператора, но ввели зачем -то инкрементальные операторы)...
Мой вердикт - преподаватель , который попробует использовать Вашу систему на практике (в текущем ее виде) , столкнется со многими явными проблемами, при не очень явных ее преимуществах (разумеется в контексте образовательных задач).

Что касается перспектив - при определенных усилиях (увы, главным образом, не программистских) вашу систему можно довести до уровня PABC без геморроидального дот.нета. Если будет выдерживаться курс Ембаркадеро(Embarcadero) на кроссплатформенность, то это в перспективе может дать универсальную кроссплатформенную IDE для обучения. Вот где-то так...
Юрий Копнин ( Пользователь )
DIzer
Спасибо, очень хороший ответ.
Алексей Кормилкин ( Пользователь )
Цитата (Юрий Копнин, 29.08.2011, 05:25) <{POST_SNAPBACK}>
DIzer
Спасибо, очень хороший ответ.

в1989 году у нас в учебнике по информатике был язык программирования РАЯ - "русский алгоритмический язык". по сути своей это была реинкарнация алгола с ужасным и не удобным синтаксисом...
с тех пор прошло более 20 лет... за это время появилось много красивых (и не очень) разработок, но всегда хочу задать один и тот же вопрос: "Зачем?". если Вы думаете о будущем ребенка, то научите его паскалю-делфи, или java-с++... в будущем он Вам только спасибо скажет. и можете поверить, в институте все равно ребят будут переучивать на коммерческие языки, тогда почему бы не учить их сразу правильно?
вот чего действительно не хватает, на мой взгляд, так это методик изучения языков.
Дмитрий Изергин ( Пользователь )
Цитата (Алексей Кормилкин, 29.08.2011, 08:52) <{POST_SNAPBACK}>
в1989 году у нас в учебнике по информатике был язык программирования РАЯ - "русский алгоритмический язык". по сути своей это была реинкарнация алгола с ужасным и не удобным синтаксисом...
с тех пор прошло более 20 лет... за это время появилось много красивых (и не очень) разработок, но всегда хочу задать один и тот же вопрос: "Зачем?". если Вы думаете о будущем ребенка, то научите его паскалю-делфи, или java-с++... в будущем он Вам только спасибо скажет. и можете поверить, в институте все равно ребят будут переучивать на коммерческие языки, тогда почему бы не учить их сразу правильно?
вот чего действительно не хватает, на мой взгляд, так это методик изучения языков.

Не понял сути вопроса(комментария?) и его (возможной) связи с темой топика. Плз. выражайтесь четче если вопрос по "теме", либо создайте новую ветку для обсуждения
Юрий Копнин ( Пользователь )
Как я понял, Алексей Кормилкин обозначил свою позицию, по теме специализированных языков для обучения, предлагая использовать для этой цели исключительно перспективные направления. Т.е. специализированные для обучения языки как правило не имеют практического применения (т..е. не могут использоваться для разработки ПО, которое могло бы иметь коммерческий успех или было так или иначе востребовано) вне сферы образовательного процесса и следовательно являются пустой тратой времени.
Я бы мог согласиться, но в любом случае у ученика должно сформироваться алгоритмическое мышление. Для этого, думаю всё таки будет проще, если ребенок начнет с синтаксиса представленного на родном языке, смысл операторов становится куда яснее.
Алексей Кормилкин ( Пользователь )
Цитата (Юрий Копнин, 29.08.2011, 15:51) <{POST_SNAPBACK}>
Как я понял, Алексей Кормилкин обозначил свою позицию, по теме специализированных языков для обучения, предлагая использовать для этой цели исключительно перспективные направления. Т.е. специализированные для обучения языки как правило не имеют практического применения (т..е. не могут использоваться для разработки ПО, которое могло бы иметь коммерческий успех или было так или иначе востребовано) вне сферы образовательного процесса и следовательно являются пустой тратой времени.
Я бы мог согласиться, но в любом случае у ученика должно сформироваться алгоритмическое мышление. Для этого, думаю всё таки будет проще, если ребенок начнет с синтаксиса представленного на родном языке, смысл операторов становится куда яснее.

Алексей Кормилкин своим постом просто спрашивал, чем не устраивают существующие языки программирования, что разрабатываются новые, коммерческая перспектива которых (чит. распространение) весьма призрачна? Также Алексей Кормилкин, имея богатый опыт преподавания реальных языков программирования в реальном ВУЗе, весьма скептически относится к попыткам научить ребенка писать на "алголо-си", когда есть, например, java.

Цитата (Юрий Копнин, 29.08.2011, 15:51) <{POST_SNAPBACK}>
Я бы мог согласиться, но в любом случае у ученика должно сформироваться алгоритмическое мышление. Для этого, думаю всё таки будет проще, если ребенок начнет с синтаксиса представленного на родном языке, смысл операторов становится куда яснее.

в этом вся и проблема, что академик Ершов, весьма, кстати, уважаемый мной человек, тоже думал, что синтаксис на русском поможет. история показала, что он ошибался.

хотите добрый бесплатный совет, куда "копать"? есть Matlab, Scilab, R, S... есть языки програмирования в перечисленных мной системах. как правило все языки c-подобные. напишите для данных систем, можно начать со Scilab свой препроцессор или полностью компилятор, тем более, что скоро две первые системы будут во всех школах.
Дмитрий Изергин ( Пользователь )
Цитата (Алексей Кормилкин, 29.08.2011, 16:22) <{POST_SNAPBACK}>
Алексей Кормилкин своим постом просто спрашивал, чем не устраивают существующие языки программирования, что разрабатываются новые, коммерческая перспектива которых (чит. распространение) весьма призрачна? Также Алексей Кормилкин, имея богатый опыт преподавания реальных языков программирования в реальном ВУЗе, весьма скептически относится к попыткам научить ребенка писать на "алголо-си", когда есть, например, java.


в этом вся и проблема, что академик Ершов, весьма, кстати, уважаемый мной человек, тоже думал, что синтаксис на русском поможет. история показала, что он ошибался.

хотите добрый бесплатный совет, куда "копать"? есть Matlab, Scilab, R, S... есть языки програмирования в перечисленных мной системах. как правило все языки c-подобные. напишите для данных систем, можно начать со Scilab свой препроцессор или полностью компилятор, тем более, что скоро две первые системы будут во всех школах.


1. Не устраивает. Объяснять лично Вам не считаю целесообразным, не смотря на Ваш "богатый опыт преподавания реальных языков программирования в реальном ВУЗе " - извините, это бессмысленно. Не тот уровень.

2.То же не хочу отвечать - Вы мне не понравились (да и бесполезно это), в данном случае я не считаю себя достаточно компетентным (рассуждать о целесообразности введения русского языка в синтаксис ЯП ).

3. Спасибо, в Ваших бесплатных (и судя по всему платных), добрых (или не очень) советах не нуждаюсь(в Вашем исполнении бесплатный- выглядит синонимом "грошовый") - пока на паперти не побираюсь.

Алексей Кормилкин ( Пользователь )
Цитата (DIzer, 29.08.2011, 18:47) <{POST_SNAPBACK}>
1. Не устраивает. Объяснять лично Вам не считаю целесообразным, не смотря на Ваш "богатый опыт преподавания реальных языков программирования в реальном ВУЗе " - извините, это бессмысленно. Не тот уровень.

2.То же не хочу отвечать - Вы мне не понравились (да и бесполезно это), в данном случае я не считаю себя достаточно компетентным (рассуждать о целесообразности введения русского языка в синтаксис ЯП ).

3. Спасибо, в Ваших бесплатных (и судя по всему платных), добрых (или не очень) советах не нуждаюсь(в Вашем исполнении бесплатный- выглядит синонимом "грошовый") - пока на паперти не побираюсь.

1. все, что я писал, предназначалось не Вам, DIzer, а автору темы Юрию Копнину...
2. жаль, а я думал, мы подружимся )))
3. не за что, и, опять же, советы не Вам, а автору темы.
Юрий Копнин ( Пользователь )
Цитата (Алексей Кормилкин, 29.08.2011, 16:22) <{POST_SNAPBACK}>
Алексей Кормилкин своим постом просто спрашивал, чем не устраивают существующие языки программирования, что разрабатываются новые, коммерческая перспектива которых (чит. распространение) весьма призрачна?

Ну как Вам сказать Алексей, зачем разрабатывают? Нельзя мерить всё коммерческими перспективами. Когда художник рисует картину, он о перспективах и о том что другие картины есть не думает.
Раз уж вопрос в этой теме, видимо можно считать как вопрос, зачем я всё это сделал? Во первых получил удовольствие. Во вторых сделал инструмент, с помощью которого пишу программы, которые меня кормят. В третьих, клиенты этими программами довольны, т.к. благодаря гибкой среде, у них есть возможность сопровождать эти программы самостоятельно своими силами и для этого им не нужно покупать среду разработки (особенно актуально в бюджетных конторах).
Это конечно уже пошла тема не этого форума, тем не мение, если Вам действительно интересно, в чем я сомневаюсь, могу написать, вернее дать ссылку, где есть история как всё это началось и как я к этому пришел. Да и сложно сказать что это новый язык, в нем ничего нового на самом деле нет. DIzer правильно подметил:
Цитата (DIzer, 28.08.2011, 15:02) <{POST_SNAPBACK}>
Изменения в ЯП носят скорее хаотический характер программерского фичевания ЯП, чем глубокую методологическую основу

так всё и есть, Суржи - тюнинг на паскаль сделанный исходя из моих вкусов...

Цитата (Алексей Кормилкин, 29.08.2011, 16:22) <{POST_SNAPBACK}>
хотите добрый бесплатный совет, куда "копать"? есть Matlab, Scilab, R, S... есть языки програмирования в перечисленных мной системах. как правило все языки c-подобные. напишите для данных систем, можно начать со Scilab свой препроцессор или полностью компилятор, тем более, что скоро две первые системы будут во всех школах.

Спасибо, но вряд - ли я буду этим заниматься. Пока я востребован в сфере автоматизации бизнеса и пока есть возможность на этом заработать, буду этим пользоваться. Я всего лишь имея собственный инструмент для этих целей спросил о возможности использования его для обучения.

footer logo © Образ–Центр, 2018. 12+