подход к программированию, при котором ЭВМ применяется уже
на этапе постановки задачи, а не только на этапе кодирования
программы.
по достаточно точным описаниям задач ЭВМ автоматически составляет программы их решения. Это позволяет переложить на ЭВМ некоторую часть труда, которую при традиционном программировании приходится выполнять вручную,
и таким образом повысить производительность программирования.
О задаче и о пути ее решения надо говорить в терминах, которыми пользуются специалисты той области, где она возникает.
понимание программы, кроме всего прочего, требует умения отвечать на вопросы: «когда можно программу использовать?», «для решения каких задач она пригодна?».
В пакете программ должны содержаться не только программы, но еще и знания о применимости.
решать задачи, используя ЭВМ как партнёра, который способен до некоторой сте
пени «понимать» задачи. Степень «понимания» определяется двумя факторами: механизмом работы со знаниями, встроенным в системные программы, и специальными знаниями, которым «обучена» ЭВМ к моменту решения задачи.
на этапе постановки задачи не надо представлять подробного алгоритма. О вычислительной эффективности, которая волнует хороших программистов, надо заботиться при описании понятий.
Автор убеждён, что решать задачи можно научиться, внимательно изучая примеры и упражняясь самостоятельно в решении разнообразных задач.
Сведения о вычислимости по элементарной математике и физике будут неотъемлемой частью математического обеспечения любой универсальной ЭВМ. Другими словами, вместо библиотеки стандартных программ будет библиотека стандартных понятий, включающая элементарные математические и физические знания.
Программиста уместно сравнить с технологом, который разрабатывает процесс изготовления продукции на заводе.
Зримым результатом работы технолога является технологическая документация. Но основная его работа, не заполнение технологических документов, а выбор правильного способа изготовления продукта.
Программирование начинается с получения задачи, а не с алгоритма или
блок-схемы.
Существует много задач , в которых требуется выполнение некоторых действий, например, «принести из самой дальней комнаты маленький зеленый ящик».
ЭВМ является подходящей для планирования действий, требуемых для
решения подобных задач.
Не всегда условия задачи определены до выполнения действий настолько точно, что по ним может быть составлен полный план действий.
Чаще всего планирование и выполнение действий чередуются, а условия задачи существенно определены средой, в которой выполняются действия.
Задача планирования действий в заранее неполностью известной среде является вычислительной задачей с переменными условиями задачи.
Практика управления роботами показывает, что при решении этой задачи приходится решать множество вычислительных задач, соответствующих отдельным этапам моделирования действий в среде, которая считается неизменной и определенной в течение некоторого интервала времени.
К синтезу программ существует три различных подхода:
— дедуктивный подход, где построение программы использует доказательство утверждения, что решение задачи существует;
— индуктивный подход, при котором программа строится по примерам, непосредственно задающим ответ для некоторых исходных данных;
— трансформационный подход, где программа получается постепенно, путем преобразования исходного описания задачи по правилам, совокупность которых и представляет знания о решении задач.
К перечисленным подходам можно добавить еще четвертый — утилитарный подход, при котором исходят из практических потребностей и строят программу, пользуясь частными приемами.
Для решения задач требуются знания
человеку неудобно разговаривать на языке формальных теорий. Более того,
исследования по представлению знаний показывают, что и в машине знания выгоднее представлять в другой форме.
развитие описаний типов данных в программировании сблизит их с языковыми средствами представления знаний, разрабатываемыми в области искусственного интеллекта.
почему мы говорим о знаниях для решения задачи, а не о данных или информации (или, может быть, сведениях и т. д.).
Информация и данные — вполне определенные понятия, которые, в данном случае не подходят.
Знания могут в ЭВМ представляться только в виде данных. Но нам как раз
важно иметь знания, несущие смысл условий задачи и позволяющие по условиям задачи строить программу ее решения.
Мы не в силах определить понятие знаний формально. Поэтому поясним его смысл на примерах.
нет четкой границы между обработкой данных и обработкой знаний.
простые знания могут быть выражены простыми программами
В языке симула-67 впервые появились объекты, которые нельзя было отнести ни к данным, ни к процедурам, поскольку они обладали свойствами как тех, так и других. Вместо значения такого объекта правильнее говорить о его состоянии. Например, рассматриваются состояния объектов АВТОМОБИЛЬ, ПРОЦЕСС
или ОЧЕРЕДЬ.
Лингвисты давно заметили, что слова, которые в предложении по смыслу связаны друг с другом, можно соединить дугами, обозначив на дугах тип связи. Так получается сеть, выражающая довольно точно смысл предложения даже в том случае, если отбросить почти все морфологические признаки слов.
Похожую сеть можно построить не только для одного предложения, но и для текста, содержащего несколько предложений. Далее, сеть можно строить не
из слов, из которых состоит исходное предложение (текст), а из более стандартных «кирпичиков».
на синтаксическом уровне невозможно решить все вопросы, возникающие при построении семантической сети. Для решения не которых из них необходимо привлечение смысла, т. е. использование уже построенной сети.
Семантические сети являются средством представления смысла текста. Их можно в некотором отношении рассматривать как форму представления чего-то (смысла) Но нас интересует не только представление смысла текста, но и представление знаний, накопленных постепенно, возможно, в ходе длительного общения.
Создать язык, на котором человеку удобно описывать знания.
Пока не видно влияния искусственного интеллекта на языки программирования. Но абстрактные типы данных в языках программирования уже близки к абстрактным понятиям, описываемым фреймами.
В языке ада остаётся сделать небольшой шаг — допустить в пакетах планирование вычислений на основе ролей (входной, выходной) параметров модулей. Когда этот шаг будет сделан, можно будет ввести оператор постановки задачи и использовать технику автоматического синтеза программ. Тогда пакеты превратятся действительно в модули знаний о вычислимости.
Утопист Язык концептуального программирования
основной целью пользователя этого языка является решение задач, а не просто написание программ, заставляющих ЭВМ «работать».
ЭВМ не может сама достать знания о задаче.
(в 1984. А сегодня в 2020 может 💥)
Не всегда целесообразно требовать некоторого результата, описав только обстановку (условия задачи). Бывают случаи когда проще описать желаемые действия явно.
Это справедливо, даже если исполнителем (решателем задач) является человек. Если исполнитель недостаточно квалифицированный,
лучше задать ему последовательность действий, нежели описать
обстановку с достаточной полнотой и ждать, пока исполнитель
в ней разберется.
Семантика Интуитивная
научить машину решать школьные задачи.
Чтобы ЭВМ могла решать задачи, задаваемые ей в такой же форме, в какой задачи задаются ученикам, надо ее снабдить конкретными знаниями по математике и физике.
Такая цель сама по себе имеет и практическое значение, например, при автоматизации проектирования инженер может вручную решать многие гебметрические задачи. Но ему уже сложнее запрограммировать эти же вычисления. А это значит, что он многие простые задачи будет решать вручную.
Но если для получения ответа достаточно описать задачу, а не процесс её решения, то проще воспользоваться машиной, чем вычислять вручную.
Машина из вычислителя превращается в решатель.
К этой же цели стремятся, создавая пакеты прикладных программ. Но в отличие от сложных и специализированных пакетов мы снабжаем здесь машину универсальными знаниями, которым обучают в школе каждого человека. Такое же отличие существует между нашей системой и, например, решателями школьных задач, уже давно запрограммированными Рафаэлем и Бобровым
Понятие определяется через вспомогательные понятия — подпонятия, соответствующие компонентам абстрактного объекта.
Только немногие понятия, соответствующие, например, физическим величинам: длине, площади, времени ит. д., не определяются через другие.
Но уже точка определяется через координаты.
С понятием можно связать сколь угодно много подпонятий не боясь избыточности.
Точку можно определить и так, что с ней связаны сразу прямоугольные и сферические координаты и заданы отношения между ними.
применимость того или иного понятия не формализована и должна определяться человеком.