Как разработчикам программного обеспечения, работающим в «современном» мире, нам может быть трудно понять, насколько сложными для предыдущих поколений были определенные задачи. Даже проблемы, с которыми столкнулись программисты LEO, использующие перфоленту в 1950-х годах, сегодня для нас относительно бессмысленны. Так как же нам понять проблемы, с которыми столкнулись те, кто работал более 2000 лет назад? И почему это важно?

Это важно, потому что если мы хотим понять прошлое и даже настоящее, нам нужно сопереживать предыдущим поколениям. Мы должны понимать и бороться с проблемами и вызовами, с которыми они столкнулись. Это поможет нам лучше понять их возможности и достижения. Как говорит Жаклин Стедалл, историк математики.

Трудность для историка обычно состоит не столько в понимании самой математики, сколько в проникновении в разум и математическую вселенную человека из другой эпохи.

В моем предыдущем посте на тему Истоки математики я коснулся теоремы Пифагора. Сегодня известная как теорема Пифагора из-за отсутствия доказательств, связывающих ее с Пифагором. Это также дает нам хороший способ понять проблемы прошлого. Теорема была понята очень давно. И хотя он относительно прост, он открывает двери для множества сложностей.

Теорема Пифагора утверждает, что для прямоугольного треугольника квадрат гипотенузы (диагонали) равен сумме квадратов двух других сторон.

a² + b² = c²

Это полезная теорема, потому что она позволяет нам легко вычислить длину гипотенузы. Нам просто нужно найти квадратный корень из квадратов a и b, сложенных вместе.

√a² + b² = c

В реальном мире это может помочь нам рассчитать длину диагональной стены в здании. Что позволит нам заказать нужное количество кирпича. Но насколько легко это вычислить?

Суть теоремы Пифагора относительно проста. Просто умножение и сложение.

a² + b² or (a * a) + (b * b)

Даже для больших чисел мы можем сделать такой расчет с ручкой и бумагой. Сложность возникает, когда мы вводим квадратные корни, необходимые для вычисления длины гипотенузы.

√a² + b² = c

Квадратный корень противоположен квадрату. Мы можем легко вычислить в уме квадратный корень из 16, это 4, потому что 4 умножить на 4 равно 16. А как насчет 289 или даже 7? Не просто.

Квадратные корни — это не проблема, о которой мы беспокоимся сегодня. У нас есть научные калькуляторы, а в языки программирования встроены методы квадратного корня и методы гипотенузы. Например, C++ и PHP предоставляют методы sqrt() и hypot(). Как разработчики, мы не должны думать об этих вычислениях. Мы просто вызываем нужный нам метод и как по волшебству возвращается результат.

Проблема была абстрагирована для нас. Мы не беспокоимся об этом так, как это приходилось делать ранним программистам или древним математикам. Итак, как мы можем усилить нашу эмпатию к древним математикам и понять их проблемы? Что ж, давайте подумаем, как мы могли бы написать алгоритм для извлечения квадратного корня. Это непростая задача.

Чтобы вычислить квадратный корень с ручкой и бумагой, нам нужно использовать длинное деление. Процесс, сочетающий упрощение с методом проб и ошибок. И звучит похоже на подбор пароля с помощью атаки по словарю. Что также является формой упрощения плюс метод проб и ошибок.

Таким образом, наш алгоритм квадратного корня может быть направлен на упрощение задачи и использование рекурсивного процесса проб и ошибок для поиска ответа. Это не было бы идеальным или эффективным, и потребовало бы много тестов, но это могло бы сработать. Я не буду сейчас писать код (могу вернуться к нему в следующем посте). Моя цель – просто показать, с чего может начаться наше мышление, и указать на связанные с этим сложности.

Хотя наше мышление, вероятно, не слишком далеко от истины. Как известно, алгоритмы извлечения квадратного корня не очень эффективны. Так что, возможно, здесь задействован рекурсивный процесс. Также у нас есть хороший пример из мира программирования. Разработчикам ID пришлось решать проблему эффективности квадратного корня в игре Quake III. Они использовали комбинацию хаков, умной математики и аппроксимации, чтобы все заработало. Это было не просто и не точно, но это сработало. Очевидно, что квадратные корни не так просто решить.

Когда мы углубляемся в подобные проблемы, мы быстро сталкиваемся со сложностью. И это подчеркивает проблемы, с которыми сталкивались предыдущие поколения, непосредственно занимающиеся этими проблемами.

Вавилоняне знали и использовали теорему Пифагора и вычисляли квадратные корни 4000 лет назад. И они сделали эту сложную математику без компьютеров или цифровых калькуляторов. Из чего мы можем только сделать вывод, что во втором тысячелетии до нашей эры жили очень умные и способные люди.

Важно иметь сочувствие к предыдущим поколениям. Мы живем в очень преклонном возрасте, но наш мир построен на упорном труде и гении многих поколений. И когда мы анализируем прошлое, мы часто имеем дело с очень способными людьми. Многие из которых были намного умнее нас.

Полезные источники: