Читаем От абака к цифровой революции полностью

РЕАЛИЗАЦИЯ АЛГОРИТМА ЕВКЛИДА

Приведем в качестве примера реализацию алгоритма для нахождения наибольшего общего делителя чисел А и В сначала на языке Пролог, затем на языке Java. Сокращение gcd означает great common divisor — наибольший общий делитель.

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

gcd (А, 0, А).

gcd (А, В, D)(А > В), (В > 0), R is A mod В, gcd(B, R, D).

gcd (А, В, D)(А < В), (А > 0), R is В mod A, gcd(A, R, D).

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

public static int gcd (int A, int B) {

if (B == 0) {return A;}

else if (A > B) {return gcd(B, A % B);}

else if (A < B) {return gcd(A, В % A);}

return 1;

}

public static int gcdlterative (int A, int B) {

int r = 0;

while (B > 0) {

r = A % B;

A = B;

В = r;

}

return A;

}

* * *

Однако эти алгоритмы представляют собой не элементы общего эволюционного процесса, а отдельные частные случаи. Наиболее известным средством автоматического выполнения задач было программирование ткацких станков Жаккара. В станке Жаккара узор ткани определялся с помощью перфокарт. Эти перфокарты содержали примитивные программы, которые исполнялись станком. Чарльз Бэббидж использовал перфокарты для программирования своей вычислительной машины.

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

Несмотря на все усилия, предпринятые в 1930-е и 1940-е годы, а также написанные в этот период теоретические работы, в особенности те, что были посвящены лямбда-исчислению и машине Тьюринга, развитие алгоритмов началось лишь с появлением первых компьютеров: «Колосса», Mark I, ENIAC, EDSAC и UNIVAC. Языки программирования, с помощью которых стало возможным написание программ, хранящихся в оперативной памяти, позволили сэкономить время и уйти от взаимодействия с аппаратным обеспечением напрямую — именно так осуществлялось программирование первых компьютеров.

Программы для первых компьютеров писались в восьмеричном коде. Среди первых языков программирования, допускавших представление символов, были Short Order Code (1949) Джона Мокли и Sort-Merge Generator Бетти Холбертон. Short Order Code исполнялся на компьютере BINAC и был интерпретируемым языком.

Процедуры, соответствовавшие символам, хранились в памяти компьютера и вызывались системой. Эту же систему унаследовал UNIVAC. Программа, записанная на этом языке, исполнялась в 50 раз медленнее той же программы, записанной на машинном языке.

Sort-Merge Generator, в свою очередь, был приложением, разработанным для UNIVAC, которое осуществляло слияние и перемешивание карточек с входными и выходными операциями.

Бетти Холбертон (на этой фотографии она изображена за работой на ENIAC), создавшая один из первых языков программирования.

Перейти на страницу:

Все книги серии Мир математики

Математики, шпионы и хакеры
Математики, шпионы и хакеры

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

Жуан Гомес

Математика / Образование и наука
Когда прямые искривляются
Когда прямые искривляются

Многие из нас слышали о том, что современная наука уже довольно давно поставила под сомнение основные постулаты евклидовой геометрии. Но какие именно теории пришли на смену классической доктрине? На ум приходит разве что популярная теория относительности Эйнштейна. На самом деле таких революционных идей и гипотез гораздо больше. Пространство Минковского, гиперболическая геометрия Лобачевского и Бойяи, эллиптическая геометрия Римана и другие любопытные способы описания окружающего нас мира относятся к группе так называемых неевклидовых геометрий. Каким образом пересекаются параллельные прямые? В каком случае сумма внутренних углов треугольника может составить больше 180°? Ответы на эти и многие другие вопросы вы найдете в данной книге.

Жуан Гомес

Математика / Образование и наука

Похожие книги

Простая одержимость
Простая одержимость

Сколько имеется простых чисел, не превышающих 20? Их восемь: 2, 3, 5, 7, 11, 13, 17 и 19. А сколько простых чисел, не превышающих миллиона? Миллиарда? Существует ли общая формула, которая могла бы избавить нас от прямого пересчета? Догадка, выдвинутая по этому поводу немецким математиком Бернхардом Риманом в 1859 году, для многих поколений ученых стала навязчивой идеей: изящная, интуитивно понятная и при этом совершенно недоказуемая, она остается одной из величайших нерешенных задач в современной математике. Неслучайно Математический Институт Клея включил гипотезу Римана в число семи «проблем тысячелетия», за решение каждой из которых установлена награда в один миллион долларов. Популярная и остроумная книга американского математика и публициста Джона Дербишира рассказывает о многочисленных попытках доказать (или опровергнуть) гипотезу Римана, предпринимавшихся за последние сто пятьдесят лет, а также о судьбах людей, одержимых этой задачей.

Джон Дербишир

Математика
Том 22. Сон  разума. Математическая логика и ее парадоксы
Том 22. Сон разума. Математическая логика и ее парадоксы

На пути своего развития математика периодически переживает переломные моменты, и эти кризисы всякий раз вынуждают мыслителей открывать все новые и новые горизонты. Стремление ко все большей степени абстракции и повышению строгости математических рассуждений неминуемо привело к размышлениям об основах самой математики и логических законах, на которые она опирается. Однако именно в логике, как известно еще со времен Зенона Элейского, таятся парадоксы — неразрешимые на первый (и даже на второй) взгляд утверждения, которые, с одной стороны, грозят разрушить многие стройные теории, а с другой — дают толчок их новому осмыслению.Имена Давида Гильберта, Бертрана Рассела, Курта Гёделя, Алана Тьюринга ассоциируются именно с рождением совершенно новых точек зрения на, казалось бы, хорошо изученные явления. Так давайте же повторим удивительный путь, которым прошли эти ученые, выстраивая новый фундамент математики.

Хавьер Фресан

Математика
Математика для любознательных
Математика для любознательных

Эта книга основателя жанра научно-занимательной литературы, российского ученого Я. И. Перельмана объединяет в себе две работы автора: «Занимательная математика» и «Занимательная арифметика». Она ставит целью привить своему читателю вкус к изучению математики, вызвать у него интерес к самостоятельным творческим занятиям и приобщает к миру научных знаний. Книга содержит увлекательные рассказы-задачи с необычными сюжетами на математические темы, любопытными примерами из повседневной жизни, головоломки, шуточные вопросы и опыты - и все это через игру, легко и непринужденно.Постановка задач, их арифметические и логические методы решений и вытекающие из решений выводы вызовут интерес не только у юных начинающих математиков, знакомых лишь с элементами арифметики, но и у хорошо разбирающихся в математике читателей.Авторская стилистика письма соответствует 20-м годам двадцатого века и сохранена без изменений.

Яков Исидорович Перельман

Математика / Образование и наука