Кстати, чем "блочное" программирование в HiASM - не компонентное программирование?
Каждый блок(кубик) - это отдельный файл с кодом - компонент.
Каждый такой компонент взаимодействует с другими отдельными компанентами по определенным правилам.
Компоненты можно писать самостоятельно, можно редактировать существующие т.е. опускаться на нужный уровень абстракции.
Паралелей можно найти множество между компонентным и графическим программированием.