Главная > Документ


Данное выше определение является конечно формальным и не полностью отражает информатику данных. Более полное и точное определение имеется в языках программирования (см. том 2 - определение ЯПП). Обычно рекурсивность представлений данных используется в таких конструкциях как запись. Имеются специальные конструкции для представления графов или сетей данных. Надо отметить главное свойство рекурсивного представления данных - обеспечение надежных и компактных представлений. Архитектура языковых конструкций имеет следующий вид:

спецификация понятия А;

описание понятия В, использующее понятие А;

полное описание понятия А, использующее понятие В;

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

спецификация понятия А,

ссылка на то же понятие А,

спецификация понятия В,

конец спецификации понятия А;

Такие рекурсивные определения даются в языке Алгол 68 при формировании видов записей. Служебное слово ref является в языке средством защиты от бесконечных рекурсий (подстановка считается невозможной).

Данные два способа введения рекурсивных определений данных можно считать базовыми, другие формы - производными. Проиллюстрируем их на примерах записи текстов на языках Ада и Алгол 68 [Красилов78в]. В ЯПП используется во многом аналогичный аппарат определений. В языке Ада описание записи можно представить так:

тип СПИСОК;

............

тип ссылка на элемент is access СПИСОК;

........................................

type СПИСОК is

record

ЭЛЕМЕНТ: тип_элемента;

ССЫЛКА : ССЫЛКА_НА_ЭЛЕМЕНТ;

end record;

Более сложные примеры используют глубокие рекурсии, запрятанные в двойные или тройные ссылки или в использовании трех или четырех понятий для построения ссылок на определяемые понятия.

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

2.7.4. Методы применения контроля принадлежности значений множеству. Указанный в заглавии метод применения может быть предназначен для изложения принципов использования операции принадлежности значений типу данных и для применения самого метода в системе решения заданий. Первое применение ясно по существу. Второе применение важно для реализации контроля за правильностью использования значений указанного для величины типа. Этот метод решает часть задач экологии текстов знаний и заданий.

Для каждого типа метод применяется стандартно по известным соотношениям. Здесь нет ничего необычного. Такой контроль обязателен для всех типов данных. Обычно соотношения реализуются довольно просто программистами в системах решения заданий.

2.7.5. Методы структурирования данных. Метод структурирования данных состоит в построении структурных объектов - массивов, записей, таблиц и процедур. Метод сложен по степени абстрагирования и доступен более всего знаниеведу или системному программисту. Наиболее подходящим средством обойти метод является использование готовых БЗ, ориентированных на классы задач пользователя. При наличии БЗ прямой пользователь может только познакомиться с описанием БЗ и с приемами применения знаний из этой базы. Для прямого пользователя процедуры структурирования данных являются наиболее сложными методами формализации знаний. С другой стороны, знание метода означает умение описать объект, зная все его свойства. Если у пользователя не получается процедура формализации, то он должен формировать полное описание свойств объектов для реализации структурирования данных.

Знаниевед или системный программист приступает к реализации метода с построения указанных выше структурных типов данных в соответствии с требованиями заданий пользователя. Затем они могут заполнить описанные структуры данных соответствующими наборами данных (наборы однотипных данных для массива, данными для полей записи, строчками таблицы или алгоритмами процедур). И, наконец, необходимо сделать описание структурных данных для пользователя так, чтобы он мог применять их в заданиях. Это обычный подход программистов, занимающихся описанием предметной области задачи.

2.7.6. Использование синонимии. Определение синонима известно из грамматики ЕЯ. Отличие синонимии в ЕЯ и ЯПП связано с тем обстоятельством, что ведущий термин, для которого строится синоним, может быть сложным выражением. Введение синонима позволяет экономить время для выполнения записи знаний или заданий. Да и практика оформления знаний часто связана с применением аббревиатуры, что является синонимами развернутых терминов в последовательности слов и знаков. Синонимы часто встречается в практике работы специалистов (это их ";птичий"; язык).

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

2.7.7. Методы сокращения форм имени. Имя, представляющее (идентифицирующее) термин, может состоять из многих слов и знаков. Тогда частое его использование может оказаться утомительным. В этом случае можно ввести сокращенное имя (аббревиатуру) в качестве синонима описанного термина. Теперь можно использовать аббревиатуру так, как это принято в ЕЯ.

Далее (в версиях Интеллсист) предполагается использовать сокращения для составных имен. Например, вместо переменной с индексом можно будет использовать аббревиатуру, вместо ссылки на выражение можно будет использовать также аббревиатуру.

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

Глава 3. Повторное использование разработок

Повторное использование (транслитерация английского слова reuse - риюз) программ, лексиконов, БД, БЗ и запросов (для краткости будем далее этот перечень здесь именовать субпрограммой) является новой проблемой современного программирования и информатики, обобщающей ряд частных проблем. Повторное использование программ нужно распространять на. БЗ, которые вообще отличаются от программ устойчивым постоянством. Кроме того, БЗ представляют класс логических программ. Идея повторного использования родилась (если оценивать историю вопроса) в программировании, она легко распространяется на БЗ и запросы. Риюз универсален настолько, что его можно назвать информатическим методом. Надо быть осторожным и говорить вначале слово программирование, а затем слово информатика, если рассматриваем риюз. В рамках возможностей ФЯ (например, Ада) и ЯПП с привлечением системной и ситуационной моделей процесса разработки программного обеспечения исследуются проблематика и предпосылки повторного использования программ (или некоторой вещи), взаимосвязь концепций риюза и современного программирования (информатики). В главе дана оценка эффективности риюза. Предлагаются методология реализации риюза и характеристики инструментальных средств поддержки.

3.I. Общие концепции

Побудительными причинами появления в информатике риюза явились публикация о сборочном программировании, разворачивание исследований по риюзу и осмысление всей проблематики повторного использования знаний, программ и заданий и всех атрибутов жизненного цикла объектов, обеспечивающих эффективное использование ВМ. Представляется полезным осмыслить понятие повторного использования субпрограмм в контексте ЖЦ любого объекта. Принципиально ничто не мешает повторно использовать результаты любого этапа ЖЦ, например проекта, отдельного модуля, всей субпрограммы, документации на знания и т.п. При этом возникает проблема развития языков представления знаний любого вида и программного инструментария со своими методами и средствами. Мы делим ЖЦ на четыре фундаментальных этапа: изобретание, проектирование, разработка и сопровождение. С этой точки зрения повторное использование результатов по этапам ЖЦ можно квалифицировать как допроектирование или доконструирование. Такой подход шире и опирается на публикации уже известные и приведенные в списке литературы.

В современном программировании возникла новая парадигма - повторное проектирование и использование программного обеспечения в широком смысле этого понятия. Ниже мы рассмотрим основные предпосылки появления этой парадигмы. Будем кратко именовать повторное проектирование и использование знаний и программ словом риюз. Риюз существовал всегда. Но это не приводило к существенному сокращению расходов на программирование. Желание понять причины явно недостаточного внимания к риюзу и чрезвычайно большие затраты на дублирующие работы, которые оцениваются примерно в 70-80% от общих затрат, заставили разработчиков по-новому взглянуть на риюз. Применение для знаний эффективнее применения для программ, поскольку допроектирование или доконструирование знаний значительно проще по времени и затратам труда.

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

Среди методик следует отметить такие:

I) Простой повторный запуск программы для контроля работы ВМ или самой программы (подтверждение), а также для счета очередного варианта задачи. Заметим, что повторный прогон программы реального времени может показать неожиданные результаты.

2) Решение задачи с различными исходными данными, как указано выше, также представляет собой повторное использование программы. Этот пример методики является самым распространенным и указывает на продуктивность риюза.

3) Использование старой субпрограммы с новым методом решения проблемы представляет риюз. За счет этого получаются новое качество субпрограммы и экономия ресурсов ВМ при решении старых задач.

4) Если программа собрана из подпрограмм библиотеки, то можно сказать, что использован риюз для частей программы. Сборочное программирование - это один из фундаментальных методов риюза. Сборочное программирование - это разработка нового программного проекта или его рабочих версий нового применения, путем повторного использования компонент с или без модификации их спецификации или тела, с или без построения новых компонент. В самом простом виде сборочное программирование реализуется в языке Ада (компиляция из подпрограмм библиотеки) [Джехани88]. В особенности хорошей иллюстрацией риюза использование БЗ из библиотеки.

5) Программирование с использованием пакетов прикладных программ представляет еще один широко известный метод риюза. Такой подход напоминает сборку программ из подпрограмм.

6) Если предыдущие примеры применения риюза иллюстрировали, как правило, использование модификации управления в программах, то последующие примеры показывают использование модификации данных. Например, модификация предметной области влечет частичное изменение описаний в субпрограмме и получение другой субпрограммы. Такая форма риюза характерна для ассемблерных языков программирования и поддерживается макроассемблером. Другим ярким примером является аппарат настраиваемых подпрограмм и пакетов в языке Ада, который можно считать аналогом макросредств в языке высокого уровня.

7) Модификация проблемной области приводит к изменению некоторых модулей субпрограммы, но для основной части субпрограммы может применяться риюз. Практически важной формой риюза является использование методов переноса субпрограмм на ВМ различных архитектур. И здесь язык Ада может показать широкие возможности для построения субпрограмм, независящих от свойств конкретных архитектур ВМ. Еще пример. Реализация языка Си на различных архитектурах ВМ привела к переносу субпрограмм на такие ВМ.

8) К риюзу в широком смысле следует отнести повторное использование варианта спецификации проекта программного обеспечения (и не только). Если язык предусматривает разработку проекта программы, то риюз внедряется автоматически, как это свойственно языку Ада.

9) С таким же успехом можно говорить о повторном использовании готовой схемы решения проблемы (или задачи, задания). Эта методика является наиболее распространенной в практике использования ВМ. Широко известный метод структурного программирования указывает на приемы использования готовых структур программ для построения новых программ. Язык Ада содержит прекрасный ассортимент хорошо структурированных конструкций операторов и описаний. ИП предусматривает автоматическое внедрение риюза БЗ, анкетного и шаблонного запросов, что представляет собой внедрение риюза в рамках Интеллсист.

10) Использование одной и той же математической модели при решении различных и конкретных задач также распространено достаточно широко, и это обстоятельство определяет высокую эффективность математического моделирования.

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

12) И последняя методика: использование одной и той же цели для создания различных субпрограмм. Общая цель порождает одинаковые структуры субпрограмм.

В [Красилов91а] рассмотрены проблемы повторного использования компоненты программных систем, они будут затрагиваться ниже. На риюз можно посмотреть еще шире. Логично отнести к риюзу повторное использование языка программирования, ВМ одинаковой модели и др. Так или иначе приведенный перечень методик достаточно полно характеризует историю риюза, богатство методологии риюза и заставляет внимательно присмотреться к методам и инструментальным средствам повторного проектирования, программирования и использования программ.

Подытоживая содержание примеров методик можно определить риюз как метод информатики, представляющий совокупность способов и средств использования имеющихся и отработанных субпрограмм и БД в новых проектах путем настройки, адаптации, модификации или прямого применения. Как обычно краткое определение не составляет полной картины проблемы, поэтому в дальнейшем делается попытка шире раскрыть смысл риюза. Цель настоящей главы - привлечь внимание программистов всех категорий (в том числе и прямых пользователей ВМ) к одному из эффективных методов информатики.

Заметим, что перечисление примеров риюза может привести к выводу, что риюз и проблемы риюза просты. Попробуем опровергнуть это мнение. Несомненно, что риюз - продление жизни субпрограмм или их частей. Сейчас обратим внимание только на одну главную проблему риюза: что необходимо сделать, чтобы при создании новых программ обеспечить риюз в наибольшей степени. Можно сразу предложить одну из методик решения этой проблемы: внедрение единого языка программирования, роль которого должен сыграть, например язык Ада. Предложение основывается на том факте, что язык Ада реализует более 50 методов программирования, многие из которых поддерживают риюз [Красилов88б]. Роль единого языка логического программирования в ИП играет ЯПП (или ЕЯ). Следует напомнить, что под субпрограммой здесь имеются в виду различные объекты, в том числе лексиконы, БЗ, шаблоны, запросы к Интеллсист и др. Для краткости используется слово субпрограмма, а все методы программирования распространяются на эти объекты.

В соответствии с рекомендациями [Красилов88б] можно выставить ряд требований к субпрограмме и технологии ее разработки, выполнение которых обеспечивает в значительной степени риюз (риюзность субпрограммы). Такими требованиями являются:

  • модульность, структурированность и блочность, как основы хорошего стиля программирования (для БЗ и запросов, использующих ЯПП, блоком можно считать абзац);

  • проверяемость (или контролируемость), документируемость и читаемость, как основа для обеспечения переносимости субпрограммы (ЯПП это требование поддерживает, так как он является частью ЕЯ);

  • планируемость и автоматизируемость, как основа для ведения разработки методом риюза (для ЯПП накоплен обширный опыт выполнения этого требования);

  • подтверждаемость, верифицируемость и внедряемость, как основа для успешного внедрения средств программотехники или знаниелогии в методологию риюза.

Перечисленные черты субпрограмм и технологии разработки носят общий характер и создают только базу для успеха методологии риюза. Обычно решающее значение имеют детали процессов создания новых проектов.

3.2. Основные предпосылки исследования

В программистской литературе правильно подмечено, что основная причина исследования риюза кроется в естественной деятельности специалиста по информатике, связанной, с одной стороны, с внедрением ВМ в различные сферы деятельности человека, а с другой - общностью основ применения ВМ. Поэтому одна и та же субпрограмма успешно используется в таких различных областях как: техника, геология, статистика, физика и т.п. Исследование и применение риюза стимулируется также дефицитом программистов. Имеются и другие, может быть менее веские причины. Вот некоторые из них:

  • медленно (независимо от экономических факторов) решается проблема ускорения процесса реализации больших программных проектов для народного хозяйства;

  • многоязычие одной или нескольких различных ВМ становится серьезным препятствием для достижения высокой эффективности процессов создания программ;

  • дублирующие разработки программ чаще всего возникают из-за отсутствия эффективных методов проектирования и использования таких свойств программ, которые способствуют повторному их использованию;

  • имеются и организационно-экономические причины, вызванные отсутствием рынка машинного знания, подкрепленного соответствующими законодательными актами;

К этому перечню необходимо добавить следующие аргументы в пользу риюза, особенно важные для систем, работающих в реальном масштабе времени:

  • техническая система, которая имеет встроенную ВМ, развивается значительно медленнее, чем темп обновления встроенных ВМ, в таком случае необходимо обеспечить повторное использование субпрограмм предыдущей ВМ;

  • идеология программирования и алгоритмы моделирования технических систем в большинстве случаев сохраняются, они стабильны и долгоживущие;

  • испытанные в реальной работе субпрограммы при риюзе гарантируют сокращение стоимости разработки и эксплуатации, повышение надежности субпрограммы и в целом качества самой субпрограммы и ее использования;

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

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

Экспертную оценку экономической эффективности риюза можно дать, исходя из следующих, требующих дополнительных исследований, соображений: если стоимость разработанных программ составляет единицу, то цена повторно используемой программы равна по экспертной оценке десятой части от указанной единицы. Приведенная оценка может быть и ошибочной, поскольку имеющиеся исходные данные для оценки весьма ненадежны. Ясно, что экономическая эффективность риюза зависит от этапа ЖЦ и используемого метода риюза, поэтому приведенная оценка отражает имеющийся опыт эксперта. Для более точной оценки необходима достоверная статистика по реальным применениям риюза в определенных методологических рамках.

Исследование причин возникновения риюза - это прогноз ЖЦ риюза. От того насколько правильно оценены причины, настолько достоверен прогноз в сравнительно молодом методе информатики, а также в методологии его применения. Возможность эффективного внедрения риюза во многом обеспечивается концепциями хорошего стиля программирования:

  • использование уровней абстракции для объектов субпрограммы поддерживает риюз,

  • сохранение уровней структур управления упрощает процедуру необходимых изменений при создании новой субпрограммы,

  • аналогично, структуризация данных упрощает процедуру необходимых изменений при создании новых БД и БЗ,

  • систематичность процессов создания субпрограмм и данных от начала до завершения проекта обеспечивает удешевление риюза,

  • моделирование является составной частью хорошей технологии программирования и в то же время служит концептуальной основой применения риюза,

  • иерархия и модульность также составляют концептуальную основу применения риюза,

  • наконец, активная ориентация на риюз также является хорошей концепцией, стимулирующей развитие методов риюза.

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

3.3. Модели создания субпрограмм

Ниже поясняются две модели создания программ:

  • Системная модель,



Скачать документ

Похожие документы:

  1. Моу «якутский городской лицей» п у б л и ч н ы й о т ч ё т 2009-2010 г г

    Документ
    ... ПОЛНЫЕ СЕМЬИ НЕПОЛНЫЕ СЕМЬИ ОПЕКУНЫ МНОГОДЕТНЫЕ СЕМЬИ 487 ... Гин А. - исследовательские методы в обучении - технология внутриклассной ... Е.Н., учитель информатики Жиркова М.М., учитель информатики Замятина А.В., ... программы ЯГЛ, в том числе и в процессах ...
  2. Образовательная программа (61)

    Основная образовательная программа
    ... (в том числе ЕГЭ ... малообеспеченных семей, для ... и проектный методы, игровые методики ... 3 3 литература 2 2 2 2 2 2 иностранный язык 3 3 3 3 3 3 математика 5 5 5 5 5 5 информатика и ИКТ 1 1 1 1 2 1 история 2 2 2 2 2 2 обществознание 1 1 1 1 1 1 география 2 ...
  3. «создание единого информационного пространства»

    Программа
    ... информатики 1 13 1 1 1 Кабинет информатики 2 13 1 1 1 Кабинет информатики 3 13 1 1 1 Кабинет информатики 4 13 1 1 1 Кабинет информатики 5 11 1 1 1 Кабинет информатики ... исследовательские методы обучения ... незащищенных семей и ... курсов, в том числе с ...
  4. За 2011-2012 учебный год (7)

    Анализ
    ... Информатика 9 82 % Ветрова Т.А. Информатика 8 Б 93 % Ветрова Т.А. Информатика 10 А 100 % Ветрова Т.А. Информатика 10 Б 92 % Ветрова Т.А. Информатика ... методы, используемые для диагностики и определения категорий учащихся и их семей ... благодаря тому ...
  5. А а красилов информатика в семи томах том 1 основы информатики

    Книга
    ... ИНФОРМАТИКА В СЕМИТОМАХТом 1. Основы информатики (Введение в информатику) Москва 1997 - 2003 ИНФОРМАТИКАТом 1. Основы информатики (Введение в информатику) Том 2. Информатика смысла (Машинная лингвистика) Том ...

Другие похожие документы..