Algorithm builder

джокерВ этом топике хочу рассказать о Алгоритм Буилдере (дальше по тексту АБ), плюсы, минусы пример программы.
Все ниже изложенное это мое мнение… надеюсь объективное.Споров вокруг АБ наверно не меньше, чем дискуссий о том какому микроконтроллеру отдать предпочтение AVR или PIC.
И так о бо всем по порядку…


Начнем с плюсов и минусов:
АБ кусок кода
Наглядность
+
Вытекает из главной концепции АБ, это графический макроассемблер, все структуры представлены в виде Графов.
-
Сильно отличается от классического ассемблера. Очень сильно.

Бесплатность
+
В 2010 году с АБ сняли ограничение размера генерируемого кода в 2048 байта, и теперь АБ полностью бесплатный.
-
В связи с тем, что программа была платной и в демо версии ограничивала объемом кода в 2К, то количество примеров ограничено (хотя никто не мешает взять программу написанную на ассемблере и перевести её в АБ).

Достаточность
+
Позволяет произвести полную разработку, отладку, программирование, отладку на кристалле не прибегая к другим программным продуктам.
-
Программа самодостаточная, нельзя добавить модуль стороннего разработчика, или импортировать кусок кода из АБ в другую программу например в AVR STUDIO.
Программу написанную АБ может прочитать только АБ.

Простота
+
АБ имеет простой интуитивно понятный мнемонический — графический набор инструкций.
Разделена область программирования и область резервирования ресурсов: память, регистры общего назначения, порты ввода/вывода.
ресурсы
В АБ включены большое количество встроенных макросов, плюс настройщики оборудования, кроме этого можно создавать собственные макросы.На рисунке видно как достаточно наглядно и легко можно написать шестнадцати битный счетчик.
-
Очень непривычно переходить после АБ на классический ассемблер
При использовании макросов встроенных в АБ нужно четко понимать что внутри них происходит, иначе можно прийти к неожиданным результатам, и трудно устранимым глюкам.

Отладка
+
Есть режим отладки, запуск с кристаллом (ограниченный, остановка в предустановленных точках).

Откомпилировав программу можно наведя курсор на любой кусок кода получить подсказку из каких инструкций она состоит, при программировании можно генерировать листинг.
В режиме симулятора можно подключать к ножкам виртуальный SPI, генератор, UART
-
на самом деле SPI, генератор, UART, это все, что можно подключить все остальное придется эмулировать вручную. или с помощью протеуса.

Переносимость
+
нет
-
непереносим, не совместим… сам в себе.

Субъективный
+
АБ мне просто нравиться
-
С этим трудно спорить, кому то просто не понравиться… тоже бывает :-)

подытожим АБ неплохой компилятор, стоящий того что бы обратить на себя внимание, но есть ряд причин почему он не рекомендуем для серьезных работ. Повторюсь все это моё личное мнение, вы можете и не соглашаться с ним.

Программу АБ можно скачать здесь

довесок
В архиве находится проект написанный на АБ, диспетчер из статьи мастера Ди
к задачам мигающим светодиодам добавлена задача заполняющая «табличку» случайными значениями, а после сортирует значение по «второму» полю. На железе не проверялась в симуляторе погонял.
Конструктивная критика приветствуется…
  • +3
  • 12 июля 2013, 20:54
  • BOBBY
  • 1
Файлы в топике: OS_DIHALT01.ZIP

Комментарии (41)

RSS свернуть / развернуть
Думаю, было бы полезно прямо в статье показать наглядное сравнение ассемблера и АБ на простом примере. Например, реализовать инициализацию таймера и помигать диодом из прерывания (на ассемблере и на АБ с комментариями).
+1
Вот тут все девайсы с исходниками на АБ GetChip
Достаточно своеобразная штука, но простая.
0
  • avatar
  • ZiB
  • 13 июля 2013, 07:18
ну Вы сударь и проснулись. AB уже можно сказать и не поддерживается( с 2010 не было свежих версий), став в последней версии фриварным.
0
став в последней версии фриварным.
для меня это главная новость. ибо желающих с контроллерами работать много, а программеров среди них мало. при этом требуется такой миимум сделать, что АБ хватит вполне.
+1
по крайней мере побаловавшись с АБ не будут мне выдавать на столько тупые платы xD
0
Кто, побаловавшись, не будет выдавать тупые платы?
0
те кто просят написать прошиву для какой нибудь платы (почему то уже готовой).
0
Согласен. болванка топика была написана в 2011 году… просто решил дописать раз начал…
0
не воспринимайте как критику. воспринимайте как маленькое дополнение к посту.
0
Если эту прогу разрабатывал и поддерживал один человек в частном порядке, то скорее всего такие программы нет имеют длительного будущего. Если есть мощная среда как AtmelStudio6, в которой можно сделать и простые проекты и сложные и которой занимаются десятки программистов, то наверняка потребность в AB рано или поздно отпадет. Одному человеку наверное трудно переплюнуть целую бригаду программистов. Даже если кто то из бригады выйдет, ему найдут замену.
0
Я знаю пример, где один человек переплюнул: SMath Studio vs Mathcad Prime. А дело всё в правильной архитектуре программы.
-1
На столько хорошо переплюнул, что программа (смашстудия) у меня запустилась ровно один раз. И больше не работает.
+1
Что можно сказать пользователю, который при первой неудаче всё бросает? Обратитесь на форум программы с пояснением того окружения, в котором пробовали, и той ошибкой, которая возникает.

Лично я и куча народа из разных стран уже давно не замечали падений программы. На английской части форума идёт постоянное её обсуждение и развитие. Вчера программа пополнилась дополнением для решения жестких ОДУ (спасибо мне).

Следите за ночными сборками последних версий на английской части форума. Тамошние форумчане более активны, чем наши отечественные.
-1
Существует неофициальная версия без инсталлятора: SMath Portable with Plugins 20130705.

Основные дополнения программы описаны тут: Registered Extensions.
-1
Обратитесь на форум программы
Оно мне надо, регаться непонятно где, непонятно ради чего?
Первого запуска мне хватило, что бы понять — не нуждаюсь. Ничем экстраординарным она не выделяется. Удобства использования тоже не наблюдается. Не, ну если привыкнуть, то должно быть удобно, но смысла привыкать нет (не говоря уже о том, что базовые принципы управления там отвергнуты).
Последующий отказ программы работать определил, что второго подхода «а может всё-таки надо?» не будет.
P.S.: А я не говорил, что она у меня падает. Она просто не запускается. В прочем мне пофигу, но можете позаимствовать для второго спасибо себе.
-1
Базовые чего чего? :) Эта программа не для вас однозначно, вы с ней не сошлись характерами. Она создавалась как альтернатива Mathcad во время его падения. Вот что пишут про SMath Studio активные пользователи Mathcad. Ваши стоны на этом фоне выглядят уныло. Заметьте, что в первом посте Ричард прямо указал на то, что SMath Studio развивается быстрее Prime и это удивительно, учитывая различия в ресурсах. Человек с первым местом в Mathcad сообществе и мне общаться было куда интереснее, т.к. он в теме «базовых принципов управления».

Отзыв о SMath Studio
-1
Разработка компанией тоже не означает длительный срок поддержки: не выгодно, сменили профиль, обанкротились и т.д.
+1
Ну по крайней мере это не произойдет внезапно.
0
Разработка компанией тоже не означает длительный срок поддержки
Возможно, но если говорить именно об Avrstudio то вроде как до 6 версии доросла за сколько лет существования? И вроде пока еще нет оснований думать об ее исчезновении. А если и сдохнет ну чтож что то другое появится.
+1
На самом деле AVR Studio померла на 4-й версии, а то, что есть сейчас, это дополнения к Visual Studio 2010. Atmel бросила разработку своего интерфейса и взяла уже готовое, оставив только движки для симуляции микроконтроллеров. Я уж не говорю про компиляторы C/C++, которых у неё и не было. Что в итоге? Интерфейс от MS, гнутые компиляторы и собственные Ассемблер и движки для симуляции и поддержки отладки. А если посмотреть на IAR, к примеру? Всё своё.

Очень не многие могут позволить делать свой собственный продукт целиком. Сейчас вообще трудно такой найти, если посмотреть в структуру дистриба многих современных программ, то там видно, что они собирались с мира по нитке. Mathcad тоже тянула одна компания, да не вытянула, продали его PTC, а он всё переделал почти с нуля. Для многих программ .Net стал рубежом — либо ты всё переписываешь под управляемый код, либо устареешь. Мне думается, что и AVR Studio попала под этот рубеж. Когда стало понятно, что нужно всё переписывать под .Net, то они просто взяли готовое, чтобы идти в ногу со временем.
+1
Когда стало понятно, что нужно всё переписывать под .Net...
Почему же это всё нужно переписывать под .Net?
+3
Потому что это удобно. Когда корпорация пишет стандарт и окружает его очень хорошим инструментарием, то в этот момент всё то, что было до этого устаревает. DOS долго держалась, но Win32API его победила окончательно и безповоротно. Win32API долго держался и ещё продержится не мало, но только для системных применений.

Разница становится понятной, когда от тебя требуют скорости в написании кода. Не каждый плагин сможет современный стандарт C++ распарсить для подсказок при написании кода, а стандарт вышел, его нужно поддерживать, а раз нужно поддерживать, то нужно среду разработки писать, а на чём её писать? На чём написаны современные среды разработки? Java и .Net.

На хабре была картинка, которая иллюстрировала этот процесс. Там кто-то собрал статистику со stackoverflow и github, а именно, количество вопросов по c#, java, c++ и пр. и количество проектов на разных языках. Насколько я помню, c#, java, c++ были в лидерах, но с разными количественными показателями. Что тут ещё можно сказать?
-2
Когда корпорация пишет стандарт...
Щас же переписать QNX, FreeRTOS, Solaris, AIX, HP-UX, OpenVMS, BSD, Linux и всё-всё-всё под .NET!
Голактеко опасносте!!!111
Сдаётся мне, вы забыли указать область определения понятий «всё», «стандарт», «переписать», «окончательно и безповоротно» и прочих громогласных.
Количество вопросов, кстати, говорит о чём? О сложности предмета или об его используемости?
+2
.Net — это платформа для написания приложения для ОС. Вот об этом и шла речь. Когда я писал о Win32API, то имел в виду API — интерфейс для написания приложений под Windows. Интерфейсы эти сменяют друг друга, когда-то вы писали на Turbo Vision, теперь у вас в распоряжении .Net Framework. Одно поколение программ отмирает, другое приходит к нему на смену. Как правило, это происходит при смене ОС.

stackoverflow и github не ограничены рамками типов проектов, если кто-то что-то спрашивает или кто-то залил проект на github, то это факт, причём можно численно указать величину этих фактов и это было практически реализовано. Задают вопросы и создают проекты программисты, это две одни из самых популярных площадок для их общения.

Если на stackoverflow нет вопросов по DOS, то это означает, что она сложна? Зачем мудрить и придумывать непонятно что? Количество вопросов говорит о количестве спрашивающих. Надо полагать, что они не от природного любопытства это делают? Может это гуманитарии собрались, зарегистрировались и давай спрашивать направо и налево?

«Стандарт» для отрасли IT означает очень очень много. MS пишет стандарты, а после их ввода, как правило, отпадают старые «поделки». .Net — это куча стандартов: MSIL, C#, CLR и так далее. Когда ввели XML, то отпали все доморощенные форматы данных. Сейчас всё в xml, а почему? Потому что это поддерживается на уровне стандарта и ОС. Когда появилась Java и стала набирать популярность, то MS ввела свой стандарт — C# и .Net — это та же Java, но «microsoft specific». Смысл был в том, чтобы ускорить разработку кода. Java и C# позволяют это сделать, с их помощью упрощается и ускоряется разработка приложений. Их простота, в отличие от C++, позволяет создавать более комфортные среды разработки и т.д.

В общем тенденция вполне логичная.

Я привёл пример статистики, которую можно найти на хабре, пройти к источнику и самому всё рассчитать. Прошу что-нить привести в ответ, пока я ищё тот пост.
-2
«Зачем так много слов, зачем так много треска?»
По моему скромному мнению, вам следовало бы чуть аккуратнее обращаться со «стандартами», «всё переписать», «потому что так удобно» и другими подобными громкими заявками. Хотя бы приблизительно очерчивайте их область применения.
+4
Так удобно, потому что вы скоро не купите компа с Windows 7, не говоря уже о XP. Это кратко. От этого и идёт всё остальное. ПО живёт на железе, меняется железо — меняется и всё, что на нём живёт. По рабоче-крестьянски пояснил.
-2
… вы скоро не купите компа с Windows 7, не говоря уже о...
Я не покупаю компьютеры с Windows 7, не говоря уж о том, что я не покупаю компьютеры с предустановленной ОС вообще, тем более, с Windows.
В связи с этим, я не понимаю, почему «потому что», от чего «от этого и идёт всё остальное». Тем более, никак не ясно, что удобно, кому удобно, почему удобно и т. п. Вам удобно? А я здесь при чём?
«По рабоче-крестьянски» сказать, так вам и в самом деле надо бы слезть с кафедры, вы не в соборе и не в университете.
+2
:) Бу!

А мне вот интересно, когда, к примеру, появилась возможность писать программы для встраиваемых систем на Java для ARM'ов и не мне одному, кстати: Java и микрокомпьютеры (Oracle® Java ME Embedded [pdf]).

А ведь народа, пишущего на Java полно, как начнут клепать ПО направо и налево, почему нет? По опыту могу сказать, что мне на Java писать приятней, чем на Си или C++. Кто-то уже, я помню, пытался приделать минимальный .Net для тех же целей, но пока не получилось, медленно.
-2
:) Бу!
Не стыдно такое с кафедры морозить?
А мне вот интересно, когда, к примеру, появилась возможность писать программы для встраиваемых систем на Java для ARM'ов и не мне одному
www.stm32java.com/portal/
0
Ого, уже на борту? Ничего себе, хочу. Как-то даже в сознании не укладывается, что мк с Java'ой. Я правильно понимаю, что Java-машина там уже встроена в сам мк? Что-то мало информации на эту связку из всего.
-2
Смотря что понимать под словосочетанием «на борту». В проц напрямую не зашито.

P.S. микроконтроллеры со встроенным интерпретатором байткода делать пытались, принципиально это возможно. сан эту тему потом забросил, но я не интересовался почему.
0
Я уж прям испугался… это тоже самое, что и у Oracle, только под другим названием. Получается, что есть две альтернативные Java Embedded платформы.

Платформа STM32Java
-1
Насколько я понимаю, технология платная?
Алсо, ЕМНИП у ARM у некоторых ядер (например, 9xxEJ, 11xxEJ) есть аппаратный ускоритель Java. Он применяется в МК и в этой SDK?
0
Нет. Тут все чисто софтово.
0
А почему тогда они отдельную серию МК с буквой J в конце для этого выпускают?
0
Кто-то уже, я помню, пытался приделать минимальный .Net для тех же целей, но пока не получилось, медленно.
О какой проекте Вы говорите? Какя-то альтернатива .Net Micro Framework от сторонних разработчиков?

Я запускал .Net Micro Framework на AT91SAM7X512 (ARM7TDMA @48MHz). Специально производительность не замерял, но не думаю, что она существенно ниже чем у JAVA на аналогичной чипе. Мое впечатление — побаловаться можно, но на 128 кб ОЗУ там очень тесно. Для сего-либо серьезного не подходит.
+1
О какой проекте Вы говорите?
Упс, извиняюсь, как всегда, у меня куча ошибок/опечаток. Я хотел спросить «О каком проекте Вы говорите?». Существует более легковесная реализация .Net  для МК чем официальный  Micro Framework?
0
Вот, кстати, в реальном времени можно посмотреть: stackoverflow.com/tags
-1
графический макроассемблер
… не вижу плюсов в изобретении нового языка. Подход Дракон'a мне как-то ближе.
0
Немного странно писать о программе и даже не дать на нее ссылку.
Ну и это такая странная штука, что не помешали бы иллюстрации того, как оно (и код в нем) выглядит.
0
  • avatar
  • Vga
  • 14 июля 2013, 18:06
Иллюстрации примеров кода есть с самой публикации статьи.
За ссылку не скажу, не обращал внимание.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.