[an error occurred while processing this directive]
|
1. "ограниченные возможности существующих средств разработки" - обычно это от недостатка времени и желания внимательно изучать документацию на применяемые cpu/mcu/ide.
2. выразить все ассемблерные команды на с, рascal и т.д. (с шарпом или без) конечно можно, на то они и языки высокого уровня, но теряется смысл и целостность(sic!) исходной концепции языка высокого уровня.
Поясню:
а. программер пишет WaitForSingleObject, эмбеддер пишет прерывание;
б. программер пишет delay, эмбеддер юзает таймер или пишет цикл, ну или "nop;nop;nop" - на худой конец.
Разница сохранится до тех пор, пока не появится эффективный непротиворечивый транслятор аппаратных ресурсов применяемого cpu/mcu + индивидуальной периферии разработчика в какую-то общую для всех разработок(sic!) модель, понимаемую компилятором. При этом модель, по всей видимости, должна заниматься разделением ресурсов зависимости от использования их компилятором(см. п.2.б. - кто решит юзать таймер или цикл в конкретном месте программы?). Попробуйте представить программирование на языке высокого уровня хотя бы для сотни разных типов/архитектур компов. Противно, да? Именно конечному разработчику придется добивать в модель свою периферию, исправлять чужие ошибки
и добавлять свои.. В общем получается неоправданное размножение возможных ошибок, да и квалификация разработчика потребуется более высокая.
Вывод: пришли к обратному - хотели заменить эмбеддера программером, а получили, что ни тот, ни другой не смогут без дополнительной подготовки выполнять прежнюю работу. Какой там нафиг бизнес, чистое искусство осталось :)
Поэтому появляются и будут появляться подобные концепции, представляющие по сути не языки высокого уровня,
а макро-языки - т.е. эмуляторы ассемблера на c,java,pascal и т.д. Определенный смысл в этом, конечно есть - человеку, уже писавшему на языке высокого уровня становится легче переключится на эмбеддерство.
3. этим грешат почти все опенсорсные модели языков высокого уровня - не надо смешивать объектный и процедурный типы в пределах одного контекста: myfile[mybit] и myfile.test (правильнее было бы myfile.bits[mybit])
4. разбираться в художественных изысках английского нет желания, зато есть предложение постить в конфу на японском =)