DRAKON.SU

Текущее время: Суббота, 31 Июль, 2021 22:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 20 Февраль, 2014 22:34 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Веду работу над созданием файла генерации кода для AutoHotkey. Он наполовину готов. Вроде рабочий код генерирует, но еще думаю нуждается в тестировании и устранение багов.
Есть некоторые вопросы касательно механизма генерации кода, которые пока не полностью разобрал, но сначала хочу попробовать самому разобраться в них. Если не справлюсь, потом задам вопросы тут.

Я обратил внимании, что для каждого языка программирования который поддерживает Drakon Editor коментарии для параметров функции задаются при помощи использования // . Нельзя ли сделать так чтобы Drakon Editor для данного вида коментария использовал бы символ, который язык использует для обычных коментариев в данном языке?

Также в чем смысл использования #comment в качестве аргумента для функции? Я понимаю что в данном случае функция не генерируется. Но в этом случае вызовы данной функции из других все равно остаются и они могут выдать ошибку при вызове. В чем тогда смысл использования #comment , когда он бывает полезен?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 25 Март, 2014 21:48 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Файла генерации кода для AutoHotkey.
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить повторяющиеся задачи. Особенно хочу подчеркнуть очень дружелюбного коммюнити у AutoHotkey. Актуальную версию AutoHotkey и документацию к ней смотрите тут: http://ahkscript.org . На http://www.autohotkey.com/ программа и документация к ней устаревшая. Подробнее об AutoHotkey смотрите тут: http://ru.wikipedia.org/wiki/AutoHotkey .
Код генерируется для актуальной версии AutoHotkey_L. Совместимость со старой версией Basic и с разрабатываемой (альфа версия) AutoHotkey v2 не проверялась. В будущем когда разработчики AutoHotkey v2 окончательно определятся с его синтаксисом планирую и для него написать генератор.
Генератор находится в бета стадии и некоторые детали могут измениться в будущем. Считаю необходимым, чтобы и сообщество AutoHotkey протестировало генератор, а может и добавило новый функционал. Также написана документация к генератору на английском языке в соответствии с форматом других документов для других генераторов DRAKON Editor. Прошу добавить данный генератор в DRAKON Editor. Как только вы добавите данный генератор в DRAKON Editor, я открою соответствующие темы на форумах где используют AutoHotkey.
Если вы считаете, что нужно внести какие-либо изменения в генератор до включения в DRAKON Editor просьба совместно их обсудить.

За основу был взят файл генерации кода для Lua. Файл генерации полностью создан с использованием ДРАКОН-схем.
Отличия от других генераторов кода:
1) Можно создать 3 типа ДРАКОН-схем в зависимости от его названия:
а) ДРАКОН-схема свободного типа, в котором весь код помещается между label и return. Название label такое же как и соответствующей ДРАКОН-схемы. Данный тип ДРАКОН-схемы нужен в тех случаях, когда AutoHotkey не позволяет помещать код внутри функции. Свободная ДРАКОН-схема создается добавлением в начале имени Free_ (регистр символов не имеет значения).
б) ДРАКОН-схема типа hotkey, код которого помещается внутри hotkey. При этом заголовок ДРАКОН-схемы должен соответствовать синтаксису названия hotkey. ДРАКОН-схема типа hotkey создается при наличии в имени ДРАКОН-схемы :: (два двоеточия).
в) И третий тип ДРАКОН-схемы помещающий код внутри функции. Ими являются все ДРАКОН-схемы с именами не как у первых двух типов.
Более подробно смотрите в англоязычной документации.
2) Комментировать ДРАКОН-схему (код не будет генерироваться) можно через добавление Comment_ (регистр символов не имеет значения) в начале диаграммы. Так удобнее, по сравнению с другими генераторами в которых тоже самое достигается путем добавлением comment к параметрам функции. В этом случае сразу видно которая ДРАКОН-схема закомментирована, а в случае с параметрами не так наглядно.
3) Генератор поддерживает как обычный for цикл, так и упрощённый вариант For цикла, такой же как в Lua. Более подробно смотрите в англоязычной документации.
4) В генерируемом файле добавлен комментарий указывающий на версию генератора для данного языка. Так как, генератор может измениться в будущем, думаю разумным знать посредством какой версии генератора сгенерирован файл.

Прошу обратить внимание, что при генерации кода из свободной ДРАКОН-схемы после label добавляется {} . Это нужно для предотвращения возможной ошибки, которая не позволяет сразу после label писать некоторый вид кода.
Также в генерируемом коде с первого взгляда может показаться, что присутствуют лишние return . Они нужны для того чтобы не было непредумышленного исполнения кода, т.е. определенная страховка.
Также генерируются некоторые дополнительные комментарии, например к дополнительным return и {} . На AutoHotkey программируют многие начинающие программисты, поэтому считаю необходимым их наличие, чтобы они не думали, что код лишний.

Foreach цикл пока не рабочий! Пока не знаю каким он должен выглядеть в AutoHotkey. Думаю, насчет этого нужно посоветоваться с другими пользователями AutoHotkey. Специально не убирал код для Foreach цикла от Lua, чтобы другие пользователи имели возможность при необходимости его сами доработать. Поэтому прошу при включении данного генератора в DRAKON Editor, данный код не убирать, пока он все равно в бета версии. В последующих версиях планируется добавление работающего Foreach цикла.

Также пока не готовы примеры кода которые не имеются у других генераторов в папке examples. Я не профессиональный программист и пока не разобрался с данными алгоритмами, но хочу в будущем их сделать.

Также у меня к Вам вопрос:
Для чего нужны в генераторе ДРАКОН-схемы которые находятся в каталоге Jump? По моим наблюдениям в генерируемом коде нигде goto не используется.

Генератор кода и документация на английском языке (также отдельно прилагаются изображения и схемы используемые в документации) находятся в прикрепленном файле.


Вложения:
AutoHotkey Code Generator.zip [201.27 КБ]
Скачиваний: 307
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 03:34 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
vasili111 писал(а):
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить повторяющиеся задачи.

Объясните, что является для Дракона "повторяющимися задачами", для чего они нужны и зачем их надо упрощать?

Обходимся без AutoHotkey, так зачем он нужен? Пользователю для освоения это дополнительная нагрузка.

Уже сейчас к DRAKON-edit нужна среда выполнения Tcl, еще добавить AutoHotkey, теряется мобильность использования, теряется надежность т.к. что нибудь потеряется, сломается, нарушиться настройка.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 05:12 

Зарегистрирован: Пятница, 28 Февраль, 2014 06:30
Сообщения: 9
Геннадий Тышов писал(а):
Объясните, что является для Дракона "повторяющимися задачами", для чего они нужны и зачем их надо упрощать?


Не для ДРАКОНа, а для пользователя операционной системы. vasili111 научил DRAKON Editor генерировать скрипты с синтаксисом AutoHotkey для тех, кто использует эту утилиту для автоматизации частых и рутинных операций в ОС. Соответственно, никакой дополнительной нагрузки на пользователя DRAKON Editor и потерь в надежности и мобильности нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 06:09 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
zickey, спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 07:47 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 189
Откуда: Россия, Санкт-Петербург
vasili111 писал(а):
Файла генерации кода для AutoHotkey.
Прекрасно! : ))

Попробовал генератор. Конструктивные замечания.

1. Я думал, что префикс Free_ будет удалён из имени метки, но получаю метки вида "Free_Label:". Хотелось бы удалять префикс, ведь он нужен только генератору. Или я не прав? Возможно, это сделано для возможности поиска обращения к меткам средствами редактора... Как на самом деле?

2. Перед завершающим return в функциях нет отступа, как у остального кода функции:
Код:
SomeFunction() {
   [SomeCode...]
return   ; <- Надо бы сдвинуть право.
}


Наконец, у меня есть вот такой скрипт. Как его воссоздать в редакторе, чтобы ваш генератор его выдал?
Код:
#Persistent

SetKeyDelay -1, -1
SetTimer, Program1AutoLogon, 200
SetTimer, Program2AutoLogon, 100
return

Program1AutoLogon:
  If(WinActive("Logon to Program1 Title"))
  {
    Send, !U
    Sleep, 1
    Send, username{TAB}
    Sleep, 1
    Send, password{ENTER}
  }
return

Program2AutoLogon:
  If(WinActive("Logon to Program2 Title"))
  {
    Send, password{ENTER}
  }
return

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

Я смог воссоздать в редакторе код, находящийся в метках, но я не смог разобраться, как сделать первоначальную часть, ту, что запускает таймеры при вызове скрипта AHK.

Так же я не понял, есть ли специальное место, куда нужно поместить атрибуты типа "#Persistent".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 07:56 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 189
Откуда: Россия, Санкт-Петербург
vasili111 писал(а):
Файла генерации кода для AutoHotkey.
И ещё: слово diagram пишется с одной m.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 12:00 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Александр Ильин
Александр Ильин писал(а):
1. Я думал, что префикс Free_ будет удалён из имени метки, но получаю метки вида "Free_Label:". Хотелось бы удалять префикс, ведь он нужен только генератору. Или я не прав? Возможно, это сделано для возможности поиска обращения к меткам средствами редактора... Как на самом деле?


Я думал об этом и в начале хотел сделать так, как Вы предлагаете. Но передумал по данным причинам:
а) В ДРАКОН-е все что находится в иконе заголовок является именем данной ДРАКОН-схемы, т.е. нет понятия префикса. Введения понятия префикса может усложнить ДРАКОН. То есть сейчас мы можем сказать пользователю: "Создается label который точно соответствует заголовку ДРАКОН-схемы". А в случае, если Free_ сделать префиксом, нам нужно дополнительно объяснить что такое префикс и как его использовать. Я считаю это особенно важным для пользователей AutoHotkey, так как его используют многие начинающие программисты и любое усложнение может привести к нежелательным ошибкам.
б) В script.drn (смотрите прикрепленный файл script.zip), если в ДРАКОН-схеме Free_Start вы правой кнопкой кликните на икону действия с содержимым SetTimer, Free_Program1AutoLogon, 200 , то DRAKON Editor предлагает перейти на соответствующую ДРАКОН-схему. Если убрать из этой иконы Free_ , то переход уже не предлагается.

Я не могу со 100% уверенностью утверждать что в пункте а я прав, может быть ровно наоборот. Но пункт б подсказывают, что я сделал правильный выбор и сохранил полезный функционал DRAKON Editor.

Александр Ильин писал(а):
2. Перед завершающим return в функциях нет отступа, как у остального кода функции:
Код:
SomeFunction() {
   [SomeCode...]
return   ; <- Надо бы сдвинуть право.
}


Вы правы, спасибо за замечание, исправил. Обновленный файл генерации смотрите в прикрепленном файле AutoHotkey Code Generator beta v1.2.zip

Александр Ильин писал(а):
Наконец, у меня есть вот такой скрипт. Как его воссоздать в редакторе, чтобы ваш генератор его выдал?
Код:
#Persistent

SetKeyDelay -1, -1
SetTimer, Program1AutoLogon, 200
SetTimer, Program2AutoLogon, 100
return

Program1AutoLogon:
  If(WinActive("Logon to Program1 Title"))
  {
    Send, !U
    Sleep, 1
    Send, username{TAB}
    Sleep, 1
    Send, password{ENTER}
  }
return

Program2AutoLogon:
  If(WinActive("Logon to Program2 Title"))
  {
    Send, password{ENTER}
  }
return

Сделал ДРАКОН-схемы данного скрипта. Смотрите прикрепленный файл script.zip
Также обратите внимание на раздел File / File description... данного файла.
Сообщите пожалуйста результат работы. Правильно ли работает сгенерированный скрипт?
Также можно в File / File description... то что написано заменить на:
===header===
Goto, Free_Start


В обоих случаях результат должен быть один и тот же.


Александр Ильин писал(а):
Так же я не понял, есть ли специальное место, куда нужно поместить атрибуты типа "#Persistent".

Смотрите как я "#Persistent" поместил в Free_Start ДРАКОН-схему. Можно его также поместить сразу после ===header=== в File / File description... . Но я думаю мой вариант более правильный, стараюсь максимально весь код поместить в ДРАКОН-схемы.

Александр Ильин писал(а):
vasili111 писал(а):
Файла генерации кода для AutoHotkey.
И ещё: слово diagram пишется с одной m.


Вы правы, но я искал diagramm (с двумя mm) и в моем посте и в документации в прикрепленном файле, но не смог найти. Покажите пожалуйста где именно Вы встретили diagramm (с двумя mm).


Вложения:
script.zip [2.74 КБ]
Скачиваний: 266
AutoHotkey Code Generator beta v1.2.zip [202.82 КБ]
Скачиваний: 268


Последний раз редактировалось vasili111 Среда, 26 Март, 2014 13:52, всего редактировалось 5 раз(а).
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 15:21 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 189
Откуда: Россия, Санкт-Петербург
vasili111 писал(а):
Вы правы, но я искал diagramm (с двумя mm) и в моем посте и в документации в прикрепленном файле, но не смог найти. Покажите пожалуйста где именно Вы встретили diagramm (с двумя mm).
AutoHotkey_L.tcl:
Код:
                append line "\nreturn ;This \"return\" is here\
                to protect Free_ diagramm for unintended execution."


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 26 Март, 2014 16:10 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Александр Ильин
Александр Ильин писал(а):
vasili111 писал(а):
Вы правы, но я искал diagramm (с двумя mm) и в моем посте и в документации в прикрепленном файле, но не смог найти. Покажите пожалуйста где именно Вы встретили diagramm (с двумя mm).
AutoHotkey_L.tcl:
Код:
                append line "\nreturn ;This \"return\" is here\
                to protect Free_ diagramm for unintended execution."


Спасибо, исправил.
В прикрепленном файле исправленный вариант.


Вложения:
AutoHotkey Code Generator beta v1.3.zip [202.82 КБ]
Скачиваний: 271
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 28 Март, 2014 14:57 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Опубликовал информацию о создании генератора для AutoHotkey в официальных форумах (их двое) AutoHotkey:
http://ahkscript.org/boards/viewtopic.php?f=6&t=3108
http://www.autohotkey.com/board/topic/1 ... utohotkey/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Апрель, 2014 09:18 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Обновил генератор для AutoHotkey до beta v1.4 .
Добавлен return в конце header и в начале footer для страховки от непредумышленного исполнения кода.


Вложения:
AutoHotkey Code Generator beta v1.4.zip [202.93 КБ]
Скачиваний: 271
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 03 Апрель, 2014 09:58 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Обновил генератор для AutoHotkey до beta v1.5 .
Исправлены автоматически генерируемые комментарии к генерируемому коду.


Вложения:
AutoHotkey Code Generator beta v1.5.zip [202.9 КБ]
Скачиваний: 272
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Апрель, 2014 09:36 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Сделал два примера DRAKON-AutoHotkey диаграм.
1) Выдает последовательность Фибоначи.
2) Выдает местоположение и цвет пикселя на которую указывает курсор.


Вложения:
Fibonacci sequence.drn [17 КБ]
Скачиваний: 548
Get position and color of pixel.drn [14 КБ]
Скачиваний: 552
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Апрель, 2014 17:59 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5213
Откуда: Москва
http://www.autohotkey.com/board/topic/1 ... key/page-2

ObiWanKenobi, on 01 Apr 2014 - 10:28 PM, said:
Цитата:
This is really great stuff [DRAKON].

I know a friend who wants to learn programming (he never programmed before) and i think this is the best method to start learning it ... just with shapes, nothing more needed.

And for me it's the best way to visualize some of my complex projects.

vasili111 on 01 Apr 2014 - 12:39 PM, said:
Цитата:
I am glad that you like DRAKON.

DRAKON initially was made for easy interaction between engineers (which don't know programming) and programmers. It was made for making easy for non-programmers to make complex algorithms.

All human knowledge can be divided in two parts: declarative and procedural knowledge . In school we only study good tool for declarative knowledge - usual textual representation of our knowledge.

But when it comes to procedural knowledge education system does not gives good tool for non-programmers. I think every people (programmer or non-programmer) needs tool for making algorithms.

The DRAKON is very good tool for making complex algorithms for non-programmer which he needs in everyday life. For example, there are several books for doctors that uses DRAKON diagrams, I have seen some DRAKON diagrams that describes law and business algorithms.

As I mentioned in first post, DRAKON is extensively used in Space programs, where clarity of algorithms is at first place, where errors in code have very dramatic consequences. It is made for making as less possible errors in code as possible.

There is also a forum and wiki about DRAKON but they are in Russian language. But I think you can use google translate to read them. I can also help if there will be some hard parts for translation (some words, some phrases). Here are links:

viewforum.php?f=77

http://drakon.su/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Апрель, 2014 09:12 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5213
Откуда: Москва
Василий (vasili111) проводит важную разъяснительную работу среди англоговорящих.

Василий рассказывает о языке ДРАКОН и о генераторе кода AutoHotkey для программы DRAKON Editor
http://www.autohotkey.com/board/topic/1 ... utohotkey/

Сейчас в теме 17 сообщений. Желаю дальнейшего развития темы.

Пропаганда ДРАКОНа в англоязычном мире — исключительно сложная и актуальная задача. Важность этой темы трудно переоценить

Василий, большое спасибо за инициативу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Апрель, 2014 22:33 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Владимир Паронджанов писал(а):
Василий (vasili111) проводит важную разъяснительную работу среди англоговорящих.

Василий рассказывает о языке ДРАКОН и о генераторе кода AutoHotkey для программы DRAKON Editor
http://www.autohotkey.com/board/topic/1 ... utohotkey/

Сейчас в теме 17 сообщений. Желаю дальнейшего развития темы.

Пропаганда ДРАКОНа в англоязычном мире — исключительно сложная и актуальная задача. Важность этой темы трудно переоценить

Василий, большое спасибо за инициативу.


Большое спасибо Владимир Данилович! Я считаю ДРАКОН очень полезным для всего человечества и чем больше людей о нем узнают, тем лучше. Буду и дальше стараться популяризировать ДРАКОН.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2021, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB