Тыугу — Программирование концептуальное. 1984

под­ход к программированию, при котором ЭВМ применяется уже
на этапе постановки задачи, а не только на этапе кодирования
программы.

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

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

понимание программы, кроме всего прочего, требует уме­ния отвечать на вопросы: «когда можно программу использовать?», «для решения каких задач она пригодна?».
В пакете программ должны содержаться не только программы, но еще и знания о применимости.

решать задачи, ис­пользуя ЭВМ как партнёра, который способен до некоторой сте­
пени «понимать» задачи. Степень «понимания» определяется дву­мя факторами: механизмом работы со знаниями, встроенным в системные программы, и специальными знаниями, которым «обучена» ЭВМ к моменту решения задачи.

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

Автор убеждён, что решать задачи можно научиться, внимательно изучая примеры и упражняясь самостоятельно в решении разнообразных задач.

Све­дения о вычислимости по элементарной математике и физике бу­дут неотъемлемой частью математического обеспечения любой универсальной ЭВМ. Другими словами, вместо библиотеки стан­дартных программ будет библиотека стандартных понятий, вклю­чающая элементарные математические и физические знания.

Программиста уместно сравнить с технологом, который разрабатывает процесс изготовления продукции на заводе.
Зри­мым результатом работы технолога является технологическая до­кументация. Но основная его работа, не заполнение технологических документов, а выбор правильного способа изго­товления продукта.

Программи­рование начинается с получения задачи, а не с алгоритма или
блок-схемы.

Существует много задач , в кото­рых требуется выполнение некоторых действий, например, «при­нести из самой дальней комнаты маленький зеленый ящик».
ЭВМ является подходящей для планирования действий, требуемых для
решения подобных задач.

Не всег­да условия задачи определены до выполнения действий настоль­ко точно, что по ним может быть составлен полный план дейст­вий.
Чаще всего планирование и выполнение действий чередуют­ся, а условия задачи существенно определены средой, в которой выполняются действия.
Задача планирования действий в заранее неполностью известной среде является вычислительной задачей с переменными условиями задачи.
Практика управления роботами показывает, что при решении этой задачи приходится решать множество вычислительных задач, соответствующих отдельным этапам моделирования действий в среде, которая считается неиз­менной и определенной в течение некоторого интервала времени.

К синтезу программ существует три различных подхода:
дедуктивный подход, где построение программы использу­ет доказательство утверждения, что решение задачи существует;
индуктивный подход, при котором программа строится по примерам, непосредственно задающим ответ для некоторых исход­ных данных;
трансформационный подход, где программа получается пос­тепенно, путем преобразования исходного описания задачи по правилам, совокупность которых и представляет знания о реше­нии задач.
К перечисленным подходам можно добавить еще четвертый — утилитарный подход, при котором исходят из практических по­требностей и строят программу, пользуясь частными приемами.

Для решения задач требуются знания

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

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

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

Мы не в силах определить понятие знаний формально. Поэтому по­ясним его смысл на примерах.

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

В языке симула-67 впервые появились объекты, которые нельзя было отнести ни к данным, ни к процедурам, поскольку они обладали свойствами как тех, так и других. Вместо значения такого объекта правильнее говорить о его состоянии. Например, рассматриваются состояния объектов АВТОМОБИЛЬ, ПРОЦЕСС
или ОЧЕРЕДЬ.

Линг­висты давно заметили, что слова, которые в предложении по смыслу связаны друг с другом, можно сое­динить дугами, обозначив на дугах тип связи. Так получается сеть, вы­ражающая довольно точно смысл предложения даже в том случае, если отбросить почти все морфоло­гические признаки слов.

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

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

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

Создать язык, на котором человеку удобно описывать знания.

Пока не видно влияния искусственного интеллекта на языки програм­мирования. Но абстрактные типы данных в языках программирования уже близки к абстрактным понятиям, описываемым фреймами.
В языке ада ос­таётся сделать небольшой шаг — допустить в пакетах планирование вычис­лений на основе ролей (входной, выходной) параметров модулей. Когда этот шаг будет сделан, можно будет ввести оператор постановки задачи и использовать технику автоматического синтеза программ. Тогда пакеты пре­вратятся действительно в модули знаний о вычислимости.

Утопист Язык концептуального программирования

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

ЭВМ не может сама достать знания о задаче.
(в 1984. А сегодня в 2020 может 💥)

Не всегда целесообразно требовать некоторого резуль­тата, описав только обстановку (условия задачи). Бывают случаи когда проще описать желаемые действия явно.
Это спра­ведливо, даже если исполнителем (решателем задач) является человек. Если исполнитель недостаточно квалифицированный,
лучше задать ему последовательность действий, нежели описать
обстановку с достаточной полнотой и ждать, пока исполнитель
в ней разберется.

Семантика Интуитивная

научить машину решать школьные задачи.

Чтобы ЭВМ могла решать задачи, задаваемые ей в такой же форме, в какой задачи задаются уче­никам, надо ее снабдить конкретными знаниями по математике и физике.
Такая цель сама по себе имеет и практическое значение, например, при автоматизации проектирования инженер может вручную решать многие гебметрические задачи. Но ему уже слож­нее запрограммировать эти же вычисления. А это значит, что он многие простые задачи будет решать вручную.
Но если для получения ответа достаточно описать задачу, а не про­цесс её решения, то проще воспользоваться машиной, чем вычислять вручную.

Машина из вычислителя превращается в решатель.

К этой же цели стремятся, создавая пакеты прикладных программ. Но в отличие от сложных и специа­лизированных пакетов мы снабжаем здесь машину универсальны­ми знаниями, которым обучают в школе каждого человека. Та­кое же отличие существует между нашей системой и, например, решателями школьных задач, уже давно запрограммированными Рафаэлем и Бобровым

Понятие определяется через вспомога­тельные понятия — подпонятия, соответствующие компонентам абстрактного объекта.

Что такое понятия. Что значит жить по понятиям - YouTube

Только немногие понятия, соответствую­щие, например, физическим величинам: длине, площади, времени ит. д., не определяются через другие.
Но уже точка определяется через координаты.

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

применимость того или иного понятия не формализована и должна определяться че­ловеком.

Оставить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.