zma писал(а):
Интересно, какие задачи действительно решаются с помощью Форта (кроме очевидного управления оборудованием). Такой список и позволил бы взглянуть в общем на применимость языка и служил бы своеобразным мотиватором для выбора его для новых проектов.
Я могу скорее для последующего уточнения написать, потому что довольно много всего. И по группам придется.
1. PC
Математическое моделирование (можно обозначить как "замена Matlab"). Было много программ по исследованию алгоритмов цифровой обработки сигналов и несколько сеточных задач - по расчету тепловых полей и акустических волн. Везде было сочетание ассемблерных вставок, управляемых Фортом, большого объема памяти и интерактивного управления.
САПР - комбинация моделирования на Форте и подготовки скриптов для сборки проекта в ПЛИС.
Не вполне чистый PC - управление внешним оборудованием с обработкой на PC. Что-то подключалось к внешним интерфейсам, данные забирались в компьютер, в самом показательном случае пользователь получил язык на основе Форта для описания обработки данных.
Тоже на стыке PC и embedded - кросс-компиляторы для МК и форт-процессоров. МК в какой-то момент массово пошли с бесплатными компиляторами Си, но пока этого не было, можно было достаточно быстро запустить проект на чем-то, удобнее ассемблера.
2. Embedded - МК.
В основном на уровне "нет компилятора" или "требуется интерактивная работа".
3. Embedded - FPGA
Тут самое интересное - форт-процессор. Для него на PC, конечно же, кросс-компилятор, но сам по себе форт-процессор имеет довольно много преимуществ. Во-первых, он тесно интегрирован с системной шиной и работает с периферией в целом быстрее, чем типичные 32-разрядные софт-процессоры. Во-вторых, в форт-процессор проще добавить расширения системы команд. Наконец, самое главное - более плотный программный код из-за 0-операндных команд (основной процессор сейчас с 6-битной командой). В итоге оказывалось, что с форт-процессором во многих случаях удается уложиться во внутреннюю память FPGA и не подключать полный комплект внешних микросхем в виде flash + DDR.