andr писал(а):
==========================
TAU писал(а):
andr писал(а):
9. Языки описания потоков данных (dataflow)
почему эти два вида схем отнесены к разделу
Языки графического описания структур данных?
Потому что, видимо, Вы оперируете неполной "нарезкой" из книги.
На самом деле в книге не так.
Мне обещали принести эту книгу (может быть уже приносили - меня не было на работе).
Надо будет разобраться.
Автор книги любезно предоставил в пользование полный файл книги:
А.А. Тюгашев.
Графические языки программирования
и их применение в системах управления реального времени.
- Самара, 2009. - 100 с.
Очень кстати все получилось.
Как раз сейчас надо иметь под руками такую целевую (по жестким требованиям) аналитическую сводку по таким языкам.
Хорошая настольная книга (на рабочем столе персонального компа).
Некоторые (вопросительные и для личных уточнений) замечания - по ходу чтения книги:
------------------------------
Раздел 1.
Тенденции развития современных языков программирования1 (с. 9)
Цитата:
К направлениям исследований и разработок в области языков
программирования четвертого поколения могут быть отнесены:
1. Проблемно-ориентированные языки программирования.
2. Декларативный подход к программированию.
3. Языки визуального (графического) программирования.
4. Использование в программировании подмножеств естественного
языка.
1)
Это в дополнение к общему аналитическому обзору книги по графическим языкам
(для полноты графических ощущений).
Есть желание отнести к языкам графического программирования
(или как-то ассоциировать с ними)
язык
логических схем алгоритмов (ЛСА) и
параллельных ЛСА (ПЛСА).
Например - достаточно полное описание общих принципов ЛСА и ПЛСА в неожиданном приложении:
А.Е. Кононюк. КОНСАЛТОЛОГИЯ. ОБЩАЯ ТЕОРИЯ КОНСАЛТИНГАhttp://fs.onu.edu.ua/clients/client11/web11/pdf/konsalting-3.pdfр. 3.3.
Консультационные алгоритмы и языки их описания (с. 107 - )
р. 3.3.1.
Последовательный консультационный алгоритм и его свойства (с. 107)
ЛСА (логические схемы алгоритмов, соответствующие им МСА (матричные схемы алгоритмов),
работа с ними (преобразования, минимизация, объединение ЛСА).
р. 3.3.4.
Описание параллельных консультационных алгоритмов (с. 134 и далее)
И дальше идет привязка ЛСА и ПЛСА к сетям Петри (рассмотренных ранее)
ЛСА и ПЛСА - Это какая-то
смежная или переходная форма:
а)
С одной стороны - это
литерный (текстовый) язык:
особые структурные формулы алгоритмов со "поперечными" стрелками
нелинейных условных и безусловных переходов.
б)
С другой стороны - поперечные стрелки ЛСА (исходящие и входящие)
легко дополняются
явными или воображаемыми графическими связями.
А ПЛСА с явными связями легко переводятся из одномерной формы записи (строкой)
в
двухмерную графическую форму.
При этом ЛСА появились еще в 1953 г. - для высокоуровневого представления
низкоуровневых машинных исходных кодов,
и применялись для автоматизации низкоуровневого системного программирования.
А затем появились ПЛСА - для еще более низкоуровневого микропрограммирования.
В этом смысле такое
специфическое визуальное программирование
относится, по-видимому, еще
к языкам программирования первого поколения:
точнее - это, по-видимому,
фундаментальные низкоуровневые предпосылки графических языков.
Полезная получилась наводка - для полноты теоретических графических представлений
(в смысле поколений языков).
2) (с. 11)
Цитата:
Таким образом, языки программирования, с одной стороны, могут быть
классифицированы по «уровням»:
1. Языки программирования «низкого уровня», к которым относят язык
машинных кодов и язык ассемблера (автокода).
2. «Языки высокого уровня», такие, как Фортран, Паскаль, Си, и др.
3. Языки «сверхвысокого уровня», приближенные к специфике
предметной области решаемых задач.
C другой стороны, языки программирования могут быть отнесены к
тому или иному «поколению»:
1. Первое поколение – машинные коды.
2. Второе поколение – ассемблер (автокод).
3. Третье поколение - «языки высокого уровня» (Си, Паскаль, Java, и др.).
4. Четвертое поколение.
Согласно замечаниям по п. 1)
графические языки, по-видимому, сами имеют поколения - параллельные поколениям текстовых языков,
и могут быть вынесены из общего 4-го поколения с самостоятельную ветвь классификации.
Это получается достаточно неожиданно - и надо еще думать, насколько это адекватно (чему?).
-------------------------------------
Раздел 2 (с. 14).
Преимущества визуального представления программОтражены полезные аспекты с точки зрения соотношения:
логики и психологии вербального (словесного) мышления
и
логики и психологии образного (визуального образного) мышления.
Вообще-то образное мышление исторически формировалось и развивалось
с опережением по отношению к вербальному мышлению.
Но интересно, как это соотносится с литерным (вербальным) и визуальным (образным) программированием.
Здесь, видимо, обратное соотношение и объективно необходимый
обратный подпор парадигм.
--------------------------------
Раздел 3.
Классификация средств графического программированияЗдесь несколько (много) классификаций по разным основаниям.
Представляет интерес их примерить по конкретным областям приложения (прикладным интересам):
по ходу последующих намерений.
--------------------------------------
Раздел 5 (с 29).
Учебные языкиВыделяются как самостоятельный класс визуальных языков.
Несколько неожиданно, но это само собой разумеется.
И сразу же:
5.1.
ScratchЦитата:
Язык Scratch является одной их вариаций на тему языка программирования Smalltalk,
созданного одним из основоположников объектно-ориентированного программирования Аланом Кэем [28].
Основной идеей, положенной в язык Smalltalk, является то,
что всё является объектами, обменивающимися сообщениями.
Фактически Скрэтч - это
первичная форма объектной ориентированности:
уже есть объекты, но еще нет других атрибутов объектно-ориентированного программирования.
В частности:
-- нет объектов-классов - для порождения, обслуживания и ликвидации объектов-экземпляров классов
(порождение-ликвидация имитируется ручным копированием и удалением объектов);
-- нет наследования классов и т.д.
Но это уже мощное продвижение в раннем обучении программированию:
уже
дети младшего школьного возраста успешно
овладевают элементами параллельного программироания(даже не всегда подозревая это).
И это уже используется
в образовательной робототехнике.
Все это связано также со следующими обстоятельствами:
Цитата:
При этом Smalltalk представляет собой не просто язык программирования,
но и среду исполнения с графическим интерфейсом – в
этой области он также был одной из пионерских разработок.
При этом для объектов широко используется визуальная метафора – им сопоставляется
картинка на экране, которая может при этом вращаться, передвигаться, и т.д.
Наглядные свойства объектов, отображаемых визуально на экране в среде
исполнения Smalltalk, такие, как цвет, угол поворота, положение, интуитивно
хорошо понятны
и
позволяют легко производить с ними манипуляции,
как вручную средствами среды исполнения,
так и путем воздействия других объектов (в программе).
Данное обстоятельство широко используется при
использовании Smalltalk’a для начального обучения детей
программированию.
В этой связи прежде всего можно назвать такие
разработки, как Squeak e-Toys, Scratch).
Более того - это оказалось удобным средством оперативной подготовки
примеров
визуального имитационного моделирования динамических мнемосхем
технических, технологических и робототехнических систем
для введения в теорию параллельных алгоритмов:
для младших студентов (и старших школьников).
Цитата:
Рассматривая «визуальные» программы на Scratch, можно отметить, что
фактически они представляют собой иную форму отображения
традиционных текстов программ – цветные «кирпичики»
есть аналог
синтаксических диаграмм Несси-Шнейдермана,
подчеркивающих
построение текста программы в соответствии с правилами структурного
программирования.
Вот те на.
Я то думал, что первый распознал в скриптах визуальных объетов (спрайтов)
диаграммы Несси-Шнейдермана.
Нигде в литературе по Скрэтчу этого не говорится (не встречал, по крайней мере).
В стандарте
http://www.gametest.ru/doc/sw/8631_94.pdfони называются структурными диаграммами программ (СПД).
Но это существенно усовершенствованные диаграммы Несси-Шнейдермана (СПД):
1)
с вертикальным исполнением составных операторов - скобы операторов условных ветвлений и циклов
(это есть в других разновидностях детских графических языков).
2)
Используется высокая автоматизация в точной ручной сборке стеков команд,
с автоматической развижкой скоб составных операторов и т.п.
Цитата:
Таким образом, несмотря
на широкое применение визуальной
метафоры и манипуляцию графическими образами управляющих
конструкций,
назвать Scratch действительно визуальным языком можно
только с определенной натяжкой
Это разновидность
структурограмм алгоритмов и программ.
Наряду с блок-схемами, граф-схемами алгоритмов и программ и т.п.
Но специфическая разновидность.
Основная
особенность:
отдельные литерные команды
(с полями для вставки, выбора или записи параметров)
вставляются в отдельные вытянутые узкие по высоте блоки - бруски.
Обеспечивается их удобная последовательная сборка как пазлов.
И
нет явных графических линий связей передачи управления.