DRAKON.SU
https://forum.drakon.su/

Про сложные задачи в Драконе
https://forum.drakon.su/viewtopic.php?f=178&t=3992
Страница 4 из 4

Автор:  ==== [ Воскресенье, 17 Июнь, 2012 12:36 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Dmitriid, вы ничего не сказали о видеороликах на http://www.drakon-practic.ru, т.е. о практике программирования на языке Дракон в интегрированной среде Дракон.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 13:03 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Геннадий Тышов писал(а):
Dmitriid, вы ничего не сказали о видеороликах на http://www.drakon-practic.ru, т.е. о практике программирования на языке Дракон в интегрированной среде Дракон.


Я их тоже видел. Они не отвечают на мои вопросы.

dmitriid писал(а):
Давайте с вами проведем один простой эксперимент. Я задам ровно один вопрос, а вы на него ответите, так, разнообразия ради.

Итак. Дракон позиционируется, как язык для представления алгоритмов любой сложности. Более того, его достаточно активно пиарили для решения задач, связанных с «обыкновенным программированием». Почему вы считаете заданные мной в первом сообщении некорректными и отказываетесь на них отвечать?

Автор:  ==== [ Воскресенье, 17 Июнь, 2012 13:13 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

dmitriid писал(а):
Я их тоже видел. Они не отвечают на мои вопросы.
Вы создали свои вопросы, Вам и искать на них ответы. Материал по Дракону Вам весь предоставлен.

Найдете ответы и вместе с вопросами расскажете нам.

Желаю успехов.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 13:24 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Геннадий Тышов писал(а):
Вы создали свои вопросы, Вам и искать на них ответы.

Я их и ищу. Как можно найти ответы на вопросы, если никто ответы на эти вопросы не предоставляет?

Геннадий Тышов писал(а):
Материал по Дракону Вам весь предоставлен.

Весь? Нуну. Где примеры реальных алгоритмов, где ответы на вопросы про параллельность, где ответы на вопросы про верификацию алгоритмов и т.п.? Где это все? Где хоть крупица информации хоть по одному из вопросов, заданных мной в первом сообщении?

Геннадий Тышов писал(а):
Найдете ответы и вместе с вопросами расскажете нам.

Вы эта... Нимб поправьте, он у вас немножко косо сидит.

Автор:  ==== [ Воскресенье, 17 Июнь, 2012 13:43 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Dmitriid, ищите ответы на любой вопрос.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 13:49 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Поиск ответов на вопросы включает в себя так же следующий процесс:
- незнающий или интересующийся человек задает вопрос
- знающий человек отвечает на этот вопрос

Вы лично ответили хоть на один мой вопрос? Нет. Идите, полируйте свой нимб дальше вместе с TAU. Я продолжу конструктивную беседу со Степаном, Ильей и Валерием.

Автор:  Valery Solovey [ Воскресенье, 17 Июнь, 2012 13:50 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

dmitriid писал(а):
Нет, важно. В том же Erlang'е очередь сообщений у каждого процесса(потока) своя.
Что значит "своя очередь"? Это очередь, из которой поток выбирает сообщения для их обработки. Только и всего. Но если к этой очереди больше нет ни у кого никакого доступа, то кроме самого потока сообщения в неё никто добавить не сможет. А чтобы была возможность добавлять сообщения, то прямой или косвенный доступ к очереди у другого потока должен иметься. А значит, очередь - это ресурс, который находится в сфере влияния нескольких потоков. Можно сказать, что он "глобальный". И влияние на него оказывают оба потока, только влияние это находится в разных плоскостях.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 14:09 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Valery Solovey писал(а):
Что значит "своя очередь"? Это очередь, из которой поток выбирает сообщения для их обработки.


Да

Valery Solovey писал(а):
А значит, очередь - это ресурс, который находится в сфере влияния нескольких потоков.


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

Valery Solovey писал(а):
Можно сказать, что он "глобальный". И влияние на него оказывают оба потока, только влияние это находится в разных плоскостях.


Именно. И эту разницу необходимо отразить при описании алгоритма. Иначе человек, который пришел из «классической» школы, в которой все построено на мьютексах, локах и доступе к разделяемым данным, увидя такую глобальную переменную в алгоритме, будет думать о мьютексах, локах и разделяемых данных. И, соответсвенно, у него будет другой подход к алгоритму, потому что он будет считать эту глобальную переменную/очередь бутылочным горлышком. А она таковой не является.

То есть с точки зрения именно алгоритма очереди сообщений в Erlang'е полезно считать локальными для процесса, а не разделяемыми между несколькими процессами, потому что у нас есть возможность реализовать несколько вариантов:
- локальные очереди процессов (неблокирующие, не требующие мьютексов и т.п.)
- разделяемые данные (блокирующие, требующие мьютексы и т.п.)
- синхронные сообщения, использующие неблокирующие очереди (см. call)
- асинхронные сообщения, использующие те же неблокирующие очереди (cast)

И было бы хорошо иметь возможность указать эту разницу при создании алгоритма.


Да, вот только что в голову пришло. Тут можно посмотреть, как выглядят типичные системы, написанные на Erlang'е «изнутри» (со всеми процессами и т.п.). Если мы будем использовать только глобальные переменные для описания взаимодействия процессов, то можно будет запутаться во всех этих переменных и кто и когда их изменяет.

То есть хотелось бы иметь более наглядную систему для описания взаимодействия разных процессов/потоков.

Автор:  Valery Solovey [ Воскресенье, 17 Июнь, 2012 14:17 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Геннадий Тышов писал(а):
Dmitriid, ищите ответы на любой вопрос.
Один из рассказов Шекли заканчивался фразой "Чтобы задать правильный вопрос, нужно знать большую часть ответа". Что-то есть в этой фразе... Ответить на вопрос может и получится, но вопрошавший может оказаться недостаточно подготовленным, чтобы его понять. Поэтому особого смысла отвечать нет.

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

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 14:32 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Правка: цитируемое сообщение было предназначено не мне, приношу извинения Валерию.

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

Это демагогия и менторство.

Valery Solovey писал(а):
Но активные участники данного форума, задававшие Вам вопросы получали на них ответы... Не знаю как для кого, но на мой взгляд весьма загадочные. Такое чувство, будто Вы пользуетесь принципом "Вы хотите поставить меня в тупик своими вопросами, а я вас поставлю в тупик своими ответами".

Что вы имеете в виду? Задайте уточняющий вопрос, я на него отвечу. В этом ведь состоит принцип цивилизованной дискуссии, не?

P.S. Только сегодня в чате по Erlang'у был задан вопрос: «мм а что значит решетка ) что то я до сих порне сталкивался с таким) A#arg.state или State = #upload{},». Это вопрос уровня человека, который вообще ничего не читал про Erlang, и вместо того, чтобы читать про Erlang, решил сразу задавать вопросы. Вместо того, чтобы почти неприкрыто послать такого человека на три буквы (как это делают некоторые участники здесь), два человека быстро и корректно объяснили, что это такое. Человек сказал спасибо и продолжил свои изыскания.

Поэтому реакция «ты тупой, иди на хер отсюда», с которой я тут столкнулся, мягко говоря, меня удивляет.

Автор:  Valery Solovey [ Воскресенье, 17 Июнь, 2012 14:35 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

dmitriid писал(а):
То есть с точки зрения именно алгоритма очереди сообщений в Erlang'е полезно считать локальными для процесса, а не разделяемыми между несколькими процессами, потому что у нас есть возможность реализовать несколько вариантов:
...
И было бы хорошо иметь возможность указать эту разницу при создании алгоритма.
Я лишь хотел сказать, что то, что Вы хотите от языка программирования в плане многопоточности не является таким уж недостижимым. Просто, в Эрланге этот механизм идёт в стандартной поставке (плюс ещё куча всего другого в виде OTP), а для ДРАКОНа, который пока тощий и золотых гор за душой не имеет, это придётся реализовывать самому.

Правда, не стоит забывать про назначение ДРАКОНа, и сделать такой механизм эргономичным. Увы, на любом языке можно написать программу на фортране. Если язык помогает в эргономике, то из этого автоматом не следует, что программы на нём эргономичны. Нужно прилагать некоторые усилия, в простых - и хорошо изученных - случаях эти усилия ничтожны. Для синхронизации потоков - это область исследований. Что поделать - в реальных задачах, где используется ДРАКОН "потоки" крутятся по одному на железку, и синхронизация там обеспечивается иначе, чем на настольных компьютерах.

P.S. см. Л.С.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 14:45 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Valery Solovey писал(а):
Я лишь хотел сказать, что то, что Вы хотите от языка программирования в плане многопоточности не является таким уж недостижимым. Просто, в Эрланге этот механизм идёт в стандартной поставке (плюс ещё куча всего другого в виде OTP), а для ДРАКОНа, который пока тощий и золотых гор за душой не имеет, это придётся реализовывать самому.


Я с этим не спорю :) Возможно, мои замечания подтолкнут сделать в Драконе (в его графической части) новые примитивы/способы для наглядного представления разных способов организации параллельных вычислений. Из нашего разговора я понял, что, увы, для графического описания достаточно большого круга задач, решаемых на том же Erlang'е, Дракон пока не подходит.

Спасибо!
Valery Solovey писал(а):
Что поделать - в реальных задачах, где используется ДРАКОН "потоки" крутятся по одному на железку, и синхронизация там обеспечивается иначе, чем на настольных компьютерах.


Это мне напомнило: на недавней конференции на одном из выступлений было сказано: «сейчас у нас странная ситуация. "Железками" называется огромное количество радикально разных вещей — от микроконтроллеров с килобайтами памяти до монстров с 4-ядерными процессорами и сотнями мегабайт памяти» :) Но я понимаю, о чем вы говорите

Автор:  Александр Ильин [ Воскресенье, 17 Июнь, 2012 15:50 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

dmitriid писал(а):
P.S. Только сегодня в чате по Erlang'у был задан вопрос: «мм а что значит решетка ) что то я до сих порне сталкивался с таким) A#arg.state или State = #upload{},».

Поэтому реакция «ты тупой, иди на хер отсюда», с которой я тут столкнулся, мягко говоря, меня удивляет.
В процитированном вами сообщении новичок в Эрланге в первом же своём сообщении никого из заслуженных участников чата не называет клоунами и не употребляет слово "сливаться" (это отсылка к сортиру, не так ли?), так что удивляться особо нечему. Элементарная вежливость. Иначе забанили бы, не?

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 16:52 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Александр Ильин писал(а):
В процитированном вами сообщении новичок в Эрланге в первом же своём сообщении никого из заслуженных участников чата не называет клоунами и не употребляет слово "сливаться" (это отсылка к сортиру, не так ли?), так что удивляться особо нечему.

Да, не спорю, пришел я на форум с излишне резкой характеристикой. Но, к сожалению, моя характеристика продиктована несколькими днями обсуждения Дракона на РСДН. Как я уже говорил, для меня человек по ту сторону экрана характеризуется исключительно буквами, что он пишет. И Паронджанов, судя по всему, намеренно игнорировал любые заданные ему вопросы (так же как это делали TAU и Тышов).

Все это я уже детально описал тут: viewtopic.php?f=78&t=3992&start=20#p73144

Александр Ильин писал(а):
Иначе забанили бы, не?

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

Автор:  TAU [ Воскресенье, 17 Июнь, 2012 22:54 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Valery Solovey писал(а):
dmitriid писал(а):
Rational Rose, Visual Studio, Altova UModel (и так далее, их десятки) для генерации кода из UML
Насколько я помню, после генерации из UML работа не заканчивается, а только начинается

Вообще говоря, ни Rational Rose, ни Visual Studio ничего особо полезного не генерируют - лишь шаблоны интерфейсов классов из UML-диаграммы классов. Здесь, совершенно правильно подмечено, все лишь начинается.Это если говорить о "мэйнстриме".

Специализированные средства существуют (например, QL или отечественный UniMod), которые позволяют генерировать программу на С, С++, Java по UML-диаграмме конечного автомата. Вряд ли можно считать это среством получения полноценной программы произвольного назначения.

Полагаю, что даже существующие - а еще важнее- перспективные возможности сред Тышова и особенно Митькина - учитывая впечатляющую скорость совершенствования - в плане генерации программ лучше. Хотя и здесь в определенном смысле Вы правы - программу на "промежуточном" языке С/С++/Erlang и пр. еще нужно перевести в машинный код.

Не говоря уж о ГРАФИТ/ФЛОКС, специализированной, где на выходе получается, насколько я понимаю, именно готовая к прошивке в ПЗУ исполняемая программа.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 23:11 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

TAU писал(а):
Вряд ли можно считать это среством получения полноценной программы произвольного назначения.


Я предположу, что и на Драконе программу произвольного назначения получить не удастся. По тем же причинам

TAU писал(а):
Хотя и здесь в определенном смысле Вы правы - программу на "промежуточном" языке С/С++/Erlang и пр. еще нужно перевести в машинный код.


Не только. Например, для генерации программ на Erlang'е невозможно использовать сопоставление с образцом и функции, использующие сопоставление с образцом (см. сообщение Степана Митькина), что приводит к далеко не самому оптимальному коду, и не позволяет компилятору проводить оптимизацию этого кода. Отсутствие средств для обозначения параллелизма (см. viewtopic.php?f=78&t=3992&start=60#p73183) также ставит под сомнение возможность эффективно использовать языковые средства и библиотеки (например, деревья контроля).

То есть полученный на выходе код надо будет активно дорабатывать вручную.

Я не говорю, что это невозможно и никогда в Драконе не будет. Но такова ситуация на данный момент.

TAU писал(а):
Не говоря уж о ГРАФИТ/ФЛОКС, специализированной, где на выходе получается, насколько я понимаю, именно готовая к прошивке в ПЗУ исполняемая программа.


Для того, чтобы получить такой же эффект на другом языке программирования, надо, чтобы эта база и объекты в ней были реализованы для того самого другого языка программирования.

Автор:  TAU [ Воскресенье, 17 Июнь, 2012 23:12 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Valery Solovey писал(а):
Что поделать - в реальных задачах, где используется ДРАКОН "потоки" крутятся по одному на железку, и синхронизация там обеспечивается иначе, чем на настольных компьютерах

Валерий, Вы не правы. Вернее, не совсем правы.

Если мы говорим о "реальных задачах", мы можем говорить с уверенностью на данный момент лишь:
1. Об использовании ГРАФИТ/ФЛОКС.
2. Об использовании сред Тышова (насколько мне известно по этому форуму, для программирования их практически применяют вроде как Ярослав Романченко, Петр Приклонский и Сергей Ефанов) и Митькина (пока мне известно, что сам Степан использует свою систему - "самораскрутка" :) ).

По БЦВМ "Бисер", используемых в качества целевой платформы в ГРАФИТ/ФЛОКСе, у нас по понятным причинам сведений по организации вычислительного процесса нет, мы можем лишь предполагать, присутствует ли на одной машине несколько потоков, или нет.
В принципе, для управления КА БЦВМ с многозадачными операционными системами реального времени - естественно, с параллелизмом и многими потоками на одной машине, - и в нашей стране, и за рубежом достаточно давно и успешно применяются.

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

Митькин ведет разработку явно на персоналке с многозадачной ОС.

Поэтому с уверенностью утверждать под Вашим предположением я бы не спешил подписываться.

Автор:  dmitriid [ Воскресенье, 17 Июнь, 2012 23:13 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

TAU писал(а):
позволяют генерировать программу на С, С++, Java по UML-диаграмме конечного автомата. Вряд ли можно считать это среством получения полноценной программы произвольного назначения.


И да, совсем забыл: Дракон тоже реализует именно КА. То есть конечная программа будет программой, реализующей этот КА. Вопрос о программах, не укладывающихся в КА, остается открытым.

Автор:  Евгений Темиргалеев [ Понедельник, 18 Июнь, 2012 11:52 ]
Заголовок сообщения:  Re: Про сложные задачи в Драконе

Тема закрыта: viewtopic.php?p=73194#p73194

Страница 4 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/