если брать проц побыстрее, вполне возможно, arm7 не для осцила.
с довольно приличным быстродействием
Речь идёт о том, что организован просмотр графиков с масштабированием (ближе/дальше) и прокрутка вправо/влево, и это происходит без раздражающих эффектов когда вы буквально видите как происходит последовательная прорисовка этого самого графика. Ведь с одной из широко распространённых библиотек, использованных моим коллегой так и было, что послужило причиной разработки собственной библиотеки
Есть, но все примеры я буду стараться давать так, чтобы они укладывались в некую логику развития идей. «Меню» связано не столько с графикой сколько с организацией сообществ автоматов, и оно будет рассмотрено где-то там (махнул рукой в неопределённом направлении)
Символы тип 2а ни что иное как битмапы любых размеров выводимые в окно любых размеров.
над выводом jpg я не задумывался в силу прагматических причин, отсутствия необходимости, но, думаю ситуация решаемая, а вообще, на основе этой схемы вывода данных удалось построить графическую библиотечку, и реализовать просмотр графиков с довольно приличным быстродействием.
Поскольку всё познаётся в сравнении, расскажу, что изначально мой коллега пробовал для своей задачи но той же схемы uC+дисплей одну из стандартных библиотек, и стало ясно, что обеспечить просмотр графиков с этой библиотекой просто нереально, потому что видно как прорисовывается изображение, «переливатся». Это может приемлемо если график выведен и всё, но если его нужно на ходу масштабировать, то мучение сплошное, иначе не скажешь.
предметный взгляд на задачу не только помогает при отладке, но и помогает найти решение там, где иначе потребовался бы если не полный перебор, то во всяком случае глубокая рекурсия. У меня есть впечатляющие примеры, и они запланированы в практикум.
Абсолютное преимущество в быстродействии. Дело в том, что GUI_DisplayString построены по тому же принципу что и вариант A2 рассмотернный в предыдущей статье. Однако если А2 уступал варианту А1 в скорости в 4-8 раз, то в случае GUI_DisplayString в силу более мелкопопиленного на «каждый-чих-функции» кода, речь может идти о гораздо большей разнице.
Кроме того, благодаря параметрам x_shift y_shift предложенный мной вариант обладает большим функционалом -бегущие строки. GUI_DisplayString имеет много разновидностей в том числе и функцию wrap text, которая позволяет вывести текст в окне так, что он из одной строки автоматически перенося слова распределится по всему окну. Это одна из функций с которой я собираюсь познакомить читателя, это одно из того самого обещанного расширения функционала о котором я написал в конце статьи. Так что продолжайте следить за циклом.
— И наконец самое главное, хочу акцентировать ваше внимание, что я представляю не просто модуль работы с графикой, это всего лишь иллюстрация к автоматному проектированию. Речь в цикле идёт об автоматном проектировании как таковом, иными словами процессу от анализа тз до получения эффективного решения и дам этому разные примеры, но в силу своей занятости, прошу читателей запастись терпением
Вообще — в результате получаются программные модули, и ваш вопрос эквивалентен вопросу «какое практическое применение программного модуля»? Отвечая на этот вопрос — Модуль «Дисплей» я использую в своих программах для микроконтроллера. Это системный уровень, и хорошая эффективность этого модуля позволяет мне делать пользовательский интерфейс исходя из потребностей, а не ограничений программно-аппаратной части. Помимо этого модуля, автоматное проектирование подходит для решения любых задач.
1 Моя профориентация произошла как раз в школьные годы, но школа в которой я учился не имела к этому отношения, это внешкольные занятия — хобби.
2 Я достаточно грамотно пишу, и не только потому что много читал, но и потому что готовился к поступлению в универ и в 11 классе «переучил» весь курс русского. И мне это было не сложно, потому что в 7-9 классах я получил как раз вполне систематические знания в этом предмете. Физика 9 класса, механика, вполне на уровне. В универе первый семестр я её пропустил (студенчество, что уж), но это не помешало сдать экзамен на 5. Конечно электричество в школе на уровне «просто чтобы знали что и это есть», но там и мат аппарат университетский, интегралы по замкнутой траектории и всё такое. Школа не даёт исчерпывающих знаний по «профильным» предметам будущего специалиста, но только потому что науки уже очень далеко ушли, а по непрофильным вполне хватает, чтобы «самообразовываться» если нужно получить дополнительные знания.
3. Первый язык — Бейсик для УКНЦ. Учил самостоятельно, с помощью товарищей. Писал спрайтовую игрушку — вертикально расположенный лабиринт с бегающими по лесницам и этажам персонажами. Я уже тогда, глядя на 10 массивов хотел чего-то типа структур, но не знал о них. С учётом этого выражу мнение, что лучше Си. С одной стороны можно не обращать внимание на байтовую структуру когда это ещё рано(начальный этап), но при этом позднее легко демонстрируется «как на самом деле работает программа». Дети они не глупые, они поймут. Наоборот, когда возникает иллюзия чего-то сверхъестественного (то есть, я тут пишу программу, а как она там работает… ну биты байты, процессор, а в остальном мистика), возникает неуверенность, либо наоборот, небрежение к тому, что ты накодил — работает да и ладно. Когда же начинаешь понимать всё до самых битов, понимать что там внутри ничего волшебного нет, а волшебник — ты сам, как наволшебнишь так оно и поедет, уверенней чувствуешь себя, не возникает ложных иллюзий относительно того, как оно там работает. А тем, кто не будет программером, вообще не обязательно учить языки программирования, им неплохо учить печатную машинку, и как вести себя в интернете чтобы тебя не надули, и хакеры не поломали твой комп — типа гигиены.
4. Важно уметь мыслить не предвзято и не попадать в собственные ментальные ловушки. Уметь изобразить задачу так, в том числе и визуально на бумаге, чтобы тебе самому было понятно. Не так, чтобы понравилось другому человеку, который может тебя покритиковать, а самому себе, тогда следующим шагом ты можешь изобразить так, чтобы стало понятно всем. Это непросто. Когда молод, есть робость перед чьим-то авторитетом, что парализует полёт мысли, и для этого нужна определённая твёрдость духа, чего у детей естественным образом нет, иначе они были бы чрезвычайно упрямы. Увереность и самоуверенность — разные вещи. Уверенность строится не на том, что ты отвергаешь любую критику, а на том, что ты сам можешь себя серьёзно критиковать и не комплексовать при этом. И если не научишься этому, так до старости и будешь ждать, пока тебе скажут что и как делать.
5 Пожалуй да, к ООП можно подвести в процессе обучения, так, чтобы ученик сам подошёл, хотя бы к постановке такой задачи, чтобы понял для чего это. Но важнее научить самостоятельно мыслить, хотя бы для начала на небольших участках процесса разработки.
6 Математика, точнее комбинаторика. Очень развивает логическое мышление и способность держать в голове несколько фактов. Математика развивает абстрактное мышление, способность видеть суть вещей, заглядывать за предметный фасад.
7 Пожалуй да. Это не так сложно, но в будущем сэкономит время
Неравномерность альбедо может быть вызвана не различным материалом поверхности, а различной пористостью, негладкостью поверхности из одного из того же материала в разных частях объекта, если не ошибаюсь — Геометрическое альбедо
Ну сама форма, изображённая на рис, это художественное изображение, объект может оказаться вытянутым, но далеко не таким ровным, и более, даже не столь вытянутым, сколько с неравномерным альбедо. Ведь гипотеза о вытянутости возникла на основании изменения кривой блеска
Кстати, раз уж зашла речь о генераторах кода по диаграмме, я буду благодарен если вы поделитесь со мной своим опытом по сгенереному коду, потому что я сталкивался со схемами реализации автоматов 1 и 3 из предыдущей статьи, и даже не знаю генерят ли какие-нибудь программы что-нибудь ещё
Я сам применял компиляторные оптимизации и к сгенерированному коду и к ручному и говно-коду и получал те же самые 15% во всех случаях, поэтому могу констатировать, что прирост производительности благодаря им мало зависит от исходного кода.
не соглашусь. В следующей статье я последовательно пишу исходник и делаю комиты по шагам. Там в первом, «лабораторном», неоптимальном варианте, оптимизация 10 кратная.
Это немножко не то, так как применимость данных оптимизаций ограничена исходным кодом, который им вскормлен. Оптимизации, же, которые делает генератор кода, работают на один уровень выше — на этапе генерации самого кода. Поэтому тут совсем другой уровень и результат.
генерил в IAR visualSTATE их простые примеры. По крайне мере там, ничего не говорит даже о приблизительной оптимальности по сравнению с ручным. Просто совершенно другой уровень. Я не делал там свой пример, но речь может идти о в десятки раз менее эффективном коде. Там сама схема реализации автомата такая, что можно не генеря давать прогнозы.
Читаемость кода как таковая не влияет на быстродействие — оптимизируется не исходный код, а программные структуры.
— Если вы читали внимательно, на рис 15 я показал насколько алгоритмы поддаются всему, что вы описали. коэффициент оптимизации получился 1.15, то есть, проделав все описанные вами пункты, оптимизатор смог улучшить результат всего на 15%.
— я embedder с большим стажем, и долгое время писал проги, и обязательно изучал во что они превращаются после компиляции. Я как супернейросетка выработал такое профессиональное чутьё, что можете положиться на моё слово — я могу построить по диаграмме состояний на самом деле высокоэффективный код, при этом вполне осознавая, какой исполняемый код получится. Это не хвастовство, я просто хочу сказать, что вы можете вполне доверять тому что я пишу
Рисуете Вашу блок-схему с переходами и состояниями так, как она должна работать.
тут вопрос в степени детализации блок-схемы и в том руководствуясь чем, собственно, вы будете её рисовать. автоматное программирование — не столько способ реализации, потому что, как я показал в этой статье — автоматная реализация — дело нехитрое, а вопрос проектирования и я это постараюсь показать в следующем цикле — практикуме
Ну и вообще мое ИМХО насчет эволюции разработки программных автоматов для встраиваемых систем — это графическое моделирование и автоматическая генерация кода.
если вам будет так удобней, то пожалуйста, автоматное программирование в моём представлении весьма демократично. В предыдущей статье есть глава «Артефакты автоматной схемотехники» и там показано, что бывает удобней просто написать функцию в «естесственном» программистком стиле, она останется автоматно реализованной.
Речь идёт о том, что организован просмотр графиков с масштабированием (ближе/дальше) и прокрутка вправо/влево, и это происходит без раздражающих эффектов когда вы буквально видите как происходит последовательная прорисовка этого самого графика. Ведь с одной из широко распространённых библиотек, использованных моим коллегой так и было, что послужило причиной разработки собственной библиотеки
над выводом jpg я не задумывался в силу прагматических причин, отсутствия необходимости, но, думаю ситуация решаемая, а вообще, на основе этой схемы вывода данных удалось построить графическую библиотечку, и реализовать просмотр графиков
Поскольку всё познаётся в сравнении, расскажу, что изначально мой коллега пробовал для своей задачи но той же схемы uC+дисплей одну из стандартных библиотек, и стало ясно, что обеспечить просмотр графиков с этой библиотекой просто нереально, потому что видно как прорисовывается изображение, «переливатся». Это может приемлемо если график выведен и всё, но если его нужно на ходу масштабировать, то мучение сплошное, иначе не скажешь.
Абсолютное преимущество в быстродействии. Дело в том, что GUI_DisplayString построены по тому же принципу что и вариант A2 рассмотернный в предыдущей статье. Однако если А2 уступал варианту А1 в скорости в 4-8 раз, то в случае GUI_DisplayString в силу более мелкопопиленного на «каждый-чих-функции» кода, речь может идти о гораздо большей разнице.
Кроме того, благодаря параметрам x_shift y_shift предложенный мной вариант обладает большим функционалом -бегущие строки. GUI_DisplayString имеет много разновидностей в том числе и функцию wrap text, которая позволяет вывести текст в окне так, что он из одной строки автоматически перенося слова распределится по всему окну. Это одна из функций с которой я собираюсь познакомить читателя, это одно из того самого обещанного расширения функционала о котором я написал в конце статьи. Так что продолжайте следить за циклом.
— И наконец самое главное, хочу акцентировать ваше внимание, что я представляю не просто модуль работы с графикой, это всего лишь иллюстрация к автоматному проектированию. Речь в цикле идёт об автоматном проектировании как таковом, иными словами процессу от анализа тз до получения эффективного решения и дам этому разные примеры, но в силу своей занятости, прошу читателей запастись терпением
2 Я достаточно грамотно пишу, и не только потому что много читал, но и потому что готовился к поступлению в универ и в 11 классе «переучил» весь курс русского. И мне это было не сложно, потому что в 7-9 классах я получил как раз вполне систематические знания в этом предмете. Физика 9 класса, механика, вполне на уровне. В универе первый семестр я её пропустил (студенчество, что уж), но это не помешало сдать экзамен на 5. Конечно электричество в школе на уровне «просто чтобы знали что и это есть», но там и мат аппарат университетский, интегралы по замкнутой траектории и всё такое. Школа не даёт исчерпывающих знаний по «профильным» предметам будущего специалиста, но только потому что науки уже очень далеко ушли, а по непрофильным вполне хватает, чтобы «самообразовываться» если нужно получить дополнительные знания.
3. Первый язык — Бейсик для УКНЦ. Учил самостоятельно, с помощью товарищей. Писал спрайтовую игрушку — вертикально расположенный лабиринт с бегающими по лесницам и этажам персонажами. Я уже тогда, глядя на 10 массивов хотел чего-то типа структур, но не знал о них. С учётом этого выражу мнение, что лучше Си. С одной стороны можно не обращать внимание на байтовую структуру когда это ещё рано(начальный этап), но при этом позднее легко демонстрируется «как на самом деле работает программа». Дети они не глупые, они поймут. Наоборот, когда возникает иллюзия чего-то сверхъестественного (то есть, я тут пишу программу, а как она там работает… ну биты байты, процессор, а в остальном мистика), возникает неуверенность, либо наоборот, небрежение к тому, что ты накодил — работает да и ладно. Когда же начинаешь понимать всё до самых битов, понимать что там внутри ничего волшебного нет, а волшебник — ты сам, как наволшебнишь так оно и поедет, уверенней чувствуешь себя, не возникает ложных иллюзий относительно того, как оно там работает. А тем, кто не будет программером, вообще не обязательно учить языки программирования, им неплохо учить печатную машинку, и как вести себя в интернете чтобы тебя не надули, и хакеры не поломали твой комп — типа гигиены.
4. Важно уметь мыслить не предвзято и не попадать в собственные ментальные ловушки. Уметь изобразить задачу так, в том числе и визуально на бумаге, чтобы тебе самому было понятно. Не так, чтобы понравилось другому человеку, который может тебя покритиковать, а самому себе, тогда следующим шагом ты можешь изобразить так, чтобы стало понятно всем. Это непросто. Когда молод, есть робость перед чьим-то авторитетом, что парализует полёт мысли, и для этого нужна определённая твёрдость духа, чего у детей естественным образом нет, иначе они были бы чрезвычайно упрямы. Увереность и самоуверенность — разные вещи. Уверенность строится не на том, что ты отвергаешь любую критику, а на том, что ты сам можешь себя серьёзно критиковать и не комплексовать при этом. И если не научишься этому, так до старости и будешь ждать, пока тебе скажут что и как делать.
5 Пожалуй да, к ООП можно подвести в процессе обучения, так, чтобы ученик сам подошёл, хотя бы к постановке такой задачи, чтобы понял для чего это. Но важнее научить самостоятельно мыслить, хотя бы для начала на небольших участках процесса разработки.
6 Математика, точнее комбинаторика. Очень развивает логическое мышление и способность держать в голове несколько фактов. Математика развивает абстрактное мышление, способность видеть суть вещей, заглядывать за предметный фасад.
7 Пожалуй да. Это не так сложно, но в будущем сэкономит время
не соглашусь. В следующей статье я последовательно пишу исходник и делаю комиты по шагам. Там в первом, «лабораторном», неоптимальном варианте, оптимизация 10 кратная.
генерил в IAR visualSTATE их простые примеры. По крайне мере там, ничего не говорит даже о приблизительной оптимальности по сравнению с ручным. Просто совершенно другой уровень. Я не делал там свой пример, но речь может идти о в десятки раз менее эффективном коде. Там сама схема реализации автомата такая, что можно не генеря давать прогнозы.
Читаемость кода как таковая не влияет на быстродействие — оптимизируется не исходный код, а программные структуры.
— Если вы читали внимательно, на рис 15 я показал насколько алгоритмы поддаются всему, что вы описали. коэффициент оптимизации получился 1.15, то есть, проделав все описанные вами пункты, оптимизатор смог улучшить результат всего на 15%.
— я embedder с большим стажем, и долгое время писал проги, и обязательно изучал во что они превращаются после компиляции. Я как супернейросетка выработал такое профессиональное чутьё, что можете положиться на моё слово — я могу построить по диаграмме состояний на самом деле высокоэффективный код, при этом вполне осознавая, какой исполняемый код получится. Это не хвастовство, я просто хочу сказать, что вы можете вполне доверять тому что я пишу
тут вопрос в степени детализации блок-схемы и в том руководствуясь чем, собственно, вы будете её рисовать. автоматное программирование — не столько способ реализации, потому что, как я показал в этой статье — автоматная реализация — дело нехитрое, а вопрос проектирования и я это постараюсь показать в следующем цикле — практикуме
если вам будет так удобней, то пожалуйста, автоматное программирование в моём представлении весьма демократично. В предыдущей статье есть глава «Артефакты автоматной схемотехники» и там показано, что бывает удобней просто написать функцию в «естесственном» программистком стиле, она останется автоматно реализованной.