|
|
Tuesday, January 1st, 2030
|
|
|
Добрый день.
Пару слов об этом журнале и обо мне. Основная цель данного журнала поиск людей, с которыми мне было бы интересно общаться. Это не дневник в обычном понимании, я не помещаю сюда фотографии, описания того, что со мной произошло интересного за сегодня, планов на вечер и т.п. Я помещаю в этот журнал свои мысли, наблюдения и выводы. Помещаю их сюда для себя (что бы сохранились) и для других - что бы люди могли составить мнение обо мне и решить - интересно им общаться со мной или нет. Вот, собственно, и всё.
|
|
Comments: Read 3 or Add Your Own.
|
|
Sunday, November 8th, 2009
|
|
|
В предыдущей заметке о гештальте я немного затронул тему анализа, как одной из основных функций ИИ. Пока я ограничился лишь описанием абстрагированных функции анализа - повышения уровня абстракции информации до того уровня, на котором принимаются решения, опустив подробности. Эту заметку я хочу посвятить более подробному осмыслению аналитического процесса. В перспективе я хочу рассмотреть и его антипод - процесс синтеза.
( Поток сознания тут. )
|
|
Comments: Add Your Own.
|
|
Wednesday, September 9th, 2009
|
|
|
В своих размышлениях на тему ИИ я обращаюсь к различным источникам, среди которых есть и "профильные" и не очень. Некоторое время назад я общался с одним френдом на тему психологии и он (точнее она) рассказала мне про гештальт-психологию, которая строится вокруг понятия гештальта (см en.wikipedia.org/wiki/Gestalt_psychology). Эта концепция натолкнула меня на интерсное направление в размышлении.
Речь пойдёт об анализе, как об одной из функций ИИ, действующего в динамической среде, т.е. имеющего понятие о времени. Вообще, тема анализа и синтеза, как функций ИИ - это отдельная интересная тема, которую надо будет осветить отдельно. На вход в ИИ поступают данные самого низкого уровня абстракции, т.е. предельно конкретные. Например, если речь идёт об ИИ, играющем в стратегическую игру - записи, описывающие свои юниты и юниты противника. Однако для алгоритмов, принимающих решения, эти данные являются слишком "сырыми", необходима их переработка в более удобоваримый вид. Этой переработкой является анализ входной информации, задачей которого является повышение уровня абстракции информации до того уровня, который необходим для принятия решения. Если вернуться к рассматриваемому примеру, то часть ИИ, принимающая решения, не оперирует в терминах отдельных юнитов. Тактические решения удобнее записывать используя такие понятия, как "ударная группа", "линия обороны", "опорный пункт", "разведгруппа", "фронт", "тыл" и т.п. Эти понятия содержат в себе значимую для тактического уровня информацию, скрывая излишние детали. Иными словами отдельные фишки на карте как-то кластеризутся аналитическим модулем ИИ (как именно - отдельная тема) и получившиеся кластеры (группы) нагружаются дополнительной семантикой (например, тип кластера) и аггрегированной информацией (количество юнитов, суммарная мощь, усреднённое расположение, направление и скорость движения и т.п.). При необходимости получившиеся кластеры так же могут подвергнуться подобному процессу, что даст ещё большее повышение уровня абстракции и выстраивание иерархии кластеров.
Теперь вспомним, что мы имеем дело с динамическим окружением, т.е. в следующий дискретный момент времени (напрмер, следующий ход) мы будем иметь другую картину входных данных. Скорее всего, эта картина не будет радикально отличаться от предыдущей, ибо окружение обычно имеет свойство непрерывности (спорное утвержение!). Соответственно, эти входные данные так же будут проанализированы и над ними будет построена абстрактная структура их описывающая. Возникает вопрос, как соотносятся абстракции, полученные на шаге N и на шаге N+1? Вот тут как раз может быть применена идея гештальта. Суть этой идеи заключается в следующем - в мозгу человека (или в ИИ) поступающие данные формируют некоторый устойчивый процесс (гештальт), который является отражением окружения. При этом, один раз возникнув (свойство эмерджентности гештальта), этот процесс начинает влиять на интерпретацию следующих порций информации (свойство устойчивости гештальта). Типичный пример подобного поведения у человека - интерпретация картинки с собакой из статьи по ссылке. Сначала она кажется мешаниной пятен, но когда приходит понимание (или просто кто-то скажет) того, что там изображена собака под деревом, эти пятна начинают далее восприниматься как детали известной структуры. Более того, если эту сцену начать вращать в пространстве, то человек без труда будет угадывать в новых наборах пятен ту же самую собаку и дерево. Другими словами, как только гештальт формируется, он начинает "вписывать" новые данные в свою структуру, а не анализировать их с "чистого листа".
Как эта идея может проявиться в примере с ИИ? Например, предположим, что наш кластеризатор имеет следующее встроенное правило: "группировать близкорасположенные юниты, которые движутся в одном направлении с одинаковой скоростью". Рассмотрим пример: группа юнитов движется в определённой формации до момента T1, после чего юниты меняют формацию, причём новая формация стабилизируется только после момента T2 (T2 > T1). Между T1 и T2 скорости и курсы юнитов, образующих группу, могут сильно менятся, но до Т1 и после Т2 они продолжат движение в строю в одном направлении с одинаковой скоростью. Если интерпретация на каждом шаге будет независимой, то в момент Т1 кластеризатор "потеряет" группу и снова "найдёт" её после Т2. Но это поведение кластеризатора будет ошибочным, ибо по условию примера, юниты находятся в одной группе, они лишь перестраиваются. Если же реализовать "преемственность" абстракций между шагами, то даже после Т1 кластер будет существовать в у ИИ в "уме", а кластеризатор будет иметь "подсказку", что в этом месте ему следует искать группу с определёнными параметрами. С этой подсказкой кластеризатор может существенно ослабить правило группировки юнитов, поскольку ему надо вслего лишь подтвердить ожидание. В таком случае, даже между Т1 и Т2 группа не пропадёт из области видимости ИИ. С другой стороны, если группа на самом деле распадётся на независимые юниты, то до ИИ это "дойдёт не сразу", ибо он будет пытаться увидеть группу ещё некоторое время из-за встроенной инерциальности мышления.
В целом идея "гештальта" позволяет реализовать в ИИ восприятия времени не как набора разорванных состояний, а как единого процесса, обладающего свойством непрерывности, т.е. ИИ будет "понимать", что группа, наблюдаемая им на шаге N+1, это некая конкретна группа, наблюдавшаяся на шаге N.
P.S. В процессе размышления мне пришла в голову мысль, что подобная идея в неявном виде следуюет из модели "память-предсказание", которую Джефф Хокинз сформулировал в книге "Об интеллекте".
|
|
Comments: Add Your Own.
|
|
Saturday, August 29th, 2009
|
|
|
Давно меня занимает следующая идея: встроенный язык для скриптования ИИ-ориентированных задач. "Простых" скриптовых движков, пригодных для встраивания в приложения сейчас пруд пруди, но все (из известных мне) - это императивные языки. Они не очень хорошо подходят для задач скриптованяи ИИ. Основные особенности таких задач заключаются в следующем: 1. Высокая степень недетерминизма. 2. Весьма произвольное качество входных данных. 3. Необходимость анализировать входные данные, повышать их уровень абстракции. 4. Необходимость синтезировать выходные данные с понижением их уровня абстракции. 5. Зачастую необходимость опираться на эвристики и приближённые рассчёты и модели. 6. Необходимость представлять знания. (Примечание: Обратите внимание, что пункты 3 и 4 являются зеркальным отражением друг друга. Это наводит на мысль, что желательным свойством языка была бы обратимость программ a-la Prolog, т.е. формулирование программ не как отображений (функций), а как отношений (уравнений)).
Опыт программирования подобного рода задач на императивных (Pascal- и C-подобных) языках наводит на мысль, что это весьма противоестественное занятие. Необходим другой язык, более высокого уровня и такой идеологической базой, которая бы делала простым и естественным обращение с задачами описанного типа.
Пока попытки смоделировать такой язык, черпая вдохновение из известных мне языков, привели меня к следующим идеям: 1. Основа языка - недетерминистическая система преобразования термов при помощи определяемых правил с унификацией и логическими переменными. Т.е. основная единица языка - трансформационное правило, "голова" которой унифицируется с исходным выражением, порождая связи переменным со значениями, а тело подставляется вместо унифицированного терма. Один и тот же терм может быть одновременно преобразован несколькими правилами, что породждает возможность нескольких результатов трансформации, т.е. недетерминистическую прогармму. 1.1. Частичная подстановка. Даже если после унификации головы правила у неё остаются свободные переменные, вычисление может быть продолжено. Если же дело дошло до встроенных правил, которые для вывода решения не могут принмать свободных переменных (например - встроенная арифметика), соответсвующая трансформация может быть отложена или переведена в разряд ленивых вычислений. 2. Ограничения. С переменными могут быть ассоциированы предикаты, ограничивающие область возможных значений, которую переменные смогут принимать в при унификации. 3. Динамическая типизация с ограничениями. Как следствие п.2. пользователь может определять ограничения типа значений, которые могут связываться с переменными. Поскольку язык ограничений и язык программирования - один и тот же, система типов является Тьюринг-полной, т.е. програмист может описать тип произвольным образом ограничивающий область своих значений. Записи, алгебраический типы и т.п. могут быть выражены через эту базовую идею и быть оформлены как синтаксический сахар. 4. Единое представление программы и данных. Как следствие - возможность метапрограммирования. 5. Явные средства по контролю детерминизма (преобразование недетерминированных вычислений в ленивые списки результатов и списков в недетерминизм). 6. Развитые встроенные средства для обработки множеств.
За сим мысль обрывается. Из уже сделанного по этой теме - прототип движка переписывающего термы (без пряников, в виде ограничений) и обрывочные примеры программ на этом гипотетическом языке. На самом деле сделано пока мало. Мучает вопрос - а не делаю ли я велосипед? М.б. подобного рода вещи уже реализованы в виде библиотек/плагинов/компонентов. В гугле пока ничего не нашёл.
|
|
Comments: Read 8 or Add Your Own.
|
|
Friday, August 21st, 2009
|
|
|
Собственно, сабж! Сегодня утром у меня родился сын. Началась новая жизнь. :)
|
|
Comments: Read 11 or Add Your Own.
|
|
|
В некоторых... гм... кругах очень модным считается высказывание мнения о том, что "все эти ваши" .NET-ы и Джавы привели к тому что в индустрию пришло много новичков, позорящих честь профессии. Мол, новые языки и технологии делают программирование "слишком простым" и доступным для широких слоёв населения, подрывая тем самым престиж и таинственность образа программиста. Лично я считаю это ни чем иным, как цеховым обсурантизмом, желанием сохранить свою ценность и запах элитарности (если он есть вообще). Более того, я считаю, что утверждающие мнение об упрощении программирования ошибаются.
Из чего складывается сложность работы программиста? Она складывается из двух вещей. Одна из них - это фундаментальная сложность программирования, заключающейся в том, что программирование - это суть перевод с человеческого языка на формальный со всеми вытекающими последствиями (необходимость разрешать неопределённости). Причём перевод не вольный, а поставленный в рамки ограничений, как и любая другая инженерная работа. Это, кстати, ОСНОВНАЯ сложность. Другая сложность - это инструментальная сложность. По сути, столь яростно остаиваимая "элитарность" олдфажных программитстов на С/С++ и т.д. сводилась к тому, что они успешно боролись недостатками и ограничениями машин и самих инстурментов. Новые языки намного лучше скрывают эти подводные камни, чем вызывают зависть и агрессию олдфагов, поскольку делают ненужным целый пласт знаний и навыков, в которые были вложены многие силы, и которые являются предметом гордости. Это МЕНЬШАЯ сложность. Так что считать, что именно упрощение инструментальных средств делает программирование проще, означает допускать ошибку. Это делает проще КОДИРОВАНИЕ.
Но даже тут не всё так просто. Сейчас в мейнстрим инструментов разработки начинает постепенно входить весь тот багаж наработок, который давно вызревал в "академических" средах и языках. По сути программирование сейчас становится всё более и более декларативным, я даже не побось этого слова - "математикообразным". Не математическим ещё, но уже ближе к этому. И вот тут кроются новые "инстурментальные сложности". Если раньше программист работал в достаточно простой для понимания императивной парадигме, только хорошенько "заминированной" кучей подводных камней технического характера, то теперь программист всё больше должен разбираться в вещах фундаментальных, которым в универсистете учат и от которых студенты усиленно нос воротят. На горизонте маячит новый облик программиста - не знающего кучу трюков,туловок и особенностей реализации ремесленника, а имеющего хороший фундаментальный бэкграунд специалиста, более похожего на прикладного математика (собствено говоря, на "эксклюзивных" задачах мы можем наблюдать это уже в полный рост ).
А тут IQ и желание учиться надо даже поболее, чем для того, что бы на досуге выучить С++ и поковырять операционку и пару технологий.
P.S. Недавно видел в одном форуме, как один из "программистов" авторитетно заявлял: "графы? программисту это не надо!" :)
|
|
Comments: Read 2 or Add Your Own.
|
|
Thursday, June 25th, 2009
|
|
|
|
Увы, чуда не случилось - вчера после операции, давшей некоторую надежду, Марсик отошёл в мир иной.
|
|
Comments: Read 4 or Add Your Own.
|
|
|
|
Наверное это рано или поздно должно было случиться - наш питомец сильно заболел. Возили недавно его к одному ветеринару - он ничего не нашёл, потом к другому. Оказалось, что у Марсика очень сильно раздут желудок и не работает кишечник :( Он не пьёт и не ест уже несколько дней. Приходится колоть ему физраствор с глюкозой, что бы хоть как-то поддержать его силы. Сегодня в первый раз в жизни ставил уколы живому существу. Если к завтра ситуация не улучшится, то выход один - операция. Но прогнозы мрачные, доктор не обещал ничего конкретного. Ломаю голову, что же с ним призошло?
|
|
Comments: Read 3 or Add Your Own.
|
|
|
Посмотрел сегодня экранизацию "Обитаемого острова". Фильм, скажем прямо, не оправдал лучших ожиданий. Впрочем, худших ожиданий он тоже не оправдал, что уже неплохо :) О том, что Бондарчук извратил книгу во многих местах (чего только стоит финальная драка со Странником!), да и вообще снял сомнительное кино, было сказано уже очень много, я хочу сказать о другом.
Фильм "Обитаемый остров", несомненно, продолжил тенденцию "переплюнуть Голливуд" по части спецэффектов и сделал это весьма достойно. Взрывы, стрельба и прочая драчка выглядела весьма убедительно, костюмы были красивы, компьютерная графика тоже на высоте. При всём при этом графически мир Саракша выглядел очень слабо, как-то картонно. Т.е. получилось, что по отдельности все элементы визуального ряда (декорации, костюмы, техника, интерьеры) выглядели вполне достойно, а весь фильм в целом - сплошная бутафория. Например, первые эпизоды "Звёздных войн" выглядят намного убедительнее, хотя с чисто технической точки зрения до "ОО" им далеко - времена уже другие, Лукасу и не снилось нынешних технологий. Тем не менее... Или же "Терминатор" - сама идея пришла Кэмерону в горячечном бреду с температурой за 40, но ему удалось создать весьма интересный, захватывающий воображение образ мрачного будущего, порабощённого машинами. Даже классика советского кино - Кин-Дза-Дза - к которой само понятие "спецэффект" применимо с натяжкой, дает более "достоверную" картину.
Все эти фильмы объединяет то, что графический стиль тамошних миров выглядит ЦЕЛОСТНО. В нём угадываются какие то закономерности, какие-то правила. Что-то, что заставляет верить, что всё должно выглядеть именно так, а не иначе. Что всё так не случайно, а в силу жизненной необходимости, а, значит, достоверно. На их фоне "ОО" выглядит как дешёвая лавка сувениров - всё блестит, всё по отдельности красивое, но всё вместе - пёстрая куча бирюлек, которая и запоминается как что-то сумбурное. Он не захватывает воображение, в этот мир не хочется вернуться в своих мыслях, попытаться его "додумать" за рамкой фильма, как это бывает с действительно хорошими картинами. Этот мир настолько нереален, что вылетает из головы сразу после начала титров. Создаётся впечатление, что господин Бондарчук не пытался представить себе тот мир, который он нам нарисовал. Он не пытался в нём "жить", он не был одержим им, как был одержим Лукас своей космической сагой. Он сделал товар, подходящий под формальные требования - что бы было нужное количество спецэффектов, драк, стрельбы... Смешать, но не взбалтывать.
Обидно то, что он взялся за экранизацию Стругацких, явно не будучи ещё к этому готовым. Ему бы потренироваться "на кошках" ещё какое-то время, а потом браться за экранизацию классики. А теперь что уж... не переснимать же "Остров" заново.
|
|
Comments: Read 5 or Add Your Own.
|
|
Wednesday, May 20th, 2009
|
|
|
Сейчас откопал какие-то свои исходники аж семилетней давности, каким-то чудом пережившие много переездов, потерянные винты и сломанные компютеры :) Это еще мои "самопальные" программульки, которые я писал до того, как начал программировать "на работу". Собственно, там даже есть та программа, которая была тестовым заданием, после которого меня взяли на работу (товарищ Александр Евгеньевич С., для тех кто в курсе :) ). Такой наивный код, такие безграмотные комментарии,
Но самое ужасное состоит в том, что на фоне того кода, с которым мне сейчас приходится иногда сталкиваться на работе (я уж МОЛЧУ про предыдущую работу) эти мои наивные поделки НЕПЛОХО смотрятся :)
|
|
Comments: Add Your Own.
|
|
|
Помню, когда я работал на своей первой работе, у меня был весьма интересный случай. Это было одно гос.предприятие, производившее некоторую информационную систему для некоторых государственных заказчиков. Я тогда был ещё студент, восторженно глядящий снизу вверх на старших коллег и впитывающий как губка их мудрость и опыт. С самого начала я испытывал чувство гордости от того, что теперь делаю НАСТОЯЩЕЕ дело, а не просто программирую "для себя" в плане хобби. Однако по мере получения опыта и общения с нашими заказчиками я стал понимать, что то, что мы производили - это говно, которое впаривается заказчику нерыночными способами (госзаказ!) и которое не вызывает у пользователей такого чувства восторга, которое испытывал я поначалу. Говно со всех сторон. Задумка - говно, исполнение - гавно (код одной из программ до сих пор занимает первое место в моем персональном рейтинге говнокода. А повидал я с тех пор немало!), потребительские качества - тоже говно (глючит, падает... мрак).
Осознание этого факта повергло меня в уныние. Своими сомнениями я поделился со своим непосредственным начальником. Его реакция меня удивила. Я, признаться, думал, что он пожурит меня за нелояльность и "невосторженный образ мысли", а он сказал всего лишь: "Да забей. Деньги платят - и ладно". Вот так вот. Люди делают говно, они это понимают, но их это не колышет. Деньги платят - и ладно. С тех пор каждый раз, когда я общался с заказчиками, я испытывал смутное чувство стыда за то, что мы вываливаем на них свое говно, да еще деньги за это получаем. Я уволился из той компании спустя пару лет по нескольким причинам, но одна из этих причин состояла в том, что я не хотел больше делать говно.
С тех пор я общался со многими людьми и не переставал удивляться тому факту, что многие из них откровенно презрительно отзывались о том, чем они занимались. Они заведомо держали своих клиентов за лохов, которым они впаривали неликвид и даже гордились тем, что они делают говно и умудряются сбывать его за деньги. Или же с гордостью рассказывали о том, как они обдуривают своего работодателя, получая деньги за некачественную или просто не сделанную работу. Я читал о целых компаниях, основной вектор усилий был направлен на то, что бы обмануть партнеров или клиентов, а не сделать качественно свою работу. У нас вообще люди массово не верят в то, что они делают.
У Пола Грэхэма в книге "Hackers and Painters" есть хорошая глава о богатстве и деньгах, в которой он поясняет, что это не одно и то же. Богатство - это материальные вещи, которыми мы пользуемся, а деньги - это некоторая абстракция, которая лишь делает удобным обмен одного богатства и другое. Богатство относится к реальному сектору, деньги - к финансовому. Залог успеха - делать то богатство, которое нужно другим людям, что бы они с удовольствием меняли его на свои деньги. (Тут, кстати, можно сильно отвлечься в обсуждение кризиса, вызванного излишним раздуванием фин.сектора, но это отдельная тема). У нас же, к сожалению, залогом успеха считается именно умение эти деньги из клиента изъять, пусть даже обманув его, и произведя на свет гавно вместо богатства.
Когда говноделов один на сто честных работников или бизнесменов - это ничего. Говнодел хапнет своих денег, потом потеряет позицию на рынке и освободит место под слонцем. В особо запущенном случае его посадят, если не с теми свяжется - шлёпнут. Но в целом экономика пострадает несильно. Значительно хуже, когда подобная стратегия ведения бизнеса является широко распространенной. В таком случае в стране реального богатства почти никто не производит - все хотят только впаривать и получать деньги, развивая не возможности по улучшения качества товара или услуг (технологии, организацию), а по по впариванию (пиар, связи).
Страна получает "неконкурентноспособную экономику", народ презрительно морщит носики на отечественные товары (хотя сам делает такие же дерьмовые товары и не краснеет), требует повышения пошлин на товары иностранных конкурентов (что бы впаривать) и снижения пошлин на все остальное (ну не хочется же гавном пользоваться! дайте качественный импорт, сволочи), рассуждает о том, что бизнесу ставится много бюрократических препонов (а что еще, если вдуматься, с этой сворой обманщиков делать?), злится на свои зарплаты... Конечно, если сам не понимаешь ценности своего труда, то сложно понять его реальную стоимость. И, наверное, очень не хочется признавать, что твоя работа и тех денег не стоит. Хотя в глубине души сам прекрасно понимаешь, что...
Я не знаю, как это лечить. Может быть надо, что бы сменилось два-три поколения. Может быть надо, что бы нефть кончилась или упала в цене. Или гипноизлучатели на орбите подвесить какие-нибудь. Но пока халява не перестанет быть одной из важнейших ценностей российского менталитета, а русский бизнес быть нае-бизнесом, жить лучше мы не станем.
Такие дела.
|
|
Comments: Read 24 or Add Your Own.
|
|
|
Покопавшись на просторах "Lamdba the Ultimate" обнаружил совершенно замечательную и остроумную реализацию языка Prolog, как встраиваемого языка. Называется Yield Prolog в честь конктрукции "yield", т.е. итераторов на продолжениях, которые поддерживаются в C#.
Страничка проекта: yieldprolog.sourceforge.net/
|
|
Comments: Read 9 or Add Your Own.
|
|
Thursday, February 12th, 2009
|
|
|
Когда-то старик Лем в плане шутки и юмора писал про будущее, в котором накоплено будет столько много знаний, что поиск в них будет отдельной и трудной задачей. По аналоги с научными экспедициями будут научные инспедиции за знаниями в библиотеки и хранилища :) Шута шуткой, а мужик знал, что говорил :)
Собственно, предметный случай - стал замечать, что информация в гугле находится, как правило, уже ПОСЛЕ того, как ты решишь задачу, поскольку только после её решения находятся правильные формулировки запросов :) Получается, что уже сейчас иногда проще "переоткрыть открытие", чем найти его среди гор доступной информации.
|
|
Comments: Read 17 or Add Your Own.
|
|
Wednesday, February 11th, 2009
|
|
|
Некоторые не очень связные и оформленные мысли посетили недавно мою голову во время размышлений, чего бы такого приладить к Prolog'у, что бы всем хорошо стало :) Мысли эти касаются языков программирования и программирования вообще.
Во-первых, что такое программирование и чем оно отличается, скажем, от инструктирования человека? Очень близкий к этому вопрос - чем естественные языки отличаются от языков программирования?
Во-вторых, в чём суть "высокоуровневости" языка программирования и что именно мы имеем в виду когда говорим "язык X более высокоуровневый, чем язык Y"?
По первому вопросу: Программа - это целостная формальная система, отличительными особенностями которой являются полнота, однозначность и непротиворечивость. Программу можно интерпретировать только одним способом, причём этот способ явно описан в стандарте языка, на котором написана программа. В отличие от этого, инструкция на естественном языке имеет некоторую степень неоднозначности, которая, кстати, может варьироваться. Например, существуют детальные пошаговые инструкции для выполнения операций. Как пример очень нечёткой инструкции можно привести пример, когда жена мне говорит: "дорогой, сделай мне что-нибудь вкусненькое". В данном примере вы видим неоднозначность - что сделать?, как именно?, сколько? и т.п.
В отличие от человека, который имеет свой жизненный опыт и субъективное мнение, компьютер не имеет ни того, ни другого. По-этому он неспособен разрешать неоднозначности (восполнять на основе опыта неполноту информации и устранять противоречия, выбирая субъективно наиболее хороший вариант). Работа программиста заключается как раз в выполнение этих функций - из неполной, неоднозначной, противоречивой постановки задачи родить полную, непротиворечивую, однозначную программу, которую тупой компьютер способен воспринять и исполнить. Именно на этом сели в лужу те, кто считал, что SQL будет поняет "простым людям" только потому, что в нём слова английские. Не синтаксис главная проблема, а именно необходимость производить целостные формальные системы.
Кстати, характерной особенностью ИИ должно быть именно умение устранять неоднозначность, полагаясь на субъективное мнение. Так что если какая-то программа научится это делать, можно будет сказать, что большой шаг к ИИ сделан.
Во второму вопросу: родилась тут у меня в голове некоторая моделька, трактующая программу как сообщение, которое программист посылает компьютеру. Основная (и весьма спорная!) идея этого умопостроения заключается в том, что информация (в широком смысле), сообщаемая компьютеру для решения некоторой конкретной задачи, инвариантна относительно языка программирования. Т.е. программируешь ты на Lisp'е или на ассемблере, ты сообщаешь компьютеру некоторый объём информации, которые он способен, пользуясь компилятором/интерпретатором, свести к встроенным в него операциям.
Как я помню из курса университетского дискретки, количество информации, передаваемой в сообщений, зависит от тезауруса принимающей стороны. Тезаурусом в данном случае является язык программирования, т.е. в зависимости от выбранного языка само сообщение сильно меняется. Оно будет короче или длинее и будет сформулировано в разных понятиях, но при этом инофрмация, несомая им, остаётся неизменной для одной и той же задачи.
"Высота" языка программирования может быть измерена в длинне сообщения. Чем короче получается программа, тем выше уровень языка программирования. Природа тех свойств языка, которые "повышают" его уровень, позволяя короче формулировать программу - тема очень интересная и отдельная. Например очевидно, что добавление в язык предметно-специфичных свойств упрощает программы (пример - SQL), но есть свойства языков, которые нельзя назвать domain-specifiс, но при этом они определённо повышают уровнь. Можно ли считать, что логическое программирование "более высокое", чем функциональное? Попутно возникает другой интересный вопрос - существует ли верхний предел для "высоты" языка программирования?
Кстати, ещё одно знамечание - повышение уровня языка программирования не делает его "умнее" в смысле приближения к ИИ (или ЕИ - естественному интеллекту) или к естественному языку. Пролог или лисп ничуть не сильне в разрешении неоднозначностей, чем ассемблер и сила их равна 0 (прописью - нулю).
|
|
Comments: Read 14 or Add Your Own.
|
|
Thursday, January 29th, 2009
|
|
|
Недавно в жэжэшечке случилось очередное бурление страстей. Если кто не в курсе, по ссылке подробности: community.livejournal.com/doktor_killer/417385.html. В этой истории меня сильно заинтересовало даже не то, было ли всё так, как описано девочкой или на самом деле прав опровержитель. В этой истории меня заинтересовала реакция жж-сообщества, которое тут же бросилось аквтино участвовать в обсуждении. Большинство обывателей разделилось на два лагеря, яростно спорящих друг с другом - защитников и обвинителей авторши исходной записи. Типичный представитель каждого из лагерей обладал двумя яркими свойствами: 1. Абсолютная уверенность в своей правоте и готовность спорить. 2. Отсутствие каких-либо сведений, способных подтвердить его точку зрения.
Иными словами, основным фактором на основании которого незаинтересованные люди выбирали свою позицию было их мироощщущение, в которое укладывалась либо версия девушки, либо версия опровержителя. Именно защита этого своего мироощщущения являлась, как мне кажется, побудительным мотивом всей это перепалки, ибо у одних изначальная версия вызывала когнитивный диссонанс, а у других его вызывало опровержение. Простейшим же путём разрешения от тяжкого бремени когнитивного диссонанса является критика источников "тревожной" информации, а не попытка эту информацию осмыслить и скорректировать своё мировоззрение.
Другими словами весь этот флейм можно перефразировать просто: "Не пишите такого, пожалуйста, вы разрушаете мои комфортные иллюзии!"
|
|
Comments: Add Your Own.
|
|
Monday, January 5th, 2009
|
|
|
Данная запись посвящена размышлениям о том, как императивное и декларативное программирование соотносятся между собой и с реальной жизнью.
( Read more... )
|
|
Comments: Add Your Own.
|
|
Friday, January 2nd, 2009
|
|
Wednesday, November 26th, 2008
|
|
|
Сейчас читаю сабжёвую книгу. Вышла она ещё в 2004-м году, но мне на глаза попалась только недавно. Если вы её не видели и интересуетесь природой интеллекта (искусственного или естественного), то крайне рекомендую. Автор - Джеф Хокинс (Jeff Hawkins). Кстати, основатель Palm Computers и лично папа модели Palm Pilot.
Книга содержит изложение его теории, обясняющей то, как мы думаем. Лично мне она показалась весьма интересной, хоть и не безупречной. Его теория уже - не совсем теория. На её базе он разработал модель Hierarchical Temporal Memory (en.wikipedia.org/wiki/Hierarchical_Temporal_Memory), которая уже имеет своё софтверное воплощение.
Из недостатков книги (и теории) могу выделить то, что он концентрируется исключительно на функциях одной части мозга - неокортексе, игнорируя другие области. Так же в его теорию не укладывается сущствование такого важного механизма обучения, как импринтинг. При этом импринтинг и проинорированные им части ЦНС (наприер, гиппокампус) определённо имеют отношение к тем высшим нервным функциям, которые он пытается моделировать.
UPD: Вот что бывает, когда пишешь отзыв, не прочитав целиком книгу :) Зачёркнутому не верить! :)
|
|
Comments: Add Your Own.
|
|
Wednesday, November 12th, 2008
|
|
|