Риона Ким: другие произведения.

Хочу научиться думать

Журнал "Самиздат": [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь]

  
Хочу научиться думать
  
  Но не знаю, как.
  
  Идиотом при этом я себя отнюдь не считаю. Думаю я медленно, это правда, но достаточно эффективно - и среди людей, с которыми я знаком лично, есть всего пара человек, которых я считаю умнее себя.
  
  С математикой у меня никогда проблем не было - потому что в математике практически не приходится думать. Всего раз было, что я на экзамен по математическому анализу забыл выучить одну достаточно обширную тему, она мне попалась - и мне пришлось самостоятельно выводить и доказывать теоремы. И то, "ум" здесь был задействован лишь постольку поскольку.
  
  Дело в том, что математические задачи не требуют изобретения решения - решение всех этих задач сводится к перебору известных алгоритмов решения и последовательного их комбинирования (если задача не решается за один ход). Чтобы взять интеграл, нужно вспомнить, как берутся интегралы. Если под интегралом какая-то чудовищная муть - надо вспомнить, какие есть методы рассеивания чудовищной мути, исходя из её структуры и знакомых элементов. Если необходимо решить дифференциальное уравнение - нужно вспомнить методы решения диффур конкретного типа.
  
  При этом стоит отметить, что я сейчас говорил не о математической науке в целом, а лишь о той её части, которая преподаётся в институтах. Доказательство новых теорем (вроде пятнадцать лет назад сдавшейся сэру Уайлсу Великой теоремы Ферма), получение совершенно новых результатов, нахождение способов практически применить математические методы - это, безусловно, задачи для ума, но именно эти задачи перед студентами никогда и не ставят. Соответственно, и я эти задачи почти никогда не решал.
  
  Единственный раз, когда передо мной встала задача найти практическое применение полученным в институте теоретическим знаниям, был на моём дипломе, и задачу эту я решал очень долго. В конце концов, я её решил: создал веб-магазин, который подбирал из имеющихся в наличии компонент комплектацию компьютера максимально близко к введённой сумме, исходя из предпочтений пользователя. Вводите, к примеру, предел 4000 грн и приоритет процессора и видеокарты - получаете комплектацию на 4000 грн и ещё две - на 3998 и 3997 грн. Короче говоря, я нашёл практическое применение методам оптимизации (был у нас такой курс), которые (методы, в смысле), правда, пришлось несколько доработать. Однако же, и эта задача связана с "умом" лишь опосредованно - ведь, по сути, поиск её решения (то есть поиск возможности присобачить куда-нибудь методы оптимизации) свёлся к перебору всего, что вообще можно оптимизировать.
  
  Задача же, непосредственно решаемая в дипломе (то есть сама по себе оптимизация применительно к комплектации компьютеров в соответствии с предпочтениями пользователя), больше апеллировала к интеллекту. Но программирование для меня - особый случай, и вот почему.
  
  С программированием у меня тоже никогда особых проблем не было. Точнее, были - в том, что касается внимательности к деталям (к слову, в математике я на этом тоже не раз спотыкался). Иногда уходит целый час лишь на то, чтобы выяснить, что неправильная работа алгоритма вызвана опечаткой в одной строке, и целый день - что неправильными параметрами. А потом оказывается, что алгоритм всё равно работает неправильно, только уже по-другому неправильно, и вновь начинается поиск ошибок...
  
  Но в том, что касается алгоритмизации задач - я достаточно силён. Просто потому, что я могу представить себе работающий результат - а потом остаётся лишь при помощи алгоритмизации понять, как именно он работает, и построить нисходящую цепочку к тому, с чего я начинаю, структурным разбиением и всё той же алгоритмизацией. Программистские задачи, наверное, тоже задачи для ума, хотя и не совсем ясно, почему именно - алгоритмизация суть известный метод, а умение представить себе работающий результат - наверное, вопрос воображения. В общем, тут я ещё не разобрался.
  
  Иначе дело обстоит с задачами дизайнерскими. Дизайнерская задача - это необходимость решить какую-либо проблему, не имея готовых алгоритмов или методов решения. "Дизайнерская" она потому, что именно такие проблемы возникают в дизайне чаще всего: как выразить такую-то идею, как побудить людей делать то-то, что нужно изменить, чтобы стало так-то... Здесь существует огромный разрыв между тем, что мы имеем (художественные выразительные средства, конкретные материалы, известные приёмы) и тем, что нужно получить в итоге - второе можно получить из первого, только если результат уже известен, а вот выстроить из имеющихся элементов неизвестное решение по каким-то алгоритмам нельзя. Представить этот результат себе - вот задача дизайнера, и это уж точно вопрос воображения. Но - не только.
  
  Методы, позволяющие воображать в правильном направлении, у дизайнеров наверняка есть - просто мне они неизвестны. Возможно даже, эти методы в письменном виде лежат где-то в свободном доступе - только вот мне они не попадались. Жаль. Но мы отвлеклись, вернёмся к проблеме "думать".
  
  Есть такая игра - "Портал" - а в игре той есть "продвинутые" уровни. Эти уровни я прошёл, за исключением последнего - побившись об стенку (в буквальном смысле) в течении часа, я вынужден был искать подсказки в интернете. Нашёл, естественно, - и тогда я понял, в чём же моя проблема.
  
  Оказалось - я не способен (точнее, просто не привык) думать даже на шаг вперёд. Я получал информацию о первом шаге, "прорабатывал" данные мне элементы решения, а потом приступал ко второму шагу - и оказывалось, что здесь решения нет. Потому что элемент решения находился там, где был первый шаг - и если бы я всегда помнил, что моя промежуточная цель - не только пройти первый шаг, но и все остальные, и искал пути достижения следующих шагов с самого начала - я бы этот момент не упустил. А когда я это просёк, я увидел, что и некоторые обычные уровни этой игры можно пройти гораздо быстрее - если помнить о конечной цели (пройти комнату, пройти уровень), а не зацикливаться на комбинировании всех элементов решения, которые мне предоставлены дизайнерами уровня.
  
  Пожалуй, получилось слишком невнятно, так что я попробую разъяснить. Возьмём, для примера, игры-стратегии. Вот у нас есть база, и нам нужна энергия и ресурсы - мы строим электростанцию и завод. Это первый шаг. Потом мы вспоминаем, что играем мы не одни, а против компьютера, и сейчас к нам в гости с недружеским визитом нагрянет армия - и строим оборону. Это второй шаг. Когда оборона достаточно укреплена, мы строим под её прикрытием армию вторжения - это третий шаг. Ну и, наконец, этой могучей армией мы выносим врага за пределы карты - это последний шаг.
  
  Это, в общем-то, стандартная "стратегия", которая работает в большинстве случаев и которую я нашёл эмпирическим путём. Однако бывает, стратегия эта не работает - например, в условиях нехватки ресурсов, когда денег на оборону хватает, а на армию вторжения - уже нет. И тут начинаются проблемы с достижением победы. Знаете, почему?
  
  Да потому что я (ну, мы же обо мне говорим) просто забываю, что истинная цель игры - победить врага или выполнить определённое задание, а отнюдь не пройти последовательно все приведённые выше шаги. И тогда я понял, что в некоторых ситуациях вовсе не нужно строить могучую базу с могучей обороной и могучей армией вторжения. Достаточно построить могучую кучку бомбардировщиков - никто из них обратно на базу уже не вернётся, зато последний из выживших под обстрелом на подлёте к врагу последней бомбой таки разнесёт цель на куски. И всё, миссия выиграна. Светлая память бомбардировщикам - но выживание юнитов целью игры и не является.
  
  В общем, мне следовало помнить, что каждый шаг нужно "прорабатывать" лишь в той степени, в которой он способствует достижению конечной и промежуточных целей. Никакой шаг сам по себе целью не является, и не стоит сосредотачиваться целиком на нём.
  
  Была, кстати, на ZX Spectrum"е забавная игра, не помню названия. В ней нужно было роботом последовательно захватывать базы противника и нейтральные заводы, производящие запчасти для роботов - строить из запчастей новых роботов и дальше продвигаться вперёд. Так вот, когда до меня дошло, что настоящая цель игры - захватить базы противника, а не захватить вообще всё, я просто перестал захватывать заводы - и роботом, данным мне в начале, быстренько захватывал все базы. Длинная и сложная игра превратилась в пятиминутную прогулку.
  
  Так вот, к чему я это всё веду. Умение видеть ситуацию на несколько ходов вперёд сразу - это здорово, и это, в общем-то, одна из составляющих настоящего умения думать. Иногда я об этом вспоминаю, чаще всего - нет, а когда вспоминаю - далеко не всегда способен это знание применить. В шахматы, к примеру, я играл весьма посредственно - потому что размышлял над текущим ходом и следующим, не видя глобального развития игры и не просчитывая возможный исход.
  
  Так как же мне научиться думать? Как научиться считать на несколько ходов вперёд, как научиться считать, исходя из цели, а не из текущего хода, и как ввести это умение в привычку?
  
  Оригинал статьи "Хочу научиться думать" в журнале Информация о ШутёнкеШутёнка.
  

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
Н.Щерба "Ведьмин крест" Д.Аксенов "Реформатор" В.Абоян "Древо войны" И.Сударева "Двойная честь" В.Михальчук "Клыки на погонах" Т.Устименко "Принц для Сумасшедшей принцессы" Ю.Зонис "Дети Богов" О.Демченко "Семь легенд мира" М.Палев "Серебряный ятаган пирата" В.Филоненко "Сто рентген за удачу" А.Каменистый "Время одиночек" Е.Малиновская "Кодекс дракона" В.Вегашин "Почерк Зверя" О.Баумгертнер "Коготь Дракона" Т.Григорьев "Все не просто" Д.Казаков "Кровавый рассвет" С.Шкенев "Архангелы Сталина" Я.Алексеева "Сестра Рока" Л.Астахова "Ничего невозможного" Д.Морозов, И.Эльтеррус "Фиолетовый меч" А.Астахов "Щит Найнавы"

Сайт - "Художники"
Доска об'явлений "Книги"