14. Ограничения, ограничения
Rasberry Pi, Arduino: любительская
микроэлектроника
Простые, надежные, ограниченные по памяти
(десятки Кб)
Способность загрузить Linux — исключение, а
не правило
15. Требования
Проще контроллер — меньше стоимость
Меньше требования к другим частям — опять
же, меньше стоимость
Энергопотребление: беспроводные датчики
должны работать годами
Кастомизация контроллеров под задачи
16. Существующие решения
Си. Иногда — ассемблер.
Разработка: долго и дорого. Тесты очень
важны, но тестировать сложно.
Попытки:
mruby, espruino, uJ, megapython, pymite, ...
Отдельно про mruby.
17. Что не так с альтернативой
Виртуальная машина
Нет низкоуровневых операций
Разработчику все равно нужно знать
внутренности VM, Си и ассемблер.
Большая часть не работает в реальном
времени.
19. Си: 1973
Маленький, простой в реализации
компилятор
Легко портировать на другие платформы
Нет: замыканий, метапрограммирования,
ООП, GC, модулей, стандартных способов
сборки и тестирования...
20. Си: 2013
GCC 4.8: 2000 KLOC (C/C++) / 7300 KLOC
LLVM+Clang 3.3: 780 KLOC
Портирование: новый бекенд для
существующего компилятора
Всё еще нет: замыканий,
метапрограммирования, ООП, GC, модулей,
стандартных способов сборки и
тестирования...
21. Код для встраиваемых устройств
Низкоуровневая часть: RTOS, настройка
периферии, ввод-вывод
Высокоуровневая часть: логика работы
устройства
Эффективная оптимизация: вся программа
целиком
23. Foundry
Статически компилируемый диалект языка Ruby
Область применения — системное
программирование, встраиваемые устройства
Компилируется в машинный код
Можно использовать большинство
высокоуровневых конструкций Ruby
Не нужно писать на Си или ассемблере
29. Embedded-разработка с Foundry
Язык и компилятор не ограничивают
программиста, а помогают ему
Стандартная библиотека Foundry написана
полностью на Foundry
Покрывает стандартные задачи: работа со
строками, fixed point вычисления, TCP/IP, ...
30. Embedded-разработка с Foundry
Тестирование, тестирование, тестирование
Foundry может выполнять код на хосте,
симулируя семантику цели
Метапрограммирование упрощает замену
периферии на mock-объекты
31. Embedded-разработка с Foundry
Абстракции полезны, если упрощают и
ускоряют разрабоку
Foundry позволяет, но не требует
использование абстракций
Можно: работать напрямую с периферией,
использовать ручное управление памятью,
делать ассемблерные вставки, ...
32. Foundry как продукт
Коммерческий компилятор с open source
частями
Кроссплатформенный, работает на
JRuby+FFI+LLVM
Первый релиз — лето 2013
http://foundry-lang.org/