А возьму-ка я, и опишу тут концептик Ъ(на мой взгляд)-ии, над которым начинал как-то думать, да не додумал, ну и может кому интересно будет, да и сам может чего до ума доведу, а то и поможет кто.
В целом похоже на старые добрые экспертные системы + символьные вычисления с небольшой долей штук из психологии:
- Некая БД как долговременная память. Разделена на две части. Одна хранит в себе "понятия" и некие отношения между ними. Понятие может быть ссылкой на подпрограмму. Вторая - подпрограммы, состоящие из понятий, кроме нескольких самых базовых. Главные проблемы пока: необходимый набор базовых понятий и подпрограмм для старта самообучения, организация и типы понятий и отношений между ними.
- Некая система кратковременной памяти. Так же разделена на две части. Одна рекурсивно (до какого-то предела) хранит в себе несколько понятий с приоритетами (для исполнения подпрограмм и вытеснения при переполнении). Назавём её "понятийной памятью". В принципе нужна больше только как кэш для разжиревшей долговременной, но может выполнять и функцию фильтра. Главный вопрос пока: объём (размерность и глубина рекурсии). Вторая - область исполнения подпрограмм (интерпретатор). Главный вопрос пока: пересекается с первым -- набор базовых подпрограмм, которые войдут в ядро (назовём их инстинктами).
- Ядро. Инициализатор, СУБД, ядро интерпретатора, и система связи с внешним миром (набор интерфейсов в виде модулей) для всего этого добра.
Есть несколько отмеченных моментов (оптимизация памяти и выявление противоречий, способы их разрешения, проявление инициативы, базовые цели, концепция субъекта и индивидуальность) но им нужно больше контекста, так что проще сразу начинать разбирать проблемы с первой же, и всё остальное по ходу подцепится и всплывёт:
Допустим, ядро написано, и работает, единственный интерфейс пока -- строка ввода и вывода, для отладки доступны верхний уровень понятийной памяти, с углублением по запросу, и содержимое области исполнения, но БД пуста.
Допустим мы хотим поздороваться, и пишем "привет". Ничего не происходит. Мы хотим, чтобы система в ответ на это слово здоровалась с нами в ответ в пакете карп, да. Значит наше первое понятие будет "привет
" и с ним будет связана первая подпрограмма "сказать <вызвавшее понятие>
". Но, стоп. Наша система ещё не знает понятия "сказать
". Значит это будет наше первое базовое понятие, связанное с функцией ядра - инстинкт, а привет
, будет вторым. Ок. Но почему у нас выходит базовая подпрограмма не связанная с функцией ядра? Если наша подпрограмма выражается через другую подпрограмму у нас должен быть способ Ъ-научить систему ей. Как это сделать? Например "привет значит сказать привет". Но у нас нет понятия "значит
". Биндим её на функцию ядра, создающую понятие, и связь его в в памяти с другим понятием, и готово!
Итак, у нас есть два понятия (сказать
и значит
) и один тип связи (линк на подпрограмму) связывающий их с двумя инстинктами. Теперь мы можем научить нашу систему здороваться в ответ на приветствие.
Я на сегодня закончу. Может кто напишет, чего бы мы хотели от нашей системы в следующий раз, и каких базовых понятий, подпрограмм, инстинктов или типов связей ей жизненно не хватает как достойному ии и ычаньке, а я попробую что-то из этого разобрать.