Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История развития средств вычислительной техники (История языков программирования)

Содержание:

ВВЕДЕНИЕ

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

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

Объектом исследования данной курсовой работы являются языки программирования.

Предметом исследования – история возникновения и принципы создания языков программирования.

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

Задачи необходимые для решения данной цели:

1.Ознакомление с языками программирования

2.Рассмотрение истории развития языков программирования

3.Ознакомление с основными принципами и подходами при создании языка программирования

4.Рассмотрение классификации языков программирования

5.Обзор современных языков программирования

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

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

Во второй главе мы рассмотрим классификацию языков программирования, особенности, присущие разным видам языков, а также более подробно рассмотрим принципы создания языков программирования, которые относятся к каждому классу.

Данную проблему рассматривали Роберт У.Себеста в своей книге «Основные концепции языков программирования» и Кауфман В.Ш. в своей книге «Языки программирования. Концепции и принципы».

Первая книга стала бестселлером в США и посвящена всестороннему рассмотрению основных концепций языков программирования. Автор Роберт У.Себеста приводит фундаментальные понятия программирования на примере вопросов разработки различных языковых конструкций, подвергает критическому анализу реализацию в широком спектре следующих языов программирования: FORTRAN, PL/I, PASCAL, Ada, С, C++, Smalltalk, Java, LISP и Eiffel. Материал книги рассматривает все парадигмы программирования от функциональной до объектно-ориентированной.

Вторая книга рассматривает фундаментальные концепции и принципы, которые воплощены в современных и перспективных языках программирования. В ней рассмотрены разные стили программирования (функциональный, операционный, реляционный, ситуационный, объектно-ориентированный, параллельный). Базовые принципы и концепции рассмотрены с 5 различных позиций (математической, технологической, реализаторской авторской и семиотической) и проиллюстрированы примерами из следующих языков: Симула-67, Паскаль, Турбо Паскаль, Ада, Смолток, Оберон, Рефал, Оккам-2, Модула-2, С++ и других.

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

Новые подходы присутствуют при изложении известных фактов (пошаговая модификация нормальных алгоритмов Маркова сначала до Рефала, а потом до реляционных языков, сопоставление принципов "сундука" и "чемоданчика" при создании Ады, Оберона и Модулы-2, развитие концепции наследуемости от модульности до объектной ориентации, систематическое сопоставление концепции параллелизма в Оккаме-2 и Аде).

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

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

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

Все это привело к необходимости найти решение, позволяющее более просто наладить общение компьютера и человека. И оно было найдено: различные символические языки и соответствующие им трансляторы (системы программирования).[12]

1.1.Характеристика языков программирования

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

Язык низкого уровня представляет собой язык программирования, который предназначен для определенного типа компьютера и отражает его внутренний машинный код; языки низкого уровня очень часто называют машинно-ориентированными языками. Такие языки сложно конвертировать для использования на компьютерах с разными центральными процессорами, а также очень сложно изучать, так как для этого требуется отлично знать принципы внутренней работы компьютера.[12, 15]

Язык высокого уровня представляет собой язык программирования, который предназначен для удовлетворения требований программиста; такой язык не зависит от внутренних машинных кодов компьютера любого типа. Языки высокого уровня используют, чтобы решать проблемы и по этой причине их часто называют проблемно-ориентированными языками. Каждая команда такого языка эквивалентна нескольким командам в машинных кодах, поэтому программы, которые написаны на языках высокого уровня компактнее, чем аналогичные программы в машинных кодах.[16]

1.2.Начало истории программирования

С глубокой древности известны попытки создать устройства, которые ускоряли бы и облегчали бы процесс вычислений. Еще древние римляне и греки применяли приспособление, которое подобное счетам, - абак. В странах Дальнего Востока тоже были известны такие устройства. В XV века немецкие ученые Вильгельм Шиккард (1623 год - шести разрядный десятичный вычислитель, который состоял из зубчатых колес и для выполнения вычитания и сложения, а также табличного деления и умножения), Готфрид Лейбниц (1673 год - первая счетная машина, способная механически выполнять все 4 действия арифметики) создали механические вычислительные устройства, которые были предшественники всем известного арифмометра, в 1642 году, а французский ученый Блез Паскаль создал первую механическую счетную машину – арифмометр. Вычислительные машины в течение нескольких веков совершенствовались. Однако не использовались понятия "программирование" и "программа".[3, 12]

В начале XIX в. (1830 год) английский ученый Чарльз Бэббидж, профессор математики Кэмбриджского университета, при анализе результатов обработки переписи населения во Франции, исследовал теоретически процесс выполнения вычислений и обосновал основы архитектуры вычислительной машины. Ч.Бэббидж при работе над проектом аналитической машины, который назывался «Машины для исчисления разностей», предсказал достаточно много идей и принципов организации и работы современных ЭВМ, в частности он предсказал принцип программного управления и запоминаемой программы. Ч. Бэббидж и Аде Лавлейс (1815--1852 гг.) долгие годы плодотворно сотрудничали. В 1843 году Ада Лавлейс перевела статью Менабреа по лекциям Ч. Бэббиджа, в которой в виде подробных комментариев она (по объему комментарии были больше основного текста) сформулировала главные принципы программирования аналитической машины. Ада разработала первую программу (1843 год) для машины Ч.Бэббиджа и убедила его, что необходимо использовать двоичную систему счисления вместо десятичной, она также разработала принципы программирования, которые предусматривали при определенных условиях повторение одной и той же последовательности команд. Ада Лавлейс предложила такие термины, как "цикл" и "рабочая ячейка".[5]

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

В 1854 году была опубликована книга «Законы мышления» английского математика Джорджа Буля, в которой он развил алгебру высказываний, получившую название Булева алгебра. На ее основе в начале 80-х годов XIX века была построена теория релейно-контактных схем и конструирования сложных дискретных автоматов. Булева алгебра оказала многогранное влияние на развитие вычислительной техники, она являлась инструментом разработки и анализа сложных схем, а также инструментом оптимизации огромного числа логических элементов, из многих тысяч которых состоит современная ЭВМ.[5]

Идеи Ч. Бэббиджа позже реализовал американский ученый Г. Холлерит, обработавший с помощью построенной счетно-аналитической машины и перфокарт за 3 года результаты переписи населения в США по состоянию на 1890 год. В машине впервые было использовано электричество. В 1896 году Г.Холлерит основал фирму по выпуску перфокарт и вычислительных перфорационных машин.[12, 20]

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

На рисунке 1 кратко для наглядности представлена история развития языков программирования. Далее мы рассматриваем ее более подробно.

169666_html_m447ac83f.png

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

В 40-х годах XX века механическая элементная база вычислительных машин стала заменяться электрическими и электронными устройствами. Первые электромеханические машины были созданы в Германии К. Цузе (Ц-3, 1941год) и в США под руководством профессора Гарвардского университета Г. Айкена (МАРК-1, 1944 год). Первая электронная машина была создана в США группой инженеров под руководством доктора Пенсильванского университета Дж. Мочли и аспиранта Дж. Экксрта (ЭНИАК -- электронный числовой интегратор и калькулятор, 1946 год). В 1949 году в Англии была построена EDSAC -- это первая машина, которая обладала автоматическим программным управлением, внутренним запоминающим устройством и остальными необходимыми компонентами современных ЭВМ.[6, 20]

Логические схемы вычислительных машин были разработаны в конце 1940-х годах Дж. фон Нейманом, Г. Гольдстайном и А. В. Берксом. Американский математик Джон фон Нейман внес особый вклад в эту работу. Он принимал участие в создании ЭНИАК. Дж. фон Нейманом предложил идею хранения команд управления и данных в машинной памяти, а также сформулировал основные принципы построения современных ЭВМ. ЭВМ с хранимой программой оказались более гибкими и быстродействующими, чем ранее созданные.

В 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).

http://www.studfiles.ru/html/1611/166/html_kGQttx941F.bA3q/htmlconvd-GDKVny_html_m5316dd25.jpg

Рисунок 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]

Паскаль (Pascal) - это один из самых популярных процедурных языков программирования, особенно для персональных компьютеров (ПК). Он был создан как учебный язык программирования в 1968—1971 годах Никлаусом Виртом в Высшей технической школе в Цюрихе (Швейцария), и получил название в честь французского философа и математика Блеза Паскаля (1623—1662 года). Цель работы Никлауса Вирта была создать язык, который

• допускал перевод программ в машинный код простым;

• имел простой синтаксис;

• компилятором строился бы на небольшом количестве базовых понятий.

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

• Структурное программирование. Его суть - оформлять последовательность команд как замкнутых процедур или функций и в объединении данных, которые связаны по смыслу, в сложные структуры данных. Из-за этого наглядность текста выше и его отладка проще.

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

Базой разработки языка Паскаль является Алгол-60, но в нем ужесточены некоторые требования к структуре программы и есть возможности, которые позволяют успешно применять его для создания крупных проектов, к примеру, программ-трансляторов. Pascal реализован для всех типов компьютеров, сейчас используется во многих учебных заведениях для обучения программированию, а также для создания больших реальных проектов.[1, 11]

Период с конца 60-х до начала 80-х годов ХIХ века характеризуется быстрым ростом числа различных языков программирования, которые сопровождали, как это ни парадоксально, кризис программного обеспечения. Этот кризис очень остро переживало военное ведомство США. В январе 1975 года Пентагон решил навести порядок среди бесчисленного множества трансляторов и создал комитет для разработки 1-ого универсального языка. Комитет рассмотрел на конкурсной основе множество проектов и выяснил, что ни один из существующих языков не удовлетворяет их требованиям, для окончательного рассмотрения было оставлено 2 проекта. В мае 1979 году был объявлен победитель – группа ученых во главе с Жаном Ихбиа. Победивший язык назвали АДА, в честь Ады Лавлейс, дочери великого поэта Байрона. Она в юности была увлечена идеями Чарльза Бэббиджа и помогала ему составлять описание машины, а в начале 40-х годов ХIХ века разработала первую в мире программу для вычислительной машины. Язык АДА является прямым наследником Паскаля. Язык АДА предназначен, чтобы создавать и длительное время сопровождать большие программные системы, управлять процессами в реальном масштабе времени. В этом языке четко выражена модульность его конструкций, вместе с этим обеспечивается удобство организации разнообразных связей между модулями. Существенное его достоинство заключается в возможности параллельного программирования ветвей программы, которые потом могут реализоваться на многопроцессорных компьютерах. Язык АДА очень сложен для изучения.[9]

Язык программирования С (Си) был разработан в начале 70-х годов в лаборатории Bell для реализации операционной системы UNIX и изначально не рассматривался как массовый. Он предназначался для замены Ассемблера для того, чтобы существовала возможность создавать такие же эффективные и компактные программы, и одновременно быть независимым от конкретного типа процессора. В Си присутствуют достоинства современных высокоуровневых языков в части управляющих конструкций, а также структур данных с возможностями прямого доступа к аппаратным средствам компьютера. Синтаксис языка Си обеспечивает краткость программы, его компиляторы генерируют эффективный объектный код. Самая существенная особенность Си заключается в том, что различия между операторами и выражениями нивелируются, это приближает его к функциональным языкам. К примеру, выражение может иметь побочный эффект присваивания, а также может использоваться как оператор. Нет четкого различия между функциями и процедурами, кроме того, понятие процедуры вообще не вводится. Синтаксис языка затрудняет программирование и восприятие составленных программ. В нем нет строгой типизации данных, что дает дополнительные возможности программисту, но никаким образом не способствует созданию надежных программ. Язык Си имеет большую популярность среди прикладных и системных программистов. В данный момент этот язык реализован для большинства компьютерных платформ.[15]

2.2.Функциональное программирование

А.П. Ершов определил суть функционального (или аппликативного) программирования, как «способ составления программ, в которых есть одно действие - вызов функции, единственный способ расчленения программы на части - это введение имени функции, а единственное правило композиции – это оператор суперпозиции функций. Нет ячеек памяти, нет операторов присваивания, нет циклов, и тем более, нет блок-схем и нет передачи управления».

Основа конструкцией в функциональных языках - это выражение. К выражениям относятся структурированные объекты, константы, функции, их тела и вызовы функций. Функциональный (аппликативный) язык программирования состоит из следующих элементов: [5, 20]

1)классов констант, ими могут манипулировать функции;

2)наборов базовых функций, их можно использовать без предварительного объявления;

3)правил построения новых функций из базовых;

4)правил формирования выражений на основе вызовов функций.

Программа является последовательностью описаний функций и выражений, которые нужно вычислить. Вычисление выражение осуществляется методом редукции, это означает, что выражение упрощается, пока есть возможность по следующим правилам: вызовы базовых функций заменяют соответствующими значениями; а вызовы не базовых функций заменяют их телами, в которых параметры заменены аргументами.[5]

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

Первый такой язык был Лисп (с англ. LISP, LIStProcessing – обработка списков), который создал в 1959 году Джон Маккарти. Лисп ориентирован на структуру данных в виде списка и с его помощью можно добиться эффективной обработки больших объемов текстовой информации. Существенной чертой языка является унификация структур данных и программных структур: все выражения записываются в форме списков.[17]

2.3.Логическое программирование

После создания языка искусственного интеллекта Пролог (с англ. PROLOG, ProgramminginLOGic – программирование в терминах логики), открылась новая область – реляционное или логическое программирование.

Главное понятие в логическом программировании - это отношение. Программа является совокупностью определений отношений между объектами и целью. Процесс выполнения программы определяется, как процесс общезначимости логической формулы, которая построена из программы по правилам, которые установлены семантикой используемого языка. Результат вычисления - это побочный продукт этого процесса. В логическом программировании необходимо лишь специфицировать факты, на которых основан алгоритм, а не определять последовательность шагов, требующих выполнения. Это свидетельствует о декларативности языка логического программирования. Логические программы не имеют большое быстродействие, потому что вычисления осуществляются методом проб и ошибок, и поиском с возвратами к предыдущим шагам.[15, 20]

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

2.4.Объектно-ориентированное программирование (ООП)

Родоначальником этого направления явился язык Смолток (Smalltalk), изначально предназначенный, чтобы реализовать функции машинной графики. В 1970 году началась работа над языком в исследовательской лаборатории XEROX (США), и закончилась в 1980 году окончательным вариантом интерпретатора Smalltalk-80. Этот язык особенный тем, что его синтаксис очень компактен и основывается только на понятии объекта. В Smalltalk отсутствуют данные или операторы, все, что входит в Smalltalk, является объектами, а объекты общаются друг с другом только с помощью сообщений. Сейчас компанией IBM активно развивается версия Visua lAgefor Smalltalk.[20]

Базой объектно-ориентированного программирования (ООП) является понятие объект (Рисунок 3). Сущность объекта можно выразить следующей формулой "объект = данные + процедуры". Каждый объект содержит некоторую структуру данных и доступные лишь ему процедуры (методы) обработки этих данных. Следуя этой методологии, можно создать свой собственный абстрактный тип и отобразить проблемную область в эту созданную абстракцию вместо традиционного ее отображения в предопределенные управляющие структуры и структуры данных языка программирования. Объединение данных и свойственных им процедур обработки в одном объекте называется инкапсуляцией и характерна ООП.[12]

class-object.png

Рисунок 3 – Принципы ООП

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

ООП является более естественным, потому что дает возможность выбрать уже имеющиеся или создать новые объекты и затем организовать взаимодействия между ними. Значит, если сравнивать объектно-ориентированные языки с процедурными, эти языки более высокого уровня.[5]

Создавая новые объекты их свойства можно наследовать от объектов-предков или добавлять. Наследование предполагает создание новых классов на базе уже существующих, что предоставляет классу-потомку возможность иметь (наследовать) все свойства класса-родителя. (Рисунок 4).

4108_html_m9b8a5ea.gif

Рисунок 4 – Виды иерархии классов

Во время работы с объектами допускается полиморфизм, который заключается в возможности использовать методы с одинаковыми именами, чтобы обрабатывать данные разных типов. Полиморфизм (от греч. «многоликость») гласит, что рожденные объекты обладают следующей информацией: они знают, какие методы они должны использовать в зависимости от того, в каком месте цепочки наследования они находятся. Другим базовым принципом ООП является модульность. Она означает, что объекты заключают в себе полностью все определения своих характеристик, никакие определения свойств и методов объекта не могут быть расположены вне его, это дает возможность свободно копировать и внедрять один объект в другие объекты.

К самым современным объектно-ориентированным языкам программирования относятся C++ и Java.[16]

Язык C++ был разработан в начале 80-х годов прошлого века Бьярном Страуструпом в лаборатории Bell корпорации AT&T. Он создал компактную компилирующую систему, в основе которой лежал язык С, дополненный элементами языков Simula-67, BCPL и Алгол-68. Более ранние версии языка назывались «С с классами». В июле 1983 года C++ первый раз был использован за пределами исследовательской группы автора, но в то время еще множество особенностей языка были не придуманы. К 1990 году была выпущена 3 версия языка C++, которая была стандартизирована американским государственным комитетом стандартов ANSI. Сотрудник корпорации Sun Д. Гослинг в 1990 году на основе расширения C++ разработал объектно-ориентированный язык Oak, главным достоинством этого языка было обеспечение сетевого взаимодействия различных по типу устройств. Новая версия языка, интегрируемая в Internet, стала называться Java. Java распространилась в Internet с января 1995 года.

По определению автора, Java является простым объектно-ориентированным и архитектурно-нейтральным языком интерпретирующего типа, который обеспечивает надежность, переносимость и безопасность, обладает высокой производительностью, динамичностью и много поточностью.[8, 20]

Синтаксис языков Java и C++ практически полностью похож. Принципиальным отличием является то, что язык C++ компилируется в машинный код, а язык Java— в платформо-независимый байт-код (каждая команда занимает 1 байт), этот байт-код может выполняться с помощью интерпретатора — виртуальной Java-машины (JavaVirtualMachine), версии которой созданы сегодня для всех платформ. С точки зрения возможностей объектно-ориентируемых средств, Java имеет преимущества перед C++. У язык Java более мощная и гибкая система инкапсуляции информации. Механизм наследования, который реализован в Java, обязывает к более строгому подходу к программированию, а это способствует читабельности кода и надежности. Язык C++ обладает сложной и трудной для понимания системой наследования. Возможности динамического связывания объектов одинаково хорошо представлены в обоих языках, но синтаксическая избыточность C++ и здесь принуждает к выбору языка Java. В настоящее время Java по популярности занимает 2е место в мире после Бейсика.

Идеи ООП проникли во многие процедурные языки. Например в состав интегрированной системы программирования Паскаль (корпорации Borland International), начиная с версии 5.5, входит специальная библиотека ООП TurboVision.[1, 4]

С середины 90-х годов прошлого века многие объектно-ориентированные языки реализуются как системы визуального программирования. Данные системы имеют интерфейс, который позволяет видеть при составлении текста, программы для каких графических объектов она пишется. Отличительной особенностью подобных систем является то, что в них имеется среда разработки программ из уже готовых так называемых «строительных блоков», которые позволяют создавать в диалоговом режиме интерфейсную часть программного продукта, почти без написания программных операций. Такая система берет на себя очень большую часть работы по управлению компьютером, и появляется возможность в простых случаях обойтись без особых знаний о том, как она работает. Система сама пишет большую часть текста программы: заголовки процедур, описания объектов и многое другое. Программисту нужно только вписать необходимые строчки, которые определяют индивидуальное поведение программы, которое система не может предугадать. Но даже в подобных случаях система сама может сама указать место для размещения этих строк. К объектно-ориентированным системам визуального проектирования относятся: Delphi, VisualBasic, VisualC++, C++Builder. Данные системы являются системами программирования самого высокого уровня.[2, 14]

VBA (VisualBasic for Application) - это общая языковая платформа для приложений Microsoft Office (Excel, Word, PowerPoint и других).VBA оставил основной синтаксис и правила программирования языков Бейсик-диалектов. Язык VBA может помочь расширить возможности приложений путем написания макросов – программ, которые предназначены для автоматизации выполнения очень многих операций. При помощи языка VBA возможно создавать объекты управления графического интерфейса пользователя, задавать и/или изменять свойства объектов, подключать к ним нужный для конкретного случая программный код. Также с помощью языка VBA можно организовывать интеграцию между различными программными продуктами. Программы создаются на языке VBA для приложений 2 способами: путем написания программного кода или в автоматическом режиме как результат построения клавишной макрокоманды.[3, 16]

2.5.Языки программирования баз данных

Отличие этих языков от алгоритмических прежде всего их функциональное назначение. Работая с базами данных (БД) чаще всего выполняются следующие операции: создание, удаление, преобразование таблиц в БД; отбор, поиск, сортировка по запросам пользователя; добавление новых записей в таблицы или модификация записей, которые уже существуют; удаление записей и другое (Рисунок 5). Для обработки больших массивов информации и выборки записей по определенным признакам был создан структурированный язык запросов SQL(с англ. Structured Query Language– язык структурированных запросов). SQL был в начале 70-х годов прошлого века создан фирмой IBM, назывался Structured English Query Language (SEQUEL) и использовался для управления прототипом реляционной базы данных IBM–SystemR. Позже SQL стал стандартом языка работы с реляционными базами данных.[15, 20]

aHR0cDovL3Bhc3RleGVuLmNvbS9pL1FmNVJKdkE2bmYucG5n.png

Рисунок 5 – Обработка данных в СУБД

Практически в каждой СУБД есть свой универсальный язык, который ориентирован на ее особенности. В настоящее время в мире ведущими производителями СУБД являются: Oracle, Microsoft (SQLServer), SoftwareAG(Adabas), IBM(DB2), Sybase и Informix. Их продукты используются для совместной параллельной работы тысяч пользователей в сети, а базы данных имеют возможность храниться в распределенном виде на нескольких серверах.[16]

2.6.Языки программирования для компьютерных сетей

Появление и дальнейшее активное развитие компьютерных сетей является причиной создания большого числа версий популярных языков программирования, которые адаптированы для использования в сети. Отличительной особенностью, которая присуща сетевым языкам, является то, что эти языки интерпретируемыми. Распространяются интерпретаторы бесплатно, а сами программы распространяются в исходных текстах. Эти языки стали называться скрипт-языками.[9, 20]

HTML (HyperTextMarkupLanguage) является универсальным языком разметки гипертекста, который используется для подготовки Web-документов для сети Internet. Он является набором элементарных команд предназначенных для форматирования текста, задания цвета и шрифтов, добавления графических объектов (или рисунков), организации таблиц и ссылок. Браузер, в соответствии с командами HTML, отображает содержимое документа, а команды языка не отображаются. В основе языка HTML лежит механизм гипертекстовых ссылок, который обеспечивает связь документов между собой. В HTML текст кодируется в ASCII и по этой причине в любом текстовом редакторе возможно создать и отредактировать текст. Все Web-страницы написаны на HTML или используют его расширение.

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

В 1994 году был создан язык VRML для организации виртуальных 3-хмерных интерфейсов в Интернете. VRML ориентирован на описание разнообразных 3-хмерных образов, светотеневого освещения в текстовом виде и позволяет создавать различные сценарии миров, путешествовать по ним, «облетать» с разных сторон, управлять освещенностью, масштабировать, вращаться в любых направлениях и многое другое.[9]

ЗАКЛЮЧЕНИЕ

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

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

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

В данной курсовой работе описываются все важнейшие этапы истории зыков программирования.

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. – М.:Наука, 1987. – 112 с.

2.Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: "ДМК", 2000. - 416 с.

3.Епанешников А. М., Епанешников В. А. Программирование в среде Turbo Pascal 7.0.- 1995.-278с.

4.Зуев Е.А. Turbo Pascal. Практическое программирование. - Приор,1997. - 336с.

5.Йенсен К., Вирт Н. Руководство для пользователя и описание языка. – М.,1982. 151 с.

6.Кирнос В.Н. Информатика 10 – 11 класс: Кокшетау: «Кешелек»,2005. – 208с.

7.Лукин С.Н. TURBO PASCAL 7.0. Самоучитель для начинающих.- Диалог-МИФИ, 2005.-400с.

8.Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. -М.: Финансы и статистика, 1997. -768 с.

9.Малышев Р.А. Локальные вычислительные сети: Учебное пособие/ РГАТА. – Рыбинск, 2005. – 83с.

10.Немнюгин С., Перколаб Л. Изучаем Turbo Pascal.- Питер, 2007.- 320с.

11.Немнюгин С.А. Turbo Pascal (практикум): СПб.: «Питер», 2003. – 475с.

12.Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2000.-511с.

13.Павловская Т.А. Паскаль. Программирование на языке высокого уровня. - СПб: Питер, 2003.-393с.

14.Пильщиков В.Н. Сборник упражнений по языку Паскаль. – М.: Наука, 1989.– 160с.

15.Роберт В., Основные концепции языков программирования, 2001.- 672с.

16.Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. – 105с.

17.Симонович С.В.Информатика. Базовый курс/Симонович С.В. и др. - СПб.: издательство "Питер", 2000. - 640с.

18.Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - Нолидж, 1998. - 620 с.

19.Эллиот Б.К. Turbo Pascal = Turbo Pascal Web Update. — М.: Вильямс, 2005.-896с.

20.Википедия. Свободная энциклопедия. [Электронный ресурс] URL: ru.wikipedia.org (дата обращения 25.12.2015).)