LKom писал(а):
Мы много раз обсуждали Силуэт, как конструкцию имеющую структуру конечного автомата.
Так как, граф связей конечного автомата может содержать зацикленные связи и при этом нет никаких ограничений на их структуру, то и не должно быть ограничений и в Силуэте на связи веток.
При этом могут образоваться веточные циклы: которые могут иметь несколько входов, несколько выходов, быть вложенными, быть наложенными, быть пересекающимися.
Силуэт должен быть адекватен проблемной области.
Вы абсолютно правы. Сейчас Силуэт можно использовать как конечный автомат. Мои предложения об ограничениях на переходы в Силуэте были высказаны с целью сделать высказывание про "двумерное структурное программирование" истинным. Пока, как вы говорите Силуэт можно использовать как конечный автомат, соответственно, высказвание про "двумерное структурное программирование" не является правильным. Усидеть одновременно на двух стульях нельзя. Надо выбрать или мы говорим про конечный автомат и тогда не следует говорить про "двумерное структурное программирование" или же выбираем второе и добавляем определенные ограничения к Силуэту.
Владимир Паронджанов писал(а):
Rifat писал(а):
будет взаимооднозначное соответствие между примитивом и силуэтом.
Рифат, зачем?
У каждой из этих конструкций свои задачи.
Примитив нужен для простых алгоритмов, силуэт для сложных.
Сложные алгоритмы (любой сложности) можно изобразить с помощью силуэта (или системы силуэтов).
И нельзя — с помощью примитива.
Во-первых, про то, что нельзя какие-то алгоритмы изобразить с помощью примитива, это не так. Есть теорема Бёма и Якопини, которая доказывает, что достоточно всего три конструкции для представления любого алгоритма: последовательность, условие и цикл. Они в примитиве есть, поэтому и в примитиве можно можно изображать любые алгоритмы.
По поводу вопроса "Зачем?". Как сказал LKom, сейчас с помощью Силуэта можно представлять конечные автоматы. Но никто не говорит, что конечные автоматы - это большое открытие в области информатики и что конечные автоматы делают алгоритм сразу ясным и понятным. Если конечный автомат довольно большой, то очень сложно понять правильный ли он, для этого есть различные методы Model Checking, которые не сказать, что очень простые и которые практически нельзя проводить в уме. Поэтому высказывания про улучшение работы ума, ясные и понятные алгоритмы становятся неприменимыми к таким Силуэтам в которых представлен конечный автомат. С другой стороны, есть структурное программирование, которые называют одним из самых больших открытий в области информатики, которое позволяет значительно сократить количество ошибок и действительно описывать ясные и понятные алгоритмы. Поэтому мое мнение в том, чтобы ограничить произвольные переходы в Силуэте, тогда да, нельзя будет описывать произвольные конечные автоматы, но те алгоритмы, которые будут описаны, будут понятнее и правильнее.