Выбрать главу

Собеседование

– Вы уже здесь? Здравствуйте. Очень приятно, я – Сергей Иванович.

– Здравствуйте… Дмитрий, приятно… мне тоже…

– У вас с собой резюме?

– Нет, я подумал…

– Ничего страшного, сейчас посмотрю… Да, у меня есть распечатка. Но очень советую вам, молодой человек, на будущее с собой всегда иметь резюме. Пригодится, знаете ли.

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

– Интересная мысль. Почему мне всегда нравится проводить собеседования с программистами – все у вас так логично и последовательно, что не придерешься. Ведь так?

– Не совсем. То есть, конечно, с точки зрения нормального человека…

– А программисты, по-вашему, ненормальные?

– Вы меня поймали. Нет, конечно, я не это хотел сказать. Но последние тенденции в нашей работе как раз напрямую связаны с использованием нечеткой логики в программировании. Я этим сейчас активно занимаюсь, поэтому и вспомнил. Вы знакомы с этой теорией?

– Нет.

– Как бы это объяснить…

– …Чтобы было понятно «нормальным» людям…

– Да. Мы с товарищем по этой теме защищали дипломную работу в физтехе. Как говорится, свежо предание. Называлась она «Основные принципы применения законов нечеткой логики в программировании систем с элементами искусственного интеллекта».

– Очень интересно. Расскажите поподробнее.

– Понимаете, классические методы управления хорошо работают при детерминированном объекте управления и в такой же детерминированной среде. Непонятно? То есть когда мы все знаем о них. А что делать, если у нас нет полной информации о системе, а сам объект управления характеризуется высокой сложностью? Вот для таких задач оптимальными являются нечеткие методы управления, это еще в 1965 году профессор Лютфи Заде определил. Русский, между прочим! То есть еврей. В общем, из Азербайджана. Неважно… Классическая логика подразумевает только понятия «истина» или «ложь», «черное» или «белое», «1» или «0», если говорить компьютерным языком. А это, в свою очередь, еще Аристотель сформулировал. Нет, не компьютерный язык, конечно, а принципы классической булевой логики[11]. Но окружающий нас мир значительно сложнее – ему требуются более сложные градации. Вот для этого нечеткая логика и вводит понятие «лингвистическая переменная», где уже можно определять шкалу значений: «теплее – холоднее» или, там, «умнее – глупее»…

– Это к чему сейчас был комментарий?

– Это просто фигура речи, первое, что пришло в голову…

– Ну-ну, продолжайте, я слушаю.

– Так вот, японцы уже давно эксплуатируют принципы нечеткой логики, так называемую fuzzy logic. Fuzzy переводится как «расплывчатый», «с нечеткими краями». Для этого они специальные чипы разрабатывают еще с восьмидесятых годов. Наверняка вы видели рекламу стиральной машины Samsung с искусственным интеллектом на основе нечеткой логики…

– Samsung – это же вроде корейцы, не японцы?

– Да, но они у японцев технологию спер… скопировали. Не суть. Копеечный чип, а позволяет экономить огромные средства за счет упрощения модели – вместо громоздких алгоритмов описания процесса стирки с учетом всех детерминированных параметров можно легко и просто описать задачу нечеткими лингвистическими переменными и несложными уравнениями. А наши, то есть западные разработчики отстали в этих вопросах и сейчас активно догоняют. Но возникает большая дыра на уровне программирования! Чтобы использовать такую теорию на цифровых компьютерах, необходимы математические преобразования, позволяющие перейти от лингвистических переменных к их числовым аналогам в компьютере. Понимаете?

– Нисколько…

– Компьютер тупой, понимает только «0–1–1–0–0». Его нужно научить правильно воспринимать «расплывчатые» алгоритмы. Появилась задача «Сделай немного потеплее» – и ее надо перевести в понятные компьютеру категории «Переведи термостат на три деления влево». Не совсем так, конечно, но я могу написать уравнение. Оно очень простое. У вас есть листок?

вернуться

11

Булева логика – алгебраическая система, построенная на выражениях {ложь, истина}. Прим. ред.