DRAKON.SU

Текущее время: Вторник, 23 Апрель, 2024 23:55

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




Начать новую тему Ответить на тему  [ Сообщений: 281 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 15  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 09 Декабрь, 2013 14:18 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Шилин Александр писал(а):
Не подскажете - где можно посмотреть пример использования всего вышеупомянутого вместе с Дракон-схемой?

Не совсем понял вопрос. Но пример могу привести.

Как известно, между sequence-диаграммой и ДРАКОН-схемой существует связь.
Sequence-диаграмма и ДРАКОН-схема описывают последовательность действий. Но:
1. Sequence-диаграмма показвает только один путь через ДРАКОН-диаграмму. Обычно "царскую дорогу" (happy path).
2. Sequence-диаграмма содержит дополнительные детали. А именно взаимодействие участников путём пересылки сообщений.

Две нижеследующие диаграммы показывают то же самое. Они взяты из документации к реальному проекту. Это и есть реальный пример.

Но, может, вы имеете в виду, можно ли сгенерить код из диаграмм других типов, кроме ДРАКОН-схем?
При помощи DRAKON Editor'а - пока нет.
Но эта возможность появится в версии DRAKON Editor 1.21 (выйдет в январе).
Там можно будет генерить код из диаграмм сущность-связь и диаграмм классов.
Вначале только на языках C# и Tcl (потому что я сам их использую).

Но если в сообществе будет интерес, можно будет добавить и другие языки.


Вложения:
write-flowchart.png
write-flowchart.png [ 11.62 КБ | Просмотров: 14123 ]
write-sequence.png
write-sequence.png [ 10.5 КБ | Просмотров: 14123 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Декабрь, 2013 14:28 

Зарегистрирован: Четверг, 23 Май, 2013 05:13
Сообщения: 401
Степан Митькин писал(а):
Не совсем понял вопрос.


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


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

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Шилин Александр писал(а):
У меня (отчего-то) сложилось впечатление, что можно использовать все эти новые возможности в рамках одного общего листа.

Нет-нет-нет! :) Данные - отдельно, алгоритм - отдельно. Разделяй и властвуй.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 08 Январь, 2014 22:24 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Вышел DRAKON Editor версии 1.21

Это мега-релиз. Что нового?

1. Генерация кода для машин состояний (конечных автоматов). Покамест только для языка C#.
2. Генерация кода для графического языка ERIL. Что такое ERIL?
Это диаграммы сущность-связь и диаграммы классов, улучшенные при помощи принципов ДРАКОНа.
Пока только для языков С# и Tcl.
3. Гиперссылки внутри текста икон. Для перехода нужно нажать правую кнопку мыши и перейти к пункту "Ссылки".
4. Новая цветовая схема "Colored night".

Скачать: http://drakon-editor.sourceforge.net/editor.html#downloads

Таким образом, осуществилась моя мечта — охватить графикой 3 аспекта программирования:
1. Алгоритмы.
2. Поведение (через конечные автоматы).
3. Структуры данных.

Вот пример автомата:
Вложение:
Automaton.png
Automaton.png [ 70.01 КБ | Просмотров: 14015 ]


А вот диаграмма на языке ERIL:
Вложение:
paw.png
paw.png [ 18.29 КБ | Просмотров: 14015 ]


А вот ещё:
Вложение:
inher.png
inher.png [ 46 КБ | Просмотров: 14015 ]


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

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Вот пример реального конечного автомата на языке C#. Это лексер, он разбивает программы текст на слова.
Вложение:
automaton.png
automaton.png [ 44.87 КБ | Просмотров: 13979 ]

Пример текста, который может разобрать данный лексер:
Код:
var foo = bar.SomeMethod(n + 10/x);


На что похож код, который генерирует DRAKON Editor для автоматов?

В итоге получается класс следующего вида:
Код:
class Lexer
{
    public void Whitespace(char c);
    public void Letter(char c);
    public void Digit(char c);
    public void Operator(char c);
}

У него есть четыре метода, которые соответствуют типам сообщений. Данный автомат поддерживает только эти типы сообщений:
- Whitespace
- Letter
- Digit
- Operator

То, какой именно код выполняется при получении конкретного типа сообщения, зависит от текущего состояния автомата.
Данный автомат может находиться в одном из следующих состояний:
- Idle
- Identifier
- Number
- Operator

Откуда что берётся?

Состояния задаются ветками силуэта. Каждая ветка силуэта, кроме последней, задаёт:
- имя состояния (название ветки).
- Поведение (алгоритмическое содержание ветки).

Последняя ветка нужна только из-за того, что код редактора требует этого.
Никакие ветки не должны указывать на неё.

Самой первой иконой в ветке-состоянии должна быть икона "выбор". Она должна содержать текст "receive".

Типы сообщений определяются иконами "вариант", которые находятся сразу под "receive".
Вот например:
Вложение:
auto_all.png
auto_all.png [ 3.99 КБ | Просмотров: 13979 ]

В какой-то из веток для некоторого типа сообщений может не быть соответствующей "выбор".
Тогда возможны два варианта:

1. Под иконой "выбор" с "receive" нет пустой иконы "вариант" (вариант по умолчанию отсутствует).
Тогда в случае вызова метода с именем, для которого нет иконы "выбор", будет брошено исключение.
Смысл этого следующий: автомат не принимает данный тип сообщения в данном состоянии.
Вложение:
auto_error.png
auto_error.png [ 3.76 КБ | Просмотров: 13979 ]

В этом примере при вызове метода Operator будет брошено исключение. (Предполагается, что тип сообщения Operator присутствует в других ветках-состояниях).
2. Под иконой "выбор" с "receive" есть пустая икона "вариант" (вариант по умолчанию присутствует).
Тогда выполняется код по умолчанию.
Смысл этого - "для сообщений всех остальных типов сделать то-то".
Вложение:
auto_default.png
auto_default.png [ 3.65 КБ | Просмотров: 13979 ]

В этом примере при вызове методов Digit и Operator будет выполнен алгоритм по умолчанию. (Предполагается, что типы сообщения Digit и Operator присутствует в других ветках-состояниях).

Сигнатура (список принимаемых параметров) методов обработки сообщений берётся из иконы "формальные параметры".
Вложение:
auto_signature.png
auto_signature.png [ 3.35 КБ | Просмотров: 13979 ]

Например:
Код:
int a
string b
SomeClass c

Это даст следующую сигнатуру:
Код:
public void Foo(int a, string b, SomeClass c);

У всех методов, которыми автомат принимает сообщения, сигнатура одна и та же.

Как указать, что диаграмма описывает автомат?
Для этого диаграмма должна иметь имя "state machine".

В одном файле может быть только одна диаграмма с таким именем. А значит, и только один конечный автомат на класс.

Смотри примеры в папке examples/automaton в дистрибутиве программы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Январь, 2014 21:02 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Добавьте пожалуйста поддержку AutoHotkey (подробнее http://www.autohotkey.com/ и http://ru.wikipedia.org/wiki/AutoHotkey). Самая свежая документация к языку поставляется с программой, на сайте документация слегка устаревшая. Кстати, у AutoHotkey имеется команда GOTO который думаю значительно упростит генерацию кода. Спасибо!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Февраль, 2014 13:58 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Вышел DRAKON Editor 1.22
Этот релиз целиком предназначен для маленьких любителей языка Erlang.

1. Исправлена ошибка в генерации программного Erlang-кода. (Лишняя запятая, вызванная иконой "комментарий". Запятая вычищена.)
2. Ослаблено требование к иконе "Вопрос". (Раньше можно было туда ставить только guard-выражения. Теперь можно всё.)
Код для этого прислал товарищ Maas-Maarten Zeeman.
3. Добавлена поддержка конечных автоматов для Erlang. Можно генерить два вида автоматов: легковесные и основанные на gen_fsm.
http://drakon-editor.sourceforge.net/erlang_auto.html

Вот пример с кодовым замком:
Изображение

Качать:
http://drakon-editor.sourceforge.net/ed ... #downloads


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

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
И ещё!

1. Поддерживается язык программирования D.

2. По просьбам трудящихся написал инструкцию, как добавить свой язык программирования в DRAKON Editor.
http://drakon-editor.sourceforge.net/howto.html

А то уже утомили меня эти трудящиеся. Все хотят больше языков.
Теперь могут сами добавлять языки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 08 Февраль, 2014 17:57 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Степан Митькин писал(а):
И ещё!

1. Поддерживается язык программирования D.

2. По просьбам трудящихся написал инструкцию, как добавить свой язык программирования в DRAKON Editor.
http://drakon-editor.sourceforge.net/howto.html

А то уже утомили меня эти трудящиеся. Все хотят больше языков.
Теперь могут сами добавлять языки.


Прочитал инструкцию по добавлению языков программирования, но не понял. Он, к сожалению, рассчитан на профессиональных программистов, коим я не являюсь. Нельзя ли сделать добавление языков которые используют GOTO, как это реализовано в ИС Дракон. То есть для добавления нового языка задавать в языковом файле правила написания GOTO, IF и комментария и все.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 11 Февраль, 2014 14:53 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5850
Откуда: Москва
Степан Борисович, на Вашем сайте написано:
http://sourceforge.net/projects/drakon- ... rce=navbar
Цитата:
Software engineers can use DRAKON Editor to build algorithms in Java, Processing.org, D, C#, C, C++, Python, Tcl, Javascript, Erlang and Lua.
Здесь есть мелкая неточность, так как язык программирования называется Processing, а не Processing.org

Cм. Википедия: Processing (programming language)


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

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Владимир Паронджанов писал(а):
Здесь есть мелкая неточность, так как язык программирования называется Processing, а не Processing.org

Хм-м-м. Верно.
Но я не буду это исправлять. Слово processing уж больно сложно гуглить. А с processing.org всё ясно.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Степан, версия 1.19 запускается нормально, версия 1.21 не запускается, в терминале пишет:
Код:
./drakon_editor.tcl
/usr/bin/env: tclsh8.6: Нет такого файла или каталога


Пакета tclsh в стандартных репозиториях не вижу.
И в Readme.html ничего про это нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 15 Февраль, 2014 20:11 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Илья Ермаков писал(а):
Пакета tclsh в стандартных репозиториях не вижу.
И в Readme.html ничего про это нет.

Как обойти проблему:
Код:
tclsh drakon_editor.tcl

или
Код:
tclsh drakon_editor.tcl filename.drn


Оправдание
Типичная ситуация "голову вытащил, хвост увяз".
Под новыми версиями Mac OS хорошо работает только Tcl/Tk 8.6.
Поэтому пришлось перейти на 8.6. А на линуксах не везде есть 8.6.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Степан!

ERIL - великолепная штука, спасибо! :)
То, что давно нужно было кому-нибудь сделать :)

Начинаю использовать. В том числе со студентами!
Завёл отдельную тему:
viewtopic.php?f=121&t=4990


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 19 Февраль, 2014 03:11 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
Степан, а если в классах сделать 3 поля ?
1) Название класса
2) Атрибуты
3) Методы

Сразу будет видно разделение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 20 Февраль, 2014 11:59 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
adva писал(а):
Степан, а если в классах сделать 3 поля ?
1) Название класса
2) Атрибуты
3) Методы
Сразу будет видно разделение

Уже сейчас в классах 3 типа информации:
1) Название класса
2) Атрибуты
3) Индексы. Да-да! Индексы в классах! Почему нет?
Пример:
Вложение:
old.png
old.png [ 2.47 КБ | Просмотров: 13490 ]

Ещё можно добавить методы. Будет вот так:
Вложение:
methods.png
methods.png [ 2.96 КБ | Просмотров: 13490 ]

Но DRAKON Editor уже сейчас поддерживает методы в языке C#.
Чтобы диаграмму превратить в метод, её нужно назвать так: класс.метод
Например: Employee.ToString
Вложение:
methods2.png
methods2.png [ 29.6 КБ | Просмотров: 13490 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 21 Февраль, 2014 15:33 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
vasili111 писал(а):
...коментарии для параметров функции задаются при помощи использования // . Нельзя ли сделать так чтобы Drakon Editor для данного вида коментария использовал бы символ, который язык использует для обычных коментариев в данном языке?

Мысль была в том, чтобы иметь одинаковый формат для всех языков.
Но сейчас уже нехорошо что-то в этом менять. Много пользователей уже скачало редактор. Они наверняка насоздавали файлов. Можно сломать совместимость.
vasili111 писал(а):
Также в чем смысл использования #comment в качестве аргумента для функции?

Чтобы временно отключать диаграмму из генерируемого кода. Правда, не для всех языков это реализовано.
vasili111 писал(а):
Я понимаю что в данном случае функция не генерируется. Но в этом случае вызовы данной функции из других все равно остаются и они могут выдать ошибку при вызове.

Совершенно верно. Всё так и есть.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Продолжаются учебные эксперименты с ERIL-ом:

viewtopic.php?p=86231#p86231


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

Зарегистрирован: Среда, 13 Май, 2009 21:05
Сообщения: 153
Откуда: Саратов
У меня вопросы к Степану.
1. Есть ли какие-то мысли по поводу конструирования граф. интерфейса с использованием редактора при работе с tcl/tk? Или обходиться стандартной иконой "Действие" при описании элементов интерфейса?
2. Где можно указывать список файлов, текст которых нужно включить в программу?


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

Зарегистрирован: Среда, 13 Май, 2009 21:05
Сообщения: 153
Откуда: Саратов
И еще вопрос - в руководстве http://drakon-editor.sourceforge.net/tcl/tcl.html нет указания как реализовать цикл while
Это возможно?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 281 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 15  След.

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


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

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


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

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