Немного предыстории: автор гораздо больше аналитик, дизайнер и системный инженер, чем программист. Однако, несколько Интернет-магазинов когда-то "от корки до корки" сделал. А теперь замутил небольшой хобби-проект на Atmega. Ничего особенного, цветомузыка очередная. И вот, разбираясь с этой штукой, а также общаясь с коллегами, которые реально серьезные программеры, набрел на такую вот мысль...
В самом деле, периодически на форумах попадаются активные рассуждения о том, что компилятор C позволяет себе вытворять с типами данных. И как его вразумить, чтобы не пытался long как int трактовать, например. А еще многие, даже не новички, испытывают сложности с пониманием концепции указателей на ячейки памяти (хотя, вроде, все на поверхности...). Работа с прерываниями где-то за гранью. В общем, выглядит все так, будто проще уж на PHP этот контроллер программировать. А ведь это, на самом-то деле, не так уж и плохо было бы!
Конечно, прямо вот PHP как есть использовать не получится. Но некоторые из его концептуальных оснований очень даже подходят:
Возможность писать прямой процедурный код — то, что нужно для большинства простых проектов. Собственно, Arduino "взлетел" благодаря тому, что избавил любителей что-то мастерить от необходимости настраивать окружение, прыгать с загрузчиком и писать всю обвязку кода. Если надо, использовать функции никто не запрещает;
Вызов модулей на исполнение по запросу (в web - при переходе по URL) — это же работа с прерываниями в предельно прозрачной форме. Нужно только сделать удобный механизм конфигурирования;
Вызов переменной по имени, сохраненной в другой переменной — те же указатели, только в профиль. Хотя, конечно, возможность адресовать прямо нужную ячейку тоже нужна;
Переменные среды для связи с окружением — наглядный способ обратиться к периферии (если хочется — никто не запрещает адресовать регистр, см. выше);
Простое и наглядно подключение модулей — можно просто и наглядно линковать файл из кусков, а сами куски многократно переиспользовать. Без размышлений про библиотеки и зависимости (почти без :));
Прямолинейная работа с текстом — не совсем про встраиваемые системы, конечно, но текстовые дисплеи, клавиатурный ввод и все такое встречается часто;
Простой синтаксис, без закидонов.
Разумеется, что-то придется сильно перепридумывать:
Объявлять переменные в любой момент — это удобно, но прямой путь к переполнению памяти. Нужно вводить какие-то ограничения;
Интерпретируемый язык не подойдет для маленьких контроллеров, придется его компилировать. И при этом разбираться с размерностями переменных. Однако, для более мощных многоядерных платформ можно и интерпретатор оставить;
И еще наберется всякого, разумеется.
Как-то так :) Чем не идея для сурового российского open source? :)