Файл: История развития средств вычислительной техники (История языков программирования).pdf
Добавлен: 01.04.2023
Просмотров: 335
Скачиваний: 2
СОДЕРЖАНИЕ
1. История языков программирования
1.1.Характеристика языков программирования
1.2.Начало истории программирования
2. Классификация и обзор языков программирования
2.1.Процедурное программирование
2.2.Функциональное программирование
2.3.Логическое программирование
2.4.Объектно-ориентированное программирование (ООП)
2.5.Языки программирования баз данных
В 1951 году в США было запущено первое серийное производство электронных машин УНИВАК (универсальная автоматическая вычислительная машина). В это же время фирма IBM начала серийный выпуск машины IBM/701.
В СССР первыми авторами ЭВМ, которая изобретена в декабре 1948 года, являются И. С. Брук и Б. И. Рамеев. А первая советская ЭВМ с сохраняющейся программой создана в 1951 году под руководством С. А Лебедева (МЭСМ - малая электронная счетная машина). В 1953 году в Советском Союзе начался серийный выпуск машин, первыми их которых были БЭСМ-1, «Стрела».[5, 8]
С появлением цифровых программно-управляемых машин родилась новая область прикладной математики - программирование. Как область науки и профессия она возникла в 50-х годах XX века. Изначально программы составлялись вручную на машинных языках (в машинных кодах). Программы были громоздки, а их отладка была очень трудоемка. Чтобы упростить приемы и методы составления и отладки программ были созданы мнемокоды, которые по структуре близки к машинному языку и используют символьную адресацию. Ассемблеры переводили программу, которая была записана в мнемокоде, на машинный язык. Позднее были созданы автокоды, которые возможно применять на различных машинах, и которые позволяли обмениваться программами. Автокод представляет собой набор псевдокоманд для решения специализированных задач, например инженерных или научных. Для таких задач имеется достаточно развитая библиотека стандартных программ.
До конца 1950-х годов основным элементом конструкции в ЭВМ были электронные лампы (1-ое поколение). В данный период развитие идеологии и техники программирования происходило за счет достижений американских ученых Джона фон Неймана, который сформулировал основные принципы построения ЭВМ, и Джона Бэкуса, под руководством которого в 1954 году был создан Fortran (Formula Translation), являющийся первым языком программирования высокого уровня, который используется и сейчас в разных модификациях. Так, в 1965 году в Дартмутском колледже Джоном Кэмэни и Томасом Куртцем была разработана упрощенная версия Фортрана, получившая название Basic. В 1966 году комиссия при Американской ассоциации стандартов (ASA) разработала 2 стандарта языка: Базисный Фортран и Фортран. Используются также дальнейшие модификации языка (например 1970 и 1990 годов).[5, 20]
Достижения в области электроники и микроэлектроники позволили заменить элементную базу ЭВМ на более совершенную. Так в конце 1950-х годов громоздкие электронные лампы заменили полупроводниками (миниатюрными транзисторами). Появились ЭВМ второго поколения; потом примерно через 10 лет появились ЭВМ третьего поколения на интегральных схемах; затем еще через 10 лет появились ЭВМ четвертого поколения на больших интегральных схемах (БИС). В 1990-х в Японии годах реализованы проекты ЭВМ пятого поколения, в которых использовались достижения в области биоэлектроники и искусственного интеллекта. Если объем оперативного запоминающего устройства (ОЗУ) одной из лучших отечественных машин 1960-х годов М-20, которая была создана под руководством С.А.Лебедева в 1958 году, составлял 4096 слов (или 8 Кбайт) и быстродействие 20 тысяч операций в секунду, то современные персональные компьютеры (ПК) имеют ОЗУ в десятки Мбайт и быстродействием в сотни миллионов операций в секунду, что позволяет решать очень сложные задачи.
Рассмотрим далее кратко историю возникновения языков программирования.
В 1953 году А.А.Ляпуновым был предложен новый операторный метод программирования, заключавшийся в автоматизации программирования, а алгоритм решения задачи представлял собой совокупность операторов, которые образовывали логическую схему задачи. Такие схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. Чтобы проверить идеи операторного метода в 1954 в СССР году была разработана первая программирующая программа ПП-1, а в 1955 году более совершенная - ПП-2. В 1956 году разработана ПП БЭСМ, в 1957 году - ППСВ, в 1958 году - для машины «Стрела».[15]
В 1954 в США году стал применяться алгебраический подход, который, по существу, совпадал, с операторным методом. В 1956 году корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704.
В этот период с накоплением опыта и теоретическим осмыслением совершенствовались языки программирования. В Европе в 1958-1960 годах был создан ALGOL, породивший целую серию алголоподобных языков: Algol W, (1967 год), Algol 68, Pascal (Никлаус Вирт, 1970 год), С (Деннис Ритчи и Брайан Керниган, 1972 год), Ada (под руководством Жан Ишбиа, 1979 год), C++ (1983 год). [7, 10]
В 1961-1962 годах в Массачусетском технологическом институте Джон Маккарти создал язык функционального программирования Lisp, который открыл в программировании одно из альтернативных направлений, предложенных Джоном фон Нейманом.
На начало 1970-х годов существовало около 300 трансляторов для автоматизации программирования и более 700 языков высокого уровня.
В 1972 году Деннисом Ричи создан язык С и Юникс. Также в 1972 году Ален Колмеро изобретает логический язык Пролог. Задачей ученого было наделить компьютер интеллектом 2-хлетнего ребенка. Он полностью справился с задачей, написав программу, которая отвечала «Нет!» на любой запрос. В 1973 году Робин Милнер пишет МЛ, язык на основе теории типов M&M. МЛ порождает СМЛ, который обладал формально описанной семантикой. Такие языки как Visual Basic, F# и OCaml входят в число языков семейства МЛ. В 1980 году Алан Кей написал Smalltalk и придумал термин «объектно-ориентированный». На вопрос объяснить, что это означает, он отвечал, что «Программы в ООП — просто объекты». А на вопрос, из чего состоят объекты, он отвечал «из объектов» и объяснял «все состоит из объектов, в том числе и объекты. И стоит на четырех слонах.» Язык С не устраивал Бьёрна Страуструпа и он начал свою работу над «Си» дополнив его классами. Изначально название было «Си с классами» (С with classes). Язык подвергся В 1983 году достаточно значительным изменениям и стал называться С++. Такое название придумал Рик Мэсчитти. Термин С++ является оператором инкремента в С, который показывает на то, что язык С++, это нечто больше, чем просто «Си». Бьёрн Страуструп придумал свой язык таким образом, чтобы он не компилировался в машинный язык, а препроцессировался в С, что открывало к нему доступ сотням тысяч пользователей С, которые имели соответствующий компилятор. В 1986 году Брэд Кокс и Том Лав придумали Objective-C. Они говорили, что он «сочетает безопасность С и невероятную скоростью Smalltalk». В 1987 году американский программист Ларри Уолл создал язык программирования Perl с целью автоматизации рутинных действий по администрированию ОС Unix. В будущем язык приобрел известность и круг задач, решаемых на нем, существенно расширился. Сейчас Perl в основном используется в web-программировании при создании систем управления контентом и разработки динамических сайтов. В 1990 году Комиссия в составе Пола Худака, Саймона Пейтон-Джонса, Эштона Катчера , Филиппа Водлера и Общества по защите прав животных спроектировали язык Хаскелл, который являлся чисто функциональным языком с ленивыми вычислениями. В 1991 году голландский программист Гвидо ван Россум создает язык программирования Питон, который получил свое название в честь комедийного сериала. В 1995 году Брендан Эйк создал язык программирования Livescript. Немного позже его переименовали в Javascript для того, чтобы использовать популярность языка Java. Затем язык переименовывают в ECMAscript. [15, 16]
Джеймс Гослинг в 1996 году придумал Яву. Ява представляет собой довольно многословный статически типизированный объектно-ориентированный язык на основе классов, со сборкой мусора, одиночной диспетчеризацией вызовов, одиночным наследованием реализации и множественным наследованием интерфейсов. Sun громко провозгласил Java самым инновационным языком. [16]
В 2001 году Андерс Хейлсберг придумал C#. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов неявного и явного приведения типа), атрибуты, делегаты, свойства, события, итераторы, обобщённые типы и методы, исключения, анонимные функции с поддержкой замыканий, LINQ и комментарии в формате XML.[16]
2. Классификация и обзор языков программирования
Современную классификацию языков программирования представим в виде следующей схемы (рисунок 2).
Рисунок 2 - Классификация языков программирования
2.1.Процедурное программирование
Процедурное или императивное (от лат. impemtivus – повелительный) программирование представляет собой отражение фон Неймановской архитектуры компьютера. На процедурном языке программа состоит из последовательности команд, которые определяют процедуру решения задачи. Главным является оператор присваивания, который предназначен, чтобы определять и изменять содержимое памяти компьютера. Концепция памяти как места хранения данных, значения которых можно изменять операторами программы, является фундаментальным в императивном программировании.
Выполнение программы заключается в последовательном выполнении операторов, чтобы преобразовать исходное состояние памяти, то есть программа последовательно обновляет содержимое памяти, изменяет его от исходного до результирующего состояния.[5]
Одним из первых процедурных языков программирования высокого уровня был Фортран (FORmulaTRANslation), который был создан в начале 50-х годов ХIХ века в США фирмой IBM. Самая первая публикация о Фортране появилась в 1954 году. Основным назначением языка является программирование научно-технических задач. Объектами языка являются вещественные и целые числа, а также числовые переменные. Выражения в языке Форт формируются с помощью 4 арифметических действий: логических операций И, ИЛИ, НЕ, возведения в степень, операций отношения и круглых скобок. Основные операторы Фортрана – ввод, вывод, условный и безусловный цикл, переход, присваивание и вызов подпрограмм. Довольно долго он был практически самым распространенным языком в мире. За все это время накоплена огромная библиотека программ, которые написаны на Фортране. И сейчас идут работы над очередным стандартом Фортрана. Многие средства Фортрана использованы в языках Бейсик и PL-1. [12]
Кобол (COmmon Business Oriented Language – общепринятый деловой язык) — язык программирования, которые ориентирован на решение задач обработки данных. Кобол широко используется, чтобы решать учетно-экономические и управленческие задач. Он разработан в США в 1958—1960 годах. Программа на Коболе имеет вид последовательных предложений на английском языке и похожа на обычный текст. Группы операторов, которые записаны последовательно, объединяются в предложения, потом предложения объединяются в параграфы, параграфы объединяются в секции. Программист присваивает секциям и параграфам имена (метки) для облегчения непосредственного обращения к нужному участку программы. В СССР был принят русский вариант языка. В Коболе были реализованы мощные средства работы с большими объемами данных, которые хранятся на различных внешних носителях. На Коболе создано множество приложений, и некоторые из них активно используются и сейчас. Достаточно отметить, что одна из высокооплачиваемых категорией граждан в США это программисты на Коболе.[13]
Алгол (AZGOrithmicLanguage) разрабатывался в 1960 году группой зарубежных специалистов, он является результатом международного сотрудничества конца 50-х годов ХIХ века (Алгол-60). Алгол был предназначен для записи алгоритмов, которые построены в виде последовательности процедур, которые применяются для решения поставленных задач. Специалисты-практики неоднозначно воспринимали этот язык, но, не смотря на это, он был признанным международным языком и сыграл большую роль в становлении базовых понятий программирования и использовался для обучения программистов. В нем первый раз введены такие понятия как "динамическое распределение памяти" и "блочная структура программы". В Алголе внутри блока есть возможность вводить локальные обозначения, не зависящие от остальной части программы. И хотя этот язык имел интернациональное происхождение, он не получил такого распространение, как Фортран. К примеру, не на всех зарубежных ЭВМ были трансляторы с Алгола-60. В 1968 году в результате дальнейшего развития и усовершенствования Алгола-60 создали новую версию Алгол-68. Она являлась многоцелевым универсальным расширенным языком программирования. Последнее свойство давало возможность с помощью одной и той же программы транслятора производить трансляцию с разных расширенных версий языка без каких-либо дополнительных затрат для приспособления этого языка к разным категориям пользователей, для получения проблемно-ориентированных диалектов языка. Возможности языка Алгол-68 и сейчас опережает некоторые языки программирования, но по причине отсутствия для него эффективных компьютеров не было возможности своевременно создать хорошие компиляторы. В нашей стране в то время под руководством академика Андрея Петровича Ершова был создан транслятор Альфа, представляющий достаточно удачную русифицированную версию Алгола.
В середине 60-х годов ХIХ века сотрудники математического факультета Дартмутского колледжа Джон Кемени и Томас Курц создали специализированный язык программирования, состоявший из простых английских слов. Новый язык получил название универсального символического кода для начинающих (Beginners All-purpose Symbolic Instruction Code) или сокращенно BASIC (Бейсик). Принято считать годом рождения этого языка 1964 год. Бейсик получил широчайшее распространение при работе на персональных компьютерах (ПК) в режиме интерактивного диалога. Популярность Бейсика можно объяснить как простотой его освоения, так и наличием достаточно мощных универсальных средств, которые пригодны для решения научных, экономических и технических задач, а также игровых задачи, задач бытового характера и так далее. Согласно концепциям, которые заложены в Бейсике, в данном языке широко распространены разные правила умолчания, что считается довольно плохим тоном в большинстве языков программирования подобного типа. Появилось множество версий языка, очень часто практически не совместимых друг с другом. Однако если знать одну из версий, можно освоить с легкостью любую другую. BASIC активно берет многие концепции и новинки из других языков. Изначально интерактивный режим функционировал с использованием интерпретатора, а сейчас для этого языка есть компиляторы.[13, 15]
В начале 60-х годов ХIХ века каждый существующий язык программирования ориентировался на разные классы задач, и был привязан к конкретной архитектуре ЭВМ. Этот недостаток пытались преодолеть через создание универсального языка программирования. Язык ПЛ/1 (PL/1 – ProgrammingLanguageOne) представлял собой первый многоцелевой универсальный язык, который разработан в 1963—1966 годах в США фирмой IBM . Это один из самых распространенных универсальных языков, хорошо приспособленный для решения задач в области вычислительной техники: исследовать и планировать вычислительные процессы, моделировать, решать логические задачи и исследовать логические схемы, разрабатывать системы математического обеспечения. При разработке PL/1 были широко использованы основные средства и понятия следующих языков: Кобол, Алгол-60, Фортран. PL/1 является богатым и гибким языком, предоставляет возможность делать вставки и исправлять текст программы в процессе ее отладки. Данный язык получил достаточно широкое распространение, трансляторы с него имеются для многих типов компьютеров. Компания IBM даже и в наше время продолжает поддерживать этот язык. [17]