В каком году была написана первая программа для вычисления на машине – Первая программа для вычисления на машине была написана в каком году?

Что на самом деле делала программа Ады Лавлейс? / Habr

Эпизод с основанием Microsoft – один из наиболее известных в компьютерной истории. В 1975 году Пол Аллен вылетел в Альбукерк, чтобы продемонстрировать интерпретатор BASIC, которые они с Биллом Гейтсом написали для микрокомпьютера Altair. Поскольку у них не было работающего компьютера Altair, они проверили свой интерпретатор при помощи написанного ими эмулятора, выполнявшегося на компьютерной системе Гарварда. Эмулятор был основан только на опубликованных спецификациях процессора Intel 8080. Когда Аллен, наконец, запустил интерпретатор на реальном компьютере Altair – перед человеком, который, как они надеялись, купит их ПО – он даже не знал, заработает ли программа. Она заработала. В следующем месяце Аллен и Гейтс официально основали новую компанию.

За более чем сто лет до интерпретатора BASIC Аллена и Гейтса, Ада Лавлейс написала и опубликовала компьютерную программу. Она тоже написала программу для компьютера, о котором знала только по описанию. Но её программа, в отличие от интерпретатора BASIC, никогда не выполнялась, потому что компьютер, для которого она была написана, так и не был построен.


Программу Лавлейс часто называют первой в мире компьютерной программой. Но не все согласны с тем, что её следует так называть. Наследие Лавлейс оказывается одной из самых горячо обсуждаемых тем компьютерной истории. Уолтер Айзексон писал, что диспут по поводу степени и достоинств её вкладов представляет «небольшую академическую важность». С неизбежностью диспут подогревает тот факт, что Лавлейс была женщиной. Историки цитировали всякого рода свидетельства, чтобы доказать, что оказываемые ей почести соответствуют случаю, или, наоборот, незаслуженны. Но они тратят гораздо меньше времени на объяснение технических деталей её опубликованной работы, что обидно, поскольку именно технические детали представляют самую интересную часть этой истории. Кому же неинтересно было бы узнать, как должна была работать программа, написанная в 1843 году?

Честно говоря, программу Лавлейс тяжело объяснить обывателям. Но именно запутанность её программы делает её такой примечательной. Достойна она зваться первым программистом, или нет, её программа была записана с такой точностью, которая превзошла всё, что было до этого. Она тщательно продумала, какие операции можно объединить в группы, которые можно будет повторять – изобретя, таким образом, цикл. Она поняла, как важно отслеживать состояние изменяющихся переменных, и придумала запись, отражающую эти изменения. Я, как программист, поражён тем, насколько работа Лавлейс напоминает опыт написания софта сегодня.

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

Суммы степеней


Пифагорейцы жили на берегах Средиземного моря и поклонялись числам. Одним из их хобби было составление треугольников из гальки.

Один камень, за которым идёт ряд из двух камней, вместе составляют треугольник из трёх камней. Добавьте ещё один ряд из трёх камней, и получится треугольник из шести камней. Эту процедуру можно продолжать, каждый раз добавляя ряд с количеством камней, увеличивающимся на единицу. Треугольник из шести рядов содержит 21 камень. А сколько камней будет в треугольнике из 423 рядов?

Пифагорейцы искали способ подсчитать сумму следующего ряда, не проводя суммирование:

1+2+3+⋯+n

В итоге они поняли, что если расположить два треугольника одинакового размера рядом друг с другом так, чтобы они образовали прямоугольник, можно найти площадь прямоугольника и разделить её на два, чтобы получить количество камней в каждом из треугольников:

1+2+3+⋯+n = n(n+1)/2

Архимед изучал схожую проблему. Его интересовала следующая последовательность:

12+22+32+⋯+n2

Её можно представить себе, как столбик из квадратов всё большего размера (состоящих из крохотных кубиков), стоящих один на другом в виде пирамиды. Архимед хотел узнать, есть ли лёгкий способ сказать, сколько кубиков потребуется для создания пирамиды с, допустим, 423 уровнями. Он записал решение задачи, которое тоже допускает геометрическую интерпретацию.

Три пирамидки можно составить вместе, чтобы они сформировали прямоугольную призму, с одного конца которой есть небольшой выступ в один кубик высотой. Этот выступ представляет собой треугольник, подчиняющийся тем же правилам, что и каменные треугольники пифагорейцев. Поэтому объём всей фигуры задаётся следующим уравнением:

3(12+22+32+⋯+n2) = (n+1)n2+(1+2+3+⋯+n)

Подставляя уравнение пифагорейцев для суммы первых n целых чисел, и проведя некоторые алгебраические операции, получим:

12+22+32+⋯+n2=n(n+1)(2n+1)/6

В 499 году индийский математик и астроном Ариабхата опубликовал свою работу, известную, как Ариабхатия, в которой была приведена формула для вычисления суммы кубов:

13+23+33+⋯+n3=(1+2+3+⋯+n)2

Формулу для суммы первых n положительных целых чисел в четвёртой степени опубликовали только 500 лет спустя.

К этому времени у вас мог появиться вопрос – а нет ли какого-нибудь универсального метода для вычисления суммы первых n целых чисел, возведённых в степень k? Математики тоже этим интересовались. Йохан Фаульхабер, немецкий математик, слегка подвинутый на нумерологии, смог вывести формулы для суммы целых вплоть до 17-й степени, опубликовав их в 1631 году. Но это заняло у него много лет, и общего решения он не дал. Блез Паскаль, наконец, придумал обобщённый метод в 1665 году, который, правда, зависел от подсчёта суммы целых чисел, возведённых в предыдущие степени. К примеру, для подсчёта суммы первых n положительных целых чисел, возведённых в 6-ю степень, вам нужно было сначала узнать, как подсчитать сумму первых n положительных целых чисел, возведённых в 5-ю степень

Более практичное обобщённое решение было приведено в посмертно опубликованной работе швейцарского математика Якоба Бернулли, умершего в 1705. Бернулли начал с того, что вывел формулы для подсчёта сумм первых n положительных целых чисел, возведённых в первую, вторую, третью и четвёртую степени. Он записал их в виде многочленов:

1+2+3+⋯+n = 1/2n2+1/2n

12+22+32+⋯+n2=1/3n3+1/2n2+1/6n

13+23+33+⋯+n3=1/4n4+1/2n3+1/4n2

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

Открытие Бернулли не означало, что сумму первых n положительных целых чисел, возведённых в любую степень, теперь можно было вычислить тривиально. Чтобы подсчитать сумму первых n положительных целых чисел, возведённых в степень k, необходимо было узнать все числа Бернулли вплоть до k-того. А каждое число Бернулли можно было подсчитать, только зная все предыдущие. Но высчитывать длинную последовательность чисел Бернулли было несравненно легче, чем подсчитывать каждую сумму возведённых в степень чисел, поэтому открытие Бернулли стало большим прорывом для математики.

Бэббидж


Чарлз Бэббидж родился в 1791 году, почти через сто лет после смерти Бернулли. У меня всегда было такое представление о нём, что он разработал, но не построил механический компьютер. Но я никогда точно не понимал, как этот компьютер должен был работать. Как оказалось, основные идеи понять довольно легко. Программа Лавлейс должна была работать на одной из машин Бэббиджа, поэтому нам надо сделать ещё одно небольшое отступление и поговорить о том, как эти машины работали.

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

Разностная машина была не компьютером, потому что она умела только складывать и вычитать. Она пользовалась методом, придуманным французским математиком Гаспаром де Прони, разбившим процесс построения таблицы на мелкие шаги. Эти шаги требовали только сложения и вычитания, что означало, что для построения таблицы можно задействовать небольшую армию людей, не обладавших способностями к математике. Метод де Прони, известный, как метод разделённых разностей, можно было использовать для составления таблицы по любому многочлену. А многочлены уже можно было использовать для приближённого вычисления логарифмических и тригонометрических функций.

Чтобы представить себе, как работал этот процесс, рассмотрим следующую простую полиномиальную функцию:

y = x2+1

Метод разделённых разностей находит разницу между последовательными значениями y для разных значений x. Затем находятся разницы между этими разностями, и затем, возможно, ещё разницы между последними разностями, до тех пор, пока не появляется постоянная разность. Эту разность затем можно использовать для получения следующего значения полинома через сложение.

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

x y Diff 1 Diff 2
1 2
2 5 3
3 10 5 2
4 17 7 2
5 ? ? 2

Теперь, зная, что постоянная разность равна 2, мы можем найти значение y, когда x равно 5, при помощи одного сложения. Сложив 2 и 7, последнее значение в столбце Diff 1, мы получим 9. Сложив 9 и 17, последнее значение в столбце y, мы получим 26 – наш ответ.

У разностной машины Бэббиджа для каждого разностного столбца таблицы был свой физический столбец с шестерёнками. Каждая шестерёнка представляла десятичную позицию, а весь столбец – десятичное число. У разностной машины было восемь колонок с шестернями, поэтому она могла составлять таблицы полиномов вплоть до седьмой степени. Колонки изначально ставили на значения, совпадающие с ранним рядом таблицы разностей, просчитанным заранее. Оператор затем должен был поворачивать коленчатый вал, что заставляло постоянную разность перемещаться по машине, когда значения, хранившиеся в каждой из колонок, добавлялись к следующим.

Бэббидж сумел построить небольшую часть разностной машины и использовать её для демонстрации своих идей на вечеринках. Но, даже потратив столько денег, что их хватило бы на постройку двух крупных боевых кораблей, он так и не смог завершить свою машину. В начале XVIII века Бэббидж не нашёл никого, кто смог бы изготовить нужное ему количество шестерней с нужной точностью. Рабочую версию разностной машины построили лишь в 1990-х годах, после появления высокоточных станков.


В итоге Бэббидж потерял интерес к разностной машине, поняв, что можно создать куда как более мощную и гибкую машину. Его «аналитическая машина» сегодня известно, как механический компьютер Бэббиджа. Аналитическая машина основывалась на тех же колонках шестерней, что и разностная, но если у последней было всего восемь колонок, то у аналитической их должно было быть несколько сотен. Аналитическую машину можно было бы программировать при помощи перфокарт, как жаккардовый ткацкий станок, и она могла бы делить и умножать, а не только складывать и вычитать. Для выполнения одной из этих операций часть машины под названием «мельница» перестраивала бы себя в нужную конфигурацию, считывала бы операнды с других колонок, использовавшихся для хранения данных, а потом писала бы результат на другие колонки.

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

Примечания переводчицы


В Турине Бэббидж познакомился с итальянским инженером и будущим премьер-министром Луиджи Федерико Менабреа. Он убедил Менабреа написать обзор возможностей аналитической машины. В 1842 Менабреа опубликовал работу по этой теме на французском языке. В следующем году Лавлейс опубликовала перевод работы Менабреа на английский.

Лавлейс, известная тогда, как Ада Байрон, познакомилась с Бэббиджем на вечеринке в 1833 году, когда ей было 17, а ему 41. Лавлейс была поражена разностной машиной Бэббиджа. Но она смогла разобраться, как та работает, поскольку в детстве её активно обучали математике. Её мать, Анабелла Милбанк, решила, что твёрдая математическая основа образования дочки отвадит от неё дикую и романтическую натуру, которой обладал её отец лорд Байрон, знаменитый поэт. После знакомства в 1833 году Лавлейс и Бэббидж оставались в общем социальном кругу и часто переписывались.

Ада Байрон вышла замуж за Уильяма Кинга в 1835. Кинг позднее стал графом Лавлейсом, вследствие чего Ада стала графиней Лавлейс. И даже родив троих детей, она продолжала обучаться математике, взяв в учителя Огастеса де Моргана, открывшего законы Моргана. Лавлейс сразу распознала потенциал аналитической машины, и с готовностью согласилась работать с ним для продвижения этой идеи. Её друг предложил ей перевести работу Менабреа для английской аудитории.

В работе содержалось краткое описание работы разностной машины, а потом было показано, насколько бы её превзошла аналитическая машина. Аналитическая машина должна была быть настолько мощной, что могла бы «сформировать результат перемножения двух чисел, каждое из которых состоит из двадцати знаков, всего за три минуты». Менабреа дал и другие примеры возможности машины, демонстрируя, как она решала бы простую систему линейных уравнений и раскладывала бы результат перемножения двух биномов. В обоих случаях Менабреа представил то, что Лавлейс назвала «диаграммами развития», описывавшими последовательность операций, необходимых для вычисления правильного ответа. Это были программы, в том же смысле, в каком программа Лавлейс была программой, и они были опубликованы за год до её работы. Но, как мы увидим, программы Менабреа были всего лишь примерами возможного. Все они были тривиальными в том смысле, что не требовали никакого разветвления или циклов.

Лавлейс добавила несколько примечаний к своему переводу работы Менабреа, и в сумме они оказались длиннее оригинальной работы. Именно там она сделала свой основной вклад в вычисления. В примечании А, которое Лавлейс сделала к изначальному описанию аналитической машины, она подробно, и иногда лирически объясняла, что эта машина сможет выполнять произвольные математические операции. Она предвидела, что машина, подобная этой, не будет ограничена работой с числами, и сможет обрабатывать любые объекты, «чьё взаимное фундаментальное взаимодействие можно выразить абстрактной наукой операций, и которые можно приспособить к операционным записям и механизму машины». Она добавила, что когда-нибудь такая машина сможет, например, сочинять музыку. Такое предвидение было тем более примечательно, что сам Менабреа считал эту машину лишь инструментом для автоматизации «длительных и скучных вычислений», который бы освободил интеллектуальные возможности гениальных учёных для более передовых исследований. Чудесное предвидение Лавлейс, продемонстрированное в примечании А, является одной из главных причин того, почему мы чествуем её сегодня.

Другое знаменитое примечание – примечание G. Лавлейс начинает его, утверждая, что, несмотря на впечатляющие возможности, нельзя сказать, что аналитическая машина «думает». Именно это примечание Алан Тьюринг позже будет называть «возражением Ады Лавлейс». Тем не менее, продолжает Лавлейс, машина способна на удивительные вещи. Для демонстрации возможности обработки более сложных задач, Лавлейс предлагала свою программу для вычисления чисел Бернулли.

Полный её текст, в виде расширенной «диаграммы развития», формат которой Лавлейс описывает в примечании D, можно посмотреть тут. Это, по сути, список операций, обозначенных математическими символами. Не похоже, чтобы Бэббидж или Лавлейс зашли так далеко, чтобы разработать набор операционных кодов для аналитической машины.

Хотя Лавлейс описывала метод вычисления полной последовательности чисел Бернулли до определенного предела, приведённая ею программа показывала только один шаг этого процесса. Она подсчитывала число, которое она назвала B7, известное современным математикам, как восьмое число Бернулли. Поэтому её программа решала следующее уравнение:

B7=−1(A0+B1A1+B3A3+B5A5)

Тут каждый член представляет коэффициент в полиномиальной формуле для суммы целых чисел, возведённых в определённую степень. Тут речь идёт о восьмой степени, поскольку восьмое число Бернулли впервые появляется в формуле для суммы целых положительных чисел, возведённых в восьмую степень. Числа B и A представляют два вида множителей, открытых Бернулли. Числа от B1 до B7 – различные числа Бернулли, пронумерованные согласно Лавлейс. Числа от A0 до A5 представляют собой множители коэффициентов, которые Бернулли мог вычислить при помощи треугольника Паскаля. Значения A0, A1 и A3 приведены ниже. Здесь n обозначает индекс числа Бернулли в последовательности нечётных чисел Бернулли, начинающихся с первого. В программе Лавлейс n = 4.

A0=−1/2⋅(2n−1)/(2n+1)

A1=2n/2

A3=2n(2n−1)(2n−2)/(2⋅3⋅4)

A5=2n(2n−1)(2n−2)(2n−3)(2n−4)/(2⋅3⋅4⋅5⋅6)

Я перевёл программу Лавлейс на язык C, и так, наверное, её будет проще читать. Сначала её программа вычисляет A0 и результат умножения B1A1. Затем начинается цикл, повторяющийся дважды, для вычисления B3A3 и B5A5, поскольку они считаются по одной схеме. После подсчёта каждого перемножения, результат добавляется к предыдущим, поэтому к концу программы получается полная сумма.

Очевидно, что перевод на C не может быть точным воспроизведением программы Лавлейс. Он объявляет переменные в стеке, а переменные Лавлейс больше были похожи на регистры. Но он делает более очевидной наиболее пророческую часть программы Лавлейс. В программе на C есть два цикла while, один внутри другого. У программы Лавлейс не было циклов while, но она сгруппировала операции, и описала в примечании, почему они должны повторяться. Переменная v10 из оригинальной программы и в переводе на C, работает счётчиком, уменьшающимся с каждым проходом цикла – подобная конструкция знакома каждому программисту. В общем, кроме изобилия переменных с непонятными именами, программа на C не выглядит чем-то незнакомым.

Стоит также отметить, что перевод программы Лавлейс на C был не очень сложным, благодаря одной детали в её диаграмме. В отличие от таблиц Менабреа, в её таблице есть столбец «признак изменения значения переменной», благодаря которому гораздо проще отслеживать изменение состояния. Она добавляет каждой переменной надстрочный индекс, чтобы обозначить хранящиеся в них последовательные значения. Индекс 2, к примеру, означает, что используемое значение – это второе значение, присвоенное переменной с начала программы.

Первый программист?


После того, как я перевёл программу Лавлейс на язык C, я смог запустить её на компьютере. К моему разочарованию, результат получался неверный. После поиска ошибок я, наконец, понял, что проблема была не с моим кодом – баг содержался в изначальной программе!

В «диаграмме развития» Лавлейс пишет в четвёртой операции v5 / v4. Но правильно будет v4 / v5. Эта ошибка могла появиться при печати, а не у Лавлейс. Так или иначе, это самый старый компьютерный баг. Я удивился тому, что порядка десяти минут потратил на поиск самого первого бага в истории.

Джим Рэндал, другой блогер, переведший программу Лавлейс на Python, также отметил этот баг с делением и две других проблемы. О чём говорят нам небольшие ошибки в опубликованной программе Ады Лавлейс? Возможно, о том, что она пыталась написать не просто демонстрацию, а настоящую программу. Ведь нельзя же писать что-то, кроме игрушечных программ, избегая ошибок?

В одной из статей Википедии написано, что Лавлейс первая опубликовала «сложную программу». Возможно, именно так и стоит воспринимать её достижение. Менабреа в своей работе опубликовал «диаграммы развития» за год до публикации перевода Лавлейс. Бэббидж также написал более двадцати программ, так и не опубликованных. Поэтому не совсем верно писать, что Лавлейс написала или опубликовала первую программу, хотя всегда можно поспорить о том, что считать программой. И всё равно, программа Лавлейс намного опередила всё, что было опубликовано до неё. В самой длинной программе Менабреа было 11 операций и не было циклов и ветвлений. В программе Лавлейс было 25 операций и вложенный цикл (а, следовательно, и ветвление). Менабреа в конце своей работы написал следующее:

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

Ни Бэббидж, ни Менабреа особенно не интересовались применением аналитической машины к задачам, выходящим за пределы математических проблем, которые и подвигли Бэббиджа к созданию вычислительных машин. Лавлейс поняла, что аналитическая машина была способна на гораздо большее, чем могли представить себе Бэббидж и Менабреа. Лавлейс также уловила, что «изготовление карточек» не станет механической работой, и что этим можно заниматься плохо или хорошо. Сложно оценить это, не понимая её программу из примечания G, и не видя, сколько заботы она проявила при её разработке. Но, проделав это, вы можете согласиться с тем, что Лавлейс, даже не будучи самым первым программистом, была первым программистом, заслужившим это название.

habr.com

Напоминание: первым программистом в истории была женщина

Познакомьтесь с Адой Лавлейс — математиком и автором первой в мире программы для вычислительной машины. По иронии судьбы Ада является дочерью великого поэта Байрона, совершенно далекого от математики.

В 1843 году Ада Лавлейс сформировала базис для того, что сегодня называют компьютерными программами. Именно она ввела такие понятия, как рабочая ячейка и цикл.

Вместе с Чарльзом Бэббиджем, начиная с 17 лет, юная мисс Байрон работала над созданием аналитической машины, которая могла бы производить вычисления с точностью до 20 знака после запятой. Именно Ада наиболее точно описала принципы работы этого устройства, которое, к сожалению, так и не удалось построить: машина была слишком сложна и опережала свое время.

Часть аналитической машины, собранная из деталей в лаборатории Бэббиджа

В 20 лет Ада Байрон вышла замуж на Уильяма Кинга, 8-го барона Кинга, лорда Лавлейса и стала известна под именем леди Лавлейс. У супругов было трое детей, но супружество и материнство совершенно не отвлекало гениальную женщину от ее призвания. Зато фамильная казна мужа стала для Ады неиссякаем источником финансирования.

Копия аналитической машины в лондонском Музее науки

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

Алгоритм для вычисления чисел Бернулли

К сожалению, дочери Байрона, не знавшей отца, в 36 лет не стало. Вместе с выдающимся интеллектом поэт передал ей и страшную наследственность — раннюю смерть — поэт умер в таком же возрасте…

«Суть и предназначение машины изменятся от того, какую информацию мы в нее вложим. Машина сможет писать музыку, рисовать картины и покажет науке такие пути, которые мы никогда и нигде не видели.»

Ада Лавлейс

 

Вместо P.S. В 1979—80 годах Министерством обороны США был создан язык программирования Ada, который назвали в честь Ады Лавлейс. А сегодня все мы знаем, насколько дочь Байрона была близка к пониманию современных компьютеров.

 

Источники: huffingtonpost, wikipedia, habrahabr

 

ivynbee.com

История развития ЭВМ — Викиучебник

Материал из Викиучебника — открытых книг для открытого мира

ЭВМ (электронно-вычислительная машина) (или компьютер) — это аппаратно-программное вычислительное устройство, реализованное на электронных компонентах и выполняющее заданные программой действия.

Термин ЭВМ сегодня практически не применяется, кроме как в историческом смысле.

Счётно-решающие средства до появления ЭВМ[править]

Русские счёты Счётная машинка Феликс-М

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

Одним из первых устройств (VI—V вв. до н. э.), облегчающих вычисления, можно считать специальную доску для вычислений, названную «абак». Вычисления на ней производились перемещением камешков или костей в углубления досок из бронзы, камня или слоновой кости. Со временем эти доски стали расчерчивать на несколько полос и колонок. В Греции абак существовал уже в V веке до н. э., у японцев он назывался «серобян», у китайцев — «суанпан».

В Древней Руси при счёте применялось устройство, похожее на абак, называемое «русский шёт». В XVII веке этот прибор уже обрёл вид привычных русских счёт.

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

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

ru.wikibooks.org

10 языков программирования, которые больше никому не нужны

Зарождением языков программирования принято считать девятнадцатый век. Тогда английский математик Ада Лавлейс описала алгоритм первой в мире программы для вычисления чисел Бернулли на аналитической машине Чарльза Бэббиджа. В случае успешной реализации этого алгоритма на практике мы бы получили первый компьютер на паровом двигателе уже в 1840-х годах, однако история повернулась несколько по-другому.

С тех пор компьютеры стали работать на электричестве, а чтобы написать первый в мире высокоуровневый язык программирования, потребовалась без малого сотня лет — мы говорим о языке “Планкалкюль”, компилятор к которому появился лишь через полвека. 

Сейчас языки развиваются гораздо быстрее: то, что было популярно в среде программирования 20-30-40 лет назад, сейчас абсолютно устарело. Мы хотим вспомнить самые известные языки, которые сейчас утратили свою популярность.

Fortran

Fortran (Formula Translator) был самым первым высокоуровневым языком программирования, успешно применяемым на практике — вышеупомянутый “Планкалкюль” на момент появления Фортрана еще не имел собственного транслятора.

Очень быстро Fortran стал популярен среди научного сообщества, поэтому за несколько лет были созданы пакеты по вычислениям во многих математических дисциплинах. Именно поэтому в ученой среде этот язык популярен и до сих пор. В СССР о нем узнали немногим позже, но зато именно здесь разработали графическое расширение ГРАФОР, а советский популяризатор науки А. Зарецкий опубликовал “Энциклопедию профессора Фортрана”, объяснявшую детям основы компьютерной грамотности.

Язык до сих пор обновляется и обзаводится современными стандартами. Так, например, у Фортрана появилась поддержка ООП и совместимость с языком С.

Algol

Algol (Algoritmic Language) стал этаким европейским конкурентом Фортрана. В Америке на тот момент не было нормальных компиляторов Алгола — производитель компьютеров IBM тратил огромное количество ресурсов на продвижение Fortran.

Разработчики никак не могли условиться с синтаксисом: в США разделителем целого и дробного числа была точка, а в Европе — запятая. Зато в СССР с Algol было все замечательно. Были и собственные трансляторы, и широкое признание во многих организациях на советском пространстве. Именно в Алголе появилась блочная структура данных, предполагающая наличия основной программы и второстепенных подпрограмм. Так или иначе, Algol и его модификации оказали большое влияние на разработку последующих языков программирования, в том числе и очень популярного Pascal.

Basic

Basic (Beginner’s All-purpose Symbolic Instruction Code) приобрел широкое распространение ввиду своей максимальной простоты. Он предназначался для создания программ для повседневных задач людьми, не имеющими профильного образования — этому способствовал рост доступности компьютеров в 60х годах прошлого века.

Особенно, кстати, этот простой язык пришелся на машине Altair, на которой было очень мало памяти для разработки ПО громоздкими Фортраном или Алголом. С Бейсиком и Альтаиром связано становление компании Microsoft как успешного производителя софта — написанный Биллом Гейтсом и Полом Алленом Altair Basic обеспечил прибыль будущей корпорации вплоть до появления MS-DOS.

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

Turbo Pascal

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

Хвалить именно эту среду разработки было за что: профессионалы отмечали крайне привлекательную цену и качественный встроенный компилятор, а новички радовались обширной справочной информации, поставляемой в комплекте. Со временем язык обзавелся процедурными типами и возможностями ООП и довольно быстро перерос в не менее популярное детище Borland — Delphi.

Cobol

В сфере бизнеса и финансов был свой, отдельный язык программирования. Cobol (Common business oriented language) отличался прекрасным инструментарием для работы со структурами данных и файлами — по сути, именно поэтому он долгое время использовался в бизнес-приложениях.

Однако его синтаксис был далек от совершенства, во многом из-за того, что создатели языка хотели максимально приблизить конструкции кода к английскому языку. В начале двухтысячных популярность Cobol пошла на спад. Некоторые из компаний до сих пор используют программное обеспечение на этом языке, но в приоритете у большинства бизнес-структур — перейти на менее громоздкие и гораздо более дешевые современные варианты.

Ada

Ada получила свое название в честь той самой Ады Лавлейс, великого математика и первого в мире программиста. Этот язык был создан в конце семидесятых для бортовых систем военных объектов Пентагона. За пределы военной ниши у Ады выбраться не получилось как минимум по двум причинам.

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

Сейчас язык Ада (да, в русском сегменте интернета ходит бородатый анекдот на эту тему) изучается всего в нескольких учебных заведениях России, однако спрос в индустрии на него крайне невелик. Даже несмотря на то, что последние версии этой среды разработки поддерживают современные возможности ООП.

LISP

LISP (List Processor) был создан Массачусетским Технологическим Университетом для решения задач по работе над искусственным интеллектом. Один из его диалектов был использован в весьма успешном, но, увы, тупиковом проекте по созданию разумной машины SHRDLU. Здесь ИИ смог отличать одни блоки от других и определять их содержимое, однако на понимание более сложных задач ресурсов системы не хватало.

Так или иначе, производные LISP используются для автоматизации процессов в AutoCAD, GIMP, а также при создании видеоигр. Для ЛИСП-программ даже были созданы специальные компьютеры, обеспечивающие очень большие вычислительные мощности — однако ПК общего назначения очень быстро догнали и перегнали по функционалу эти некогда перспективные машины.

Prolog

В логическом программировании самым распространенным языком был Prolog (фр. Programmation en Logique). Основная особенность софта на основе этого языка в том, что он производит вычисления в виде значений “истина” или “ложь”, обращаясь при этом к собственной базе данных.

Так, например, Пролог используется в IBM Watson — суперкомпьютере с системой исскуственного интеллекта “вопрос-ответ”, который выиграл главный приз в телевизионной викторине. Впрочем, при создании такой машины использовались еще и Java, и С++, так как Пролог не совсем подходит для создания очень сложных вычислительных систем — как минимум, из-за неудобного контроля результатов промежуточного кода.

PL/1

Долгое время у бухгалтеров был своеобразный стандарт — Cobol, который, пусть и был весьма распространенным языком, но предоставлял недостаточно широкий набор функций для поставленных задач. Так появился PL/1 (Programming Language 1): он содержал такой богатый набор возможностей, что компилятора, который поддерживал бы весь набор функций, до сих пор не существует.

Также PL/1 должен был объединить ученых, использующих Fortran, и финансистов на Cobol вместе, однако это у него не особо получилось. В основном из-за своей необычайной сложности и трудности реализации подходящего компилятора. PL/1 использовался в мейнфреймах многих компаний, однако с развитием Фортрана и Кобола перестал быть популярным — в последних версиях аналогов были реализованы все особенности, ради которых пригодился бы PL/1.

J#

С распространением .NET Framework Microsoft решила перетащить пласт разработчиков Java в свой лагерь — для этой цели и был выпущен J#. Получилась ни рыба ни мясо: J# не был полноценным Java-языком, а лишь имел в наличии похожий синтаксис.

В то же время для поддержки .NET ему требовалось наличие дополнительных “костылей” —  специальных библиотек, что еще больше затрудняло работу с ним. Проще говоря, из-за неполной совместимости языков для перехода на платформу Microsoft разработчикам было удобнее изучить, например, С#.

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

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

www.kv.by

История развития вычислительной техники — механический этап


То, что сейчас будет сказано, вероятно, многим покажется неправдоподобным. Но как это ни удивительно, факт остается фактом: универсальная автоматическая машина, в структуру которой уже входили почти все основные части современных ЭВМ, была изобретена еще в тридцатых годах XIX века. И сейчас мы можем лишь поражаться, что такая гигантская работа, — а это был, без преувеличений, переворот в вычислительной технике — могла быть совершена практически одним человеком.

Имя этого человека, которому суждено было открыть новую и, пожалуй, наиболее яркую страницу в истории вычислительной техники — Чарльз Бэббидж. За свою долгую жизнь (1792-1871) кембриджский профессор математики сделал немало открытий и изобретений, значительно опередивших его время. Круг интересов Бэббиджа был чрезвычайно широк, и все же главным делом его жизни, по словам самого ученого, были вычислительные машины, над созданием которых он работал около 50 лет.

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

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

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

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

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

Для хранения чисел Бэббидж предложил использовать набор десятичных счетных колес. Каждое из колес могло останавливаться в одном из десяти положений и таким образом запоминать один десятичный знак. Колеса собирались в регистры для хранения многоразрядных десятичных чисел. По замыслу автора запоминающее устройство должно было иметь емкость в 1000 чисел по 50 десятичных знаков «для того, чтобы иметь некоторый запас по отношению к наибольшему числу, которое может потребоваться». Для сравнения скажем, что запоминающее устройство одной из первых ЭВМ имело объем 250 десятиразрядных чисел.

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

Второе устройство машины — устройство, в котором осуществлялись необходимые операции над числами, взятыми из «склада». Бэббидж назвал его «фабрикой», а сейчас подобное устройство называется арифметическим. Время на производство арифметических операций оценивалось автором: сложение и вычитание — 1с; умножение 50-разрядных чисел — 1 мин; деление 100-разрядного числа на 50-разрядное — 1 мин.

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

Управление вычислительным процессом должно было осуществляться с помощью перфокарт — набором картонных карточек с разным расположением пробитых (перфорированных) отверстий. Карты проходили под щупами, а они, в свою очередь, попадая в отверстия, приводили в движение механизмы, с помощью которых числа передавались со «склада» на «фабрику». Результат машина отправляла обратно на «склад». С помощью перфокарт предполагалось также осуществлять операции ввода числовой информации и вывода полученных результатов. По сути дела, этим решалась проблема создания автоматической вычислительной машины с программным управлением.

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

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

на начало

Только после смерти Бэббиджа его сын Генри сумел построить по чертежам отца центральный узел «Аналитической машины» — арифметическое устройство, которое в 1888 году вычислило произведения числа «пи» на числа натурального ряда от одного до 32 с точностью до 29 знаков! Машина Бэббиджа оказалась работоспособной, но Чарльз этого уже не увидел.

istrasvvt.narod.ru

Самый первый программист в мире

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

Так, современные пользователи могут сетовать на то, видеофайл загружается на несколько минут дольше, чем должен. Еще каких-то 30-40 лет назад для того, чтобы посмотреть новый фильм, нужно было идти в кинотеатр в назначенное время. Для того чтобы послушать красивую мелодию лет 100 назад, нужно было бы пригласить к себе музыканта и отдать за это хорошие деньги. И это если говорить только о развлечениях. Трудно себе представить, сколько времени тратилось на проведение расчетов и составление документов, на коммуникацию и получение важной информации. Сегодня это все делают за нас машины благодаря одному главному процессу — программированию. Даже если взглянуть на современную стиральную машинку или мультиварку, то и она оснащена простеньким, но все же искусственным интеллектом. Такие приборы мы используем почти каждый день, но даже не задумываемся, благодаря кому это все стало возможно. Сегодня мы поговорим о людях, которые облегчили нашу жизнь в разы и открыли нам невероятный мир программного кода — программистах. Вы узнаете, кто был первый программист в истории и с чего все начиналось.

Первые шаги к программе

Принято считать, что к вычислительной технике имеют страсть и способности только мужчины. Если взглянуть на список самых выдающих программистов, в глаза бросаются только мужские имена. Однако мало кто знает, что именно женщина — первый программист в истории человечества. Кем же была эта знаменательная особа?

Многим из нас приходилось слышать о таком известном английском писателе, как Джорж Гордон Байрон. Его дочь, Ада Августа Лавлейс (Байрон), и есть первый программист в мире. Любовь к математике девушке привила мать еще с самого детства. С ней занимались лучшие ученые в округе, где жила юная особа. Так, ее первым учителем стал выдающийся Август де Морган, что считался выдающимся математиком и логиком. Именно эти две составляющие и закладывают основу программирования. Они и помогли девушке в ее последующих научных трудах.

Первый программист в мире — Ада Августа Байрон

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

Знакомство с аналитической машиной

Молодому дарованию довелось побывать и в мастерской «отца компьютера». Визит Чарльзу Бэббиджу она нанесла в компании миссис де Морган, супруги ее учителя математики и по совместительству друга семьи. В своих воспоминаниях об этом визите де Морган отмечала, что все гости смотрели на аналитическую машину с большим изумлением, для них это было что-то необычное и совершенно странное.

И только Ада Августа, по словам де Морган, не видела перед собой ничего сверхъестественного. Она внимательно осмотрела машину, смогла понять принцип ее работы и по достоинству оценила изобретение. Так первая женщина-программист впервые ознакомилась с вычислительной техникой. После этого случая девушка еще больше загорелась научной деятельностью. Она знала и верила, что это изобретение — шаг в будущее и лишь начало достижений, что смогут механизировать любые процессы. И, как мы можем наблюдать сегодня, не прогадала.

Первый программист и его будни

В возрасте девятнадцати лет Ада Августа выходит замуж. Ее избранником становится лорд Кинг, впоследствии — граф Лавлейс. На тот момент лорду было 29 лет, и семейная жизнь Ады протекала счастливо и размеренно. Муж девушки поддерживал все ее научные начинания и даже восхищался складом ее ума. Супруги довольно часто посещали светские приемы, однако молодой особе было интересно совсем другое. Даже несмотря на замужество, ее общение с Чарльзом Бэббиджем стало ее теснее и сердечнее. Девушка напоминала Бэббиджу его погибшую дочь, тем более Ада являлась почти ее ровесницей. «Отца компьютера» также восхищали способности девушки, они часто обменивались интересными идеями и показывали друг другу свои вычисления. Со временем они стали не только коллегами, но и хорошими друзьями. Ада не выносила поверхностного общества и глупых людей. Она была требовательна к себе и окружающим. При математическом складе ума ее привлекали вещи, не свойственные женщинам. Девушка стала настоящим гением своего времени и посвятила свою жизнь науке.

Ада Августа не останавливается в своих научных расчетах

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

Изучение машин Бэббиджа

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

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

Первые программы

Свои первые программы для машин Бэббиджа девушка составляла для вычисления чисел Бернулли. Подробнее всего Ада Августа растолковала в своих трудах решение системы двух линейных уравнений. Тогда впервые появилось такое понятие, как рабочие переменные и их последовательная смена в программе. Девушка смогла применить оператор присвоения, который до сих пор является неотъемлемой частью даже самой сложной современной программы. Вторая программа, описанная в комментариях к статье Манибера, была составлена Адой Августой для вычисления тригонометрических функций и включала в себя работу цикла. Реккурентные вложенные циклы были основой третьей ее программы.

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

Последние годы жизни ученой

Ада умирает в возрасте 36 лет. В таком же возрасте умер ее отец от кровопускания. Отец и дочь скончались из-за одной болезни — рак. Даже несмотря на то, что Ада Августа пыталась лечиться, последние годы ее жизни были мучительными. Каждые новые расчеты были все более утомительными для женщины, но она не прекращала заниматься наукой до самой смерти. В честь Ады названы один из уникальных языков программирования «АДА», два маленьких города в Америке и колледж.

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

fb.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *