Re: Метатехнологии. Что есть? Что возможно?
От: tchingiz http://i.com.ua/~agp1/ru/
Дата: 02.03.07 18:09
Оценка:
Здравствуйте, limax, Вы писали:

L>==============8<===========================

L>Цель: построить мета-язык описания любых процессов (в частности программирования, ввода-вывода), более сложные функции которого выражаются ТОЛЬКО через набор базовых.
L>В UML такое отсутствует: сложные конструкции обрабатываются частным образом, а не с помощью базовых, отсюда — слишком много первоначальных определений (в машинном языке). К тому же чётко фиксированы мета-уровни: объект может быть экземпляром класса только соседнего уровня (3M->2M, 2M->Model, Model->Object).

вот описание процесса работы на компьютере
//RAISE SPECIFICATION LANGUAGE


-- compile
 /*
                 круговорот бит в природе
                       /---------\
    />---------------->|keyboard |>------------------>\
    |                  |         |                    |
    |>---------------->|mouse    |>------------------>|
    |                  |         |                    |
    |>---------------->|screen   |>------------------>|
    |                  \---------/                    |
    \--< USER <-\                     /---< SYSTEM <--/-\
                |      /---------\    |                 |
         brain  |<----<|screen   |<--<|>----> DB >------/
                |      |         |    |
                \<----<|printer  |<--</
                       \---------/
*/

scheme WORD = class   --  вначале было слово
type 
    Input, Output, DataBase  --, Memory
channel 
    keyboard, mouse, screenI: Input,
                     -- special kind of screen like screen of palmPilot
    printer, screenO : Output
variable
    db : DataBase
    -- brain : Memory = для симметричности картинки userу 
    --     можно приписать мозги. Но часто их нет. Будем рассчитвывть на
    --     худший случай
value
    USER: Unit -> in printer, screenO out keyboard, mouse, screenI Unit,
    SYSTEM : Unit -> in keyboard, mouse, screenI out printer, screenO Unit,
    userWork : Output -> Input,
    systemWork : Input -> write db Output
axiom 
    USER() is                    -- пусть v -результат чтения пользователем екрана компьютера
        let v = screenO? in (    -- screen0? - ввод с екрана в мозги пользователя
            keyboard! userWork(v)   |^|  -- вывод рез.работы на клавиатуру
                             -- |^| операция внутреннего выбора
                             --     пользователь сам выбирает чем двигать
                             --     мышкой или клавой или экраном
            mouse!    userWork(v)   |^|  -- или кликнул мышкой
            screenI!  userWork(v)       --  или тыцнул в экран
        )
        end                                  |=|  -- операция внешнего выбора
        let v = printer? in (                     -- копьютер заставляет пользователя
            keyboard! userWork(v)   |^|            -- читать, то куда он вывел
            mouse!    userWork(v)   |^|
            screenI!  userWork(v)
        )
        end
        ; USER()
        ,
    SYSTEM() is
        let v = keyboard? in (   --  пусть v - результат опроса копьютером клавы
            screenO! systemWork(v)  |^|   --  результаты своей работы
            printer! systemWork(v)        --  вывел на экран или принтер
        )
        end                                  |=| -- тут пользователь заставляет
                                                 --  компьютер читать его команды
        let v = mouse? in (
            screenO! systemWork(v)  |^|
            printer! systemWork(v)   
        ) 
        end                                  |=|
        let v = screenI? in (
            screenO! systemWork(v)  |^|
            printer! systemWork(v)   
        )
        end
        ; SYSTEM() 

end
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.