← Декабрь 2009 → | ||||||
1
|
2
|
3
|
4
|
6
|
||
---|---|---|---|---|---|---|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
25
|
26
|
27
|
|
28
|
29
|
30
|
31
|
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://sites.google.com/site/prog4intellect/
Открыта:
27-10-2008
Статистика
0 за неделю
Усилители интеллекта: теории, эксперименты, технологии
Усилители интеллекта: конструкторы алгоритмов 3 Уважаемые любители интеллектуальных программ! Мы идем дальше в мир программирования. Первым шагом было освоение алгоритмического мышления с помощью ДРАКОНа. На очереди - HiAsm, способный быстро реализовать алгоритмическую идею без помощи профессионального программиста. Это маленькое (14 Мб) чудо создал в 2003-2009 годах Dilma (при участии nesco, tsdmitri, iarspider). HiAsm доступен на сайте http://www.hiasm.com/ на условиях freeware; там же указаны кошельки для материальной поддержки проекта (из спасибо ведь шубу не сошьешь... ;0). Вообще-то хиазм был изобретен в I веке до нашей эры и представляет собой крестообразный повтор-перевертыш - хитрый оборот речи, запоминающийся своей выразительной замысловатостью. В те времена популярным хиазмом было "Есть, чтобы жить, а не жить, чтобы есть". К нам же ближе фраза К.С. Станиславского: "Умейте любить искусство в себе, а не себя в искусстве"... Но имя HiAsm имеет другое происхождение. В
программировании Asm
устойчиво ассоциируется с Ассемблером, языком машинных кодов, а приставка
Hi означает высокий (как в модерновых Hi-Tech/Высокие
технологии, Hi-End/Эксклюзивная аудиоаппаратура и Hi-Fi/Звук,
точно воспроизводящий оригинальное звучание). Вот и получается "Высокий
Ассемблер" (хайЭсм) - мост от интуитивно понятных блок-схем сразу к зауми кодинга.
HiAsm хорош тем, что не требует написания какого-либо кода, так как все программы в нём собираются из кубиков, как в конструкторе. Это значительно ускоряет творчество, вплоть до того, что несложные программы делаются за одну минуту. Да и размер программ в 5-15 раз меньше, чем в Delphi, за счет использования кодоэкономичных библиотек, разработанных новосибирским программистом Владимиром Кладовым. Выбирая кубики и соединяя их связями, мы избегаем тарабарщины кодов, но у этой простоты есть обратная сторона, вызванная сложностью операций, инициируемых схемой:
Для тех, кто готов учиться работать с
компонентами, могу порекомендовать блог-курс Сергея Сергеева
http://hi-asm.blogspot.com/
По состоянию на ноябрь 2009 в этом курсе насчитывалось 50 занятий, на которых
демонстрировалось создание самых разных программ: от удобного таймера-будильника
до граббера картинок, обходящего запреты на PrintScreen.
Первые занятия этого курса продублированы в видеолекциях, наглядно
демонстрирующих работу с компонентами. Когда будете знакомиться с сайтом
http://www.hiasm.com/ и программой,
то неизбежно столкнетесь с рядом странностей, вызванных замкнутым
характером сообщества программистов, сложившегося вокруг
HiAsm. Имхо, дело в том, что этот инструмент программирования много лет
разрабатывается энтузиастом-одиночкой, которому уже вполне достаточно
сложившегося круга сподвижников; ни времени, ни сил на вопросы новичков,
слетающихся на HiAsm, как пчелы на варенье, уже
не хватает. Поэтому при формально открытом характере форума в регистрации на нем
есть подводные камни. На сайте представлены две версии форума - новая и старая.
Старая устроена понятнее, но регистрация там выполняется для виду и ни к чему не
приводит. Только на новом форуме барьер
регистрации будет пройден. В рамках данного выпуска я ограничусь быстрым введением в HiAsm / пакет Windows - это позволит Вам сразу начать работать с программой, а все остальное можно почерпнуть из курса С.Сергеева, видеоуроков на сайте, справок и собственного опыта. (Чтобы не загромождать текст инструкциями, полезные советы по первым шагам в HiAsm Вы найдете в "подвале" выпуска) Знакомимся с интерфейсом и его настройкой Для начала взгляните на рабочее окно программы:
Центральное поле, на котором размещены
квадратики-компоненты, - это рабочее поле, служащее для сборки
программы. Как видите, интерфейс достаточно прост. Его
дополняют контекстные меню. Из общих настроек HiAsm: файлы проектов можно будет открывать щелчком мыши, если включить интеграцию (меню Сервис / Настройка / Интеграция). Выбираем и настраиваем компоненты Если Вы решите собрать программу, работающую
под Windows, то HiAsm
4.02.179 предложит на выбор 564 компонента. В новейшей версии 4.03.181 к
ним добавилось еще 42 (и исключены 5) - всего 601 компонент. Мне для реализации алгоритмических идей на первых порах хватило дюжины компонентов - вот о них я Вам и расскажу (по порядку слева направо):
Нумерация в программировании начинается с 0 - так что привыкайте... ;0) 0. Форма - компонент, который по умолчанию присутствует в проекте интерфейсного приложения для Windows (сборка таких программ - первая и главная задача HiAsm). Задает вид, расположение, размеры окна программы, его заголовок, цвет, характер реагирования на указатель мыши и т.п. параметры. 1. Надпись - помещает короткий текст в окно программы. (Из рубрики Интерфейс) 2. Поле ввода - создает поле для набора одной строки текста. (Интерфейс) 3. Кнопка с картинкой - позволяет пользователю запускать этапы программы. В отличие от обычной кнопки имеет широкий спектр настроек. (Интерфейс) 4. Расширенный редактор текста - обеспечивает набор, редактирование и вывод на экран многострочных текстов, в т.ч. цветных. (Интерфейс) 5. Сообщение - прерывает работу программы и показывает в отдельном окошке текст, требующий ответной реакции пользователя. (Контролы) 6. Таймер - генератор импульсов (событий), запускающих работу всей программы или ее подпрограмм. По умолчанию - раз в секунду. (Контролы) 7. Случайное число - генератор случайных чисел. Вносит в работу программы фактор непредсказуемости. (Логика) 8. Цикл со счетчиком - организует циклы/этапы в работе пользователя с программой. (Логика) 9. Условный блок - переключает каналы воздействия в зависимости от сравнения поступающих чисел или строк. Позволяет оценивать промежуточные результаты. (Логика) 10. Память - запоминает число или строку текста для передачи компонентам программы. Может нести функции как долговременной, так и оперативной памяти. (Инструменты) 11. Поток-данные - переносит данные из памяти на вход компонентов. (Инструменты) Стоит поместить компонент на рабочее поле, как в правой инструментальной панели открываются его
свойства. Их значения можно изменять, кликнув на соответствующем поле. Чаще других настраиваются свойства caption (заголовок, надпись), strings (список строк), data (данные), font (шрифт), color (цвет). Последнее можно сделать динамичным, добавив точку к настраиваемому компоненту. И если Вы захотите, чтобы цвет менялся случайным образом, то в настройках компонента "Случайное число" измените диапазон чисел с исходного 100 на 16777215, т.к. именно в такой интервал укладывается вся палитра цветов (в заданный по умолчанию диапазон 0 - 100 попадают только темные тона). Собираем схему программы Каждый компонент, включаемый в схему, представляет собой черный ящик (хотя через команду "Исходник компонента" всегда можно посмотреть его код на Паскале, а команда "Конфигурация компонента" покажет версию, авторов и список настроек). Слева направо через него течет поток событий (сигналов, чисел, символических наборов), которые компонент преобразует согласно своей функции. На верхнюю сторону квадрата через точки поступают внешние параметры функции, а по точкам на нижней стороне параметрические выходы компонента воздействуют на другие компоненты. Иными словами, по горизонтали связаны событийные входы-выходы, а по вертикали - параметрические. По горизонтали разворачивается основной информационный процесс программы, ведущий от исходных входных данных к результатам. А вертикальный срез состоит в статических установках программы, дополняющих ее структуру, и процессах управления параметрами компонентов. Принципом этой структуры является главное правило HiAsm: высший приоритет имеют данные, поступающие сверху; за ними следуют данные, введенные в память компонента при настройке его свойств; низший приоритет имеют данные, поступающие на входы компонента из потока событий. Чтобы соединить компоненты, нужно щёлкнуть левой кнопкой мыши на выбранной точке одного и, не отпуская кнопку, вести связь к точке другого компонента. Если к той точке уже подходит другая связь, то ведем связь к этой связи - и в месте их пересечения образуется узел. Если связь не нужна, то для разрыва нужно щёлкнуть правой кнопкой на любой из связанных точек. Как правило, связи HiAsm устанавливаются либо между точками, лежащими на вертикальных сторонах "ящиков" компонентов (событийные входы-выходы), либо между точками на горизонтальных сторонах (параметрические входы-выходы). Но в этом правиле есть исключения. Особенно капризны соединения связь-связь. Поэтому надежнее в точку разветвления связей ставить компонент Hub (Инструменты), и уже к нему тянуть линии от точек компонентов. Реализуем и развиваем алгоритм программы Перейдем от слов к делу. Скопируйте этот код в буфер и вставьте на рабочее поле нового проекта HiAsm "Приложение Windows" - появится схема программы "Зарядка души" (той самой, что на снимке рабочего окна HiAsm выше). Нажав кнопку "Запустить" Панели управления, Вы увидите окно программы и сможете поднять себе настроение... ;0) Add(BitBtn,12382016,238,210) Чтобы
написать такой код вручную или прочесть и понять его, определенно, нужно сойти с
ума... ;0) Но HiAsm автоматически переводит его в схему,
причем не простую, а простейшую - Зарядка принадлежит именно к такой
категории. Для интересующихся подробностями 1. Как настроить стартовое окно intro и работать с ним При запуске HiAsm
первое, что Вы видите - окно intro. Гиперссылки на
нем срабатывают от щелчка мышкой при нажатой клавише Ctrl. Так Вы можете
попасть на форум, страничку видеоуроков и начать
новый проект. 2. Улучшенная организация рабочего поля Выше, в экспресс-знакомстве с HiAsm, предлагалось зафиксировать основные панели (Элементы, Свойства, Справка) двойными щелчками на их закладках, расположенных по бокам и внизу рабочего поля. Такой способ хорош своей простотой, однако панели при этом заслоняют компоненты, расположенные по краям поля, а также линейку с закладками проектов, что затрудняет переключение между ними и закрытие проектов. Чтобы основные панели не залезали на рабочее поле, а лежали по границам его, проделайте следующую процедуру: Подведите курсор мыши к заголовку открытой панели и при нажатой правой кнопке мыши оттащите панель от границы окна. Затем, нажав уже левую кнопку на том же заголовке, отбуксируйте панель назад к границе, причем так, чтобы она изменила свой размер, вытянувшись на всю длину окна. Теперь основные панели будут постоянно размещены по краям рабочего поля, не заслоняя его. Чтобы увеличить размер поля, можно уменьшить ширину панелей буксировкой их внутренних границ. При работе над проектами обычно пользуются небольшим набором компонентов. Их можно скопировать в отдельную панель, размещенную в удобном для Вас месте окна HiAsm (описание). Для этого на панели Элементы выберите нужный компонент и щелкните на нем правой кнопкой мыши. В появившемся контекстном меню выберите пункт Добавить в панель. Новая панель упрощает выбор часто используемых компонентов, а основную панель Элементы можно свернуть в закладку, еще больше увеличив рабочее поле. 3. Универсальный набор базовых компонентов Предложенный выше набор из 12 компонентов
пригодится для начала работы с HiAsm / пакет
Windows,
если интересующие Вас программы нацелены на работу пользователя с
текстами на экране. И отражает он лишь мой собственный опыт. 4. Как работают точки (связи) компонента
Galkov описывает работу компонентов так: 5. Как собирать схемы У пословицы "Нет худа без добра" есть не менее
справедливый антипод - "Нет добра без худа". Вот и визуальное программирование
несет в себе невидимые пни, о которые спотыкаются даже опытные программисты, не
говоря уже о новичках: связи не тянутся, компоненты не слушаются поступающих
команд, нужные свойства отсутствуют или не реагируют на настройки. Ситуация
усугубляется тем, что отладка HiAsm не завершена и не
может быть завершена в принципе - такую уж стратегию избрал
Dilma. Наверное, это оправдано по ряду причин: ограниченности ресурсов у
разработчика,
быстрой эволюции программы, участия пользователей в апробации версий. * * * Под занавес - история о чудесах алгоритмического мышления: Программист ставит себе на тумбочку перед сном два стакана.
* * * Вот и всё... Вопросы и замечания mailto:feod@narod.ru
До новых встреч! |
В избранное | ||