МетаПрограммирование (в голове созрел ещё не ясный, но уже план)

Тема в разделе "WASM.PROJECTS", создана пользователем antifatum, 9 окт 2005.

  1. antifatum

    antifatum New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    32
    Адрес:
    Russia
    Не таясь скажу, что СуперМегаНавороченныйЯзык и СуперМегаКрутуюОСь я писать !НЕ! хочу.

    ...а вот чистые и лишенные всякого лукавства...

    итак:



    Номер Ноль: "Мета" в данном конкретном случае есть указание на обращенность внутрь.

    _Поясняю:

    пусть Программирование (как действие программиста) - процесс описания алгоритма с помощью формального языка,

    тогда МетаПрограммирование - процесс описания [того же самого и] формального языка.

    _Пример:

    mov eax,[num] -это программирование

    ............

    <буква> = 'а' или 'б' или ...

    <цифра> = '0' или ...

    <идентификатор> = <буква> или <идентификатор><буква> или <идентификатор><цифра>

    <мнемоника> = 'x''o''r' или ...

    <параметр> = <регистр> или ...

    это Метаописание синтаксиса с помощью метаязыка

    (ключевые слова для желающих ознакомится - теория формальных грамматик, БНФ - бэкуса-наура формы)



    Не ясный, но уже план:

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



    Фактически так работают компиляторы (но в них весь синтаксис и семантика зашиты) и интерпритаторы, наглядный пример системы - макроподстановщик фасма.



    пока я сдержу полёт мысли, что бы было чем отмахиваться.



    Номер Раз:

    Что есть главное в программировании?



    Номер Два:
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Пока ничего супер-гениального не увидел.

    Я считаю что в программировании все что теоретически возможно автоматизировать ДОЛЖНО быть автоматизировано. (smart pointers, codegeneration, etc)



    Поэтому ответ на вопрос







    Добиться того, чтобы программировать именно то, что не поддается автоматизации и не более того.
     
  3. antifatum

    antifatum New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    32
    Адрес:
    Russia
    быстрая реакция.



    насчет главного очень даже в точку!

    я бы так сказал - главное - программист.



    ладно подожу ещё денёк другой.
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    antifatum



    Я вот тут тоже в мучениях, кодогенерацию все мучаю :)
     
  5. rst

    rst New Member

    Публикаций:
    0
    Регистрация:
    5 май 2003
    Сообщения:
    165
    yacc?

    lex?

    bison?
     
  6. antifatum

    antifatum New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    32
    Адрес:
    Russia
    _DEN_

    А я то как раз не в мучениях))

    Я простой студент и мне вообще многое пофигу.

    В частности rst,

    мне глубоко пофигу компиляторы компиляторов.

    к тому же работающие лишь с контекстно свободными грамматиками. /давай, напиши на лексе дизассемблер/

    Чё все умные, ДА?

    или Мыслей нет?



    вот: понятным языком сказано:





    Хочу об этом подумать. Потому что дилетант.

    Дилетанты есть? ау!
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    antifatum







    Ну я например тоже студент :)







    Язык-то какой?
     
  8. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    antifatum

    > к тому же работающие лишь с контекстно свободными грамматиками. /давай, напиши на лексе дизассемблер/



    Смешались кони, люди... ;)



    Лекс - это генератор лексеров - распознавателей лексики, не КС-грамматики.



    Машинный код - это вобще автоматный (aka регулярный) язык. Он может распознаваться (и преобразовываться - дизассемблироваться) конечным автоматом.



    > или Мыслей нет?



    Мысль такая: давай ссылку на первосточник, после прочтения которого зародилась идея.



    > мне глубоко пофигу компиляторы компиляторов.



    Да? а это что такое:



    > Система ищет описанные синтаксические конструкции



    Что это ещё за система? Откуда она взялась?

    Не является ли она компилятором компиляторов?
     
  9. noonv

    noonv Member

    Публикаций:
    0
    Регистрация:
    19 июл 2005
    Сообщения:
    209
    Адрес:
    Russia
    какое-то отдалённое напоминание языка Форт (Forth)
     
  10. antifatum

    antifatum New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    32
    Адрес:
    Russia


    языка нет.





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









    да может и является, а может и нет.

    вот допустим создать подобную систему, чтоб сидела она в памяти и ловила сложнозаданные последовательности, а в ответ создавала процессы. я бы не назвал её компилятором компиляторов.



    Если говорить про впечатление от трансляторов, то

    http://softcraft.ru/translat.shtml



    Резюме:

    не надо искать какие-то аналогии. Мне интереснен вопрос использования "компиляторных" (условно говоря) технологий, в повседневном использовании программистом в качестве средства разработки - раз и в качестве составной части автоматизированных сред (ОСей всяких, не знаю уж что сказать) - два.
     
  11. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    antifatum

    > не надо искать какие-то аналогии



    Наоборот, всё украдено до нас.



    > Мне интереснен вопрос использования "компиляторных"

    > технологий, в повседневном использовании программистом



    Да, компиляторные технологии имеют весьма широкое применение (особенно если включить в их число теорию автоматов). Остаётся только изучать их.



    А какова цель метапрограммирования?
     
  12. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан




    Помнишь мультик "Крылья ноги и хвосты"? Там была замечательная фраза:

    - Лучше день потерять, зато потом за 5 минут долететь.



    Я думаю цель в том, чтобы потеряв один раз "день", все остальные разы "долетать" за "5 минут".
     
  13. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Это я понимаю. ;)



    Вопрос в том, на что "день потерять"?

    Что именно делать?
     
  14. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    captain cobalt



    На тулзы.
     
  15. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Ещё один бесполезный ответ.

    Какие тулзы? Что они должны делать?
     
  16. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Ну ладно. Будем брать быка за рога. ;)



    Обозначим

    L - язык программрования

    S - формальное описание синтаксиса и семантики языка L

    P - программа на языке L

    Х - аргументы (входные данные) программы P

    Y - результат вычислений программы P

    C - компилятор языка L в некоторый другой целевой язык



    То есть, Y=P(X)

    Упражнение 1.

    Написать универсальный интерпретатор - программу U, которая по формальному описанию языка, программе на этом языке, входным данным этой программы, вычисляет результат работы этой программы:



    U(S,P,X) = P(X) = Y



    Упражнение 2.

    Написать генератор компиляторов (compiler generator, сокращённо cogen) - программу, которая по формальному описанию языка создаёт компилятор для этого языка:



    cogen(S) = C
     
  17. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    captain cobalt



    Что-то ты не туда ушел.



    Я имею ввиду такие тулзы.



    Взяли фотошоп, разрисовали сущности и агрегацию данных. Проставили логические связи. Сгенерили из этого код. Открыли студию и дописали недостающие детали.



    Вместо того чтобы все с нуля писать.
     
  18. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Это не метапрограммирование.

    Это лишь компилятор фотошоп -> си++(или что там).
     
  19. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    captain cobalt



    А что ты называешь "метапрограммированием" ?
     
  20. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    метапрограммированием можно назвать процесс создания программистов.

    :)