roboforum.ru

Технический форум по робототехнике.

Робот - платформа для технического творчества

Re: Робот - платформа для технического творчества

=DeaD= » 02 янв 2010, 15:10

Я за графический язык являющийся подмножеством полноценного языка gcc, тогда переход от графики к обычному языку будет простым и понятным.

Re: Робот - платформа для технического творчества

Michael_K » 02 янв 2010, 16:13

Я за графический язык являющийся подмножеством полноценного языка

Вот и у меня такие же мысли...

По-моему, тут действовать надо так:
1. Взять за основу Си (не предлагать конструкции, которых в Си не существует).
2. Придумать КАК должна выглядеть и функционировать программа в графике,
так чтобы пятиклашкам было удобно, интуитивно понятно, чтобы "код" говорил сам за себя.
3. Выкинуть из возможностей Си все, что НЕ укладывается в такое графическое представление.
4. Написать в Си библиотеки и окружение, которые уложатся в такое графическое представление.

А то Сергей перечислил все вообще...
Это круто, но вызывает много вопросов:
- разделение переменных на локальные и глобальные - как это нарисовать?
Для этого нужно либо "пути данных" вводить, либо объявление переменных.
- Массивы, разные типы данных - В си их нужно объявлять. Как это нарисовать?
- Как "нарисовать" написание собственных функций?
и т.д.

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

Re: Робот - платформа для технического творчества

Angel71 » 02 янв 2010, 19:34

да, шутка с отечественными процами удалась. если они умудрились профукать технологии создания 3д чипов, которые они очень давно изобрели и довели до стадии, на которой возможно серийное производство... об остальном вообще смешно. "нано болты" :)

Re: Робот - платформа для технического творчества

Sergey Filippov » 02 янв 2010, 19:38

=DeaD= писал(а):Я за графический язык являющийся подмножеством полноценного языка gcc, тогда переход от графики к обычному языку будет простым и понятным.

Поддерживаю подмножество. Еще по-прежнему тяготею к Паскалю (он лучше структурирован), но Си, скорее всего, возьмет свое.
Michael_K писал(а):Например в NXTG блок может выдать несколько переменных на выход.

NXTG - в корзину.
Michael_K писал(а):Просто непонятно, к чему относились вот те 27 пунктов...
Как-то они надерганы, имхо, бессистемно и оттуда и отсуда - в результате каша.

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

Локальных не заказывали. Только глобальные. Однако при компиляции кода в Си может статься, например, что переменная, объявленная в цикле, не будет видна за его пределами. Поэтому, вероятно, лучше все переменные сразу объявлять глобально и заранее. Вот и получается Паскаль.
Если только будут создаваться свои блоки, то в них могут появиться локальные.
Michael_K писал(а):- Массивы, разные типы данных - В си их нужно объявлять. Как это нарисовать?

В Robolab 2.9.4 есть блок "f(x)" (по сути присваивание, не функция), в котором можно записать любое выражение и заодно объявить переменную (за это и уважаю).
f(x).JPG
f(x).JPG (4.23 КиБ) Просмотров: 1537

Массивы там примитивные - 22 пронумерованных контейнера (переменных), которые можно использовать по имени, по цвету или по номеру. Маловато.
Если есть желание поиграться, Robolab 2.9 можно взять здесь, а патч 2.9.4 с математикой здесь.
Michael_K писал(а):- Как "нарисовать" написание собственных функций?

Есть три пути. 1. По блоком может скрываться целая схема, открывающаяся в отдельном окне. 2. В блок типа расширенного "f(x)" заносится текстовый код. 3. Процедура описывается вместе с программой и вызывается по имени.
Michael_K писал(а):Про Роболаб посмотрел немножко... на первый взгляд показалось, что:
- кубики "слишком мелкие".
- управляющие конструкции разбиты на части (имхо это жутко для пятиклассников)
- как мне показалось это вовсе не подмножество Си, а скорее клон Лабвью,
с добавленными недостатками языка Си.

- Это у NXTG крупноваты. В Robolab кубики идеальны. Много влезает в окно. На первом же занятии пятиклашки пытаются составлять линейные программы не на один экран.
- Ограничивать управляющую конструкцию началом и концом совсем неплохо. Правда, нет возможности увидеть связь между такими блоками, что было бы полезно опционально.
- Точно, клон Лабвью. Там, если порыться, можно практически полный функционал найти.
В этом смысле у NI с Lego преимущество - есть готовая система, с которой можно сделать детскую версию.

Re: Робот - платформа для технического творчества

Vovan » 02 янв 2010, 19:45

Sergey Filippov писал(а):Си, скорее всего, возьмет свое
+1
остальное походу ИВХО...
Ваще, скока вот си "потребляю" (а потребляю пока оч.мало :( ), не перестаю удивляться гибкости (что ли) или типо универсальности (по сравнению с асм) или мождь это только касательно авр?

Re: Робот - платформа для технического творчества

Angel71 » 02 янв 2010, 19:49

Vovan, асм от камушка к камушку очень сильно может отличатся. в том же арме недавно появился набор инструкций thumb2. погугли, почитай, понравится

Re: Робот - платформа для технического творчества

avr123.nm.ru » 02 янв 2010, 19:59

Sergey Filippov писал(а): Robolab 2.9 можно взять здесь, а патч 2.9.4 с математикой здесь


Там регистрация какая-то ... :cry:
Если возможно закачай сюда архивом или если он большой то договорись с setar и положи на файлообменник.

Re: Робот - платформа для технического творчества

Sergey Filippov » 02 янв 2010, 20:09

avr123.nm.ru писал(а):
Sergey Filippov писал(а):Robolab 2.9 можно взять здесь, а патч 2.9.4 с математикой здесь

Там регистрация какая-то ...
Если возможно закачай сюда архивом или если он большой то договорись с setar и положи на файлообменник.

Регистрация не нужна. Нажмите кнопку "Зайти гостем". Там надо взять первую ссылку.

Re: Робот - платформа для технического творчества

=DeaD= » 02 янв 2010, 20:53

Почему же паскаль получится? Просто подмножество си в котором все переменные глобальные :)

Добавлено спустя 28 секунд:
А если разрешать составные блоки, то в них можно локальные переменные делать...

Re: Робот - платформа для технического творчества

Michael_K » 02 янв 2010, 20:58

1. Под блоком может скрываться целая схема, открывающаяся в отдельном окне.
2. В блок типа расширенного "f(x)" заносится текстовый код.
3. Процедура описывается вместе с программой и вызывается по имени.

И тут же встанет вопрос, как передавать в нее переменные, и как использовать
переменные внутри, если они все глобальные.

То есть, например, в одной ветке используется функция Do_Something_Please()
а в другой задаче используется другая функция Do_Something_Else().
В обоих внутри (и школьник этого даже не видит) используется счетчик цикла
(или любая другая переменная), допустим, с именем Count... И что?
Как они должны работать по-вашему? Каким образом компилятор должен угадать,
что каунт вон в том цикле - это не тот каунт, который в этом цикле...
А если в разных ветках используется одна и та же функция? А если школьник
и снаружи использует переменную с тем же именем...

В си это решается обьявлениями переменных, в лабвью есть "путь данных",
в котором видно, где переменная начинается и куда идет, плюс отдельно
глобальные переменные.

Локальных не заказывали. Только глобальные.

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

Про Роболаб посмотрел немножко... на первый взгляд показалось, что:
- кубики "слишком мелкие".
- Это у NXTG крупноваты. В Robolab кубики идеальны. Много влезает в окно.

Я, конечно, писал не про дизайн и размер на экране, а про функциональную насыщенность... :pardon:

- Ограничивать управляющую конструкцию началом и концом совсем неплохо.

Конечно неплохо. Вот и я про то же! в роболабе не видно, что это ЦЕЛЬНАЯ конструкция...
Не знаю, можно ли там "забыть" закрыть цикл или не поставить "слияние после IF", а вот то,
что многократная вложенность даже IF вызовет путаницу - уверен...
Как впрочем и в Си.

Re: Робот - платформа для технического творчества

Виктор Казаринов » 02 янв 2010, 23:54

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

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 00:01

Переносимость Си не ахти какая? :shock:
Требования скорости и кол-ва библиотек абсолютно не при чем.

Re: Робот - платформа для технического творчества

Angel71 » 03 янв 2010, 00:02

:oops: проблема с именами переменных и всё в этом духе это проблема визуального редактора, точнее того, что будет конвертировать исходные данные в код.

Re: Робот - платформа для технического творчества

Sergey Filippov » 03 янв 2010, 00:05

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

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

Михаил, тут не только мои мысли придется упорядочивать. В Robolab многозадачность и подпрограммы вполне обходятся без локальных переменных. Собственные блоки там тоже есть, имеют вход и выход и не пересекаются с телом программы своими переменными. Другое дело, если мы добиваемся совместимости с Си, тогда надо принять решение, до какой степени. Например, сваял кто-нибудь программу в текстовый файл и хочет получить графическое представление. А сам каунтов понатыкал для всех циклов локально. Тогда ему вежливо сообщают, мол, дважды объявлена переменная. Видимо, придется с этим смириться, ибо нехорошо, если на экране у ребенка одинаковые имена будут иметь разный смысл. Объявленные переменные предлагаю заносить в отдельную табличку.

Re: Робот - платформа для технического творчества

Виктор Казаринов » 03 янв 2010, 00:05

Да, не ахти какая преносимость у С. Особенно если касаться не того, что делается чисто в памяти и в проце, а за их пределами. Например, на стыке с ядром ОС или периферией.
У Паскаля хоть контроль типов получше. А вы задавались вопросом: программированию на каком-либо языке или созданию и управлению роботами собираетесь учить детей? Это - две совершенно разные задачи.
Последний раз редактировалось Виктор Казаринов 03 янв 2010, 00:08, всего редактировалось 2 раз(а).


Rambler\'s Top100 Mail.ru counter