Вадим Поспелов Профессионал

HiAsm – мольберт для программиста?

В далекие-далекие годы моего детства жили-были люди, которых считали волшебниками. Эти люди умели говорить с машинами — огромными, как дом, компьютерами. Их речь была абсолютно не понятна окружающим и, как справедливо полагают, даже им самим. Их древний язык, записанный на картонные таблички, очень смахивал на древнюю клинопись.

Gajus Shutterstock.com

Долго ли, коротко ли это продолжалось, но пришли им на смену маги — особая раса, говорящая на языке Ассемблер. Свои разговоры с машинами писали они на дли-и-инные папирусы и называли непонятным словом «листинги». Речь сия была понятна обычным людям не больше, чем арабские письмена европейцам.

Компьютеры становились меньше, их становилось всё больше, и всё больше людей хотели говорить с умными машинами. Поднатужились маги, подсуетились волшебники и дали человечеству особый язык. Скажешь заветное слово — и машина выполнит, что ты хочешь. А прикрикнешь на нее: «FOR 1 TO 100000» — и станет она трудиться уже без остановки. Людей же, допущенных писать волшебные свитки, стали называть программистами.

Но случилось непредвиденное и наступил день компьютерного Вавилона. И заговорили программисты на разных языках. И произошли отсюда народы компьютерные: паскалисты, сишники, бесиковцы, фортранисты, лиспсовики и прочие. Всплеснули руками маги-волшебники, но было уже поздно. Воцарился хаос.

И восстал программист на программиста, и пошел войной хакер на хакера. Начались крестовые походы паскалистов-крестоносцев против неверных иноязычников. И бились свободолюбивые пингвины с Биловскими ордами сарацинскими. И лились строчки кода программного, как полноводные реки. И вирусы наводнили программные коды.

Жены программистов рыдали в холодных опустевших постелях. Они с надеждой смотрели по ночам в черные окна, но мужья-подпольщики не возвращались с компьютерных фронтов. Скоро сказка сказывается, да не скоро дело делается. Время шло. Дети не знали своих отцов, не учили родных языков и придумывали новые…

Языки крепчали в битвах. Паскалисты стали дельфийцами, сишники — сипэпэшниками… Возникли новые компьютерные наречия: ява, перл, аштиэмел, фокс, эскуель, аксесс… И языки все стали визуальными. Это значит, что рисуешь кнопочку, а потом пишешь, что она должна делать. Многим красота сия по вкусу пришлась, но некоторым — не понравилась. «Мастдайщики! — кричали они. — Эникейщики! Вам лучше вязанием идти заниматься, а не программированием». Но, как говорится, плоха та кухарка, что не хочет управлять государством, и плох тот ламер, который не хочет стать программистом. Однако несмотря на большие упрощения, всё равно сложным оставался процесс написания программ… Вот именно, написания. А так хотелось бы ее просто рисовать, как блок-схему.

И вот свершилось! 10 лет назад появился язык программирования, который позволяет нарисовать программу мышкой. Называется он HiAsm. Вы не верите, что программу можно нарисовать? Ну и напрасно. Теперь любая кухарка, набросав нечто, очень похожее на блок-схему, и нажав на кнопку «скомпилировать», может получить работающую программу. Конечно, кухарки никогда не превзойдут профессиональных программистов по части изощренности кода. Но ведь не всегда для написания программы обязательно знать о существовании ООП. В конце концов, тот, кто считает себя слишком крутым, может пропустить эту статью. А мы запасемся медом-пивом, пригладим усы, чтоб по ним не текло, и возрадуемся новому шагу в технологии программирования. Закончилось время слушания сказок, наступает пора творчества.

HiAsm является полностью визуальным редактором. В процессе создания программы, не пишется ни строчки полноценного кода (хотя можно в специальные блоки вставить любой ранее написанный код, практически на любом известном языке программирования). Элементы программы переносятся поле редактирования путем выбора элемента на панели элементов с последующим щелчком на рабочем столе программы.

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

Простейшая программа выглядит так: при нажатии на кнопку [1] строку текста «Здравствуй, мир!» [2] вывести в текстовую надпись [3]. В квадратных скобках указаны номера соответствующих элементов на блок-схеме. (Рис. 1)

Причем данная программа выглядит совершенно одинаково для модуля обычной программы, приложения для мобильного телефона или сайта. Соответственно, можно создать обычную Windows программу (не хуже, чем в Delfi), приложение для мобильного или сайт (интернет-магазин делается на «Ура!»).

***
Давным-давно, когда в ходу были еще ZX-Spectrum'ы, загружаемые с кассетных магнитофонов, была для них написана на BASIC’е игра «Букмекер». Это был достаточно простой симулятор тотализатора на лошадиных скачках. Несмотря на простоту, она доставила мне и моим друзьям немало интересных минут. Мы играли на «фантики» по безобразно простым правилам:

• делаются ставки на лошадей и дается старт забега;
• ставки, сделанные на лошадь, пришедшую второй, возвращаются обратно;
• остаток делится между победителями пропорционально их ставок.

Недавно встретились мы с друзьями старой компанией и решили вспомнить прежние забавы. Ан не тут-то было! Сгнили Spectrum’ы в чуланах, потерлись аудиокассеты с программами. Поискали мы в И-нете… Нет аналогов. Только рулетки и однорукие бандиты. В общем, так в тот день мы ни во что и не поиграли.

А мысль у меня засела, чтобы игрушку эту к жизни возродить. Так и появилась игра «Старые клячи». (Рис. 2.) Алгоритм ее заключается в том, что спрайты двигаются по полю на случайное число пикселей и вычисляется, какой из них достиг противоположного конца быстрее. Реализовано это в HiAsm’е, т.к. такие простые алгоритмы на нем реализовывать достаточно легко. На первый вариант «Обычное приложение для Windows» времени ушло менее часа. На создание JavaScript-варианта для вставки на сайт этой же игры у меня ушло около 20 минут. При условии, что это была моя первая полноценная программа на JavaScript’е.

Вот такой язык программирования. Изучайте, творите, делитесь новыми знаниями.

Обновлено 1.05.2016
Статья размещена на сайте 28.11.2013

Комментарии (25):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Вадим Поспелов, если отбросить вступление, то выявляется суть - визуальный конструктор программ. Штука интересная и абсолютно тупиковая.
    Есть программа Multisim - почти аналог, точно также из кубиков и связей собирается электронная схема. Если схема немного перерастает простейшую, то при любой ошибке проще собрать все заново, чем распутать паутину связей.
    Так и HiAsm. Если выйти за пределы «Здравствуй, мир!», то "программирование" превращается в головоломку с распутыванием линий. Поиграться можно, но дальше не двинешься, придется переучиваться. Так зачем терять время?
    Что касается второй части, то под Windows есть эмуляторы всех любительских компьютеров. А покопавшись на форумах, можно найти и старые игры под них.

    • Олег Антонов, Посмотрел я MultiSim и, видимо, чего-то не понял. В интернете понятий Мультисима 2: программирование одной симкарты на несколько номеров (забавная штука, у меня была такая симка одно время, но явно к делу не относится) и моделирование электронных схем. Вот вторая программа похожа на Хиасм тем, что схема создается из кубиков. Но я-то пишу не о моделировании схем, а о программировании. Не смотря на то, что графические элементы похожи, суть у них разная. И результат на выходе не сравнимый. И хотя Мультисим позволяет проверить работу программы микроконтроллера, он никак не создает ее автоматически. ХиАсм же именно создает программу, причем на Паскале (обычном, не ООП) со всеми его возможностями и ограничениями. И при этом позволяет делать это человеку с Паскалем совершенно не знакомому, но наделенному некоторыми базовыми понятиями программирования.

      Оценка статьи: 5

    • Вадим Поспелов Вадим Поспелов Профессионал 9 декабря 2013 в 10:35 отредактирован 9 декабря 2013 в 10:43

      Олег Антонов, Про МультиСим не слышал посмотрю позже, составлю свое мнение. А вот про ХиАсм вы не правы. Программа позволяет выносить отдельные модули в dll-ки и использовать функции из них. Равно, можно объединять блоки программы во вложенные блоки. При некотором навыке очень круто можно наворотить. Но я лично остаюсь на позиции любителя. Мне простенькие программки нужны, вот я их творю.

      Кстати, промежуточные файлы перед компилированием - pas ! Не нравится результат? Берите эти паскалевые файлы и правьте их в любимом дельфи на своё усмотрение.

      А по поводу эмуляторов... для ностальгического одноразового использования пойдет. А регулярно ими пользоваться я лично не люблю.

      Если на то пошло CASE-программирование - пост-ООП разработка - не развитое в России совершенно, активно на западе используется годов с 1990-х. Рисуется блок-хема и задается требуемый результат: хочешь программу, хочешь мобильное приложение, хочешь скрипт сайта, хочешь базу данных с готовой оболочкой под нее. Самая известная программа CASE - это ERWin. Стоит 2500 баксов. А специалистов, которые могут с ней ПРОФЕССИОНАЛЬНО работать в России почти нет. Я с ней по любительски поработал. Возможности поражают. Например, надо было добавить пару параметров в базу данных из нескольких десятков таблиц (причем, совершенно не документированную). Подсунули ей базу данных и за 20 секунд получили графическое изображение, в котором в нескольких местах добавили нужные параметры. после компилирования и таблицы исправились сами и SQL-запросы пополнились где надо, да еще какую-то оптимизацию сама провела. Делов на 15 минут, но это для знающего специалиста.

      А есть еще такая среда Scratch. Для обучения программированию с 8-ми лет. На западе ей активно пользуются, а у нас... мы же и так круты без меры. Вот только наши программисты до сих пор учат ООП, в США - CASE. Может быть именно по этому мы покупаем их программы, а не они наши?

      Оценка статьи: 5

      • Вадим Поспелов,
        CASE-программирование - пост-ООП разработка
        наши программисты до сих пор учат ООП, в США - CASE
        Каша какая-то... Это совершенно перпендикулярные понятия. Если ERWin не работает с ООП, то это его проблемы.

        • Вадим Поспелов Вадим Поспелов Профессионал 10 декабря 2013 в 10:36 отредактирован 10 декабря 2013 в 10:41

          Mike Mike, Прежде, чем писать комментарий, сперва поймите, что такое ООП, а что CASE. ERWin создает ОО-иерархию классов, со всеми наследованиями и инкапсуляциями, а так же базы данных и прочие структуры для хранения информации по описанию предметной области. Очень грубо CASE-алгоритм выглядит так: Вы графически описываете процесс, для которого создаете ПО и указываете язык программирования, на котором будет создаваться программа, а ERWin сам создает структуры хранения информации и процедуры ее обработки на выбранном языке, и потом запускает процесс компиляции.

          Специалист, который мне это всё показывал, согласился, что генерируемый код не всегда эффективен. И можно вручную процентов на 10-15 либо сократить код, либо увеличить быстродействие, но это увеличивает сроки разработки и, соответственно, стоимость программы в 3-5 раз, по этому от доработки напильником отказываются и клиенты, и разработчики.

          Оценка статьи: 5

          • Вадим Поспелов,
            Прежде, чем писать комментарий, сперва поймите, что такое ООП, а что CASE
            Разве в моем комментарии не сказано для вас то же самое? Я-то в этом уже очень давно "разобрался".

            ERWin создает ОО-иерархию классов
            Он не работает с классами.

            Вы графически описываете процесс, для которого создаете ПО и указываете язык программирования, на котором будет создаваться программа

            И не создает программы.

            В лучшем случае вам показали комплекс инструментов последовательной обработки (внешних для ERWin), которые
            уже и сотворили это чудо. Вы вообще смешиваете две вещи - создание модели (ООП или нет) и автосоздание текста программы (ООП или нет).

            • Mike Mike, вы всё правильно поняли.

              Но в ERWin есть кнопка "Компилировать", результатом нажатия на которую будет готовый файл. При задании в качестве языка "С++", "Pascal" и т.п. (и установленном соответствующем компиляторе) исходный файл автоматически передается компилятору. Окончательный файл разумеется EXE. А компиляторы наиболее распространенных языков входят в поставку ERWin. Так что программный комплекс ERWin создает готовые программы!

              В моем случае был анализ mdf-файла (база данных в бинарном виде) с получением аналогичного файла, готового к употреблению. Использовался прилагаемый к системе копилятор "MSSQL/MySQL/...SQL".

              В пиратках, ходящих по интернету многие компиляторы (в т.ч. и фриварные) жестоко вырезаны "за ненадобностью".

              А в демо-примере был готовый результат прошивки к какому-то технологическому микроконтроллеру. Начиная с рисования входных сигналов датчиков, и заканчивая готовой программой в машинных кодах. Разумеется ассемблерный компилятор для данного контроллера был установлен в системе.

              Оценка статьи: 5

              • Вадим Поспелов, интересно, почему же злые люди такую невиданную возможность - автоматическую генерацию текстов программ! - и вырезают "за не надобностью"?

                • Олег Антонов, я больше скажу, даже сам производитель не знает о такой возможности, судя по описанию

                  • Mike Mike, Очень странно, что производители не знают. Я специально погуглил...

                    На русскоязычных сайтах описывается в основном ERWin Data Modeler для создания баз данных. Который, соответственно, создает базы данных, а не прикладные приложения.

                    И только путем целенаправленного поиска я нашел описание создания приложения на ВизуалБейсике на 3-й версии ERWin'а. Напомню, что сейчас текущая версия - 9. Т.е. за время, существования 4, 5, 6, 7, 8 и 9-й версии о данной возможности на руссом языке не было опубликовано ни одной статьи, либо их можно найти только специфическим запросом. На английском языке статей достаточно много. По этому о создании программ средствами ERWin в России знают только узкие специалисты, которых в России один на миллион. (По крайней мере в НиНо - городе полутора-миллионнике - их всего два.)

                    А развитие программы наверняка происходило. И кроме Дата-Моделлера (создающего базы данных) в пакете CA ERWin есть еще Процесс-Моделлер (создающий приложения) и Web-портал (название говорит само за себя) и десяток других приложений, отсутствующих в 4.х и 5.х версиях, наиболее популярных у взломщиков.

                    Оценка статьи: 5

                    • Вадим Поспелов,
                      Ну так дайте ссылку. И заодно, найдите эти возможности на erwin.com, вдруг, я плохо смотрел.

                      • Mike Mike, Компьютер Пресс за октябрь 1998 года: ERwin и автоматическая генерация кода клиентских приложений. http://www.interface.ru/public/case/case.htm. Там описание процесса для VisualBasic, PowerBuilder и Delphi для версии 3.5, когда они еще не были встроены в ERWin. Как-никак статья 15-летней давности.

                        А причем тут erwin.com? www.ca.com!

                        Оценка статьи: 5

                        • Вадим Поспелов, так приложением это назвать и язык не повернется - лишь заготовки форм по структуре данных, не более того. Собственно, с одной стороны, это совершенно логично, а с другой - на большее рассчитывать нереально.

                          А причем тут erwin.com? www.ca.com!
                          Найдите ERWin на ca.com и вас ждет сюрприз

                          • Вадим Поспелов Вадим Поспелов Профессионал 13 декабря 2013 в 16:14 отредактирован 13 декабря 2013 в 16:14

                            Mike Mike, Дык статья-то 1998 года. За 15 лет программа прогрессировала...

                            Да уж сюрприз. Сообщается, что BPWin переименован в Process Modeler и входит Modeling Suite, но самого продукта я так и не нашел.

                            Оценка статьи: 5

                            • Вадим Поспелов, я результата прогресса в обсуждаемом ракурсе пока так и не увидел. А к чему теперь уже BPWin?

                              • Mike Mike, Это раньше был BPWin. Начиная с 5-й или 6-й версии он называется Process Modeler и не являеется самостоятельным продуктом. Типа как раньше Word и Excel были самостоятельными, а сейчас всего лишь программы из пакета MS Office.

                                Майк, давайте завершим наши прения на эту тему. Статья была всё таки о среде программирования для непрофессионалов и наш спор о CASE программировании для них - всего лишь перепалка двух специалистов на не очень понятную тему.

                                И им не понятно, и для нас непродуктивно, и к теме статьи отношения не имеет.

                                Оценка статьи: 5

      • Вадим Поспелов, ООП - одна из методологий программирования, никак не исключающая применение CASE-технологий разработки.

        • Олег Антонов, ООП не исключает CASE. ООП - это фундамент CASE.

          Оценка статьи: 5

          • Вадим Поспелов, вам уже сказали - это перпендикулярные понятия. Case-средства точно также могут работать без ООП, используя структурное программирование.

            • Олег Антонов, я не буду спорить с тем, в чем мало разбираюсь. Но всё же процитирую выдержки из Википедии:

              ... Для выполнения поставленной цели CASE-технологии используют два принципиально разных подхода к проектированию: структурный и объектно-ориентированный...
              ... Структурный подход предполагает декомпозицию (разделение) поставленной задачи на функции, которые необходимо автоматизировать...
              ... Основным инструментом объектно-ориентированного подхода является язык UML — унифицированный язык моделирования, который предназначен для визуализации и документирования объектно-ориентированных систем с ориентацией их на разработку программного обеспечения. Данный язык включает в себя систему различных диаграмм, на основании которых может быть построено представление о проектируемой системе...

              Из чего я делаю вывод, что CASE базируется на UML, который и является ООП-инструментом. Т.е. без ООП данная технология в своей работе не обходится. Хотя на выходе результат может быть каким угодно, хоть "Здравствуй мир.txt".

              Оценка статьи: 5

  • Лирические потуги не впечатлили, а сегмент предмета не очень понятен. Профессионалам за ненадобностью (из кубиков можно построить домик, но не часы), а обычный пользователь безнадежно зароется. И почему Asm??

  • Марианна Власова Марианна Власова Бывший главный редактор 1 декабря 2013 в 00:18

    Ностальгичная сказочка, спасибо, порадовали. "Дети не знали своих отцов, не учили родных языков и придумывали новые…"

    Оценка статьи: 5