Джорджо де Кирико. Великий метафизик (The Grand Metaphysician), 1917.
Если посмотреть список хабов Хабра, то увидим, что в IT можно выделить много направлений. Для этой статьи возьмем классификацию попроще.
1) CS — создание подходов, имеющих научную новизну. Разработка новых алгоритмов. Основная цель: научная новизна, развитие CS, решение проблем CS.
2) Инженерно-конструкторская деятельность – комбинирование уже известных подходов (алгоритмов, ЯП, библиотек, технологий, исходных кодов), их адаптация под конкретную задачу. Основная цель: создание продукта для решения конкретной практической задачи.
3) Техническое обеспечение — решение типовых (зачастую тривиальных) проблем в ходе эксплуатации “железа” и софта. Обеспечение бесперебойной работы ПО и оборудования с учетом возникающих требований.
Очевидно, что в такой классификации риск неудачи убывает в каждом пункте. При работе над новым алгоритмом или устройством обычно невозможно полностью гарантировать успех. При использовании уже известных алгоритмов, языков, технологий, библиотек и готовых деталей машин – вероятность успешного исполнения работы возрастает. В последнем случае (обеспечение ) работник (должность может быть разная: инженер, системный программист, системный администратор и т.д.) исходит из минимизации замен по принципу: “не трогать то, что хорошо работает”.
Как видим цели противоположные: для научной новизны бывают нужны новые рискованные решения, а для обеспечения – наоборот. Для успешной разработки продукта, желательно применять уже опробованные зарекомендовавшие себя решения, хотя при их отсутствии может понадобится и эксперимент, как в CS.
Кому и насколько в IT нужна математика? — Попробуем ответить на этот вопрос (хотя бы частично).
Работал со многими математиками. У них особый подход, который зачастую мешает освоению программирования. Математик воспринимает задачу метафизически, т.е. вне времени — если в какой конструкции найден треугольник, где квадрат гипотенузы равен сумме квадратов катетов, то этот треугольник мог быть найден годом раньше и через 100 лет будет найден: фактор времени не имеет значения. Ситуация, когда через микросекунду треугольник пропадет, математика раздражает. Факт, что математики эффективно работают с динамическими системами, но динамику они представляют метафизически. Для такого представления нет деления на шаги: сначала вычислить a, потом b, а потом c. Так сложилось, и такой подход полезен. Но это другой подход, чем в программировании.
Приведем определения
Поскольку произнесли слово «метафизика» уточним это понятие.
Первоначально слово «метафизика» использовалось как обозначение сборника 14 книг Аристотеля с рассуждениями о первых причинах («первых родах сущего»), оставшихся после него в необработанном виде, которые в издании философских работ, подготовленном Андроником Родосским, были расположены после (μετά τά) аристотелевой «Физики» (греч. φυσικά), отчего и получили своё название.
Николай Дамасский, перипатетик I в. н. э., цитирует их под этим названием. Понятое в переносном смысле, как обозначающее само содержание «первой философии» («первофилософии») по Аристотелю, название метафизика указывает на изучение того, что лежит за пределами физических явлений, в основании их. Этот смысл термина и остался в общем сознании.
Впервые этот термин был употреблён неоплатоником Симплицием в V веке, а в Средние века получил широкое распространение, став синонимом философии, рассматриваемой как учение о началах всего сущего, считавшихся неизменными, духовными и недоступными чувственному опыту началами.
К области математики относятся только те науки, в которых рассматривается либо порядок, либо мера, и совершенно не существенно, будут ли это числа, фигуры, звёзды, звуки или что-нибудь другое, в чём отыскивается эта мера. Таким образом, должна существовать некая общая наука, объясняющая всё относящееся к порядку и мере, не входя в исследование никаких частных предметов, и эта наука должна называться не иностранным, но старым, уже вошедшим в употребление именем Всеобщей математики.
Математика изучает воображаемые, идеальные объекты и соотношения между ними, используя формальный язык. В общем случае математические понятия и теоремы не обязательно имеют соответствие чему-либо в физическом мире. Главная задача прикладного раздела математики — создать математическую модель, достаточно адекватную исследуемому реальному объекту. Задача математика-теоретика — обеспечить достаточный набор удобных средств для достижения этой цели.
Содержание математики можно определить как систему математических моделей и инструментов для их создания. Модель объекта учитывает не все его черты, а только самые необходимые для целей изучения (идеализированные). Например, изучая физические свойства апельсина, мы можем абстрагироваться от его цвета и вкуса и представить его (пусть не идеально точно) шаром. Если же нам надо понять, сколько апельсинов получится, если мы сложим вместе два и три, — то можно абстрагироваться и от формы, оставив у модели только одну характеристику — количество. Абстракция и установление связей между объектами в самом общем виде — одно из главных направлений математического творчества.
Отметим, что при этом не надо путать закономерности и модели. Есть факт, что длина окружности равна 2 пи на радиус. Это не модель — это факт. Аналогичные факты есть в физике и в химии. Например, если 10% раствор серной кислоты добавить к 10% раствору хлорида бария — выпадет осадок сульфата бария. Это экспериментальный факт, тут нечего моделировать. Если кто запишет эту реакцию на бумажке и назовет моделью — его засмеют.
Про методологию математического моделирования есть очень интересные книги:
- Блехман И.И., Мышкис А.Д., Пановко Я.Г. Механика и прикладная математика. Логика и особенности приложений математики.
- Мышкис А. Д., Элементы теории математических моделей. Изд. 3-е, исправленное. М.: КомКнига, 2007
Там на многих примерах показано, что только математики бывает недостаточно, нужны знание предметной области, здравый смысл и т.д.
Стоит заметить, что бывает математическое моделирование, натурное моделирование, а бывает литературное моделирование. Каждое художественное литературное произведение можно рассматривать, как модель, но там другой формализм (нет формул, как в математических моделях).
Зачем нужна математика?
Ранее написал 3 статьи на близкую тему:
Зачем студентам теория графов;
Графы большие и маленькие: интеллектуальное решение проблемы выбора представления;
Сложно ли сделать из мухи слона?
Не секрет, что в принципе очень многие задачи тупо решаются полным перебором, который на практике бывает не приемлем и, даже, не осуществим. Знание алгоритмов зачастую позволяет сократить перебор, а иногда вовсе его избежать. Многие важные подходы и сама оценка алгоритмов, их доказательство основаны на математике. Во многих случаях нужно знание физики. Вуз дает (должен давать) эти необходимые для IT знания, но они могут быть недостаточными для конкретной работы. Во многих случаях нужно знать предметную область, например, для успешной работы в экономике нужно знать экономику, а в химии – химию.
Разная природа математики и CS
В первую очередь стоит упомянуть о принципиальной разнице между CS и математикой. Первая (как отметили Аллен Ньюэлл и Герберт Саймон в своей лекции на вручении премии Тьюринга) экспериментальная наука, а вторая нет (Newell, Allen; Simon, H. A. (1976), «Computer Science as Empirical Inquiry: Symbols and Search» (1975 ACM Turing Award Lecture), Communications of the ACM, 19).
We see here a distinction between complexity of an algorithm and the complexity of its mathematical underpinnings, two quite different things.
Вслед за ними Дж. Ф. Люгер заявил:
каждая программа ИИ должна рассматриваться как эксперимент: он вопрос перед природой, и ответ на него – это результат выполнения программы. Отклик природы на заложенные конструкторские и программные принципы формирует наше понимание формализма, закономерностей и самой сути мышления
(Дж. Ф. Люгер, Искусственный интеллект: стратегии и методы решения сложных проблем. 4-ое издание. М: Вильямс, 2003, С. 780).
Направление математики, называемое экспериментальной математикой в свете приведенных заявлений, скорее следует рассматривать, как исключение.
При этом математика и CS имеют области пересечения. Теория типов — одна из таких областей. Чистый математический подход можно найти у Рассела — см. в Википедии статью «парадокс Рассела». — Там не просто математика, а математическая логика, которую часто противопоставляют обычной «недостаточно строгой» математике. Обратите внимание на секцию «Влияние на математику» — в числе прочего такое нехилое направление, как интуиционизм.
Еще добавим про метафизику. В теории (в математике) не учитывают время, потраченное на доказательство теоремы – м.б. 10 минут, а может 10 лет. Оценят в любом случае (положительно или отрицательно, вне зависимости от затраченного времени). В экспериментальных науках время – лимитирующий фактор: медь в азотной кислоте растворяется очень быстро, а в сравнительно слабой щавелевой кислоте даже железный гвоздь (железо активнее меди) будет реагировать очень медленно. Конечно, это примитивный пример. Но к статистике по растворению железного лома за 10 лет в природных условиях могут отнестись с пониманием. Далее экологи Евросоюза могут сказать, что слишком много железа уходит в почву (что вредно) после дождичка (кислотного) в четверг, и потребовать от своих властей снижения налогов для сталелитейных компаний, которые собирают разбитые автомобили и прочий железный мусор.
В CS, пожалуй, подход более приземленный, чем в математике, ближе к практике, частично инженерный. В принципе, не слишком сложную программу можно написать в машинных кодах не прибегая к явной типизации данных и к ООП. Но тут на первый план выступает человеческий фактор — человек недостаточно аккуратен, чтобы выполнять такое кодирование. Трудоемкость даже для составления небольшой программы будет запредельной. Я только хочу сказать, что многие вещи в ЯП появились не из-за объективной необходимости (не из-за свойств окружающего мира, физики, математики), а из-за свойств человеческого сознания — в частности, из-за свойства делать такие ошибки, которые исправный ПК никогда не сделает.
Интересно, что многие популярные ЯП не требуют обязательного применения ООП. Интересно, что и многие алгоритмы (не только старые, но и новые) описывают на псевдокоде без ОО. Я зачастую делаю на ООП только GUI. Например, когда хочу проверить собственный алгоритм.
Среди программистов есть шутка: математик решает задачу, которая решается, а программист — которую нужно решить.
Зачем математике другие науки?
Исторически основные математические дисциплины появились под воздействием необходимости вести расчёты в коммерческой сфере, при измерении земель и для предсказания астрономических явлений и, позже, для решения новых физических задач. Каждая из этих сфер играет большую роль в широком развитии математики, заключающемся в изучении структур, пространств и изменений.
Деление математики
Математику принято делить на чистую и прикладную. Википедия определяет:
Прикладна́я матема́тика — область математики, рассматривающая применение математических методов, алгоритмов в других областях науки и техники. Примерами такого применения будут: численные методы, математическая физика, линейное программирование, оптимизация и исследование операций, моделирование сплошных сред (Механика сплошных сред), биоматематика и биоинформатика, теория информации, теория игр, теория вероятностей и статистика, финансовая математика и актуарные расчёты, криптография, а следовательно комбинаторика и в некоторой степени конечная геометрия, теория графов в приложении к сетевому планированию, и во многом то, что называется информатикой.
Фундаментальная математика (чистая математика, теоретическая математика) — полностью абстрактная математика, фундаментальная её часть, которая, в отличие от прикладной математики, изучает абстрактные структуры без соотношения их с объектами реального мира.
Бертран Рассел сказал: «Чистая математика — это такой предмет, где мы не знаем, о чём мы говорим, и не знаем, истинно ли то, о чём мы говорим»
По ироническому утверждению Владимира Арнольда, разница между чистой и прикладной математикой не научная, а социальная и заключается в том, что чистому математику платят за открытие математических фактов, в то время как прикладному математику платят за решение практических задач. Он же отмечал, что в России почти каждый математик сочетал «чистую» и «прикладную» математику.
При этом нужно отметить, что существует много конкретных работ, где знание математики почти не требуется или требуется очень ограниченная область. И можно долгие годы благополучно работать в такой экологической нише. Однако в этом случае увольнение с работы может обернуться личной катастрофой.
Математика имеет разные направления и взгляды. Пример:
Конструктивная математика отвергает используемую в теоретико-множественной математике абстракцию актуальной бесконечности, связанную с рассмотрением никогда не завершаемых процессов как бесконечно продолженных и тем самым как бы завершённых.
И далее:
в конструктивной математике под «существованием» конструктивного объекта понимается его потенциальная осуществимость — то есть наличие в нашем распоряжении метода, позволяющего воспроизводить этот объект любое потребное число раз. Такое понимание резко расходится с пониманием существования объекта, принятым в теоретико-множественной математике.
Конструктивная математика — близкое к интуиционизму течение в математике, изучающее конструктивные построения. Согласно критерию конструктивности — «существовать — значит быть построенным».[17] Критерий конструктивности — более сильное требование, чем критерий непротиворечивости.[18] (Википедия).
Пример из элементарной математики, демонстрирует разнообразие мнений:
Существуют два подхода к определению натуральных чисел:
- натуральные числа — числа, возникающие при подсчёте (нумерации) предметов (первый, второй, третий, четвёртый, пятый"…);
- натуральные числа — числа, возникающие при обозначении количества предметов (0 предметов, 1 предмет, 2 предмета, 3 предмета, 4 предмета, 5 предметов"…).
В первом случае ряд натуральных чисел начинается с единицы, во втором — с нуля. Не существует единого для большинства математиков мнения о предпочтительности первого или второго подхода (то есть считать ли ноль натуральным числом или нет).
Математика и образование
Естественное желание многих школьников сразу по окончании школы получать хорошую ЗП, а не тратить 5 лет на вуз. — Вот такой школьник и делится с сообществом своими мечтами.
Кто-то окончил вуз, но условно говоря торгует овощами — не обязательно за прилавком, а м.б. топ-менеджер крупной фирмы и через него каждый день проходят сделки на много тонн овощей и фруктов, видит, что кроме 4 арифметических действий никакая математика ему не нужна.
Но не все собираются всю жизнь торговать овощами и не все смогут найти работу топ-менеджера крупной фирмы. — Как повезет, кому «не повезет» — тому м.б. будет нужна математика :)
На мой взгляд школьная математика методически очень плохо устроена и не надо брать с нее пример. Давным давно там (в школьной математике) выбрали самый простой путь: бесконечное сражение с монстрами. Когда у школьников не было калькуляторов и считали на бумажке, в арифметике 5 класса давали примеры в 10 действий, где надо было делить восьмизначное число на пятизначное.
А ведь настоящая математика это уменье доказывать теоремы и находить опровержения — контрпримеры (в случае чистой математики) и уменье применять математические абстракции к практике (в случае прикладной).
В школе надо обучить, но не напугать многоэтажными монстрами выражений, которые нужно зачем-то упростить. Прежде всего: в школе нет и не может быть цели сделать всех школьников математиками или программистами. А цель за 10 или 11 лет обеспечить всех учеников элементарными знаниями, которые обеспечат осознанный выбор профессии. И выбор не только в пользу вуза. Многие осознанно не идут в вуз и правильно делают, не потому что глупые, а потому что слепо не бегут за модой.
Понятно, что очень многим школьникам опыт борьбы с алгебраическими монстрами всю дальнейшую жизнь будет совершенно не нужен. И на выбор профессии этот опыт может влиять только негативно. Если школьник испуган школьной математикой он может не пойти, например, на геологический факультет только потому, что там опять будет ненавистная ему математика. Знаю такой пример: человек в средней школе начал на летние каникулы ездить в геологические экспедиции (родители геологи), но кончив школу на геологию не пошел из-за математики. Напугали в школе. Если же школьник преуспел в боях со школьными математическими монстрами, набил руку и выработал шаблоны решений подобных задачек, т.е. для него это стало рутиной, то он может решить стать математиком. Но поступив на математический — он с первых дней с удивлением обнаружит, что от него ждут совсем не умения упрощать выражения, а его отточенные за многие годы навыки это только техника, которая по большому счету никому не интересна. Если не сумеет быстро перестроиться и будет жаловаться преподам — те посоветуют ему пройти трехмесячные бухгалтерские курсы и идти работать, а в настояшую нешкольную математику не лезть. (Далее к этому вернемся).
Конечно в СССР не все было гладко.
Пример не гладкого:
Задача 369.3. Вычислить:
(367710:35-2335242:329)*375 / [(16531*343+763*1099):718-65]*71
(Е.С.Березанская, Сборник задач и упражнений по арифметике для 5 и 6 классов семилетней и средней школы, М.: 1953).
Сомневаюсь, что такое нужно было в 5 классе без калькулятора.
В СССР было принято гордиться методикой преподавания математики в школе. Но, например, в школе не давали производную. А начальные знания по этой теме очень бы помогли пониманию школьной физики. Можно ведь было немного времени отрезать от побивания монстров. В какой-то год с какой-то радости в советской школе перестали изучать комплексные числа. Неужели понятие «число» для школьника менее важно, чем пресловутая расправа над монстрами? Давным давно в сов. школе помимо математики изучали логику по очень удачному, простому и наглядному учебнику Асмуса. Почему-то прекратили. Я не знаю есть ли сейчас в школе основы математической логики. Как может школьная информатика обойтись без основ Булевой алгебры? И с теорией множеств в сов. школе были проблемы. Что уж говорить о таких «узких» темах, как «неравенства», «основы комбинаторики», «основы теории графов». Нет, нельзя! Все силы на борьбу с алгебраическими монстрами! Просто задачи на доказательство встречались крайне редко. Лучше в этом плане обстояло дело в школьной геометрии. По ней даже в обычных школах успеваемость была лучше, чем по алгебре. Почему бы это? У школьной математики тяжелая судьба, будет катастрофой, если такая судьба постигнет школьную информатику.
Если посмотреть опрос, то только 60.9% считает, что «Роль математики для информатики в школе высокая». На мой взгляд этот опрос отражает общие настроения на Хабре и в Интернете (в целом), где заметная часть сообществ регулярно высказывает мысль, что математика не обязательна (или вовсе не нужна) для программирования. Я разделяю противоположное мнение, но каждый судит по себе, и безусловный факт (с которым не спорю) заключается в том, что во многих работах по программированию математика в явном виде не присутствует.
Обычно перед программистом не стоит задачи доказать новую математическую теорему — когда и если такая задача возникает, программисту приходится обращаться за помощью к чистому математику. Другое дело, что программист должен обладать достаточными знаниями, чтобы самостоятельно оценить вычислительную сложность алгоритма, вникнуть в доказательство его корректности, понять, как модифицировать алгоритм под конкретную цель и т.д. Будущий программист должен знать основные теоремы математики и уметь их применять на практике, но конечно же он не должен детально знать доказательства всех этих теорем. К сожалению, нередко преподы математики требуют именно подробных доказательств, и пока студент не докажет, зачета он не получит и экзамена не сдаст.
Цель вуза — спец. универсал, т.е. в идеале выпускник без особых проблем должен мочь работать в любой сфере IT. Понятно, что идеал не достижим. На последних курсах есть специализация. Это дает навыки: сумел освоить одну область — сумеешь освоить другую.
Про математику. Она нужна универсалу. Но выскажу «крамольную» мысль: из всех читателей этой статьи мало кто сумеет с ходу верно доказать теорему Пифагора (в сетке много забавных коллекций ошибочных доказательств). Думаю, что студентам нужно изучать доказательства теорем, но спрашивать доказательства на экзамене не нужно! Вполне достаточно, что студент знает формулировку и может ее применить.
Считаю, что на зачете/экзамене нужно позволять пользоваться справочниками и учебниками — цель в том, чтобы увидеть, как ученик понял курс, а не в том, как он умеет зубрить и писать шпаргалки. Экзаменатору, конечно, будет сильно сложнее принимать такой экзамен. Поэтому многие экзаменаторы идут по чисто формальному пути.
Курсовая важнее экзамена при неформальном подходе. Например, по информатике нужно сделать литературный обзор, на основе которого обосновать выбор алгоритма, реализовать этот алгоритм в коде, обсудить результаты тестирования. Аналогично по химии нужно сделать литературный обзор, на основе которого обосновать выбор синтеза, синтезировать заданное вещество, привести результаты анализов, доказывающие, что цель достигнута. И должна быть защита курсовой с примерно 10 минутным выступлением перед группой с презентацией и вопросами. Такая самостоятельная работа (пусть и под наблюдением препода) гораздо лучше отражает полученные знания и навыки, чем экзамены, которые к 3му курсу многие научаются сдавать с минимальной подготовкой. С другой стороны защита хорошей курсовой менее нервное дело, чем экзамен, поэтому те студенты, которые в силу характера обычно страдают из-за своей нервной организации, на курсовой оказываются в более равных условиях с другими.
Давно сложившаяся общемировая практика — одни учебные заведения выпускают универсальных программистов, другие — программистов, которые являются еще и спецами в определенной предметной области. Таких много, например, в квантовой механике, в экономике, в квантовой химии, в математической химии и т.д. Инженер-электроник и программист в одном лице может разрабатывать очень сложные профессиональные программы, например, по моделированию новых микропроцессоров. Такие программы, например, описаны в публикациях Интела.
Часто раздаются мнения, что для IT вуз не нужен. Поэтому несколько слов о пользе диплома, как для его обладателя, так и для работодателя. Диплом это документ, который удостоверяет, что его обладатель знает, например, основные методы сортировки. Если скажет, что не знает, то можно без проблем уволить. (Просто увольнение без причин может вызвать проблемы). С другой стороны, если работника используют не по специальности — он может жаловаться: я спец. с дипломом, а меня начальник заставляет пол мыть и мусор выносить. Или: я спец., а меня второй год на должности лаборанта числят. И т.д.
Программисты в массе ничем не отличаются от других людей: математиков, композиторов, шахматистов и т.д. Но, к сожалению, не все люди (независимо от специальности) сильно образованы в своей специальности и не все это осознают или хотят осознавать. Среди программистов может даже таких больше, чем, например, среди медицинских работников, т.к. школьника, самостоятельно изучившего медицину, не возьмут работать в клинику без диплома, а школьники, самостоятельно изучившие BASIC, нередко встречаются в наших фирмах. Может такой бывший школьник и не без таланта, но обычно у него серьезные пробелы в образовании (не только в программировании, но в математике, английском и т.д.). Но чтобы пробиться, он играл роль гения, и эта маска к нему прилипла. Он привык считать себя исключительным, и это большая проблема, даже если такой школьник все же закончит какие курсы или даже вуз. За примером далеко ходить не надо: в Интернете встречается много подобных «программистов», которые, например, так и говорят, что математика им не нужна и вуз не нужен.
Ситуацию можно сравнить с эвристическими алгоритмами (не обязательно из области ИИ): для многих задач приемлемо, если алгоритм не всегда, но достаточно часто дает верное решение. При этом корректность такого алгоритма не доказывается: может потому, что автор не смог придумать доказательства (может оно и в принципе невозможно), а может и потому, что автору просто лень возиться с доказательством.
Выше сказал, что поступив на математический — студент, победитель школьных олимпиад, с первых дней с удивлением обнаружит, что от него ждут совсем не умения упрощать выражения, а его отточенные за многие годы навыки это только техника, которая по большому счету никому не интересна. Поговорим о нешкольной математике.
Нешкольная математика
Выше сказал, что настоящая математика это уменье доказывать теоремы и находить опровержения — контрпримеры (в случае чистой математики) и уменье применять математические абстракции к практике (в случае прикладной).
Метод рациональных реконструкций истории науки применён Лакатосом в книге «Доказательства и опровержения» к истории доказательств теоремы Декарта—Эйлера—Коши о соотношении между числом вершин, рёбер и граней произвольного многогранника. При этом в подстрочных примечаниях Лакатос даёт более широкую картину истории математики, особенно — истории математического анализа и программ обоснования математики в XIX и начале XX века. Лакатос обсуждает историю математики как цепочку, в которой «проверка обычного доказательства часто представляет очень деликатное предприятие, и, чтобы напасть на „ошибку“, требуется столько же интуиции и счастья, сколько и для того, чтобы натолкнуться на доказательство; открытие „ошибок“ в неформальных доказательствах иногда может потребовать десятилетий, если не столетий. Неформальная квазиэмпирическая математика не развивается как монотонное возрастание количества несомненно доказанных теорем, но только через непрерывное улучшение догадок при помощи размышления и критики, при помощи логики доказательств и опровержений».
Интересный и важный факт, что из поколения в поколения математики успешно учат студентов доказывать теоремы. А научить этому ИИ никто пока не смог. Аналогично никто не может объяснить, как он распознает речь или картинки. Может ограниченность нашего ума, рефлексии — основная проблема для создания сильного ИИ.
При этом отметим, что человек так парадоксально устроен, что ему легче запомнить текст размером в много байт, чем число в несколько байт:
Чтобы нам не ошибиться,
Надо правильно прочесть
Три, четырнадцать, пятнадцать
Девяносто два и шесть
таких мнемоник много.
Почему мозг среднего человека сильно уступает ПК в элементарных операциях? «Железке» без проблем запомнить 10 знаков числа пи, а люди мнемоники используют:
Учи и знай в числе известном за цифрой цифру, как удачу примечать!
Байтов на такое нужно больше, чем на 3,14159265359.
Некоторые задачи решаемы и человеком и современным ИИ. Но зачастую разными методами. Например, шахматисты не используют альфа-бета алгоритм шахматных программ. Про алгоритмы распознавания человеком зрительных и аудио-образов информации крайне мало. Человеческое самопознание (рефлексия) очень ограничена. Математики не могут объяснить, как они доказывают нетривиальные теоремы. Однако не факт, что целью ИИ должно быть воспроизведение человека. Многие задачи машина решает лучше, например, задача рассортировать несколько десятков тысяч слов по алфавиту для человека будет утомительной, делать он ее будет долго, а вероятность ошибок для среднего исполнителя со средним уровнем ответственности будет значительной. Современный компьютер выполнит эту задачу без ошибок за очень короткое для человека (доли секунды) время.
Но с сильным ИИ пока не очень
автопилот врезался в пешехода на полном ходу, даже не попытавшись снизить скорость или уклониться от столкновения.
система управления самолётом заставляет его совершать пикирование в землю, несмотря на отчаянные попытки экипажа спасти ситуацию
Ну и с велосипедами не всегда.
Проблемы
1) Многие авторы отмечают тенденцию к усложнению доказательств новых теорем — есть опасение, что скоро появятся задачи, которые будут нерешаемы по причине сложности для любого человека (слишком сложные тексты);
2) Системы ИИ автоматического доказательства теорем пока справляются только с тривиальными задачами. Ни одному математику не удается научить (сделать текст для) ИИ делать нетривиальные доказательства. Есть опасение, что не удастся.
3) Машинное решение задачи 4х красок остается непонятным для математиков. Это методологическая проблема: можно ли в принципе признавать такое решение?
И см.
Из всех наук лучше всего математика работает в физике, а вот в химии уже заметно хуже. Что касается, например, экономики, то, несмотря на обилие очень изощренных математических моделей, ни один уважаемый экономист не возмется гарантированно предсказать курс доллара на ближайший месяц. Стоит упомянуть и чисто математические вопросы: все ли открытые задачи будут со временем решены или есть нерешаемые в принципе? Если удастся доказать, что P=NP, то математика окажется более эффективной, чем в случае, если удастся доказать обратное? Каковы границы применимости теоремы Гёделя? Возможно ли классическое (некомпьютерное) решение задачи четырех красок? Существуют ли решаемые математические задачи, которые никогда ни один человек, ни все люди не смогут решить в силу ограниченных возможностей человеческого разума, и возможно ли строго доказать существование или несуществование таких задач?
Заключение
Уверен, что многие годы на Хабре будут статьи с непростой математикой, при этом не уменьшится число жалоб: в вузе затравили математикой, а я уже не первый год работаю, и ни разу матан не пригодился. Надеюсь, что постепенно произойдет большее взаимопонимание, того, что нужно в IT, и что нужно в математике из IT.