<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="ru">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">О представлении результатов анализа языков и систем программирования</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Л</forename><forename type="middle">В</forename><surname>Городняя</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">A.P. Ershov Institute of Informatics Systems (IIS)</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">L</forename><forename type="middle">V</forename><surname>Gorodnyaya</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">A.P. Ershov Institute of Informatics Systems (IIS)</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">О представлении результатов анализа языков и систем программирования</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">4B290CA229B935A1B4CEECAA6D2E27AB</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T16:18+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Аннотация. Статья посвящена выбору формы для представления результатов сравнения языков и систем программирования, удобной для оценки выразительной силы языков и трудоёмкости реализации систем. Формализация приспособлена к парадигмальному анализу определений языков программирования и выбору практичных критериев декомпозиции программ, что можно рассматривать как подход к решению проблемы факторизации определений языков и систем программирования. В качестве основного параметра факторизации выбрана семантическая декомпозиция определений в рамках анализа парадигм программирования. Такой выбор позволяет выделять автономно развиваемые типовые компоненты систем программирования, которые могут быть приспособлены к конструированию различных информационных систем. Многие работы по методам разработки программных систем зависят от практичности подходов к декомпозиции программ, что можно рассматривать как проблему факторизации программ на базе языков программирования, отлаживаемых с помощью систем программирования. Решение этой проблемы полезно для сравнения парадигм программирования, потенциала используемых схем и моделей, оценки уровня новизны создаваемых языков программирования, а также при выборе критериев декомпозиции программ. Кроме того, их существование позволяет формировать методику обучения разработке компонентов информационных систем. Попутно показана дистанция в понятийной сложности между программированием и разработкой систем программирования.</p><p>Ключевые слова: определение языков программирования, парадигмы программирования, декомпозиция программ, критерии декомпозиции, семантические системы.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="ru">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>assessing the expressive power of languages and the complexity of the implementation of systems. The formalization is adapted to the paradigm analysis of the definitions of programming languages and the choice of practical criteria for the decomposition of programs, which can be considered as an approach to solving the problem of factorization of the definitions of programming languages and systems. Semantic decomposition of definitions in the framework of the analysis of programming paradigms is chosen as the main parameter of factorization. This choice allows you to allocate autonomously developed standard components of programming systems that can be adapted to the design of various information systems. Many works on methods of development of software systems depend on the practicality of approaches to program decomposition, which can be considered as a problem of factorization of programs based on programming languages debugged with the help of programming systems. The solution to this problem is useful for comparing programming paradigms, the potential of the schemes and models used, assessing the level of novelty of the programming languages created, as well as for selecting the criteria for program decomposition. In addition, their existence allows to form a training methodology for the development of components of information systems. Along the way, the distance between the conceptual complexity of programming and the development of programming systems is shown.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Key words: definition of programming languages, programming paradigm,</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Введение</head><p>Долгоживущие программы, такие как системы программирования (СП), требуют объективных критериев декомпозиции программ, отражающих возможность автономного развития выделенных компонентов СП с целью профилактики повторного программирования при развитии реализуемого языка программирования (ЯП).</p><p>В данной статье предлагается ряд решений для формализованного представления метрического пространства, полезного при измерении понятийной сложности конструкций, поддержанных в определениях языков и систем программирования (ЯСП). Такое пространство может быть применено при сравнении парадигм программирования (ПП), потенциала используемых при разработке программ схем и моделей, оценки уровня новизны создаваемых ЯП, а также при выборе критериев декомпозиции программ. Соответствующее обозначение такого вида семантических систем можно представить как &lt;V; F; R&gt;. Вид &lt;V; F; R&gt; характерен для ЯП, обладающих чётким разделением данных и программ, а также для языков управления базами данных.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Математические абстракции</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Архитектурные модели</head><p>Наиболее известные компьютерные архитектуры обычно представляют как конструкцию из вычислительного устройства (E), памяти (M), устройства управления процессами (C) и средств коммуникации между устройствами и их элементами (S). Такая конструкция допускает детализацию на уровне более тонких аппаратных решений и расширение на уровне периферийных устройств, что даёт первое приближение для выбора основных видов семантических систем в языках программирования <ref type="bibr">[3]</ref>. Рассматривая любые семантические системы, важно отметить разницу в характере выполнения функций таких систем. Так для любого множества значений V реализационно различимы виды функций для методов вычислений FE: (V* → V+), средств доступа к памяти FM: (T : N → V), особенностей управления вычислениями FC: (F → {0, 1})* и обратимой комплексации и структурирования данных FS:</p><formula xml:id="formula_0">(A → K) U (A ← K) = (A ↔ K).</formula><p>Следует обратить внимание, что такие виды семантических систем обладают кумулятивным эффектом в порядке «VEMCS». Если Vпроизвольное множество значений, то FE: (V* → V+)обычные вычисления, заданные формулами над значениями из этого множества, а формула может представлять самоопределимое константное значение из V. Для реализации средств доступа к памяти FM: (T : N → V)характерно выделение понятия "адрес" (N) и подразумевается существование специальной таблицы T, по которой определено соответствие адресов заданным значениям, при задании которых могут использоваться формулы вычислений. Особенности управления вычислениями FC: (F → {0,1})* используют разметку запрограммированных действий для выделения выполняемых, обычно используя понятие адресуемой памяти. Обратимая комплексация или структурирование данных в современных архитектурах FS: (A ↔ K) требует определения границы между атомарными (А) и сложными, конструируемыми (К) объектами с возможностью как наращивания сложности, так и упрощения любых построений с учётом разных условий.</p><p>Это приводит к представлению о кумулятивной шкале семантических систем на основе классификации видов функций.</p><p>Таблица 1 Классы семантических систем</p><formula xml:id="formula_1">№ столбца V E M C S Виды функций (F V) V FE: V* → V+ FM: (T : N → V) V = N U V FC: (F → {0, 1})* 1 V = {0,1} U V FS: (A → K) U (A ← K) V = A U K</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Понятийная матрица</head><p>Одним и тем же наборам функций могут соответствовать разные правила R, определяющие методы вычислений, влияющие на результативность выполнения программ.</p><p>REобычные арифметические вычисления, отображающие произвольный ряд значений аргументов в не менее чем один результат, RMсимвольные вычисления, подставляющие представления аргументов без их предварительного вычисления, RCчастичные или смешанные вычисления, лавирующие между вычислением и подстановкой в зависимости от разных условий, RSобобщённые и параллельные вычисления, оперирующие организацией процессов как множеством потоков над комплексами из разных устройств.</p><p>Представление таких различий можно выразить, дополнив горизонтальную шкалу видов функций вертикальной кумулятивной шкалой моделей вычислений или методов применения функций к значениям (R), что будет выглядеть как матрица семантических системпонятийная матрица. Различия классов семантических систем на уровне правил применения функций к значениям в ЯВУ выражены таблицами 2-5. Первая строка этой матрицы представляет уровень базовой семантики ЯП, существенные различия видов функций семантических систем которого можно представить Таблицей 2. Вторая строка Таблицы 3 представляет уровень макрорасширений, что вместе с первой строкой позволяет характеризовать средства языков низкого уровня.</p><p>Таблица 2 Семантическая декомпозиция минимального ядра ЯП</p><formula xml:id="formula_2">№ столбца V E M C S Виды функций V FE: V* → V+ FM: (T : A → V) FC: {F → {0,1}} FS: A ↔ K RE: Ядро Значение Операции Память Управление Вектор</formula><p>Ядросемантический базис. Полное определение ЯП можно получать как консервативное расширение ядра. Обычно ядро приспособлено и к неконсервативному расширению пополнением набора библиотечных функций, реализуемых на уровне аппаратуры. Это позволяет в реализации СП для любого ЯП поддерживать разные парадигмы программирования, необходимые для поддержки полного жизненного цикла программ, чтобы достигать результата независимо от исходных возможностей ЯП.</p><p>Значениеминимальное представление объектов из области приложения языка, обычно это самоопределимые константы.</p><p>Операцииминимальный комплект функций для обработки значений. Памятьвведение адресов для лаконичного и уникального представления значений (указатели, идентификаторы, переменные, метки).</p><p>Управлениеразметка выполнимости композиции элементов программы из (операций, функций, действий и т.п.) специально выбранными значениями, например, {0|1} или {True | False} или {Nil | T}.</p><p>Векторобратимое конструирование одноуровневых комплектов, рассматриваемых как целостность, из которых можно восстанавливать исходные элементы. На уровне ядра достаточно одной структурывектора, списка, очереди или т. п.</p><p>Таблица 3 Семантическая декомпозиция макрорасширения ядра ЯП</p><formula xml:id="formula_3">№ столбца V E M C S Виды функций V FE: V* → V+ FM: (T : A → V) FC: {F → {0,1}} FS: A ↔ K RE: Ядро Значение Операции Память Управление Вектор RM: Макро Данное Функции Задание Блоки Стек</formula><p>Макропополнение ядра средствами обработки представлений, используемых с целью укрупнения любых конструкций, что позволяет выполнять консервативное расширение ЯП. Кроме того, оно способствует лаконизму текстов программ. Макротехника позволяет наследовать отлаженность фрагментов программ. Бывает важным исключать дубли частей текста, кода и структур данных. Простейший механизм макрогенерации обычно присутствует в СП как препроцессор. Также бывает устроена техника кодогенерации и обработки шаблонов при компиляции программ. Реализация укрупнений может быть функционально эквивалентна вызову подпрограмм. Взаимозаменяемость макроподстановки и вызова подпрограмм нередко используется при оптимизации программ.</p><p>Данноехранимое значение или выражение, допускающее уникальность экземпляра, доступного многократно по адресу, возможно, на внешнем устройстве.</p><p>Функцииукрупнение операций с возможной параметризацией операндов. Реализационная прагматика может отличаться техникой передачи параметров через стек или специальное поле аргументов или неявно. Последнее позволяет и работу с памятью формально рассматривать как функцию с неявным аргументом, выполняющим роль функции Т, задающей соответствия адресов и значений.</p><p>Заданиехранимое именованное выражение с возможностью многократного выполнения.</p><p>Блокихранимое выражение или код программы, представляющий составные действия, ветвления, циклы, вызовы функций, обычно с локализацией переменных, приводящей к понятию «иерархия».</p><p>Стексхема организации данных, с определённой дисциплиной доступа для поддержки иерархии, возможно с защитой независимых блоков.</p><p>Повышение уровня ЯП обеспечивается не только особым вниманием к средствам укрупнения данных на базе понятия «иерархия» и оперирование блоками программы. Дальнейшее наращивание объёмов разрабатываемых программ отчасти достигается автоматизацией контроля некоторых условий корректности применения операций и функций к их операндам в определённых границах. Становятся важными понятия «предикат» и «тип переменных», удобно проверяемые при компиляции, что представлено третьей строкой Таблицы 4. По мере расширения границ программа может стать достаточно универсальной, способной к разумному поведению на любых входных данных, что выражено в Таблице 5, в которой добавлена слева колонка с обозначениями строк полученной понятийной матрицы. Общностьдополнительные средства обеспечения отладки и применения программ, поддерживающие возможность разумного продолжения вычислений при любых исходных данных и аварийных ситуациях.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Таблица 4 Семантическая декомпозиция диагностического дополнения ядра ЯП</head><formula xml:id="formula_4">№ столбца V E M C S Виды функций V FE: V* → V+ FM: (T : A → V) FC: {F → {0,</formula><p>Неопределённостьвводятся специальные дополнительные значения и ловушки ( _|_, Error, Future). Такое расширение множества значений позволяет учитывать в текстах программ некоторые отдельные особенности процесса разработки, отладки и схемы жизненного цикла программ.</p><p>Мультиоперациидопускается произвольное число операндов операций, аргументов и результатов функций. Возможно просачивание определений на однородные структуры данных, позволяющее определения над элементарными данными автоматически распространять на более сложные данные.</p><p>Внешний мирмеханизм неявного расширения области действия операций и функций на периферийные устройства, рассматриваемые как обобщение памяти.</p><p>Отображениевозможность регулярного применения функции серии данных благодаря использованию представлений функций или указателей в качестве аргументов функций более высокого порядка.</p><p>Ввод-выводсредства приёма данных с внешних устройств и размещения данных на внешних носителях данных, включая средства доступа к устройствам с уровня программы. Стандартно имеется в виду приём данных с клавиатуры и изображение данных на экране. Обычно подразумевается аксиоматика, требующая совместимости форматов ввода-вывода: для всякого вводимого данного существует эквивалентное ему выводимое данное и обратно если данное может быть выведено, то его можно ввести без потерь.</p><p>Таким образом, разным видам функций относительно схемы применения функций к аргументам на уровне ЯП при реализации СП соответствуют определённые позиции специальной понятийной матрицы, полученной как двумерная кумулятивная шкала. Кумулятивный эффект по второму измерению получается совмещением результатов ячейки EM Обработка памяти над таблицей адресов с соответствующими им значениями. Адреса и таблица могут быть значениями или не рассматриваться как значения и использоваться неявно как сущности другой природы. Появляется именование значений и формул, что расширяет класс допустимых формул, обеспечивает многократное использование хранимых результатов и приводит к понятию «данное».</p><formula xml:id="formula_5">[E,S] c [M,V], [M,S] с [C,V], [C,S] с [S,V].</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>EC</head><p>Безусловное и условное (без «else») управление процессом вычислений, приоритеты в формулах вычисления и переход к очередному действию или по метке.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>ES</head><p>Конструирование последовательностей по принципу соседства и перебора слева направо дополняются возможностью возвратов или выбора любого элемента ради обратимости. Как правило это вектора или строки.</p><p>MV Хранимые данные могут иметь имена, что позволяет решать проблемы укрупнения используемых единиц, воспринимаемых равноправно со скалярами и операциями. Возникают имена логических значений для представления условий выбора хода процесса.</p><p>ME Композиции операций рассматриваются как безымянные функции, равноправные базовым операциям, они могут обрабатывать и вырабатывать не только скаляры, но любые определённые данные, используя упаковку ряда значений в последовательность.</p><p>MM Именование функций упрощает их многократное использование в формулах, включая представление рекурсии.</p><p>MC Композиции операций и функций можно рассматривать как одно действие, что приводит к понятию «блок», выделенный скобками, на порядок вычислений и задающими области видимости имёниерархия. Появляются системные процедуры, что может приводить к неконсервативным расширениям.</p><p>MS Структуры однородных данных и процессов сопровождаются дисциплиной доступа к элементам -FIFO, FILO, взаимоисключение, одновременность или др.</p><p>CV Множество значений пополняется специальными представлениями сигналов «успех-провал» процесса независимо от существования логических значений, а также текстами диагностических сообщений.</p><p>CE Появляется понятие «предикат» и специальная функция ERROR для выбора обработчиков диагностических ситуаций и продолжения недоопределённых вычислений.</p><p>CM Появляется типизация значений и данных, а также сигнатур операций и функций, используемая для профилактики неудачных вычислений.</p><p>CC Вводятся специальные схемы управления вычислениями на основе проверки условий соответствия данных и действий для их обработки.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>CS</head><p>Появляются структуры с равноправным доступом к разнородным элементам, возможно с их разметкой и указанием кратности вхождения.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>SV</head><p>Вводятся мультизначения и специальные значения для представления разного рода неопределённостей, раскрытие или игнорирование которых может быть полезно для продолжения вычислений.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>SE</head><p>Появляются операции над произвольным числом параметров, их распространение на любые структуры данных, проекции формул, отложенные вычисления, формулы доопределения и продолжения вычислений.</p><p>SM Понятие присваивания распространяется на обмен данными с переферийными устройствами. Возникает идентификация устройств, абстрактные и конкретные имена, паспорта взаимодействий, сигналы готовности действий, время ожидания отклика от устройства, копии и многое другое, отражающее специфику разного оборудования.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>SC</head><p>Возникают отображения, средства ввода-вывода, сетевое управление, потоки, эстафета обслуживания, итерирование, условия срабатывания, актив-пассив, администрирование, сервер, ОС.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>SS</head><p>одновременность, синхронизация, взаимоисключения, сигналы и сообщения, пакеты, настройки, сервисы, конфигурации.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Пример представления результатов сравнение ЯП</head><p>Результаты анализа языка Pure Lisp представлены в Таблице 7, а языка Pascal в Таблице 8. В клетках таблиц расположены фрагменты текстов программ на анализируемых языках или обозначения фрагментов или понятий языка.</p><p>Понятийная матрица позволяет средства языка Pure Lisp характеризовать в рамках семантической системы вида &lt;V, F, R&gt;, отображаемой в абстрактную машину SECD, обладающую независимыми регистрами <ref type="bibr">[4]</ref>. Функции такой системы могут принадлежать основному множеству и правило применения функций может входить в набор функций.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Таблица 7 Понятийная матрица определения языка Pure Lisp</head><formula xml:id="formula_6">№ стр № столбца V E M C S Виды функций V F: V* → V AL : Atom → V (F → {NIL, T})* A ↔ K E Ядро •NIL ; и атомы •eq: V V→{NIL,T} •AL = (… (NIL . NIL) ( T . T) ) •eval:Sexpr AL→ V •quote •cons: V1 V2 → (V1 . V2) •car: (V1 . V2) →V1 •cdr: (V1 . V2) →V2 M Специальные функции •Sexpr: (V . V) •(V . . . ) ; список •(lambda (x1 x2 ...) form) •(label FN F) •pairlis X Y → AL •assoc: X AL → V •((lambda (x1 x2 ...) form) v1 v2 …) •((label FN F) … ) •list ; Список •(F v1 v2 . . . ) ; Форма C Границы •NIL •«Нет переменной» •«Нет функции»</formula><p>Понятийная матрица, характеризующая средства языка Pascal, обладает меньшей кумулятивностью. Pascal определён в рамках семантической системы вида &lt;V; F; R&gt;, отображаемой в пи-код <ref type="bibr" target="#b0">[5]</ref>, в котором, в отличие от SECD, регистры SEC размещены в общей памяти. Составляющие такой системы строго разделены. Множество V фиксировано по составу, неявное определение R не допускает модификаций, функции могут выполнять роль данных в терминах указателей, связь с внешним миром определяется вне языка через библиотечные модули.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Таблица 8 Понятийная матрица определения языка Pascal</head><formula xml:id="formula_7">№ стр № столбца V E M C S Виды функций V F: V* → V M : Id→ V+F (F → {True, False})* V N ↔ Array [N] of V E Ядро •type = (a, b, . . . ) •= &lt;&gt; •pred succ •Id •var X : int; •X := 1; •label L; •L: a := 1; •(1*(2+X)) •S1 ; S2 •ключевые слова •goto L; •s: array [1 . . 9] of int; •s [5] := x; •x := s [5] M Расширение •false true •maxint •integer •(1,3,6,9, . . .) •const A=1;B=2; •type •ta = 1 .. 10;</formula><p>•+ -* / div mod </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Lisp</head><p>Pascal </p><formula xml:id="formula_8">V E M C S E 1 1 1 2 3 M 2 2 2 2 2 C 3+ 3 3 2 2 S 2 3 2 3 2 V E M C S</formula><formula xml:id="formula_9">E M C S █ █ █ █ E M C S S 4 █ E M C █ █ █ █ █ █ █ ██ █ E M C S</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Переход к СП</head><p>Для оценки сложности реализации СП требуется рассмотреть более мощное пространство решений, обусловленное с одной стороны развитием аппаратуры, особенно периферийных устройств, с другой стороны проблемами выбора практичных реализационных решений из некоторого, не всегда заранее определённого, множества <ref type="bibr" target="#b1">[6]</ref> Такие реализационные кубы достаточны для представления результатов парадигмального анализа ЯСП, а также оценки сложности их разработки и реализации, например, по числу различимых средств на каждом слое куба в отличие от сложности применения <ref type="bibr" target="#b1">[6]</ref>. Это значит, что от рассмотрения куба возможен переход к матрице, а от матриц можно перейти к векторам, подобно решениям по обработке многомерных структур в языках Fortran и APL.</p><p>Дальнейшие усложнения пространства решений при реализации ЯСП направлены на инструментальную поддержку процесса разработки СП и схем, используемых при проектно-модельной подготовке этого процесса, выборе основных технологий программирования и развитии сферы приложения. Нередко такие работы имеют ранг внутреннего заказа. 5) Технологическая поддержка (преобразования программ, факторизация, масштабирование относительно аппаратуры, вывод моделей и верификация, реорганизация и настраиваемость).</p><p>6) Человеческий фактор (индивидуальная разработка, группы, команды, фирмы-проекты).</p><p>7) Практический каркас (изученность задачи, полный жизненный цикл программ, отладка, работоспособность программы, тесты, улучшаемость, уточнение, утончение).</p><p>8) Эксплуатационная карта СПуровень пользователя (интерфейс, образцы сценариев и данных, учебные упражнения и задачи с решениями в виде отлаженных программ, лексикон и руководства). 9) Инструментальное окружение (рабочее место системного программиста -БНФ, навигация-декомпозиция, интеграция-библиотеки компонент, систематизированных по критериям парадигмальной декомпозиции).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Заключение</head><p>Изложенный формализм можно рассматривать как конкретизацию понятийной сложности по Колмогорову <ref type="bibr" target="#b2">[7]</ref>. Близкие работы начаты ещё в середине 1960-ых годов, когда возникла задача создания ЯП, поддерживающих процессы разработки СП при создании новых ЯСП. В конце 1970-ых в рамках работ по проекту МАРС [3] был выполнен обзор динамики развития компьютерных конфигураций, что обосновывает выбор основных семантических систем, допускающих эффективную реализацию. В те годы был выполнен ряд серьёзных попыток создания языков системного программирования, позволяющих конструировать системы программирования [2, <ref type="bibr" target="#b3">[8]</ref><ref type="bibr" target="#b4">[9]</ref><ref type="bibr" target="#b5">[10]</ref><ref type="bibr" target="#b6">[11]</ref>. Наиболее продвинутые из них, такие как Венская методика, не учитывали оценок трудоёмкости и понятийной сложности системного программирования, но они составили базу Си-ориентированным LEX-YACC, идеи которых унаследовали Clang-LLVM.</p><p>Современные работы по проверке доказательств теорем используют понятие «λ-куб», близкое понятию «семантическая система» вида &lt;V; F; R&gt; без кумулятивного эффекта по горизонтали, дополненному учётом полиморфизма основных множеств <ref type="bibr" target="#b7">[12]</ref>. В таких работах декларируется эквивалентность понятий «доказательство» и «программа», но в рамках чисто функционального программирования, как в языке Haskell <ref type="bibr" target="#b8">[13]</ref>.</p><p>Предложенную формализацию при оценке сложности и трудоёмкости программирования можно дополнить разделением требований к постановкам задач по сферам применения на академические и производственные, а по уровню изученности на чёткие, развиваемые и усложнённо трудоёмкие.</p><p>Работа выполнена при поддержке Российского фонда фундаментальных исследований, проект № 18-07-01048-а. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Литература</head></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>формы представления результатов сравнения сложности ЯП (число пунктов в клетках и строках таблиц<ref type="bibr" target="#b2">7,</ref><ref type="bibr" target="#b3">8)</ref> </figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>В качестве отправной точки для представления решений по декомпозиции программ можно принять классическое понятие «алгебраическая система» [1]. ООП до тех пор, пока при реализации ЯП не возникает необходимость использовать разные модели вычислений по одним и тем же формулам. С.С. Лавров предложил понятие «семантическая система», расширяющее понятие «алгебраическая система» заданием явного правила применения функций к значениям [2].</figDesc><table><row><cell>Семантическая система -это &lt;V, F, R&gt;, где:</cell></row><row><cell>V -основное множество значений,</cell></row><row><cell>F -конечный набор функций, возможно принадлежащих основному</cell></row><row><cell>множеству,</cell></row><row><cell>R -правило применения функций к значениям, возможно входящее в</cell></row><row><cell>набор функций.</cell></row><row><cell>Близкое понятие под названием «монады» введено в язык Haskell.</cell></row><row><cell>Большинство ЯП поддерживает разные варианты утончения понятия</cell></row><row><cell>«семантическая система», например, где:</cell></row><row><cell>Алгебраическая система -это &lt;A, F&gt;, где:</cell></row><row><cell>A -основное множество значений,</cell></row><row><cell>F -конечный набор операций над множеством A.</cell></row></table><note>Примерно так можно формализовать библиотечные модули в СП и классы объектов в Fконечный набор функций, не принадлежащих основному множеству, Rправило применения функций к значениям, не входящее в набор функций.</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>Более подробные пояснения даны в таблице 6.</figDesc><table><row><cell></cell><cell>Таблица 6</cell></row><row><cell cols="2">Кумулятивные эффекты в понятийной матрице при переходе на очередную</cell></row><row><cell></cell><cell>позицию (наследование средств предшествующих позиций)</cell></row><row><cell>№ позиции</cell><cell>Пояснение</cell></row><row><cell cols="2">EV Самоопределяемые скаляры, их смысл не требует интерпретации, текстовое представление понятно без комментариев.</cell></row></table><note>EEОперации над скалярами, они должны вырабатывать скаляры. При выходе за границы V могут его пополнять или вырабатывать сигнал неуспеха. Множество значений может быть пополнено представлениями формул.</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head></head><label></label><figDesc>. Кроме того, не исключены разные ПП для внешне одинаковых конструкций, что можно пронаблюдать на внешнем сходстве присваиваний в языках Pascal, Val и Sisal. Учитывая, что за время реализации ЯП его определение обычно претерпевает развитие, возникает необходимость системного обобщения, позволяющего сглаживать рост трудоёмкости варьирования реализации СП, что схематично представлено в Таблице 12 как реализационный куб, состоящий из четырёх слоёв, представленных понятийными матрицами с номерами E, M, C, S.</figDesc><table><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>Таблица 12</cell></row><row><cell></cell><cell></cell><cell cols="5">Реализационный куб понятий СП</cell></row><row><cell></cell><cell cols="2">Название слоя</cell><cell cols="2">№ слоя</cell><cell cols="3">Спецификация семантических систем слоя</cell></row><row><cell></cell><cell></cell><cell cols="2">Универсальный слой 4</cell><cell>S</cell><cell></cell><cell cols="2">{РП}↔{КЯ↔AC↔AM↔KM}</cell></row><row><cell></cell><cell cols="3">Операционный слой 3 C</cell><cell></cell><cell></cell><cell cols="2">AM→ KM</cell></row><row><cell></cell><cell cols="2">Изобразительный слой 2 M</cell><cell></cell><cell></cell><cell cols="2">КЯ ↔ AC</cell></row><row><cell></cell><cell cols="2">Абстрактный слой 1 E</cell><cell></cell><cell></cell><cell cols="2">AC → AM</cell></row><row><cell>№</cell><cell>№ столбца</cell><cell>V</cell><cell>E</cell><cell></cell><cell>M:</cell><cell>C:</cell><cell>S:</cell></row><row><cell>стр</cell><cell>Виды функций</cell><cell>V</cell><cell cols="2">V* → V+</cell><cell>T : N → V</cell><cell>(F → {0, 1})*</cell><cell>A ↔ K</cell></row><row><cell>E</cell><cell>Вычисления</cell><cell>Значение</cell><cell>Операции</cell><cell></cell><cell>Память</cell><cell>Управление</cell><cell>Структуры +</cell></row><row><cell></cell><cell>(арифметика)</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>цепочки</cell></row><row><cell cols="2">M Подстановки</cell><cell>Данное</cell><cell>Функции</cell><cell></cell><cell>Задание</cell><cell>Блоки</cell><cell>Иерархия +</cell></row><row><cell></cell><cell>(макро)</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>Стек</cell></row><row><cell cols="2">C Границы</cell><cell>Диагностика</cell><cell cols="2">Предикаты +</cell><cell>Типы</cell><cell>Логика</cell><cell>Варианты</cell></row><row><cell></cell><cell>(частичность)</cell><cell>Исключения</cell><cell>Error</cell><cell></cell><cell>переменных</cell><cell></cell><cell>Множества.</cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>Комплексы</cell></row><row><cell cols="2">S Общность.</cell><cell>+ Error</cell><cell cols="2">Мультиоперации.</cell><cell>Внешний</cell><cell>Отображения.</cell><cell>Ввод-вывод</cell></row><row><cell></cell><cell>Практичность</cell><cell>Мультизначения</cell><cell cols="2">Просачивание</cell><cell>мир.(свойств</cell><cell>Пространства</cell></row><row><cell></cell><cell></cell><cell></cell><cell>операций</cell><cell></cell><cell>а)</cell><cell>итерирования</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_5"><head></head><label></label><figDesc>1. Мальцев А.И. Алгоритмы и рекурсивные функции. − М.: Наука. 1965 г., 392 с. 2. Лавров С.С. Методы задания семантики языков программирования // Программирование, 1978. N 6. С. 3-10. 3. Котов В.Е. МАРС: архитектуры и языки для реализации параллелизма. // Системная информатика. Вып 1. Проблемы современого программирования. − Новосибирск: Наука. Сиб. отд-ние, 1991. − с.174-194. 4. Хендерсон П. Функциональное программирование. -М.: Мир, 1983. -349 с.</figDesc><table /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">Обозначение уточнено А.В.Климовым.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_1">•atom:V→{NIL,T} •apply:F V* AL → V •ERROR •null •Свободные переменные •Типы значений •cond •FUNCTION •Строки •Clozure = Funarg S Общность Практичность •Числа •Строки •evlis : (form* ) → V* •evcon : ((form form)* ) → V •+ -* / •Псевдо-функции •свойства •map •reduce •lazy •READ •PRINT</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_2">Отделено минимальное число библиотечных процедур</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">Н</forename><surname>Вирт</surname></persName>
		</author>
		<title level="m">Модулы к Оберону. // Системная информатика. Вып 1. Проблемы современного программирования. − Новосибирск: Наука. Сиб. отд-ние</title>
				<imprint>
			<date type="published" when="1991">1991</date>
			<biblScope unit="page" from="63" to="75" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Резервы синтаксически ориентированного конструирования систем программирования</title>
		<author>
			<persName><forename type="first">Л</forename><surname>Городняя</surname></persName>
		</author>
		<ptr target="http://keldysh.ru/abrau/2017/proc.pdf" />
	</analytic>
	<monogr>
		<title level="m">Научный сервис в сети Интернет: труды XIX Всероссийской научной конференции</title>
				<editor>
			<persName><forename type="middle">М</forename><surname>Им</surname></persName>
		</editor>
		<imprint>
			<publisher>Келдыша</publisher>
			<date type="published" when="2017">18-. 2017</date>
			<biblScope unit="page" from="120" to="129" />
		</imprint>
	</monogr>
	<note>23 сентября 2017 г. г. Новороссийск</note>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Три подхода к определению понятия «количество информации». − Проблемы передачи информации</title>
		<author>
			<persName><forename type="first">А</forename><surname>Колмогоров</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1965">1965</date>
			<biblScope unit="page" from="3" to="11" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">А</forename><surname>Фуксман</surname></persName>
		</author>
		<title level="m">Технические аспекты создания программных систем</title>
				<imprint>
			<publisher>Статистика</publisher>
			<date type="published" when="1979">1979</date>
			<biblScope unit="page">180</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Compiler Description Language. CDL3 manual</title>
		<author>
			<persName><forename type="first">Cornelis</forename><forename type="middle">H A</forename><surname>Koster</surname></persName>
		</author>
		<ptr target="http://www.cs.ru.nl/cdl3/cdl3.pdf" />
		<imprint>
			<date type="published" when="2004-08-18">August 18, 2004</date>
			<pubPlace>The Netherlands</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">BLISS: A Language for Systems Programming</title>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">A</forename><surname>Wulf</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">B</forename><surname>Russell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">N</forename><surname>Habermann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">CACM</title>
		<imprint>
			<biblScope unit="volume">14</biblScope>
			<biblScope unit="issue">12</biblScope>
			<biblScope unit="page" from="780" to="790" />
			<date type="published" when="1971-12">1971. Dec 1971</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Описание языка ЯРМО</title>
		<author>
			<persName><forename type="first">В</forename><surname>Гололобов</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Б</forename><forename type="middle">Г</forename><surname>Чинин</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Г</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Препринты No</title>
		<imprint>
			<biblScope unit="volume">247</biblScope>
			<biblScope unit="page">248</biblScope>
			<publisher>Сибирское отделение</publisher>
		</imprint>
	</monogr>
	<note>/ Новосибирск</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Henk Lambda Calculi with Types</title>
		<author>
			<persName><surname>Barendregt</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Handbook of Logic in Computer Science</title>
				<imprint>
			<publisher>Oxford University Press</publisher>
			<biblScope unit="volume">II</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">A1-homotopy theory</title>
		<author>
			<persName><forename type="first">V</forename><surname>Voevodsky</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the International Congress of Mathematicians</title>
				<meeting>the International Congress of Mathematicians<address><addrLine>Berlin</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1998">1998. 1998</date>
			<biblScope unit="volume">I</biblScope>
			<biblScope unit="page" from="579" to="604" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
