Собеседование
– Вы уже здесь? Здравствуйте. Очень приятно, я – Сергей Иванович.
– Здравствуйте… Дмитрий, приятно… мне тоже…
– У вас с собой резюме?
– Нет, я подумал…
– Ничего страшного, сейчас посмотрю… Да, у меня есть распечатка. Но очень советую вам, молодой человек, на будущее с собой всегда иметь резюме. Пригодится, знаете ли.
– Да, прошу прощения, учту. Только если вы сейчас возьмете меня на работу, то зачем мне еще понадобится резюме, правда?
– Интересная мысль. Почему мне всегда нравится проводить собеседования с программистами – все у вас так логично и последовательно, что не придерешься. Ведь так?
– Не совсем. То есть, конечно, с точки зрения нормального человека…
– А программисты, по-вашему, ненормальные?
– Вы меня поймали. Нет, конечно, я не это хотел сказать. Но последние тенденции в нашей работе как раз напрямую связаны с использованием нечеткой логики в программировании. Я этим сейчас активно занимаюсь, поэтому и вспомнил. Вы знакомы с этой теорией?
– Нет.
– Как бы это объяснить…
– …Чтобы было понятно «нормальным» людям…
– Да. Мы с товарищем по этой теме защищали дипломную работу в физтехе. Как говорится, свежо предание. Называлась она «Основные принципы применения законов нечеткой логики в программировании систем с элементами искусственного интеллекта».
– Очень интересно. Расскажите поподробнее.
– Понимаете, классические методы управления хорошо работают при детерминированном объекте управления и в такой же детерминированной среде. Непонятно? То есть когда мы все знаем о них. А что делать, если у нас нет полной информации о системе, а сам объект управления характеризуется высокой сложностью? Вот для таких задач оптимальными являются нечеткие методы управления, это еще в 1965 году профессор Лютфи Заде определил. Русский, между прочим! То есть еврей. В общем, из Азербайджана. Неважно… Классическая логика подразумевает только понятия «истина» или «ложь», «черное» или «белое», «1» или «0», если говорить компьютерным языком. А это, в свою очередь, еще Аристотель сформулировал. Нет, не компьютерный язык, конечно, а принципы классической булевой логики[11]. Но окружающий нас мир значительно сложнее – ему требуются более сложные градации. Вот для этого нечеткая логика и вводит понятие «лингвистическая переменная», где уже можно определять шкалу значений: «теплее – холоднее» или, там, «умнее – глупее»…
– Это к чему сейчас был комментарий?
– Это просто фигура речи, первое, что пришло в голову…
– Ну-ну, продолжайте, я слушаю.
– Так вот, японцы уже давно эксплуатируют принципы нечеткой логики, так называемую fuzzy logic. Fuzzy переводится как «расплывчатый», «с нечеткими краями». Для этого они специальные чипы разрабатывают еще с восьмидесятых годов. Наверняка вы видели рекламу стиральной машины Samsung с искусственным интеллектом на основе нечеткой логики…
– Samsung – это же вроде корейцы, не японцы?
– Да, но они у японцев технологию спер… скопировали. Не суть. Копеечный чип, а позволяет экономить огромные средства за счет упрощения модели – вместо громоздких алгоритмов описания процесса стирки с учетом всех детерминированных параметров можно легко и просто описать задачу нечеткими лингвистическими переменными и несложными уравнениями. А наши, то есть западные разработчики отстали в этих вопросах и сейчас активно догоняют. Но возникает большая дыра на уровне программирования! Чтобы использовать такую теорию на цифровых компьютерах, необходимы математические преобразования, позволяющие перейти от лингвистических переменных к их числовым аналогам в компьютере. Понимаете?
– Нисколько…
– Компьютер тупой, понимает только «0–1–1–0–0». Его нужно научить правильно воспринимать «расплывчатые» алгоритмы. Появилась задача «Сделай немного потеплее» – и ее надо перевести в понятные компьютеру категории «Переведи термостат на три деления влево». Не совсем так, конечно, но я могу написать уравнение. Оно очень простое. У вас есть листок?
11
Булева логика – алгебраическая система, построенная на выражениях {ложь, истина}.