Пополнение библиотеки программ на RW1 через соревнования

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Пополнение библиотеки программ на RW1 через соревнования

Post by Shaos »

Идея - создание пополняемой базы подпрограмм на языке RW1. Т.к. данный язык будет основным в линейке NedoPC-продуктов, то на него хотелось бы много чего портировать или переписать. Написание чего-то одного большого одним человеком выглядит не слишком удачным решением, т.к. возможно многие возьмутся скажем за написание текстового редактора, но не многие допишут его до конца, а вот если разбить задачу на кучу мелких подзадачек и вывесить их в интернете - чтобы народ просто заходил сюда минут на 10-15 и прямо в онлайне что-то по быстрому бы писал на RW1 с мгновеной онлайновой проверкой (Java на клиентской и серверной сторонах). Для экономных можно организовать аналогичный e-mail сервис (почтовый робот у меня на домашнем линухе). По ходу дела можно вести учет кто чего написал и сколько очков набрал - и рисовать на сайте десятку лучших. Лучшим из лучших можно предлагать различные бонусы - типа бесплатную подписку на NedoPC-издание или бепслатное получение некоторых NedoPC-девайсов или еще что. Кстати так можно вести не только софтверную разработку, но и хардверную - любую запись на языке RW1 можно автоматически перевести в параллельную реализацию на VHDL.
Last edited by Shaos on 08 Feb 2005 21:47, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Предполагаю несколько основных объектов такой онлайновой системы:
- задача (формулировка действий которые должна делать подпрограмма)
- решение (подпрограмма на RW1 для решения какой-то задачи)
- тест (программа на RW1 для проверки решений)
- проект (большая программа, составленные из подпрограмм-решений)
Я тут за главного - если что шлите мыло на me собака shaos точка net
dhau
Maniac
Posts: 233
Joined: 12 Oct 2004 13:49

Post by dhau »

Да, интересная идея. Но чур пусть будет несколько хорошо закомментированных примеров. Я люблю в разреза в карьер (или с корабля на бал?), не люблю читать всякие описания за 10+ страниц если мне за это не платят 65+ $ в час :)
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

dhau wrote:Да, интересная идея. Но чур пусть будет несколько хорошо закомментированных примеров. Я люблю в разреза в карьер (или с корабля на бал?), не люблю читать всякие описания за 10+ страниц если мне за это не платят 65+ $ в час :)
Дороговато ты стоишь ;)

Ок, будут примеры - все равно большая часть кода предполагает быть открытой
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Итак, модуль - это робот. Можно кстати его так и называть - robot. В общем случае у модуля есть автор, однако будучи реализован в исходниках модуль отдается в безвозмездное пользование всеми - и любой кто захочет отпочковать от модуля новый модуль имеет возможность вписаться в линейку его авторов.

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

По поводу лицензирования - строящиеся таким образом системы предполагается распространять под лицензией GPL и с копирайтом главного веб-сайта проекта (по-видимому это будет rwar.net).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Я придумал как составлять из RW-модулей обработчики потоков данных - на основе этого подхода можно строить симуляторы электронных схем и готовить VHDL-описание программируемой логики!
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote:строить симуляторы электронных схем и готовить VHDL-описание программируемой логики!
Это было бы наверное очень интересно. Если бы еще была возможность в устройстве "на лету" VHDL компилировать и ПЛИСу прошивать....
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote:строить симуляторы электронных схем и готовить VHDL-описание программируемой логики!
Это было бы наверное очень интересно. Если бы еще была возможность в устройстве "на лету" VHDL компилировать и ПЛИСу прошивать....
А вот этого не выйдет (хотя очень хочется) так как вся современная программируемая логика имеет закрытую архитектуру, программируемую только из специальных программ производителей соответствующих микрух (обсуждение вопроса читать тут) - остается уповать только на старые добрые палы-галы - найти бы такие, которые по ISP могут программироваться без ПЦ :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: А вот этого не выйдет (хотя очень хочется) так как вся современная программируемая логика имеет закрытую архитектуру, программируемую только из специальных программ производителей соответствующих микрух
Тогда это вопрос времени. Может появится и открытая :)
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

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

Code: Select all

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: Select all

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 // уведомим родителя о своем решении
    // продолжим
 }
}
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Для компактности все вышесказанное можно обернуть в псевдо-объектно-ориентированную обертку посредством макросов 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
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вчера я после тщательного обдумывания изобрел объектно-ориентированное расширение RW1, отдаленно напоминающее Java - компилируемый код RW1 будет получатся из объектно-ориентированной программы с помощью специального транслятора
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Вчера я после тщательного обдумывания изобрел объектно-ориентированное расширение RW1, отдаленно напоминающее Java - компилируемый код RW1 будет получатся из объектно-ориентированной программы с помощью специального транслятора
Я даже название для всего этого (язык плюс онлайновый сервис ведения проектов на нем) придумал - ROBERTA (Reasonable Object Base for Embedded Real Time Applications). На самом деле название я придумал давно, а вот расшифровку аббревиатуры - только что :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

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

А ROBERTA теперь расшифровывается как Real Object Basis for Embedded Real-Time Applications
Я тут за главного - если что шлите мыло на me собака shaos точка net