В этом разделе сайта будут выкладываться статьи по программированию и всякие полезные тулзы. Лично я пишу на Паскале и Си. Поэтому и выкладываться все будет соответственно под них. Просто кликните ссылку
А теперь давайте поговорим о нерешенных задачах в области программирования на сегодняшний день. Точнее о двух
самых известных из них: создание трехмерного интерфейса программ и создание программ с AI. Создание программ
и операционных систем с трехмерным графическим интерфейсом затруднено не сколько аппаратными возможностями,
сколько финансоемкостью проекта. Дело в том, что для разработки, скажем трехмерной операционки нужен новый
движок, совершенно не такой, как в играх. А программисты, специализирующиеся на разработке операционок и
интерфейсом к ним не имеют опыта в написании графдвижков. Разработчики движков напротив, никогда не
сталкивались с разработкой ОС. Следовательно, первая трехмерная операционка будет создана или какой-нибудь
авторитетной компанией, у которой хватит бабла нанять и тех и других, либо группой энтузиастов. Тут сразу
можно вспомнить о Мелкомягких и об многочисленных ЮНИКС-программистах, разрабатывающих программы в виде
свободно распространяемых исходников. (эти двапротивостоящих "лагеря" наиболее подпадают под определения).
Но Микрософт не заинтересована в разработке такой ОС (Билли еще от форточек далеко не все бабки сгреб! :)
Да и архитектура производимых Микрософтом продуктов не позволяет вот так просто взять и переделать (их
устраивает все откуда-нибудь с%№;%ть). Коллективами же юниксоидов уже делаются первые попытки в разработке.
Благо в никсах можно все перекодить, было бы настроение :) Отсюда можно сделать вывод, что первой ОС с
трехмерным интерфейсом будет Линукс с трехмерной графической оболочкой. Стоит также заметить, что трехмерный
интерфейс имеет чисто эстетическое назначение. При переходе ОСей на трехмерку их функциональность снизится,
но возрастет удобство пользования. А уж применение 3D в сетевых технологиях откроет неограниченные
возможности общения людей по всему миру. Возьмем к примеру обычную аську и игрушку Симс. Разработчики
последней обещают в следующих модификациях встроить аську в свою игру и сделать как-бы своего рода "жизнь
он-лайн", где каждый юнит в игре управляется реальным человеком, а общение между всеми юнитами происходит с
помощью службы icq. Вот вам уже своего рода аська с полноценным графическим интерфейсом вместо текстовых
сообщений.
А теперь об AI. Самыми первыми научно подтвердили возможность создания искуственного интеллекта американские
математики в 60-х годах. С тех пор и по сегодняшний день разными научными коллективами ведутся работы по его
созданию. Основная проблема создания AI состоит в нелогичности интеллекта. Именно поэтому одна из основных
частей современных программ с AI -- генератор случайных чисел. Так как числа, полученные с помощью обычных
программных генераторов все же имеют некоторую закономерность, в профессиональных системах применяются
аппаратные генераторы случайных чисел, в которых генерация основана на физических процессах, например делении
ядер цезия. Программные генераторы случайных чисел берут в качестве основы состояние бортовых часов компа,
координаты мышки, содержимое определенной ячейки памяти, в которой оно быстро и относительно непредсказуемо
меняется, напр. содержимое регистров процессора. Наиболее тупые генераторы спрашивают число у пользователя.
Такие генераторы применяются только в некоторых старых компиляторах Бейсика и С. Другая не мене важная часть
-- это алгоритм анализа вводимой информации. Ведь т.к. система с искусственным интеллектом, то и вводимая в
не информация будет совершенно другой, нежели обычные команды. Напр. вместо команды FORMAT C: будет дана
такая -- "отформатируй, пожалуйста диск Ц". Из этой фразы нужно выделить ключевые слова, такие как "формат" и
"Ц". Причем нужно предусмотреть все случаи. Для этого программе понадобится база данных, с продвинутой
системой СУБД. Программа будет как бы обучаться, накапливая информацию в базе. Обучать ее будет или ее
создатель или пользователь в процессе работы (самообучающиеся системы). В базе должны будут храниться образцы
информации, которая с некоторой вероятностью будет вводиться в программу пользователем или другой программой.
С целью экономии места на диске и в памяти рекомендуется предусмотреть функцию забывания. Т.е. если
конкретная запись в базе долго не используется и ее важность не велика (в базе также должна храниться степень
важности инфы), то запись затирается. Для каждой записи в базе должен быть предусмотрен ответ (как же без
того), причем для одной записи может быть несколько ответов и для одного ответа может быть несколько записей.
В таком случае конкретный ответ, выдаваемый программмой определяется генератором случайных чисел (на то он
там и нужен). В списке возможных ответов должны будут присутствовать как адекватные, так и неадекватные
(обматерили прогу, а она винду затерла -- тоже обижается, типа :) Большой недостаток современных программ с
AI в том, что они просто бездействуют, когда в них не вводят информацию. Программа с AI должна в таких
случаях выводить что-нибудь через случайные (причем все сокращающиеся) промежутки времени, а затем сами
закрываться (типа "Вы там что, заснули все?! Эй!... Блин, молчат! Ладно, и я пойду дрыхнуть..." :) В случае
применения в таких программах "нечеткой логики" или "Fussy logic" нужно все грамотно рассчитывать, учитывая
не только ключевые слова вроде "Громко, тихо, тепло, горячо, холодно, близко, далеко, очень далеко" и т.д.,
но еще и диапазон, относительно которого все это применяется. Например если ввести в программу сведения, что
Владивосток находится от Москвы далеко, а Луна -- самое близкое к Земле космическое тело, то на
вопрос "что ближе? Луна или Владивосток" программа даст ответ "Луна" :) Следовательно нужно предусмотреть в
базе (в ней вообще много чего придется предусмотреть...) категории предметов, и отнести слова "Владивосток" и
"Москва" к категории "города" а слово "Луна" к категории "космос", затем проставить свойства категорий
"города" и "космос", создать параметр "размерность" и выставить его у "космоса" больше, чем у
"городов". Вообще в базе кроме словаря фраз нужно сделать словарь отдельных слов, рассовать их по категориям
и проставить дополнительные сведения по каждому слову. Также необходимо сделать так, чтобы при вводе фразы с
незнакомыми словами программа спрашивала значение и отдельных незнакомых слов и фразы в целом. И не
обламывайтесь, когда в процессе работы программа будет постоянно задавать вопросы. Вспомните соответствующую
фазу развития ребенка, когда у него начинает развиваться интеллект. Сплошные вопросы, на которые приходится
отвечать.
Вот, кстати лирическое отступление по теме:
Приходит Киркоров (Децл, Крестов -- опционально) к создателям Нус AI (это самая продвинутая система AI в
качестве бота для чатов на сегодняшний день) и говорит:
--Вот вы тут искусственный интеллект придумали, а можете сделать так, чтобы ваша программа мне песни писала?
Я вам за это кучу бабла отвалю, и все такое...
--Нет, наша программа хотя и с искусственным интеллектом, но не сможет написать песню.
--Ну, все ясно, не сможет написать. Ведь все-таки искусственный...
--Нет, потому что все-таки интеллект!..
(Я удивляюсь, как создатели НУСа ему морду не набили за то, что вырубается :)