- Originally in SU.FORTH
бродят смутные мысли по поводу сабжа -- никак не могу сформулировать
ну скажем нужно мне сделать электронные часы с будильником на несколько меток времени, часть с дерганьем ногой на исполнительное устройство (например молча включать электрочайник за 5 минут до побудки и выключать при закипании)
естественно эта задачка ведет напрямую к использованию простого микроконтроллера, скажем AVR (насколько я помню, они могут вообще без обвязки работать, кроме кондерчика с питания на ногу сброса ?)
и вот как раз на этапе проектирования схемы и прошивки для контроллера собственно и начинается моделирование системы в голове и реализация этой модели обычными средствами (САПР, пакеты разработки ПО, симуляторы, компиляторы/ассемблеры и т.п.
и вот смутно бродит мысль, а нельзя ли этот цикл реализовать с помощью метапрограммирования (см. статью Луговского по метапрограммированию на LISP), но на Форте
в самом простейшем случае написания прошивки описать модель процессора (язык модели), потом написать ассемблеро-подобный язык (язык программного обеспечения) на языке модели, потом возможно сделать вариант языка сверхвысокого уровня, описывающего то что мне нужно (проблемно-ориентированный язык), отладить систему, а потом подменив языки ассемблера реализованный через язык модели другим вариантом реализации, включающий кодогенератор (а в идеале еще и оптимизатор), получить прошивку, которую средствами того же Форта загнать напрямую через кабель в чип
не наталкивался ли кто-нибудь на заумные статьи по сабжу, работе сознания человека (мы же моделируем в голове, когда пишем программу и прикидываем варианты железа ?) и т.п. ? в гугле как-то даже не знаю, что искать. припонимаю читал перевод Programmer's Stone, а больше ничего подобного пока не попадалось
ну и хотелось бы обсудить:
- метапрограммирование в embedded
- мета...ие на Форте (тут конечно нужна привычка к его синтаксису 8-)
- как моделировать паралельные и асинхронные системы на языках, не поддерживающих параллельность
зачем это нужно ? меня очень смущает то, что большАя часть разработки ведется визуальными средствами, которые в принципе дают только ту функциональность, которая предусмотрена разработчиком среды
а вот языковые средства как раз не ограничены (при условии полноты языка -- были какие-то теоремы, связанные с машиной Тьюринга), и хотелось бы попробовать использовать как раз их (визуальщина естественно легко прикручивается поверх)
кстати, в коммерческом софте языковые средства как раз неприменимы примерно по той же причине, что и в сравнении коммерческий софт vs open source и соответственно решения на их основе -- собственно поставщики САПР как раз на том и живут, что добавляют функциональность и оптимизируют то что уже есть (например заменой алгоритмов) в новые версии, не давая конченным пользователям при желании залезть внутрь системы и напрограммировать что-то под собственные нужды
вот такой вот написался поток сознания -- еще раз извините, не могу никак сформулировать это все более четко
хотелось бы развязать болтологию в эхе в рамках эхотага, что-то типа "методология проектирования с использованием языковых средств, моделирования и метапрограммирования (создания проблемно-ориентированных языковых средств, Domain Specific Languages)"