Здравствуйте, Алексей П, Вы писали:
A>>Forth смотрел? Именно для микроконтроллеров — имеет смысл в некоторых A>>приложениях (переносимость в т.ч.). АП>Посмотрел, раз уж все советуют. На первый взгляд — ужас и еще более ассемблер чем Си. АП>Программу должно быть легко не только писать, но и читать! Это я к декларативному стилю веду.
а на второй? там интерпретатор под твоим контролем.
какой захочешь синтаксис, такой и будет.
Здравствуйте, Алексей П, Вы писали:
АП>Здравствуйте, FDSC, Вы писали:
FDS>>Лично по мне: хороший ГРАФИЧЕСКИЙ язык программирования с ориентацией на ФЯ. АП>Графический? Это как?
А вы никогда в Simulink (MatLab) или OpenView не работали. SFC вы то же не видели?
Здравствуйте, Алексей П, Вы писали:
АП>Здравствуйте, azzx, Вы писали:
A>>Forth смотрел? Именно для микроконтроллеров — имеет смысл в некоторых A>>приложениях (переносимость в т.ч.). АП>Посмотрел, раз уж все советуют. На первый взгляд — ужас и еще более ассемблер чем Си.
Базовый форт да очень даже ассемблер Только есть существенное отличие от си, язык легко расширяем до уровня декларативных DSL.
АП>Программу должно быть легко не только писать, но и читать! Это я к декларативному стилю веду.
Куда уж декларативней (не в смысле функционального программирования, а в смысле построения DSL). Метапрограммрование там на очень высоком уровне просто как и в лиспе "нестандартный" синтаксис и своя философия. Чтобы понять годится ли для тебя эта философия или нет советую прочитать Leo Brodie "Thinking FORTH" (A Language and Philosophy for Solving Problems).(в переводе "СПОСОБ МЫШЛЕНИЯ — ФОРТ")
Здравствуйте, Алексей П, Вы писали:
АП>Здравствуйте, azzx, Вы писали:
A>>Forth смотрел? Именно для микроконтроллеров — имеет смысл в некоторых A>>приложениях (переносимость в т.ч.). АП>Посмотрел, раз уж все советуют. На первый взгляд — ужас и еще более ассемблер чем Си. АП>Программу должно быть легко не только писать, но и читать! Это я к декларативному стилю веду.
Дка — основная трабла — синтаксис. Точнее, отсутствие оного. %)
В результате — от программиста требуется мозги и скамодисциплина.
Но именно для микроконтроллеров — вполне, имхо, подходящая цена, т.к. тут обычно
вопроса о быстрой заменяемости программиста не стоит. А вот возможности поддерживать одну
версию исходного кода для нескольких (даже разных производителей) микроконтроллеров — это то,
что некоторым очень нужно. Как-то довелось читать статью (к сожалению, ссылку не нашёл),
с описанием процессора одной фирмы (Канада, кажется) где Forth использовался для "внутреннего"
программирования трёъядерного сикроконтроллера, а "наружу" выставляется только C-компилятор.
Типа для не очень умных. Ну а Forth они ркассматривают как "конкурентное преимущество".
Здравствуйте, Алексей П, Вы писали:
АП>Как вы считаете, каким должен быть сабж? АП>Си не предлагать
А ЕС++? (Embedded C++)
Отличия от "обычного" С++:
— не поддерживается dynamic_cast и прочие type_info
— отсутствует множественное наследование
— не поддерживаются исключения
Если же стоит задача разработать свой язык, то надо понять, почему из EC++ убрали перечисленное. Да и вообще, программирование для микроконтроллеров требует немного других повадок, например:
— не должно быть привычки использовать метаинформацию в рантайме (ибо софт микроконтроллера имеет абсолютную статичность);
— уметь писать надежный код, не прибегая к технологии исключений;
— уметь кодировать состояния программы минималистическим способом (особый взгляд на использование ООП).
Fort действительно неплох для этих вещей, но нужен специфический кросс-Форт, который кладет определяющие и обычные слова в разные места. Затем при генерации бинарника надо освобождать образ от ненужных словарей.
Если ты рассматриваешь Nemerle, то тоже должен понимать специфику. Т.е. надо как-то отдельно обрабатывать код, который нужен самому компилятору, и отдельно — тот который нужен конечной программе.
Кстати, возможностей EC++ вполне хватает, чтобы программировать, например, ДКА в приятном ДКА-ориентированном синтаксисе.
Здравствуйте, vdimas, Вы писали:
V>А ЕС++? (Embedded C++)
V>Отличия от "обычного" С++: V>- не поддерживается dynamic_cast и прочие type_info V>- отсутствует множественное наследование V>- не поддерживаются исключения
В Си и тем более ++ мне больше всего не нравится идея метапрограммирования средствами препроцессора.
Пока вырисовывается такая идея системы (язык + компилер):
— Базовый синтаксис минимален, возможно даже без классов: они требуют встраивать в систему memory manager. Очень хотелось бы сделать поддержку списков, но для них крайне желательно еще и сборщик мусора, а это уж совсем не для контроллеров.
— Примитивы: скаляр (байт/слово/дв.слово?), кортеж, массив, указатель конечно, структура, любые комбинации вышеперечисленного с нормальным синтаксисом декларации типов; указатель на функцию
— Компилер пишу на Немерле, метапрограммирование через расширения в виде dll к компилятору, т.е. писать их надо на Немерле.
— Хранить скомпилированные модули в виде typed tree со всеми развернутыми макросами — типа, точно не содержит ошибок компиляции, но возможно доопределение, например generics
V>Если же стоит задача разработать свой язык, то надо понять, почему из EC++ убрали перечисленное. Да и вообще, программирование для микроконтроллеров требует немного других повадок, например: V>- не должно быть привычки использовать метаинформацию в рантайме (ибо софт микроконтроллера имеет абсолютную статичность); V>- уметь писать надежный код, не прибегая к технологии исключений; V>- уметь кодировать состояния программы минималистическим способом (особый взгляд на использование ООП).
Метапрограммирование я имел в виду статическое. А вот с исключениями да, проблемно... но может можно как-то их сделать? Продумаю.
Здравствуйте, vdimas, Вы писали:
V>Слушай, коллега. О каком Немерле речь? ФП-язык для контроллеров не подходит, ибо требует сборки мусора.
А я так и сказал, что сборщик мусора не катит...
V>В общем, согласен, что было бы неплохо что-то типа Nemerle с его макросами, но без ФЯ-фич.
Оно и выходит. На Немерле я пишу компилер, и видимо расширения к нему.
Здравствуйте, Алексей П, Вы писали:
АП>Как вы считаете, каким должен быть сабж? АП>Си не предлагать
Для микроконтроллёров с ограниченным набором ресурсов и фон-Неймановской архитектурой вычислений подходящ императивный язык со стэковой семантикой операций.