OberonCore
https://forum.oberoncore.ru/

Приспособим PureBuilder для разработки игр
https://forum.oberoncore.ru/viewtopic.php?f=93&t=3264
Страница 1 из 3

Автор:  Сергей Прохоренко [ Вторник, 15 Февраль, 2011 23:40 ]
Заголовок сообщения:  Приспособим PureBuilder для разработки игр

Уже полгода на моем рабочем столе лежит презентация The Next Mainstream Programming Language: A Game Developer’s Perspective - крик души разработчика игр. Лежит как напоминание о том, что хороший структурный редактор должен соответствовать этим ясно выраженным потребностям. Должен признать, что предложенные автором решения мне понравились. А компьютерные игры - это передовой край Computer Science, эталон пригодности инструментального программного обеспечения к решению сложных задач.

Если вкратце, то проблемы (и их решение) следующие:
  • ошибочная перезапись в оперативной памяти (решенная проблема)
  • утечки памяти (решенная проблема)
  • висячие указатели (сборщик мусора обязателен)
  • выход индекса за границы массива (нужен статический контроль компилятора)
  • разыменование нулевых указателей (нужен статический контроль компилятора)
  • доступ к неинициализированным переменным (нужен статический контроль компилятора)
  • целочисленное переполнение (нужен целочисленный тип данных переменной длины, причем если длина стандартная, то в ячейке хранится само значение, а если длина больше стандартной - указатель на ячейку со значением)
  • не поддерживаются параллельные вычисления (необходимы локальные кучи, отсутствие побочных эффектов)

Автор:  Валерий Лаптев [ Вторник, 15 Февраль, 2011 23:49 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Я думаю, что структурно-семантические редакторы должны быть СПЕЦИАЛИЗИРОВАННЫМИ по предметным областям. Как автомобили: легковые, грузовые, фургоны, автобусы и т.п.

Автор:  Сергей Прохоренко [ Среда, 16 Февраль, 2011 00:12 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Почему? Разве то, что описано в первом посте, - это что-то экстраординарное и узкоспецифическое, привязанное к одной предметной области? Нет ведь!

Я же не говорю, что оно должно появиться в первой версии структурного редактора. Я понимаю, что компилятор должен быть очень интеллектуальным, и сразу его не реализуешь. Но в будущем это должно быть. То есть, сейчас просто не надо закладывать решения, которые станут потом препятствием для этих "фич".

Автор:  Валерий Лаптев [ Среда, 16 Февраль, 2011 00:17 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Практически все, что там перечислено - уже есть в Компонентном паскале... :)

Автор:  Сергей Прохоренко [ Среда, 16 Февраль, 2011 00:43 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Валерий Лаптев писал(а):
Практически все, что там перечислено - уже есть в Компонентном паскале... :)


А можно поточнее - чего нет?

Автор:  Владислав Жаринов [ Среда, 16 Февраль, 2011 06:41 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Сергей Прохоренко писал(а):
Валерий Лаптев писал(а):
Практически все, что там перечислено - уже есть в Компонентном паскале... :)
А можно поточнее - чего нет?
А кстати - структурный редактор ведь делает только исходный текст для какого-то компилятора, выбранного "в связку"? Вот какой подразумевается как целевой для Оберон-07?

Автор:  Geniepro [ Среда, 16 Февраль, 2011 07:33 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Валерий Лаптев писал(а):
Практически все, что там перечислено - уже есть в Компонентном паскале... :)

Любопытно. А что именно из этого списка есть в Компонентном паскале?
"экспертное" мнение удалено модератором (троллинг, п 5.7/2)

Автор:  Сергей Прохоренко [ Среда, 16 Февраль, 2011 10:45 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Драконограф писал(а):
А кстати - структурный редактор ведь делает только исходный текст для какого-то компилятора, выбранного "в связку"? Вот какой подразумевается как целевой для Оберон-07?


Нет, структурный редактор не "делает только исходный текст для какого-то компилятора".

Во-первых, для PureBuilder внутренним языком является новый диалект на основе Оберон-07, но не Оберон-07 как таковой. Язык Оберон-07 дополнен некоторыми конструкциями, подходящими для визуального программирования, повышающими надежность программ, производительность труда программиста или доступность технологий. При этом вектором развития языка не является его приближение к так называемым "промышленным" языкам ("мэйнстриму"), т.е. C, C++, Java, C#. У Валерия Лаптева также имелись планы "отклониться" от Оберона, в частности, попытаться реализовать несколько вариантов синтаксиса (а-ля Паскаль и а-ля Си), добавить какие-то конструкции в учебных целях, а его студент реализует вариант с русскими служебными словами.

Во-вторых, структурный редактор (в моем представлении) не должен порождать программу в форме текста, так как всякие высокоуровневые надстройки типа слоев, подсистем, интерфейсов к базе данных и т.п. сложно выразить в виде текста, и это могло бы неоправданно усложнить структурный редактор или сузить его возможности. Да и особой необходимости в текстовом представлении нет.

В-третьих, структурный редактор сам и непосредственно формирует абстрактное синтаксическое дерево, то есть, заменяет собой front-end компилятора. Естественно добавить к нему и новый back-end. К тому же, Валерия Лаптева привлекает технология динамической кодогенерации, которая должна быть внедрена в структурный редактор.

Тот структурный редактор, о которм Вы пишите, - порождающий исходный текст - существует сейчас только в варианте Кирилла Осенкова. Он порождает исходники на C#.

Автор:  Валерий Лаптев [ Среда, 16 Февраль, 2011 15:36 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Сергей Прохоренко писал(а):
Валерий Лаптев писал(а):
Практически все, что там перечислено - уже есть в Компонентном паскале... :)


А можно поточнее - чего нет?

Последнего пункта - параллельность. Решается средствами ОС.
Ну и контроль переполнения - это тоже легко решается для стандартных целых. А для длинных - надо в модуль Integer добавлять проверку.

Автор:  Илья Ермаков [ Среда, 16 Февраль, 2011 15:43 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

(В КП/ББ есть контроль переполнения, включается опцией компилятора.)

Автор:  Валерий Лаптев [ Среда, 16 Февраль, 2011 15:48 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Сергей Прохоренко писал(а):
Нет, структурный редактор не "делает только исходный текст для какого-то компилятора".

Совершенно верно.
Цитата:
Во-первых, для PureBuilder внутренним языком является новый диалект на основе Оберон-07, но не Оберон-07 как таковой. Язык Оберон-07 дополнен некоторыми конструкциями, подходящими для визуального программирования, повышающими надежность программ, производительность труда программиста или доступность технологий. При этом вектором развития языка не является его приближение к так называемым "промышленным" языкам ("мэйнстриму"), т.е. C, C++, Java, C#. У Валерия Лаптева также имелись планы "отклониться" от Оберона, в частности, попытаться реализовать несколько вариантов синтаксиса (а-ля Паскаль и а-ля Си), добавить какие-то конструкции в учебных целях, а его студент реализует вариант с русскими служебными словами.

Взяв за образец
а) русский язык в Кумире
б) работу инфо-21 по руссификации КП
пытаемся состряпать некий минимальный алгоритмический язык по образцу КП.
Редактор НЕ РАЗРЕШАЕТ изменять ключевые слова. Изменения разрешаются только в определенных местах оператора - где требуется вводить ручками.
Естественно, одним нажатием клавиши =- переключение всех ключевых слов на английский.
Цитата:
Во-вторых, структурный редактор (в моем представлении) не должен порождать программу в форме текста, так как всякие высокоуровневые надстройки типа слоев, подсистем, интерфейсов к базе данных и т.п. сложно выразить в виде текста, и это могло бы неоправданно усложнить структурный редактор или сузить его возможности. Да и особой необходимости в текстовом представлении нет.

В-третьих, структурный редактор сам и непосредственно формирует абстрактное синтаксическое дерево, то есть, заменяет собой front-end компилятора. Естественно добавить к нему и новый back-end. К тому же, Валерия Лаптева привлекает технология динамической кодогенерации, которая должна быть внедрена в структурный редактор.

Да. Работа выполняется с моделью.
Представлений пока три: а) текстовое - на экране; дерево вложенности - на экране; сохраняемый файл - xml (пока). Пацан пишет на додиезе - конкретно сейчас у них дисциплина NEYT-программирование. И данный редактор идет как курсовой проект в среде дотнет на додиезе.
Сегодня разговаривали об интерпретаторе модели - выполнение программ.
Дальше будем думать о генераторе некоего кода и конвертерах в сохраняемый текстовый вид.

Автор:  Валерий Лаптев [ Среда, 16 Февраль, 2011 15:49 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Илья Ермаков писал(а):
(В КП/ББ есть контроль переполнения, включается опцией компилятора.)

Ну вот. Тады - ОЙ! :)
Так что ничего придумывать не нужно, нужно взять ББ+КП - и использовать... :)

Автор:  Alexey Veselovsky [ Среда, 16 Февраль, 2011 16:23 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Илья Ермаков писал(а):
(В КП/ББ есть контроль переполнения, включается опцией компилятора.)

В тьюринг-полном языке контроль выхода за границы массива и целочисленного переполнения на этапе компиляции принципиально невозможно реализовать.

А про контроль времени исполнения Geniepro всё уже сказал, да только это всё удалили, хотя было в тему.

Автор:  Сергей Прохоренко [ Среда, 16 Февраль, 2011 20:18 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Илья Ермаков писал(а):
(В КП/ББ есть контроль переполнения, включается опцией компилятора.)


А всё остальное тоже есть? - вопрос к специалисту.

Обращаю Ваше внимание на то, что автор презентации хочет не генерации и обработки прерывания/исключения во время исполнения, а он хочет контроля во время компиляции.

Кстати, целочисленного типа переменной длины уж точно нет в КП (и, наверное, вообще ни в одном из языков программирования), а идея интересная.

Автор:  Сергей Прохоренко [ Среда, 16 Февраль, 2011 20:22 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Geniepro писал(а):
Валерий Лаптев писал(а):
Практически все, что там перечислено - уже есть в Компонентном паскале... :)

Любопытно. А что именно из этого списка есть в Компонентном паскале?
"экспертное" мнение удалено модератором (троллинг, п 5.7/2)


Прошу модератора переслать мне удаленное сообщение в личку. Обязуюсь не выкладывать.

Автор:  Евгений Темиргалеев [ Среда, 16 Февраль, 2011 20:30 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Сергей Прохоренко писал(а):
Прошу модератора переслать мне удаленное сообщение в личку. Обязуюсь не выкладывать.
Технически не возможно.

Автор:  Валерий Лаптев [ Среда, 16 Февраль, 2011 20:48 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Сергей Прохоренко писал(а):
Илья Ермаков писал(а):
(В КП/ББ есть контроль переполнения, включается опцией компилятора.)


А всё остальное тоже есть? - вопрос к специалисту.

Обращаю Ваше внимание на то, что автор презентации хочет не генерации и обработки прерывания/исключения во время исполнения, а он хочет контроля во время компиляции.

Кстати, целочисленного типа переменной длины уж точно нет в КП (и, наверное, вообще ни в одном из языков программирования), а идея интересная.

Длинные числа обычно реализуются в библиотеке. И они там есть... :)

Автор:  Alexey Veselovsky [ Среда, 16 Февраль, 2011 20:56 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Сергей Прохоренко писал(а):
Кстати, целочисленного типа переменной длины уж точно нет в КП (и, наверное, вообще ни в одном из языков программирования), а идея интересная.

Они есть во многих языках. Например в Haskell, Erlang and so on.
Ну а, скажем, в Аде прямо в типе можно заказать такую битность числа, какая нужна.

PS. Про это Geniepro также написал, кстати.

Автор:  Alexey Veselovsky [ Среда, 16 Февраль, 2011 21:00 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Валерий Лаптев писал(а):
Длинные числа обычно реализуются в библиотеке. И они там есть... :)

Про сравнение КПшной библиотеки с libgmp Geniepro также вполне вменяемо написал в удаленном модераторами сообщении.

Автор:  Владислав Жаринов [ Четверг, 17 Февраль, 2011 06:24 ]
Заголовок сообщения:  Re: Приспособим PureBuilder для разработки игр

Валерий Лаптев писал(а):
Сергей Прохоренко писал(а):
Нет, структурный редактор не "делает только исходный текст для какого-то компилятора".

Совершенно верно.
...
Да. Работа выполняется с моделью.
...
Кстати, если о топике темы, то документ редактора для разработки игр должен нести модель мира, для описания которой д.б. "сурьёзный" язык поддержан... :) конечно, есть, скажем, VRML (см. выдержку из Ахромова в этом сообщении)...
А мысль интересная ещё и тем, что ведь использовать это можно и для реализации внутри документа динамических моделей процессов, явлений (в учебных целях прежде всего).

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/