апи получается кривое и логорейное, что-то типа CreateFileEx("filename.ext"; FILE_MODE_READ | FILE_MODE_WRITE, NULL, NULL, NULL, NULL, NO_WANT_SHARE).
все эти зарезервированные и неиспользуемые параметры функций только мешаются, от них рябит в глазах и их намного легче попутать чем в более нормальном АПИ.
в ембеддед, как и в обычном программировании, можно делать что угодно и как угодно, просто результат вылезет быстрее. эмбеддед - это не только 8-битки, но и полноценные 32-битные линупсы и даже банкоматы на писюках с винХР внутри и адом типа ИЕ для оболочки.
крестики надо уметь готовить. Если задача чуток громоздковата для ассемблера, то иногда, оптимально взять именно крестики. Точнее, общее подмножество С и С++.
В той же ардуине, например, неплохо задумано (но безобразно имплементировано) аккуратное обвязывание мелких сущностей в аккуратные классы.
Что такое WinAPI, к сожалению, я в курсе. Ну так в этом случае, делаются слова с небольшим числом параметров, для наиболее частых применений. Какие-то из слов могут включать параметр уже в названии, например. Правда, признаюсь, что с написанием приложений на форте под win я только игрался, да и было это 10 лет назад.
Помнится, когда я летом бы на школе-конференции по алгебраической геометрии, у меня была очень короткая "причёска". Так и не сделали, но была мысль картинки-фотографии в жанре демотиватора с подписью "Моноидальные замкнутые категории есть? А если найду?" Некоторая ирония тут в том, что почти где угодно в программировании их можно найти.
Это неправда. Во-первых, для _кодогенерации_ не нужно глубогокого описания семантики. Во-вторых, описание некоторого подмножества сишечки не так и сложно. Я сам лично пробовал таким вот образом низкоуровневого программировать, и получалось куда прикольнее C++. Тогда я активно работал с C++ и ещё мог оценить... Получаются относительно нормальные макросы, взамен всяких там <>. И уже дальше, при желании, если задача большая и сложная, то моожет быть, и стоит моделировать глубже. Вот там уже и возникнут, вероятно, и пачки монадных и даже стрелочных трансформеров. Но и без этого, получается ничуть не хуже C++. Типаа, в C++ это всё так замечательно типизровано, что ли??... Это у меня было, приблизительно, в эпоху, когда только-только в GHC сделали инфиксную запись типов и вот уже включали в новый GHC. Помню потому, что помню, как радовался ;-)
некоторые фанаты буста (не буду показывать пальцем, но это авторы Опенскад) генерируют в памяти дикого размера xml (размер до 2 гб, время генерации до получаса) потом скармливают его библиотеке и библиотека считает срез примерно за время до 10 минут.
Сгенерить код "шоб работало" сравнительно несложно. А вот видеокодек так писать, придется массу подробностей указывать - тут выравнивание, тут интринсик, тут столько битов в арифметике, тут столько, тут на стеке массивчик, тут еще что. Сокращения кода не ожидается, только синтаксис многословнее.
Если говорить про написание на чистом си, ну или подмножестве, которое эмулируем — да, даже близкого по объёму кода добиться сложно. А если говорить про C++, о чём и начали разговор, то все его возможные мета-хрени будут выглядеть куда проще. И дело вовсе не в выравнивании и битах в арифметике.
Ну вот, сэкономим на метахрени, проиграем на основной массе кода. Речь про генерацию зашла в контексте видеокодеков, там метахрени мало, а банальной арифметики много.
Page 6 of 7