История программирования: зарождение концепций.
Когда пред Наполеоном рассуждали о проектах гражданских инженеров, тогда он непременно спрашивал: «А что думает о том Прони?»
- Описание
- Подробнее
Описание
Барон Гаспар-Клер-Франсуа-Мари-Риш де Прони родился в Шамеле, в департаменте Роны, 22 июля 1755 г. Не вдаваясь в подробности биографии (в частности, де Прони изобрел спидометр) укажу, что в конце 18 века он стал Главным вычислителем Франции, и именно ему Наполеон поручил срочно подготовить таблицы логарифмов.
Способ мышления барона отличался… скажем, концептуальностью. Де Прони разделил процесс на три этапа: первый, которым занимались сильнейшие математики,- разработка математического обеспечения, второй — организаторы вычислений на материалах обеспечения, третий — самые обычные, рядовые граждане, «вычислители», осуществляющие сам процесс. Их называли «компьютеры».
Итак, появилась
Концепция №1: Разделение решения сложной/большой вычислительной задачи на алгоритмизацию, программирование и сами вычисления.
Автоматизацией третьего этапа решил заняться Чарльз Беббидж в 1819 году. К этому времени кроме сумматора Паскаля (начало разработки — 1642) уже существовали предшественники перфокарт — ткацкие карты Жаккарда, появившиеся в 1805 году. Правда, вначале задача произвольных вычислений не ставилась — речь шла о вычислении элементов специфических (преимущественно, астрономических) таблиц методом конечных разностей (отсюда название — разностная машина). Лишь в 1834 году, потерпев ряд неудач при усовершенствовании разностной машины, Беббидж приходит к идее программируемой вычислительной машины, которую он назвал аналитической (Analytical Engine).
В аналитической машине Бэббидж предусмотрел следующие части: склад (store), фабрика или мельница (mill), управляющий элемент (control) и устройства ввода/вывода информации. В (почти) современных терминах — ЗУ (запоминающее устройство), АЛУ (арифметико — логическое устройство), УУ (устройство управления, не путать с управленческим учетом!) и периферийные устройства.
Концепция №2: Архитектура вычислительной машины.
(Теоретически,) машина Беббиджа не только выполняла линейные вычисления, в ней были заложены условный и безусловный переходы и циклы. На вход должны были поступать два потока карт, которые Бэббидж назвал операционными картами (operation card) и картами переменных (variable card): первые управляли процессом обработки данных, записанных на вторых. На тех и на других информация записывалась путем пробивки отверстий. Из операционных карт можно было составить библиотеку функций. Помимо этого, Analytical Engine, по замыслу Бэббиджа, должна была содержать устройство печати и устройство вывода результатов на перфокарты для последующего использования.
Считается, что от машины Беббиджа до теперешней ЭВМ остался всего один шаг:
Концепция №3: Хранение программ в памяти,
предложенная через сотню лет (в 1946 году) фон Нейманом. Я, однако, с этим не согласен. Во-первых, фон Неймановский (архитектурный) принцип однородности памяти, который «открывает целый ряд возможностей. Например, программа в процессе своего выполнения также может подвергаться переработке» породил больше ошибок, чем любой другой. Во-вторых, этот принцип совершенно справедливо не применяется в наиболее быстродействующих параллельно-конвейерных компьютерах. А, в-третьих…
В 1842 году вышло первое подробное описание изобретения Беббиджа. Статья была опубликована на французском, и Ада Лавлейс взялась перевести её на английский. Ее комментарии к этому переводу дали повод называть Аду первой программисткой — и это правильно. В программе, предназначенной для вычисления чисел Бернулли, ей были даже использованы рекуррентные вложенные циклы. Но главное, в своих комментариях леди Лавлейс высказала великолепную догадку о том, что вычислительные операции могут выполняться не только с числами, но и с другими объектами, (включая стихи и музыку), в том числе, могут модифицироваться и команды машины.
Итак, в очередной раз мы видим подтверждение принципа Арнольда: если какой-нибудь предмет имеет персональное наименование (Америка, например), то это никогда не бывает имя первооткрывателя. Это всегда имя какого-то другого человека. Америка не называется Колумбией, хотя открыл ее Колумб. А «архитектуру фон Неймана» открыли Беббидж и Лавлейс.
Говоря об истоках, нельзя не упомянуть еще одно имя — Алан Матисон Тьюринг. Здесь упомянутый принцип Арнольда дал сбой: машину Тьюринга придумал именно он. В 1936 году Алан опубликовал свою знаменитую работу «О вычислимых числах, с приложением к проблеме разрешимости», и именно на ней построена (к ней сводится) теория алгоритмов. Основной постулат (ничего бОльшего я и не буду приводить, это же не теоретический сайт) —
Концепция №4: Машина Тьюринга может все.
Тьюринг рано ушел из жизни, надкусив отравленное яблоко. Сейчас то яблоко стало логотипом фирмы Apple…
И в завершение — реалии сегодняшнего дня.
Оригинальный концепт нанокомпьютера, состоящего из миллиардов микроскопических механических деталей: можно сказать, он прокладывает мост между сверхсовременными технологиями и теми принципами, которые лежали в основе первых вычислительных машин.
Как замечают разработчики — группа ученых и инженеров из Университета Висконсин-Мэдисон — концепт нового «нанокомьпютера» имеет много общего с конструкцией самой первой вычислительной машины, построенной английским математиком Чарльзом Бэббиджем. К числу предтеч проекта можно отнести и арифмометр с вращающейся ручкой, который еще недавно широко использовался в качестве альтернативы обыкновенным счетам.
Базовым элементом компьютера является одноэлектронный наномеханический транзистор (NEMSET) — микроскопическая логическая цепь, включающая в себя кремниевый транзистор и механический переключатель, оперирующий одним-единственным электроном. Печатные платы, содержащие множество подобных элементов, можно будет изготовлять посредством фотолитографии и травления — то есть с помощью метода, широко используемого для изготовления обыкновенных кремниевых плат.
По сравнению с традиционными компьютерами, наномеханические вычислительные устройства обладают тремя существенными преимуществами, которые в некоторых обстоятельствах могут оказаться решающими. Во-первых, они способны работать при гораздо более высоких температурах. Во-вторых, они обладают существенно большей устойчивостью при поражении электрическим разрядом. Наконец, они гораздо более эффективны с энергетической точки зрения. Поэтому в тех областях, где ценится прежде всего надежность, а не скорость работы, их применение может оказаться вполне оправданным.