В 1822 году английский математик Чарльз Бэббидж начал работу над разностной машиной (механическим аппаратом, который должен был создавать таблицы логарифмов. – Прим. ред.). Он надеялся заменить ею людей, которые вычисляли астрономические, навигационные и математические таблицы и иногда допускали ошибки. Эта машина стала прообразом современного компьютера и дала начало программированию.
РедакцияMC.today рассказывает, как появилось программирование и кто стоял у его истоков.
Ада Лавлейс: первый программист в истории
Ада Лавлейс была дочерью английского поэта Джорджа Байрона, но с детства увлекалась математикой, как ее мать Анна Изабелла Байрон. Учителями девочки были лучшие математики: Огастес де Морган, автор законов де Моргана (логические правила, которые связывают пары логических операций при помощи логического отрицания. – Прим. ред.), и Мэри Сомервилль, которая перевела «Трактат о небесной механике» Пьера Симона (книга о разделе астрономии, который применяет законы механики для изучения движения небесных тел. – Прим. ред.). От последней она узнала о Чарльзе Бэббидже. В 1833 году они познакомились и стали хорошими друзьями.
В 1840 году Чарльз Бэббидж ездил в Турин. Там по приглашению итальянских математиков он читал лекции о своей разностной машине. Луиджи Менабреа, будущий премьер-министр Италии, а тогда молодой ученый, опубликовал конспект его лекций на французском языке. Друг Бэббиджа, изобретатель Чарльз Уитстон, попросил Аду перевести конспекты на английский и добавить свои комментарии.
Разностная машина Бэббиджа. Источник
Ада переводила конспект больше года, а ее комментарии составили 52 страницы – больше, чем изначальный текст. Она увидела в машине больше, чем видел сам Беббидж. Именно она назвала ее не разностной, а аналитической и пересмотрела ее функции.
Ада Лавлейс считала: в будущем такая машина сможет не только считать алгебраические формулы, а обрабатывать любую информацию, которую в нее заложат: писать музыку, картины и так далее. В своих комментариях она писала, что аналитическая машина покажет «науке такие пути, какие нам и не снились». Она ввела понятия «ячейка» и «цикл». Еще она описала алгоритм вычисления чисел Бернулли (последовательность рациональных чисел, возведенных в одну и ту же степень. – Прим. ред.) – первую компьютерную программу в истории программирования. Но машину Бэббиджа закончили только после ее смерти, поэтому Ада Лавлейс так и не смогла испытать свой код.
Три поколения языков программирования
Для первых ЭВМ (электронно-вычислительных машин. – Прим. ред.) нужно было писать программы на понятном для них языке – машинном коде. Тогда это выглядело как сочетание единиц и нулей.
Это было неудобно по нескольким причинам:
- Язык был очень громоздким и неудобным.
- Люди часто допускали ошибки.
- Чтобы написать программу, нужно было хорошо знать, как устроена ЭВМ.
- Для каждой ЭВМ нужно было писать новую программу.
- Это требовало слишком много времени, труда и внимания.
Вскоре начали применять язык ассемблера. Это понятие включает в себе несколько языков. Кэтлин Бут в 1947 году создала первый язык ассемблера – автокод. Дэвид Уилер в 1948 году написал другой – под EDSAC (тип ЭВМ. – Прим. ред.). Благодаря им программисты могли писать программу в удобном для человека формате: вместо двоичного кода использовали буквы или сокращенные слова, которые отражали суть команды.
EDSAC. Источник
Если машинные коды считались первым поколением языков в истории программирования, то язык ассемблера стал вторым. Но и здесь были проблемы. Например, на нем сложно выполнять большие программные комплексы. Так появилось третье поколение – языки программирования высокого уровня.
Первые языки программирования высокого уровня
Языки программирования высокого уровня созданы для быстроты и удобства программирования – они могут коротко описать большие программы. Еще такие языки не привязаны к определенному типу ЭВМ, ведь для каждого из них разработали компилятор (программу, которая переводит текст на языке программирования в машинный код. – Прим. ред.).
Plankalkül, 1946
Неизвестно, как бы появилось и развивалось программирование, если бы не Вторая мировая война. В 1941 году немецкий ученый Конрад Цузе создал механическо-вычислительные устройства Z1, Z2 и Z3. Последнее считают первым программируемым компьютером. Все три были уничтожены во время бомбардировок Берлина в 1944 году.
Реплика Z3. Источник
Уцелел только Z4, усовершенствованная версия Z3 – ученый заранее перевез компьютер в безопасное место. Именно для этой машины в 1948 году Цузе разработал первый язык программирования высокого уровня – Plankalkül.
Из-за войны Цузе был изолирован от научного сообщества Европы и США, поэтому его разработки долго оставались неизвестными. Он полностью их опубликовал только в 1972 году.
Fortran, 1957
Этот язык программирования создали специалисты IBM под руководством Джона Бэкуса для технических и научных расчетов. Ему не нравилось писать программы на ассемблере, и он искал способ «быть ленивым».
Научное сообщество не верило, что появится новый способ программировать быстрее и проще, но восприняло Fortran хорошо. Через три года были версии языка для четырех моделей компьютеров IBM. Он стал настолько популярным, что конкуренты начали выпускать компиляторы Fortran для своих компьютеров.
Язык используется до сих пор, ведь на нем написано много библиотек (сборников подпрограмм и объектов для разработки программ. – Прим. ред.).
ALGOL, 1958
ALGOL разработали в 1958 году как универсальный язык. Над ним работали комитеты из Германии и США. Из-за этого между американцами и европейцами часто возникали споры.
Один из таких – «десятичная буря». Программисты не могли решить, какой символ использовать для разделения целой и дробной части числа. Европейцы хотели использовать запятую, а американцы – точку. Чтобы решить этот спор, разработчики решили, что описание языка будет трехуровневым – подобные мелкие вопросы выносились на второй и третий уровни. Так они сосредоточились на важных вопросах и быстро закончили разработку языка.
Язык стал популярным в научных сообществах от Великобритании до Дальнего Востока СССР.
LISP, 1958
Этот язык разработал Джон Маккарти. LISP применяли для обработки «списков». Поскольку это самый гибкий способ представить информацию в памяти компьютера, язык был очень популярным. За 40 лет его существования у него появилось много диалектов.
COBOL, 1959
Этот язык написали для разработки бизнес-приложений и для работы в экономической сфере. Он максимально приближен к английскому языку и понятен даже неспециалистам. Но на нем нельзя запрограммировать сложные алгебраические вычисления.
Программисты, которые создали ПО и языки программирования
Вот как развивались ПО и языки программирования дальше. Без этих разработок мир был бы другим.
- Кен Томпсон в 1969 году создал операционную систему UNIX. Это был прорыв для того времени: пользователи могли создавать файловую систему любой глубины, информация выводилась текстом, а не битами и многое другое. Он изобрел язык программирования B, который предшествовал языку С. Еще Кен Томпсон работал в Google, где он стал соавтором языка Go.
- Деннис Ритчи создал в 1972 году язык программирования С. Если бы не С, то не было бы Windows, Linux, C++, Google Chrome, Safari, Firefox, MacOSX, PlayStation и Xbox.
- Дональд Кнут – создатель языка программирования METAFONT, который используют для векторных шрифтов. Он изобрел его в 1979 году.
- Бьерн Страуструп в 1985 году создал один из самых популярных языков С++.
- Тим Бернерс-Ли представил в 1989 году World Wide Web. Еще он разработал три фундаментальных технологии: HTML, URL и HTTP.
- Линус Торвальдс в 1991 году в своей комнате в общежитии Университета Хельсинки создал операционную систему ядра Linux.
- Расмус Лердорф создал в 1994 году язык программирования PHP. Его используют Facebook и Wikipedia.
- Брендан Эйч в 1995 году создал язык JavaScript. На нем пишут мобильные приложения.
- Джеймс Гослинг в 1996 году создал Java, оригинальный компилятор и виртуальную машину, которая перерабатывает код. Благодаря этому существуют Amazon, eBay и LinkedIn.
- Андерс Хейлсберг разработал язык программирования С# в 2001 году. Чаще всего его используют для компьютерных игр и машинного обучения.
- Гвидо ван Россум в 2008 году, когда работал в Google, создал язык программирования Python. В сообществе Python его называют «доброжелательным диктатором на всю жизнь». Он до сих пор наблюдает за развитием языка и вмешивается там, где необходимо, несмотря на то, что сейчас работает в Dropbox.
Выводы
Вот как появилось программирование: Ада Лавлейс написала первую программу для аналитической машины Бэббиджа, но не смогла ее испытать. Первая работающая программа была написана на машинном коде – двоичной системе из единиц и нулей. Такой код понимала ЭВМ, но для людей он был неудобным. Позже появился язык ассемблера, когда команды нужно было вводить с помощью слов. Но и здесь функционал машин был ограничен, поэтому вскоре появились языки программирования высокого уровня. Благодаря им программирование стали широко использовать в жизни, а не только в научной среде.