nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 14 Dec 2018 15:56



This topic is locked, you cannot edit posts or make further replies.  [ 14 posts ] 
Пополнение библиотеки программ на RW1 через соревнования 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Идея - создание пополняемой базы подпрограмм на языке RW1. Т.к. данный язык будет основным в линейке NedoPC-продуктов, то на него хотелось бы много чего портировать или переписать. Написание чего-то одного большого одним человеком выглядит не слишком удачным решением, т.к. возможно многие возьмутся скажем за написание текстового редактора, но не многие допишут его до конца, а вот если разбить задачу на кучу мелких подзадачек и вывесить их в интернете - чтобы народ просто заходил сюда минут на 10-15 и прямо в онлайне что-то по быстрому бы писал на RW1 с мгновеной онлайновой проверкой (Java на клиентской и серверной сторонах). Для экономных можно организовать аналогичный e-mail сервис (почтовый робот у меня на домашнем линухе). По ходу дела можно вести учет кто чего написал и сколько очков набрал - и рисовать на сайте десятку лучших. Лучшим из лучших можно предлагать различные бонусы - типа бесплатную подписку на NedoPC-издание или бепслатное получение некоторых NedoPC-девайсов или еще что. Кстати так можно вести не только софтверную разработку, но и хардверную - любую запись на языке RW1 можно автоматически перевести в параллельную реализацию на VHDL.

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 08 Feb 2005 22:47, edited 3 times in total.



04 Feb 2005 13:56
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Предполагаю несколько основных объектов такой онлайновой системы:
- задача (формулировка действий которые должна делать подпрограмма)
- решение (подпрограмма на RW1 для решения какой-то задачи)
- тест (программа на RW1 для проверки решений)
- проект (большая программа, составленные из подпрограмм-решений)

_________________
:eugeek: https://twitter.com/Shaos1973


04 Feb 2005 15:53
Profile WWW
Maniac

Joined: 12 Oct 2004 14:49
Posts: 234
Post 
Да, интересная идея. Но чур пусть будет несколько хорошо закомментированных примеров. Я люблю в разреза в карьер (или с корабля на бал?), не люблю читать всякие описания за 10+ страниц если мне за это не платят 65+ $ в час :)


16 Feb 2005 13:07
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
dhau wrote:
Да, интересная идея. Но чур пусть будет несколько хорошо закомментированных примеров. Я люблю в разреза в карьер (или с корабля на бал?), не люблю читать всякие описания за 10+ страниц если мне за это не платят 65+ $ в час :)


Дороговато ты стоишь ;)

Ок, будут примеры - все равно большая часть кода предполагает быть открытой

_________________
:eugeek: https://twitter.com/Shaos1973


16 Feb 2005 18:16
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Итак, модуль - это робот. Можно кстати его так и называть - robot. В общем случае у модуля есть автор, однако будучи реализован в исходниках модуль отдается в безвозмездное пользование всеми - и любой кто захочет отпочковать от модуля новый модуль имеет возможность вписаться в линейку его авторов.

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

По поводу лицензирования - строящиеся таким образом системы предполагается распространять под лицензией GPL и с копирайтом главного веб-сайта проекта (по-видимому это будет rwar.net).

_________________
:eugeek: https://twitter.com/Shaos1973


30 Jul 2005 19:36
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Я придумал как составлять из RW-модулей обработчики потоков данных - на основе этого подхода можно строить симуляторы электронных схем и готовить VHDL-описание программируемой логики!

_________________
:eugeek: https://twitter.com/Shaos1973


02 Aug 2005 07:25
Profile WWW
Doomed

Joined: 16 Apr 2005 23:35
Posts: 492
Location: Томск
Post 
Shaos wrote:
строить симуляторы электронных схем и готовить VHDL-описание программируемой логики!


Это было бы наверное очень интересно. Если бы еще была возможность в устройстве "на лету" VHDL компилировать и ПЛИСу прошивать....


02 Aug 2005 20:13
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
SfS wrote:
Shaos wrote:
строить симуляторы электронных схем и готовить VHDL-описание программируемой логики!


Это было бы наверное очень интересно. Если бы еще была возможность в устройстве "на лету" VHDL компилировать и ПЛИСу прошивать....


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

_________________
:eugeek: https://twitter.com/Shaos1973


02 Aug 2005 21:00
Profile WWW
Doomed

Joined: 16 Apr 2005 23:35
Posts: 492
Location: Томск
Post 
Shaos wrote:
А вот этого не выйдет (хотя очень хочется) так как вся современная программируемая логика имеет закрытую архитектуру, программируемую только из специальных программ производителей соответствующих микрух


Тогда это вопрос времени. Может появится и открытая :)


02 Aug 2005 21:57
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Shaos wrote:
Роботы работают с потоками данных - т.е. имеют входы и выходы, что позволяет считать их блоками некой большой схемы, которая также может быть модулем более высокоуровневой схемы. Таким образом мы получим возможность иерархической реализации сложных концепций из простых кирпичиков и подкирпичиков. Причем авторы отдельных кирпичиков в общем случе могут и не догадываться где и для чего будут использованы их модули. Также реализация будет подразумевать и VHDL вариант для выпуска систем "в железе".


Выглядеть это будет примерно так:

Code:
robot "Sum/3-100.1"
author "Somebody,Shaos"
main()
{
  def vec[4] // вектор ввода вывода
  while(1)
  {
    recvp vec // получить вектор от родителя
    vec[3]=vec[1]+vec[2] // что-то с ним поделать
    sendp vec N // послать измененный вектор обратно родителю
    // повторить до состояния HALT
  }
}


Как нетрудно догадаться, вышеприведенный модуль выполняет функцию сложения. Вектор связи стостоит из 3 полей - два слагаемых (входы) и результат (выход). Так как передача идет пакетами, то по 0-му индексу резервируется место под размер пакета (т.е. в вышеприведенном примере vec[0] всегда будет равно 3).

Для создания дочерних объектов-модулей предлагается некий трюк со спецкомандами, передаваемыми через SAY. Что-то типа такого:

Code:
robot "Test"
author "Test"
main()
{
 def vec[5] // предположим нам надо сделать vec[4]=vec[1]+vec[2]+vec[3]
 SAY "$new Sum" // тут создается объект класса Sum и в N прописвывается его индекс
 sum1 = N
 def vec1[4]={3} // сразу же можно зарезеривровать вектор-пакет для этого объекта
 SAY "$new Sum" // создаем еще один объект Sum
 sum2 = N
 def vec2[4]={3} // вектор-пакет для второго объекта
 while(1)
 {
    recvp vec // получим от родителя (или пользователя) вектор начальных значений
    super = N // запомним идентификатор родителя
    vec1[1] = vec[1]
    vec1[2] = vec[2]
    sendp vec1 sum1 // отправим аргументы первому объекту
    recvp vec1 // получим решение
    vec2[1] = vec1[3] // возьмем результат
    vec2[2] = vec[3] // и третье слагаемое
    sendp vec2 sum2 // отправим аргументы второму объекту
    recvp vec2 // получим решение
    vec[4] = vec2[3] // сохраним это решение как результат работы модуля
    sendp vec super // уведомим родителя о своем решении
    // продолжим
 }
}

_________________
:eugeek: https://twitter.com/Shaos1973


12 Sep 2005 20:53
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Для компактности все вышесказанное можно обернуть в псевдо-объектно-ориентированную обертку посредством макросов RW1 (чтобы это заработало надо компилятор RW1C немного подправить):

// во-первых, зададим два основных ОО-макроса:
@NEW(3)=def @1[@2];say "$new @3";i_@1=N;@1[0]=@2-1
@RUN(1)=sendp @1 i_@1;recvp @1

// затем мы можем определить макросы "классов":
// класс Sum (сумма) A+B=S
@SUM(1)=@NEW(@1,4,Sum)
@SUM_A(1)=@1[1]
@SUM_B(1)=@1[2]
@SUM_S(1)=@1[3]
// класс Inc (инкремент) A++
@INC(1)=@NEW(@1,2,Inc)
@INC_A(1)=@1[1]

// тогда работа с модулями-классами будет выглядеть так:

@SUM(s1) // объект s1 класса Sum
@SUM(s2) // объект s2 класса Sum
@INC(ii) // объект ii класса Inc
...
@SUM_A(s1)=1
@SUM_B(s1)=2
@RUN(s1)
@SUM_A(s2)=3
@SUM_B(s2)=@SUM_S(s1)
@RUN(s2)
@INC_A(ii)=@SUM_S(s2)
@RUN(ii)
result=@INC_A(ii) // в результате должно получиться 7

_________________
:eugeek: https://twitter.com/Shaos1973


13 Sep 2005 21:15
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Вчера я после тщательного обдумывания изобрел объектно-ориентированное расширение RW1, отдаленно напоминающее Java - компилируемый код RW1 будет получатся из объектно-ориентированной программы с помощью специального транслятора

_________________
:eugeek: https://twitter.com/Shaos1973


14 Sep 2005 18:22
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Shaos wrote:
Вчера я после тщательного обдумывания изобрел объектно-ориентированное расширение RW1, отдаленно напоминающее Java - компилируемый код RW1 будет получатся из объектно-ориентированной программы с помощью специального транслятора


Я даже название для всего этого (язык плюс онлайновый сервис ведения проектов на нем) придумал - ROBERTA (Reasonable Object Base for Embedded Real Time Applications). На самом деле название я придумал давно, а вот расшифровку аббревиатуры - только что :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


14 Sep 2005 21:19
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17215
Location: Colorado
Post 
Shaos wrote:
Я даже название для всего этого (язык плюс онлайновый сервис ведения проектов на нем) придумал - ROBERTA (Reasonable Object Base for Embedded Real Time Applications). На самом деле название я придумал давно, а вот расшифровку аббревиатуры - только что :roll:


Кстати последний RW1C компилятор уже может такие фокусы с макросами делать!

А ROBERTA теперь расшифровывается как Real Object Basis for Embedded Real-Time Applications

_________________
:eugeek: https://twitter.com/Shaos1973


03 Dec 2005 18:28
Profile WWW
Display posts from previous:  Sort by  
This topic is locked, you cannot edit posts or make further replies.   [ 14 posts ] 

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.