Языки программирования прошлого века + видео обзор

История языков программирования

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

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

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

1944-45: Планкалкюль
Где-то между 1944-45 годами Конрад Цузе разработал первый «настоящий» язык программирования под названием Plankalkül (Расчет плана). Язык Zeus (помимо прочего) позволял создавать процедуры, в которых хранятся фрагменты кода, которые можно было вызывать снова и снова для выполнения рутинных операций.

1949: Язык Ассемблера
Ассемблер использовался в автоматическом калькуляторе с электронным запоминанием задержки (EDSAC). Ассемблер был разновидностью низкоуровневого языка программирования, который упростил язык машинного кода. Другими словами, конкретные инструкции, необходимые для работы с компьютером.

1949: Shortcode
Шорткод (или сокращенный код) был первым языком высокого уровня (HLL), предложенным Джоном Макколи в 1949 году. Однако именно Уильям Шмитт реализовал его для компьютера BINAC в том же году и для UNIVAC в 1950 году.

1952: Автокодирование
Автокод был общим термином, используемым для семейства языков программирования. Autocode, впервые разработанный Аликом Гленни для компьютера Mark 1 в Университете Манчестера, был первым в истории скомпилированным языком, который был реализован, что означает, что он может быть переведен непосредственно в машинный код с помощью программы, называемой компилятором. Автокод использовался на первых вычислительных машинах Ferranti Pegasus и Sirius в дополнение к Mark 1.

1957: Fortran
FORmula TRANslation или FORTRAN был создан Джоном Бэкусом и считается старейшим языком программирования, используемым сегодня. Язык программирования был создан для научных, математических и статистических вычислений высокого уровня. FORTRAN до сих пор используется в некоторых из самых передовых суперкомпьютеров в мире.

1958: ALGOL (Алгоритмический язык)
Алгоритмический язык или АЛГОЛ был создан совместным комитетом американских и европейских компьютерных ученых. Алгол послужил отправной точкой для разработки некоторых из наиболее важных языков программирования, включая Pascal, C, C ++ и Java.

1958: LISP (обработчик списков)
Процессор списков или LISP был изобретен Джоном Маккарти в Массачусетском технологическом институте (MIT). Первоначально предназначенный для искусственного интеллекта, LISP является одним из старейших языков программирования, которые все еще используются сегодня, и его можно использовать вместо Ruby или Python. Такие компании, как Acceleration, Boeing и Genworks, по-прежнему используют LISP в своих технических стеках.

1964: BASIC (универсальный символьный код инструкций для начинающих)
Универсальный код символических инструкций для начинающих или BASIC был разработан группой студентов Дартмутского колледжа. Этот язык был написан для студентов, которые плохо разбирались в математике или компьютерах. Этот язык был разработан основателями Microsoft Биллом Гейтсом и Полом Алленом и стал первым товарным продуктом компании.

1970: ПАСКАЛЬ
Названный в честь французского математика Блеза Паскаля, Никлаус Вирт разработал язык программирования в его честь. Он был разработан как средство обучения компьютерному программированию, что означало, что его легко освоить. Apple предпочитала его на заре своей деятельности из-за простоты использования и мощности.

1972: Smalltalk
Smalltalk, разработанный в исследовательском центре Xerox в Пало-Альто Аланом Кей, Адель Голдберг и Дэном Ингаллсом, позволял программистам изменять код на лету. Он представил множество аспектов языка программирования, которые сегодня являются видимыми языками, такими как Python, Java и Ruby. Такие компании, как Leafly, Logitech и CrowdStrike, заявляют, что используют Smalltalk в своих технических стеках.

1972: C (Си)
Разработан Деннисом Ричи из Bell Telephone Laboratories для использования с операционной системой Unix. Он был назван C, потому что был основан на более раннем языке под названием «B». Многие из ведущих в настоящее время языков являются производными от C, включая; C #, Java, JavaScript, Perl, PHP и Python. Он также использовался / до сих пор используется такими крупными компаниями, как Google, Facebook и Apple.

1980/81: Ада
Изначально Ada была разработана командой во главе с Джин Ичбиа из CUU Honeywell Bull по контракту с Министерством обороны США. Названный в честь математика середины 19-го века Ады Лавлейс, Ada представляет собой структурированный, статически типизированный, императивный, объектно-ориентированный язык программирования высокого уровня с широким спектром возможностей. Ада была расширена из других популярных в то время языков программирования, таких как Паскаль. Ada используется в системах управления воздушным движением в таких странах, как Австралия, Бельгия и Германия, а также во многих других транспортных и космических проектах.

1983: Objective-C
Objective-C, разработанный Брэдом Коксом и Томом Лавом, является основным языком программирования, используемым для написания программного обеспечения для операционных систем Apple macOS и iOS.

1991: Python
Названный в честь британской комедийной труппы «Монти Пайтон», Python был разработан Гвидо Ван Россумом. Это универсальный язык программирования высокого уровня, созданный для поддержки различных стилей программирования и приятный в использовании (ряд руководств, примеров и инструкций часто содержат ссылки на Monty Python). Python по сей день является одним из самых популярных языков программирования в мире, который используют такие компании, как Google, Yahoo и Spotify.

1991: Visual Basic
Visual Basic, разработанный Microsoft, позволяет программистам использовать стиль перетаскивания для выбора и изменения предварительно выбранных фрагментов кода через графический интерфейс пользователя (GUI). В наши дни этот язык не используется слишком часто, однако Microsoft частично использовала Visual Basic для ряда своих приложений, таких как Word, Excel и Access.

1995: JavaScript
JavaScript был создан Бренданом Эйхом, этот язык в основном используется для динамической веб-разработки, документов PDF, веб-браузеров и виджетов рабочего стола. Почти каждый крупный веб-сайт использует JavaScript. Gmail, Adobe Photoshop и Mozilla Firefox включают несколько хорошо известных примеров.

2000: C #
Разработанный в Microsoft с надеждой на объединение вычислительных возможностей C ++ с простотой Visual Basic, C # основан на C ++ и имеет много общего с Java. Этот язык используется почти во всех продуктах Microsoft и используется в основном при разработке настольных приложений.

2009: Golang (Go)
Go был разработан Google для решения проблем, возникающих из-за больших программных систем. Благодаря своей простой и современной структуре Go завоевал популярность среди некоторых крупнейших технологических компаний по всему миру, таких как Google, Uber, Twitch и Dropbox.

2014: Swift
Разработанный Apple в качестве замены C, C ++ и Objective-C, Swift был разработан с целью быть проще, чем вышеупомянутые языки, и оставлять меньше места для ошибок. Универсальность Swift означает, что его можно использовать для настольных, мобильных и облачных приложений. Ведущее языковое приложение Duolingo запустило новое приложение, написанное на Swift.

Какие старые языки программирования все еще используются?
Не все языки программирования существуют вечно. Будь то результат развития технологий или просто замена более сложным языком. С учетом сказанного, ИТ специалисты по-прежнему используют некоторые старые языки программирования:

FORTRAN
Первоначальная версия FORTRAN была предложена в IBM Джоном Бэкусом еще в 1953 году. Это был первый компилятор-оптимизатор, который широко использовался в научной работе, поскольку его оптимизированный код выгодно конкурировал с написанным вручную кодом ассемблера. Этот язык до сих пор используется на некоторых из самых быстрых суперкомпьютеров в мире. С 1953 года была выпущена серия обновлений, последняя версия которых была выпущена в 2018 году.

COBOL
COBOL был разработан еще в 1959 году и был одним из первых языков программирования высокого уровня. Несмотря на то, что COBOL был изобретен так давно, он по-прежнему широко распространен. В одних только США 43% банковских систем построены на COBOL, что составляет 95% операций с банкоматами и 80% транзакций, совершаемых лично.

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

Источник

10 важнейших языков программирования: 50 лет развития (инфографика)

Языки программирования прошлого века

Издание V3 подготовило видеообзор важнейших языков программирования и краткой истории их появления.

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

1957 — Fortran

Язык, название которого получено от сокращения «Formular Translation». Это самый старый язык программирования, использование которого продожается и в наше время. Первоначально его создали для обработки статистических вычислений, и по-прежнему применяют в некоторых правительственных системах США и аэрокосмической индустрии.

1959 — COBOL

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

1964 — Basic

Beginners All-Purpose Symbolic Instruction Code специально разработали для того, чтобы его мог без проблем выучить любой обыватель, не связанный с компьютерной техникой. Сооснователи Microsoft Билл Гейтс и Пол Аллен продали доработанную версию языка Массачуссетскому технологическому институту, это и стало первым проектом молодой и ещё никому не известной компании.

1969 — С

Язык разработан для использования в Unix-системах и являлся усовершенствованным вариантом языка программирования B, чем и объясняется его название. Благодрая мощности и производительности, значительную часть ядра Unix постепенно переписали на C, что обеспечило его последующую популярность.

1983 — С++

Модифицированная версия С стала, по некоторым отзывам, самым популярным языком программирования всех времён. Этот язык используют в многом известном ПО. Так, на нём написаны Microsoft Office, Adobe Acrobat и браузер Firefox.

Языки программирования прошлого века

1987 — Perl

Perl появился после того, как разработчик Ларри Уолл не смог извлечь нужные данные из интересовавшего его отчёта с помощью Unix-системы. Название языка расшифровывается как Practical Extraction Report Language, или прикладной язык извлечения отчётов. Его активно использовали для создания веб-сайтов, некоторые из которых существуют и сегодня. Так, perl используется в крупнейшей доске объявлений Craiglist и сервисе бронирования жилья Booking.com.

1991 — Python

Названный в честь британского комедийного шоу Монти Пайтон, Python известен своей простотой — по этому параметру его считают вторым после Basic. Python используют в работе поисковой системы Google, YouTube, проектах Nasa и многих других областях.

1995 — PHP

Созданный специально для создания веб-страниц (Personal Home Page) на смену Perl, язык быстро завоевал популярность. По информации V3, на php написано 244 млн веб-сайтов, включая Facebook, а количество веб-серверов с установленным php превышает 2,1 млн.

1995 — Java

Язык программирования создала команда Sun Microsystems, и первоначальной задачей проекта было управление приставками для интерактивного ТВ. Сегодня на Java программирует более 9 млн разработчиков, а спектр его использования весьма широк. К примеру, последняя миссия марсохода США была запрограммирована именно на Java.

1995 — JavaScript

Несмотря на название, разработанный программистом из Netscape язык не имеет никакого отношения к Java. При использовании в веб-браузерах, JavaScript позволяет скриптам, работающим на стороне пользователя, контролировать приложения, взаимодействовать с пользователем и влиять на отображаемый контент. Язык часто используют при серверном программировании, геймдеве и создании десктоп-приложений.

Ни один язык не может быть использован для решения всех существующих проблем. С активизацией появления новых технологий в последнее десятилетие активно развиваются и новые, более подходящие к современным задачам языки программирования. Показательным примером является Kotlin, созданный российской компанией JetBrains и недавно принятый Google в качестве второго основного языка для создания Android-приложений.

Читайте также: Вечно молодой: мировые финансы зависят от языка программирования, созданного в 1959 году

Хотите сообщить важную новость? Пишите в Телеграм-бот.

А также подписывайтесь на наш Телеграм-канал.

Источник

Эволюция языков программирования

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

Языки программирования прошлого века

Доисторическая эра

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

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

С другой, первый язык программирования в современном представлении зародился лишь во время Второй мировой войны на релейной машине Z4 немецкого изобретателя Конрада Цузе. Его название Планкалкюль (нем. Plankalkül — исчисление планов), и это был полноценный язык высокого уровня, поддерживающий условные операторы, арифметические операции, массивы, циклы, исключения и утверждения. Доподлинно известно, что в конце 40-х годов Планкалкюль позволял ЭВМ решать шахматные задачи.
Изобретение Цузе могло бы изменить ход истории, однако итоги войны и усилия американцев по популяризации собственного машинного языка отложили полноценное явление миру Планкалкюля вплоть до 1972 года.

Языки программирования прошлого века
Z4 в Немецком музее, Мюнхен

Языки для компьютеров

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

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

Качественный скачок произошёл после изобретения транзистора и первых доступных компьютеров. Это побудило в период с 1954-1957 году компанию IBM активно работать над разработкой популярного коммерчески языка Fortran (от англ. Formula и Translation).

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

Далее началось бурное развитие программирования: практически одновременно появились Algol, алгоритмический высокоуровневый язык, активно использовавшийся в СССР и Европе, LISP и COBOL.

Языки для народа

Но по-настоящему массовым программирование стало с появлением языка BASIC в 1964 году. Преподаватели Дартмутского Колледжа Джон Кемени и Томас Курц разработали его для обучения студентов основам программирования ЭВМ.

BASIC был алгоритмическим языком, для его создателей было важно не быстродействие и эффективность, а легкое понимание. Тем не менее BASIC быстро обрёл популярность в реализациях от Microsoft и Apple. Но не все были им довольны. По мнению противников языка простота и бесструктурность ранних версий BASIC поощряли применение порочных и опасных методик разработки.

Языки программирования прошлого века
«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они умственно изувечены без надежды на восстановление».
Эдсгер Дейкстра.

Кайнозой

В 1960-х годах компания Bell Labs всерьёз взялась за разработку операционной системы Unix для своих миникомпьютеров. Первые ОС были написаны на ассемблере, но эксперимент оказался неудачным.
Потом в алфавитном порядке Кеном Томпсоном и Деннисом Ритчи был специально разработан интерпретируемый язык B (Би), но и в этот раз результат оставлял желать лучшего.

Всё изменилось с третьей попыткой в 1972 году и языком C, который оказался настолько успешным, что и спустя 40 лет занимает важное место в разработке ПО. Например, по данным IEEE Spectrum С в 2015 году стоял на втором месте: «The 2015 Top Ten Programming Languages».

В другом полушарии на останках языка Algol-68 Никлаус Вирт разработал Pascal. Цель он преследовал ту же самую, что и BASIC — простота в обучении и наглядность выполняемых операций.

Несмотря на внешнюю незамысловатость, Pascal оказался крайне эффективным языком не только в деле обучения, но и в серьезной разработке. Он остаётся крайне востребованным как в школах, так и в мире больших приложений: Total Commander, WinRAR, ранние версии Skype и Nero Burning ROM были написаны на Pascal.

В конце 1970-х были сформированы принципы ООП, на основе которых был доработан язык C, получив сперва название «С with classes», а потом более привычное взгляду C++. Отчасти из-за совершенства творения, отчасти из-за славы одного из первопроходцев, C++ долгое время оставался самым востребованным языком. На нём были написаны операционные системы Symbian, Windows и OS X, браузеры Google Chrome и Mozilla, и ещё тысячи популярных приложений.

Через четыре года после появления первой версии C++ Ларри Уолл разработал Perl — «практичный язык для извлечения данных и составления отчётов» (Practical Extraction and Report Language). Изначально язык обрёл популярность благодаря функциям, заложенным в названии, однако позднее расширил свои возможности и аудиторию.

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

Современность

В статье об истории эволюции языков просто обязан упоминаться Python, горячо любимый не только преподавателями GeekBrains, но и, судя по широте использования, многими иностранными университетами и крупными зарубежными компаниями. Его структура и философия направлены на то, чтобы ускорить разработку готового продукта программистом. С точки зрения развития, это куда более совершенный язык, нежели все существовавшие до 1991 года. Он минималистичен, но при этом более читабелен, достаточно часто обновляется и прекрасен по соотношению «скорость — качество разработки».

Впрочем, теми же самыми характеристиками можно описать и Ruby, увидевший свет в 1995 году, с поправкой на то, что у Юкихиро Мацумото было 2 года, чтобы подумать, чем его язык может стать лучше современников.

Развитие интернета в конце XX века требовало более качественных языков обработки текста и данных. Так на свет появились HTML, PHP, CSS и JavaScript, без которых сегодня очень трудно представить веб-разработку.

Вместе с этим появился и Java — объектно-ориентированный язык, использующий виртуальную машину JVM. Это обеспечивает языку практически полную независимость от машины, на которой производится запуск. Совокупность этих факторов и популярность смартфонов c ОС Android позволяет Java возглавлять список самых популярных языков по версии Tiobe, а нам — рекомендовать его начинающим разработчикам в качестве первого или основного.

Если взглянуть на этот же самый рейтинг, в конце второго десятка можно отыскать современные языки программирования. Например, Swift — продукт компании Apple, популярный не только за счет своих качеств, но и благодаря громкому имени производителя.

Будущее

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

Как думаете, что будет дальше, и на какой из существующих языков поставите вы?

Источник

История языков программирования: 1950-е

Программирование появилось задолго до 50-х годов XX века. Первые идеи высказал ещё Чарльз Бэббидж (1792-1871), которого по праву считают отцом компьютера. Он не знал о транзисторах, микросхемах и мониторах, но достаточно точно описал основные принципы, на которых будут строится все вычислительные машины. Развила идею графиня Ада Лавлейс (1815-1852). Её место в истории до сих вызывает немало споров, но одно абсолютно точно – именно Ада фактически стала первым известным программистом. Благодаря её трудам стало понятно, что путь к эффективному использованию машин – алгоритмы, описанные в коде.

Языки программирования прошлого века
Аналитическая машина Бэббиджа

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

Суть проблемы

Сегодня вам не надо ничего знать об архитектуре компьютера, для большинства программистов вообще важен только язык, всё остальное – вторично. В 1950-х всё было иначе – приходилось работать с элементарными машинными кодами, а это практически всё равно что программировать при помощи паяльника.

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

01 x y – добавление содержимого ячейки памяти y к ячейке x;

02 x y – аналогичная процедура с вычитанием.

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

Сегодня такой код вам покажется ужасом, но в начале 1950-х был нормой.

Языки программирования прошлого века
Компьютер 1940-х годов

Программистам приходилось долго учиться машинным командам, потом внимательно писать код, а после завершения ещё несколько раз его перепроверять – риск ошибки был велик. Проблемы возникла, когда развитие машин стало тормозиться нехваткой кадров для написания программ. Требовалось срочное решение.

Первый сборщик

Решение лежало на поверхности: необходимо перевести цифровые обозначения операций в буквы. То есть вместо «01 10 15» использовать «ADD 10 15». Это требовало дополнительного перевода символов в машинную команду, но, учитывая проблему, жертва была минимальна.

Решение оказалось настолько очевидным, что доподлинно неизвестно, кто первым изобрёл язык Ассемблера. Вероятнее всего, он появился одновременно сразу в нескольких местах. За название и популяризацию ответственными принято считать авторов книги «The preparation of programs for a digital computer» Уилкса, Уилера и Гилла. Нетрудно догадаться, что название Ассемблер происходит от английского слова assemble – собирать, монтировать, что вполне точно описывает процесс. Позднее символы стали касаться не только простейших операций, но и адресации, что значительно упростило читаемость кода.

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

Это стало катализатором языкового прорыва.

Компиляторы и предубеждения

Ассемблер позволил создать простые превращения. Например, перевод 01 в ADD. Макроассемблер расширил эту идею и подарил программистам возможность сворачивать несколько инструкций в одну. К примеру, если в программе вы постоянно добавляли значение в ячейку памяти и проверяли, не переполнена ли она, всё это можно было записать в макрос INCRT и использовать его, меняя лишь переменные. По сути, макроассемблеры превратились в первые языки высокого уровня.

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

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

Тем не менее компилятор стал единственным выходом из ситуации, но здесь проявилась другая трудность – арифметические выражения. Их исполнение не совпадает с тем, как машина читает код. Из школьного курса мы знаем порядок вычислений в выражении «2+3*5», но машина читает код в одном направлении, так что ответ будет неверным. Да, указанный пример можно решить, создав макрос, но для сложных выражений уровня «(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8» требовался принципиально иной подход.

Эпоха новой формации

Найти алгоритм анализа стека удалось Джону Бэкусу, создателю Фортрана. Он начал работать над ним в 1954 году и ему потребовалось почти 5 лет, чтобы доказать право языков высокого уровня на существование. Полное название Фортрана – The IBM Formula Translating System, или FORmula TRANslator. Несмотря на 60-летний возраст, он остаётся одним из самых популярных языков программирования и невероятно востребован в Data Science. За это время мы видели множество версий: Fortran 1, II, 66, 77, 90, 95, 2008, а в следующем году выйдет ещё одна (планировался Fortran 2015, но из-за задержек название может смениться на 2018). Именно в Фортране впервые были одновременно реализованы многие атрибуты языка высокого уровня, среди которых:

Ещё одним важным наследием Фортрана, о котором даже не догадываются современные программисты, является использование ограничений для переменных для целых чисел. Все они должны были начинаться с одного из 6 символов I, J, K, L, M, N (происходит от I-Nteger). Именно отсюда взялась привычка для перечислений брать переменные i, j и т.д.

Языки программирования прошлого века
IBM 704 – машина, на которой был создан Fortran

При этом Фортран оставался языком, приближенным к машинам. Например, там существовало такое:

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

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

Языки для каждого

Fortran 1 был научным языком, в его основе лежали операции с комплексными числами и с плавающей запятой. Он даже не умел обрабатывать текст, для этого приходилось преобразовывать его в специальные коды. Поэтому Фортран оказался непригоден для бизнеса, где был специально создан язык Cobol.

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

Cobol стал олицетворением максимального удаления от прежнего машинно-арифметического мышления к общечеловеческому. И главное – теперь можно было работать с текстом и записями.

Следующим фундаментальным языком стал Algol (ALGOrithmic Language), предназначенный для научных отчётов и публикаций. В нём впервые появились естественные для нас вещи:

Именно из Алгол произошли C, C ++, C #, Java и многие другие популярные сегодня языки.

Четвёртым китом 1950-х стал Лисп (LISt Processing language), разработанный специально для обслуживания искусственного интеллекта. Главной его особенность стала работа не с императивными данными, а с функциями. Для этого Джону Маккарти пришлось предусмотреть множество механизмов для нормальной работы: динамическую типизацию, автоматическое распределение памяти, сборщик мусора. В конечном счёте, именно Лисп стал прародителем таких языков, как Python и Ruby, а сам до сих пор активно применяется в ИИ.

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

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

Программирование появилось задолго до 50-х годов XX века. Первые идеи высказал ещё Чарльз Бэббидж (1792-1871), которого по праву считают отцом компьютера. Он не знал о транзисторах, микросхемах и мониторах, но достаточно точно описал основные принципы, на которых будут строится все вычислительные машины. Развила идею графиня Ада Лавлейс (1815-1852). Её место в истории до сих вызывает немало споров, но одно абсолютно точно – именно Ада фактически стала первым известным программистом. Благодаря её трудам стало понятно, что путь к эффективному использованию машин – алгоритмы, описанные в коде.

Языки программирования прошлого века
Аналитическая машина Бэббиджа

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

Суть проблемы

Сегодня вам не надо ничего знать об архитектуре компьютера, для большинства программистов вообще важен только язык, всё остальное – вторично. В 1950-х всё было иначе – приходилось работать с элементарными машинными кодами, а это практически всё равно что программировать при помощи паяльника.

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

01 x y – добавление содержимого ячейки памяти y к ячейке x;

02 x y – аналогичная процедура с вычитанием.

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

Сегодня такой код вам покажется ужасом, но в начале 1950-х был нормой.

Языки программирования прошлого века
Компьютер 1940-х годов

Программистам приходилось долго учиться машинным командам, потом внимательно писать код, а после завершения ещё несколько раз его перепроверять – риск ошибки был велик. Проблемы возникла, когда развитие машин стало тормозиться нехваткой кадров для написания программ. Требовалось срочное решение.

Первый сборщик

Решение лежало на поверхности: необходимо перевести цифровые обозначения операций в буквы. То есть вместо «01 10 15» использовать «ADD 10 15». Это требовало дополнительного перевода символов в машинную команду, но, учитывая проблему, жертва была минимальна.

Решение оказалось настолько очевидным, что доподлинно неизвестно, кто первым изобрёл язык Ассемблера. Вероятнее всего, он появился одновременно сразу в нескольких местах. За название и популяризацию ответственными принято считать авторов книги «The preparation of programs for a digital computer» Уилкса, Уилера и Гилла. Нетрудно догадаться, что название Ассемблер происходит от английского слова assemble – собирать, монтировать, что вполне точно описывает процесс. Позднее символы стали касаться не только простейших операций, но и адресации, что значительно упростило читаемость кода.

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

Это стало катализатором языкового прорыва.

Компиляторы и предубеждения

Ассемблер позволил создать простые превращения. Например, перевод 01 в ADD. Макроассемблер расширил эту идею и подарил программистам возможность сворачивать несколько инструкций в одну. К примеру, если в программе вы постоянно добавляли значение в ячейку памяти и проверяли, не переполнена ли она, всё это можно было записать в макрос INCRT и использовать его, меняя лишь переменные. По сути, макроассемблеры превратились в первые языки высокого уровня.

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

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

Тем не менее компилятор стал единственным выходом из ситуации, но здесь проявилась другая трудность – арифметические выражения. Их исполнение не совпадает с тем, как машина читает код. Из школьного курса мы знаем порядок вычислений в выражении «2+3*5», но машина читает код в одном направлении, так что ответ будет неверным. Да, указанный пример можно решить, создав макрос, но для сложных выражений уровня «(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8» требовался принципиально иной подход.

Эпоха новой формации

Найти алгоритм анализа стека удалось Джону Бэкусу, создателю Фортрана. Он начал работать над ним в 1954 году и ему потребовалось почти 5 лет, чтобы доказать право языков высокого уровня на существование. Полное название Фортрана – The IBM Formula Translating System, или FORmula TRANslator. Несмотря на 60-летний возраст, он остаётся одним из самых популярных языков программирования и невероятно востребован в Data Science. За это время мы видели множество версий: Fortran 1, II, 66, 77, 90, 95, 2008, а в следующем году выйдет ещё одна (планировался Fortran 2015, но из-за задержек название может смениться на 2018). Именно в Фортране впервые были одновременно реализованы многие атрибуты языка высокого уровня, среди которых:

Ещё одним важным наследием Фортрана, о котором даже не догадываются современные программисты, является использование ограничений для переменных для целых чисел. Все они должны были начинаться с одного из 6 символов I, J, K, L, M, N (происходит от I-Nteger). Именно отсюда взялась привычка для перечислений брать переменные i, j и т.д.

Языки программирования прошлого века
IBM 704 – машина, на которой был создан Fortran

При этом Фортран оставался языком, приближенным к машинам. Например, там существовало такое:

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

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

Языки для каждого

Fortran 1 был научным языком, в его основе лежали операции с комплексными числами и с плавающей запятой. Он даже не умел обрабатывать текст, для этого приходилось преобразовывать его в специальные коды. Поэтому Фортран оказался непригоден для бизнеса, где был специально создан язык Cobol.

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

Cobol стал олицетворением максимального удаления от прежнего машинно-арифметического мышления к общечеловеческому. И главное – теперь можно было работать с текстом и записями.

Следующим фундаментальным языком стал Algol (ALGOrithmic Language), предназначенный для научных отчётов и публикаций. В нём впервые появились естественные для нас вещи:

Именно из Алгол произошли C, C ++, C #, Java и многие другие популярные сегодня языки.

Четвёртым китом 1950-х стал Лисп (LISt Processing language), разработанный специально для обслуживания искусственного интеллекта. Главной его особенность стала работа не с императивными данными, а с функциями. Для этого Джону Маккарти пришлось предусмотреть множество механизмов для нормальной работы: динамическую типизацию, автоматическое распределение памяти, сборщик мусора. В конечном счёте, именно Лисп стал прародителем таких языков, как Python и Ruby, а сам до сих пор активно применяется в ИИ.

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

Источник

Видео

Популярные языки программирования 1965 - 2019

Популярные языки программирования 1965 - 2019

5 САМЫХ ЛЁГКИХ языков программирования

5 САМЫХ ЛЁГКИХ языков программирования

Языки программирования

Языки программирования

Космический язык программирования из СССР

Космический язык программирования из СССР

История появления и развития программирования и ЭВМ

История появления и развития программирования и ЭВМ

История языков программирования

История языков программирования

История развития языков программирования

История развития языков программирования

Эзотерические языки программирования. Brainf*ck, Shakespeare, Malbolge и др.

Эзотерические языки программирования. Brainf*ck, Shakespeare, Malbolge и др.

Менее популярные языки программирования

Менее популярные языки программирования

История языков программирования

История языков программирования
Поделиться или сохранить к себе:
Добавить комментарий

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