Файл: "История возникновения и развития языка программирования Си (С++) и Java".pdf
Добавлен: 28.04.2023
Просмотров: 251
Скачиваний: 2
Введение.
В любом деле важна история. История позволяет нам не совершать ошибок, которые были в прошлом, история так же помогает найти ответы на вопросы, которые встают перед нами. История – это глобальный людской опыт, который помогает нам двигаться вперед. В связи с этим, история программирования – всегда актуальная тема, которую необходимо изучать. Изучить историю программирования – и есть цель моего исследования.
Языки C, C++, Java – это огромные три кита, на которых держится практически все современное программирование в различных областях.
Изучая данную тему, я поставил перед собой следующие задачи:
- Узнать, что же было до появления этих языков программирования.
- Рассмотреть историю появления, предпосылки для создания каждого из этих языков.
- Понять причину постоянного усовершенствования языков программирования, ведь они постоянно совершенствуются, выходят все новые и новые версии.
- Отследить связь между языками программирования С, С++, Java.
Для решения поставленных мною задач, я разделил изучение данной темы на 4 основные главы: краткий обзор общей истории программирования до появления языков C, C++, Java, историю появления и развития языка С, историю появления и развития языка С++ и историю появления и развития языка Java.
Глава 1. Краткий обзор общей истории языков программирования
На мой взгляд, история программирования начинается с Ады Лавлейс. Ада Лавлейс — графиня, единственная законнорожденная дочь поэта Джорджа Байрона, родилась в 1815 году, первая женщина-программист. С детства она изучала точные науки, благодаря стараниям ее матери.
Лавлейс обучали такие учителя, как общественный реформатор Уильям Френд (William Frend), семейный доктор Уильям Кинг (William King) и Мэри Сомервилль (Mary Somerville) — шотландский астроном и математик и первая женщина, которая стала членом Королевского астрономического общества (Royal Astronomical Society).[1]
Ада была первой дамой, которая разобралась в принципе работы логарифмической вычислительной машины Бэббиджа, спроектированной в 1835 году. Мало того, она сама предлагала идеи по ее совершенствованию, и сама придумывала различные задачи.
Её имя стало известным лишь спустя долгое время после ее смерти. До сих пор в большинстве специализированных учебников о ней не написано ни слова. Тем не менее, вклад Ады Лавлейс, урожденной Байрон, в развитие программирования можно по праву считать огромным. [2]
В юности судьба свела ее с известным профессором математики Чарльзом Бэббиджем, который изобрел знаменитую логарифмическую машину. Эта машина могла осуществлять вычисления с точностью до двадцатого знака. Именно логарифмическая машина Бэбиджа в последствии признана первым компьютером в мире.
Ада Лавлейс создала труд, состоящий из перевода на английский язык статьи, описывающей изобретение Бэббиджа, за что ее и считают первым в мире программистом. Она дополнила текст многочисленными комментариями, увеличив его объем более чем в три раза. В них говорилось о разработке плана операций для аналитической машины. Это и считается ныне первыми программированием. Ее «операции», по словам самой создательницы, наделяли вычислительную машину потрясающей способностью ткать алгебраические формулы, подобно станку Жаккарда, который создает из пряжи листья, цветы, узоры. [3]
Первые электронные компьютеры начали появляться с 1949 года. Каждый из них имел свой собственный язык программирования. Существовало взаимно однозначное соответствие между выражением алгоритма и командами конкретной машины. Ученые (пользователями чаще всего были ученые) писали математические формулы, а программа представляла собой список машинных инструкций. Первые примитивные списки состояли из десятичных или восьмеричных цифр, точно соответствовавших их представлению в машинной памяти. Позднее появились ассемблер и «автокоды», иначе говоря, люди разработали языки, в которых машинные команды и машинное оборудование (например, регистры) имели символические имена.[4] Так, программист мог написать LDRO123, чтобы загрузить содержимое ячейки памяти, расположенной по адресу 123, в нулевой регистр. Однако каждая машина по-прежнему имела собственный набор команд и собственный язык программирования. Ярким представителем разработчиков языков программирования того времени является, несомненно, Дэвид Уилер (David Wheeler) из компьютерной лаборатории Кембриджского университета. В 1948 году он написал первую реальную программу, которая была когда-либо выполнена на компьютере, хранившем программы в своей памяти (программа, вычислявшая таблицу квадратов). Он был одним из десяти людей, объявивших о создании первого компиллятора (для машинно-зависимого автокода). Он изобрел вызов функции. В 1951 году он написал блестящую статью о разработке библиотек, которая на двадцать лет опередила свое время. В соавторстве с Моррисом Уилксом (Maurice Wilkes) и Стенли Джиллом (Stanley Gill) он написал первую книгу о программировании. Он получил первую степень доктора философии в области компьютерных наук, а позднее внес большой вклад в развитие аппаратного обеспечения (кеш-архитектура и ранние локальные сети) и алгоритмов (например, алгоритм шифрования TEA). Дэвид Уилер стал научным руководителем докторской диссертации Бьярне Страуступа (Bjarne Stroustrup).[5]
Ниже приведена диаграмма важнейших первых языков программирования:
Рисунок 1. Диаграмма первых языков программирования
Важность этих языков частично объясняется тем, что они широко использовались (а в некоторых случаях используются и ныне), а частично тем, что они стали предшественниками важных современных языков, причем часто наследники имели те же имена. Три ранних языка – Fortran. COBOL и Lisp стали прародителями большинства современных языков программирования.[6]
Появление языка Fortran в 1956 году, вероятно, является наиболее значительным событием в истории языков программирования. Fortran – это сокращение от “Formula Translation”. Его основная идея заключалась в генерации эффективного машинного кода из текста, ориентированного на людей, а не на машины. Система обозначений, принятая в языке Fortran, напоминала систему, которой пользовались ученые и инженеры, решающие математические задачи, а не машинные команды (тогда лишь недавно появившихся) электронных компьютеров.
С современной точки зрения, язык Fortran можно рассматривать как первую попытку непосредственного представления предметной области в коде. Он позволял программистам выполнять операции линейной алгебры почти так же, как они описаны в учебниках. В языке Fortran есть массивы, циклы и стандартные математические формулы (использующие стандартные математические обозначения, такие как x+y, sin(x)). Язык содержал стандартную библиотеку математических функций, механизмы ввода-вывода, причем пользователь мог самостоятельно определять дополнительные функции и библиотеки.
Система обозначений была достаточно машинно-независимой, так что код на языке Fortran часто можно было переносить из одного компьютера в другой с минимальными изменениями. Это было огромное достижение в то время. По этим причинам язык Fortran считается первым высокоуровневым языком программирования.
Язык Fortran пользовался огромным успехом в области научиных и инженерных вычеслений, для которых он, собственно и предназначался. Основными версиями языка Fortran являются версии II, IV, 77, 90, 95 и 03.[7]
Первое определение и реализация языка Fortran были выполнены коллективом сотрудников компании IBM под руководством Джона Бэкуса (John Backus). И по сей день язык Fortran является лидером в области оптимизации математических вычеслений.[8]
В 1959-1960х годах был разработан язык COBOL (Common Business-Oriented Language – язык программирования для коммерческих и деловых задач).
Изначально этот язык был разработан комитетом CODASYL по инициативе Министерства обороны США и группы основных производителей компьютеров для выполнения вычеслений, связанных с деловыми и коммерческими задачами. Проект был основан на языке FLOW-MATIC, изобретенным Грейс Хоппер. Одним из ее вкладов в разработку языка было использование синтаксиса, близкого к синтаксису английского языка (в отличие от математических обозначений, принятых в языке Fortran).[9]
Основными версиями языка были 60, 61, 65, 68, 70, 80, 90 и 04.
В 1958 году Джон Маккарти (John McCarthy) разработал язык программирования Lisp для обработки связанных списков и символьной информации (этим объясняется его название: LISt Processing). Существуют десятки (а вероятнее всего, сотни) диалектов языка Lisp. Сейчас наиболее популярными диалектами являются Common Lisp и Scheme. Это семейство языков было и остается основой для исследований в области искусственного интеллекта (хотя поставляемые программные продукты часто написаны на языке С или С++). Одним из основных источников вдохновения для создателей языка Lisp было лямбда-вычисление (точнее, его математическое понятие). В то время, как языки Fortran и COBOL были разработаны специально для устранения реальных проблем в соответствующих предметных областях, разработчики языка Lisp больше интересовались собственно программированием и элегантностью программ. Язык lisp был первым языком, не зависящим от аппаратного обеспечения, причем его семантика имела математическую основу.[10]
«Алгометрический язык» (“ALGOrithmic Language”) – Algol, ставший результатом работы группы IFIP 2.1, открыл новые концепции современных языков программирования.
- Контекст лексического анализа.
- Использование грамматики для определения языка.
- Четкое разделение синтаксических и семантических правил.
- Четкое разделение определения языка и его реализации.
- Систематическое использование типов (статических, т.е. типов времени компиляции).
- Непосредственная поддержка структурного программирования.
Само понятие «язык программирования общего назначение» пришло вместе с языком Algol. До того времени языки предназначались для научных исчислений, деловых расчетов, обработки списков, моделирования и т.д.
Язык Algol60 так и не вышел за пределы академической среды. Многим он казался слишком странным (недостаточно гибким, быстрым, удобным и т.д.)
Тем не менее большинство современных языков обязаны своим существованием этому проекту.[11]
Генеалогическое древо языка Algol выглядит впечатляющим:
Рисунок 2. Генеалогическое древо Algol[12]
Языки Simula67 и Pascal являются предшественниками большинства современных языков.
Язык Algo68 был крупным и амбициозным проектом, но его реализация растянулась до бесконечности, и многие просто потеряли терпение и стали сомневаться в том, что из этого проекта получится что-то полезное. Один из членов комитета по языку, Никлаус Вирт (Niklaus Wirth), решил разработать и реализовать собственный язык, являющийся наследником языка Algol. Этот язык был назван Pascal, и он был упрощенным вариантом Algol60. Разработка языка Pascal была завершена в 1970 году, и в результате, он действительно оказался простым и довольно гибким. Вскоре он стал довольно популярным языком, который использовали для преподавания программирования, но составить конкуренцию языку Fortran он не смог.
Профессор Никлаус Вирт на протяжении двадцати пяти дет разработал следующие языки программирования: Algol W, Pl/350, Euler, Pascal, Modula, Modula-2, Oberon, Oberon-2, Lola (язык описания программного обеспечения). Никлаус Вирт описывал свою деятельность как бесконечный поиск простоты. Его работа оказала огромное влияние на программирование.[13]
В последствии оказалось, что язык Pascal недостаточно гибок и слишком прост для того, чтобы найти широкое промышленное применение. В 1980х годах Андерс Хейльсберг (Anders Hejlsberg) разработал язык Turbo Pascal, который воплотил гибкие механизмы передачи аргументов. Вот упрощенное генеалогическое древо семейства языков Pascal:[14]
Рисунок 3. Генеалогическое древо языков Pascal.
Язык программирования Ada предназначался для программных нужд Министерства обороны США. В его основу легли языки Pascal и Simula. Лидером групп разработчиков языка Ada был Жан Ишби (Jean Ichbiah), который ранее был председателем группы Simula Users Group. При разработке языка Ada основное внимание было уделено:
- Абстракции данных.
- Строгой проверке статистических типов.
- Непосредственной языковой поддержке параллелизма.
Целью проекта Ada было воплощение принципов разработки программного обеспечения. В силу этого Министерство обороны разрабатывало не язык, а сам процесс проектирования языка.[15] В 1979 году язык получил название в честь леди Аугусты Ады Лавлейс, о которой можно прочитать в начале данной главы.