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

Обзор языков программирования высокого уровня (Теоретические основы и история появления первых языков программирования высокого уровня)

Содержание:

Введение

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

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

  1. Показать процесс развития языков программирования высокого уровня.
  2. Изучить действующие языки программирования, для решения каких задач они применяются.

Для выполнения поставленной цели, были выбраны качественные источники литературы. Многие из них являются фундаментальными работами, описывающими подробный или обобщенный опыт взаимодействия человека и ЭВМ. Надежность источников подтверждена использованием данной литературы многими высшими учебными учреждениями Российской Федерации. Их авторы, изучали компьютерную науку продолжительную часть своей жизни. Выбран сайт www.Tiobe.com, как показатель популярности и доверия к нему сообщества программистов, он используется только для основы второй главы. Также используются только официальные сайты языков программирования, которым доверяет сообщество разработчиков, что сводит к минимуму количество недостоверной информации.

Глава 1. Теоретические основы и история появления первых языков программирования высокого уровня

1.1 Теоретические основы

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

Под языками программирования низкого уровня принято понимать машинные коды и языки символьного кодирования. Характерной чертой здесь является привязка к конкретной архитектуре вычислительной машины, то есть машино-зависимость. Машинно-независимые языки ориентированы на систему операндов, характерных для записи определенных алгоритмов. Если язык программирования близок к естественному языку, то он называется языком высокого уровня, если ближе к машинным командам — языком низкого уровня.

Для перевода программы на машинно-независимом языке в машинный код были придуманы специальные программы называемые трансляторами. Наиболее популярные виды трансляторов[[1]]:

- интерпретаторы;

- компиляторы;

Интерпретатор производит пооператорную обработку и выполнение исходного кода программы.

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

Важнейшая черта языка программирования высокого уровня – это использование абстракции[[2]], то есть представление смысловых конструкций, которые описывают структуры данных и операции над ними. Но при этом язык имеет строгий алфавит, синтаксис и семантику.

Алфавит – фиксированный набор символов, для составления программы на данном языке;

Синтаксис – свод правил, которые определяют конструкции языка, соответственно из букв алфавита;

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

Языки программирования высокого уровня условно разделяются на несколько парадигм[[3]]: императивную, декларативную, объектно-ориентированную. Но на самом деле их существует большее количество.

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

- именованных переменных;

- оператора присваивания;

- составных выражений;

- подпрограмм.

Императивное программирование подразделяется как бы на несколько подходов: структурное, процедурное и модульное программирование.

При структурном программа представляется в виде иерархической структуры блоков. Имеется управляющая структура (конструкции) в виде последовательности, ветвления и цикла. Управляющие конструкции и блоки могут быть вложены друг в друга.

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

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

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

Функциональный принцип[[6]] основан на математическом понятии функции. Здесь предполагается вычисление результатов функции от исходных данных и результатов других функций, но при этом состояние программы не хранится.

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

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

Ключевые принципы ООП:

- инкапсуляция;

- наследование;

- полиморфизм;

Инкапсуляция – это когда структуры данных и подпрограммы для работы с этими данными объединены в классы.

Наследование – возможность описать новый класс на основе уже написанного родительского класса.

Полиморфизм – позволяет определять, для какого объекта класса была вызвана функция.

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

1.2 Первые языки программирования высокого уровня

Первым в мире языком программирования высокого уровня считается появление языка Plankalkül[[8]] (по-русски произносится «планкалкюль», приблизительно означает «планирующее исчисление»). Его изобрел немецкий инженер Конрад Цузе в сороковых годах XX века. Язык разрабатывался как средство программирования электромеханического компьютера Z4. Особенностью языка Plankalkül являлась двумерная запись программы, что может считаться признаком его более высокого уровня. Цузе использовал двумерную запись в которой первой строкой записывалось само выражение, затем некоторые его аргументы, вводился тип переменной и индексы. В языке использовались условные конструкции, два вида циклов, наподобие while и for,также присутствовали массивы. К сожалению, данный язык так и остался в теории на долгие годы из за невозможности сделать к нему компилятор.

Пример программы сортировки на языке Plankalkül

P6 sort (V0[:6.8.0]) => R0[:6.8.0]

W1[0](4)[

V0[i0:8.0] => Z0[i0:8.0]

1 => Z4[:32.0]

W1[1](i0)

[

(V0[i0:8.0] < Z0[i1:8.0]) & (Z4[:32.0]=1) →

[

i0-i1 => Z1[:32.0]

W1[2](Z1[:32.0])

[

i0 — i2 — 1 => Z3[:32.0]

i0 — i2 => Z2[:32.0]

Z0[Z3[:32.0]:8.0] => Z0[Z2[:32.0]:8.0]

]

V0[i0:8.0] => Z0[i1:8.0]

0 => Z4[:32.0]

]

]

]

END

Теоретические разработки Цузе в области создания компилятора, для перевода языка программирования в машинный код, так и оставались нереализованными до 1975 года.

Время шло. Во всем мире предпринимались попытки облегчить работу при создании программ. В 1954 - 1957 годах укрепилась идея замены ячеек памяти и групп машинных инструкций абстрактными переменными. То есть, произошло абстрагирование от системы команд определенного вычислительного устройства и особенностей архитектуры аппаратных средств. Созданный транслятор заменял имена переменных и вызовы подпрограмм на соответствующие адреса ячеек памяти при переводе программы в машинный код. Эта идея была отлично реализована в языке программирования Фортран[[9]]. Он был создан группой программистов под руководством Джона Бэкуса в корпорации IBM. Принято считать, что именно он является первым реализованным языком программирования высокого уровня. Благодаря большому количеству математических библиотек, Фортран отлично подходит для инженерных и научных вычислений, и используется в наше время. Fortran имеет достаточно большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности. Выразительные средства языка изначально были весьма бедны, поскольку Fortran был одним из первых языков высокого уровня. В дальнейшем были добавлены многие лексические конструкции, характерные для структурного, функционального и даже объектно-ориентированного программирования.

Пример кода на языке Fortran[1. c.5]

program p1 ! p1 - имя программы

real x, y, z ! Объявляем 3 переменные вещественного типа

x = 1.1 ! Присваиваем переменным x и y значения

y = 2.2

z = x + y ! Присваиваем z результат сложения x и y

print *, 'z = ', z ! Вывод результата на экран

! Результат вывода: z = 3.300000

end program p1 ! END - обязательный оператор завершения программы

Приведенная программа называется главной. Она построена по схеме, в которой сначала следует объявление типов используемых переменных, затем операторы, выполняющие над объявленными переменными некоторые действия. Программа завершается оператором END, в котором имя программы p1и одновременно PROGRAM p1 могут быть опущены. Иными словами, программу можно завершить так: END PROGRAM или END. Программа имеет заголовок: PROGRAM имя - программы. Однако такой заголовок может быть опущен. В этом случае имя - программы не может присутствовать в операторе END. Имя - программы должно отличаться от используемых внутри главной программы имен.

В период 1960-1970х годов были разработаны основные парадигмы языков программирования, некоторые используются по настоящее время. Но начало истории языков программирования высокого уровня можно считать с языков Планкалкюль и Фортран.

1.3 Лисп

В шестидесятые годы, Джоном Маккартни из массачусетского технологического института, создается язык Lisp[[10]]. И достигает своего расцвета в эпоху ЛИСП – машин, то есть компьютеров, процессоры которых, были оптимизированы для выполнения ЛИСП – программ. Они были ориентированы на обработку списков. Операционная система, в свою очередь, тоже была написана на Лиспе, а операционная среда представляла расширение интерпретатора Лиспа. Все программы составлялись на нем же. Лисп преимущественно использовался в программировании искусственного интеллекта. Из-за активного развития и удешевления процессоров и микросхем памяти, от Лисп – машин отказались.

Пример кода на языке Лисп[[11]]

(DEFUN СУМНЕЧЕТ(ЧИСЛА)

(COND

((NULL ЧИСЛА) 0)

((ODD (CAR ЧИСЛА)) (+ (CAR ЧИСЛА)(СУМНЕЧЕТ(CDR ЧИСЛА))))

(T (СУМНЕЧЕТ (CDR ЧИСЛА))))))

1.4 Алгол

Следующим языком программирования высокого уровня, стал Алгол[[12]]. Он был разработан в Швейцарии в шестидесятых годах, при участии нескольких стран. Впоследствии, он много дорабатывался и в 1960 году, на пике популярности был обновленный Алгол60. Этот язык был довольно стройный, имел более-менее точное описание синтаксиса, блочная структура, в нём были некоторые новые интересные языковые черты (прежде всего, - рекурсия, чего не было в Фортране).

В тоже время в нем присутствовала масса недостатков, как технических так и языковых. С 1960-1968 год, язык много дорабатывался.

Очень интересно описан опыт работы в СССР с этим языком, Тереховым Андреем Николаевичем – доктором физико-математических наук.

В СССР первую информацию о работах по Алголу 68 привез член РГ 2.1, будущий академик, а тогда еще член-корреспондент АН СССР – Андрей Петрович Ершов из Академгородка (Новосибирск). Через него эта информация распространилась по стране, в том числе её получил мой научный руководитель доктор физ - мат наук Григорий Самуилович Цейтин, который в то время руководил лабораторией математической лингвистики НИИММ ЛГУ. Он принял активное участие в обсуждение языка, писал весьма дельные замечания авторам и удостоился благодарности в предисловии к публикации по Алголу 68. Понятно, что язык с новыми выразительными возможностями, с новым способом описания синтаксиса и семантики вызвал большой интерес среди программирующей общественности, стали формироваться группы, готовящиеся к его реализации. В первые годы, правда собственно до реализации дело не доходило. Например, группа математиков из Академгородка всерьез занялась переводом сообщения об Алголе 68 на русский язык. Понятно, что русское описание языка в стране, где много миллионов людей говорят по-русски, вещь важная. Я за этой работой только наблюдал и, первое время, не принимал участия. Честно скажу, мне казалось, что они слишком много времени тратят на выбор терминов, даже на обсуждение того, каким шрифтом какие термины должны быть опубликованы, а типографские возможности того времени были совсем не такими богатыми, как сейчас. Всё это вызывало массу трудностей, но это было как-то не интересно для меня. Из обсуждений того времени запомнился тот факт, что в русскоязычной литературе не было укоренившегося слова, обозначающего файл. Предлагались различные варианты переводы этого важного понятия: «тека» (от слова библиотека), «фонд» и так далее. Я помню, как шутил на эту тему Андрей Берс из Академогородка, что в русском языке есть только два слова, заканчивающихся на «-айл» - кайло и хайло, потом он всегда немножко молчал и с улыбкой добавлял: «ну, конечно, есть еще и Задыхайло». Задыхайло был очень известным советским программистом, не знаю, обижался ли он на эту шутку или нет, но я запомнил, что «-айл» это не очень русское окончание. Тем не менее, после долгих обсуждений был принят термин файл, которым мы пользуемся до сих пор. Кстати говоря, таких терминов в то время было принято довольно много, именно в связи с Алголом 68. Например, «сборка мусора». Первоначально казалось, что это совершенно не технический, не научный термин. Но, с другой стороны, это прямой перевод англоязычного термина garbage collection, довольно точно отражающего суть дела (в процессе динамического распределения памяти возникают участки памяти, на которые уже никто не ссылается, т.е. реальный мусор). Поэтому механизм, который уплотняет память, оставляет в памяти только те участки, на которые есть реальные ссылки это, действительно, сборка мусора. В основном перевод был работой Александра Федоровича Рара. Когда оригинальное сообщение об Алголе 68 было опубликовано (в 1969 г., так как официальное принятие осуществилось только в декабре 1968 г.), важно отметить, что уже в том же 1969 году в журнале «Кибернетика» вышел перевод сообщения об Алголе 68, т.е. все признавали, насколько важно иметь описание такого нового языка на русском языке[[13]].

Пример кода программы на языке Алгол[[14]]

BEGIN

FILE F (KIND=REMOTE);

EBCDIC ARRAY E [0:11];

REPLACE E BY "HELLO, WORLD!";

WHILE TRUE DO

BEGIN

WRITE (F, *, E);

END;

END.

1.5 Кобол

Кобол[[15]] был разработан в 1959 году и предназначался прежде всего для работы с большими данными в виде таблиц.

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

COBOL — язык очень старый и в свое время использовался крайне активно, поэтому существует множество реализаций и диалектов. Для языка был утвержден ряд стандартов: в 1968, 1974, 1985 и 2002 годах. Последний стандарт добавил в язык поддержку объектно-ориентированной парадигмы.

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

Пример кода программы на языке Cobol[[16]]

IDENTIFICATION DIVISION.

PROGRAM-ID. SAMPLE.

DATA DIVISION.

WORKING-STORAGE SECTION.

77 fact pic 9(15) comp.

77 n pic 99.

77 i pic 99.

77 ist pic XX.

77 factst pic X(18).

PROCEDURE DIVISION.

move 16 to n

move 0 to i

move 1 to fact

perform until i greater than n

move i to ist

move fact to factst

display ist "! = " factst

add 1 to i

multiply i by fact

on size error display "value too big"

end – multiply

end - perform.

stop run.

1.6 Бейсик и Паскаль – языки для обучения

В 1964 году, преподаватели Дартмундского колледжа Джон Кемени и Томас Курц придумали и спроектировали простой и понятный язык под названием Бейсик[[17]]. Главной идеей было то, чтобы начинающие изучение, не испытывали большой трудности в использовании. Основой языка были частично Фортран и Алгол. Язык имел четкие и понятные сообщения об ошибках, высокую скорость работы в небольших программах, также отсутствовала необходимость понимать работу аппаратного обеспечения.

Пример кода на языке Basic

PRINT "HELLO WORLD"

В 1971 в федеральном техническом университете Никлаусом Виртом был создан Паскаль[[18]], обеспечивающий строгую типизацию и интуитивно-понятный синтаксис. Он был назван в честь французского математика и физика Блеза Паскаля. Целью создания языка, послужило желание Вирта, написать язык для обучения студентов структурному программированию. Большое количество сторонников данного языка считают его, одним из лучших для начального обучения программированию.

Пример кода на языке Паскаль

Program hello;

begin

  writeln ('Hello, world!')

end.

1.7 Smalltalk

В конце 1970 годов началось смещение центра внимания от процедурно-ориентированных методологий разработки программ к информационно-ориентированным. Абстракция данных все больше привлекала внимание сообщество программистов. Первым языком поддерживающим ограниченную абстракцию данных стал Simula. Но общество было не готово принять новые методы работы, да и сам язык был недостаточно оптимизирован. В результате язык не нашел одобрения в научной среде, и все лавры достались языку Smalltalk[[19]]. История создания берет свое начало в лаборатории Xerox. Там, Алан Кэй с исследовательской группой на основе изысканий Кэя, разработали так называемую программную парадигму. Над языком Smalltalk было проведено огромное количество исследований и переработок, в результате чего возникло несколько новых языков, в том числе переработанный Smalltalk-80.

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

В языке Smalltalk абстракциями объектов являются классы, которые очень похожи на классы языка Simula. Объекты имеют собственные локальные данные и представляют собой отдельный экземпляр своего класса. Также в языке Smalltalk присутствует возможность создания иерархии классов. Тем самым, этот язык взял некоторые объектно-ориентированные идеи от Simula. Но если в предыдущем, они были не так четко продуманы, то в языке Smalltalk, они были развиты и полностью сформулированы. Благодаря этому, идеи объектно–ориентированного программирования нашли своих сторонников, и стали активно развиваться.

Пример кода программы на языке Smalltalk

| a |

a:= Array new S.

1 to: 5 do : [ : i| a at: I put:

( Prompter promt: ‘ Введите элемент массива ‘)

As Number ].

a: = a asSortedCollection.

a do: [: i | Transcript put All : i printStrind]

1.8 Си

С 1969 – 1973 год в лаборатории компании Bell Labs, Денисом Ричи и Кеном Томпсоном велась работа над языком, который мог реализовать операционную систему Unix. Язык Си[[20]] стал первым языком, переписавшим операционную систему с Ассемблера на свой диалект. В результате, он быстро приобрел огромную популярность, благодаря возможности быстро писать код на низком уровне абстракции, почти как на ассемблере. Компиляторы Си легко разрабатываются вследствие простоты языка и малого размера стандартных библиотек. В 1989 году увидел свет американский стандарт языка Си, который был принят в качестве международного стандарта в 1990 году. Си является языком функций, типов данных, операторов присваивания и управления последовательностью вычислений. При программировании на этом языке осуществляется обращение к функциям, где большинство возвращает некоторые значения, которое может использоваться в операторе присваивания, при этом изменяя значение другой переменной. Последовательность вычислений управляется операторами wile, for, switch, do. В языке имеется небольшой набор типов данных: целые числа, числа с плавающей запятой, битовые поля. В языке Си можно описать переменную типа указатель, который связывается с объектом , принадлежащим к любому типу данных. Адресная арифметика языка Си является чувствительной к типу данных того объекта, с которым связан используемый указатель. Разрешены также указатели к функциям. Имеется возможность расширить список типов данных путем создания структур с иерархической зависимостью входящих в него типов данных. Каждый тип данных может принадлежать либо к основному типу, либо к ранее описанному структурному типу. Объединения напоминают структуры, но определяют различные виды иерархических зависимостей, в которых данные разных типов располагаются в памяти.

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

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

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

Пример кода программы на языке Си[[21]]

#include <stdio.h>

int main()

{

printf ("Здравствуй, мир !\n");

return 0;

}

1.9 С++

В 1980 году в той же компании Bell Labs Бьерн Страуструп усовершенствовал язык Си под свои нужды[[22]]. Изменения заключались во введении проверки и преобразовании типов параметров функций и классов. В язык были включены производные классы, управление открытым и закрытым доступом к унаследованным компонентам, конструктор с деструктором, а также дружественные классы. Были добавлены параметры по умолчанию и перегрузка операторов присваивания. Язык был назван как Си с классами. В течении нескольких лет С++ эволюционировал, в язык были добавлены поддержка множественных наследований (классы, имеющие несколько родительских классов) и абстрактных классов. Язык С++ предоставлял пользователю набор встроенных классов, а также возможность самостоятельно определять классы. Классы языка С++, то есть типы данных могут создаваться в любых количествах. В описании класса указываются объекты данных и функции. Классы могут называть один или несколько родительских классов, обеспечивая наследование и множественное наследование. Операторы могут перегружаться[[23]], что означает возможность приписывать существующим операторам новый смысл. В С++ добавляется такая особенность, как полиморфизм. Полиморфизм - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий.

Одним из основных требований при создании языка С++ была его полная обратная совместимость с языком Си. Он сохраняет систему типов языка Си и добавляет к ней классы. Язык С++ одновременно имеет типы традиционных императивных языков и структуру классов объектно–ориентированного языка.

Пример кода на языке С++

#include <iostream>

using namespace std;

 int main() {

    cout << "Hello, World!";

    return 0;

1.10 Java

К концу 80 – 90х годов, объектно-ориентированное программирование на С++ стало основным методом программирования. Считалось, что программисты, наконец, изобрели идеальный язык для работы. Однако, все сильнее приближалась эра интернета, которая не оставила без изменений ситуацию в сфере языков программирования.

В 1991 году Джеймсом Гослингом, Патриком Нотоном и другими разработчиками была начата работа над языком Java[[24]]. И весной 1995 было публично объявлено о создании языка.

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

Второй причиной популярности языка Java стал Internet, потому что в нем также присутствовала проблема переносимости программ. Среда интернета представляет собой связь с разными типами компьютеров, операционными системами и процессорами. В результате Java, унаследовав многие характеристики языков Си и С++ позволил многим программистам, работающим с парадигмой объектно-ориентированного программирования, без труда перейти на этот язык.

В тоже время, Java углубил и усовершенствовал объектно-ориентированный подход, использованный С++. Он добавил в него поддержку многопоточной обработки и предоставил библиотеку, которая упростила доступ к Интернету.

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

Аплет[[25]] - это особый вид прикладной программы на Java, предназначенный для передачи через Интернет и автоматического выполнения в совместимом с J ava веб-браузере. Более того, аплет загружается по требованию, не требуя дальнейшего взаимодействия с пользователем. Если пользователь щелкает кнопкой мыши на ссьшке, которая содержит аплет, он автоматически загружается и запускается в браузере. Аплеты создаются в виде небольших программ. Как правило, они служат для отображения данных, предоставляемых сервером, обработки действий пользователя или выполнения локально, а не на сервере, таких простых функций, как вычисление процентов по кредитам. Аплет позволяет перенести ряд функций со стороны сервера на сторону клиента. Появление аплетов изменило характер программирования приложений для Интернета, поскольку они расширили совокупность объектов, которые можно свободно перемещать в сети Интернет. То есть, между сервером и клиентом передаются две крупные категории объектов: пассивные данные и динамически активизируемые программы. Например, чтение сообщений электронной почты подразумевает просмотр пассивных данных. Даже при загрузке программы ее код по-прежнему остается пассивными данными до тех пор, пока он не начнет выполняться. И напротив, аплет представляет собой динамическую, автоматически выполняющуюся прикладную программу. Такая программа является активным агентом на клиентской машине, хотя она инициируется сервером. В тоже время, Java обеспечивает защиту, ограничивая действие аплета исполняющей средой и не предоставляя ему доступ к другим частям операционной системы компьютера.

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

Пример кода на языке Java

/*

Присвоить исходному файлу имя "Example. java"

* /

class Example {

/ / Эта программа начинается с вызова метода main ()

public static void main ( String args [] ) {

System.out . print l n ( " Простая программа на Java.") ;

}

Результатом появления первых языков программирования высокого уровня стало стремительное ускорение развития вычислительных машин и задач, решаемых с их помощью. В течение пятидесяти лет были сформированы основные принципы разработки программ на языках высокого уровня. Была произведена большая работа по устранению ошибок и повышения стабильности программного обеспечения. Появилась возможность создавать объемное программное обеспечение и возможность поддерживать его. Труд программистов стал намного легче. Трудно представить, на каком бы уровне развития находилось человечество, если бы в свое время не были предприняты шаги в сторону от машинных языков программирования.

Глава 2. Современные языки программирования и сферы их применения

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

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

Согласно рейтингу сайта https://www.tiobe.com проводящего ежегодные исследования в области популярности языков программирования на январь 2019 года, сложилась довольно интересная ситуация.

2.1 Java

Возглавляет рейтинг язык Java. Прежде всего - это язык, который используется[[26]] для серверных приложений в крупных корпорациях. Особенно часто Java используется в банках, страховых компаниях, розничных сетях, для написания бэк-энд и фронт-энд офисных электронных систем. Широкое применение Java нашла в электронной коммерции и вэб-приложениях, в трейдинговых приложениях. Не обойтись без него в Android приложениях. Огромная популярность смартфонов с системой Андройд, закрепила за Java эту нишу. Помимо этого в десктопных приложениях, программных средствах и средствах разработки, также используется этот язык программирования.

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

class Code

{

public static void main (String[] args) throws java.lang.Exception

{

System.out.println ("Hello, World!");

}

} class Code

{

public static void main (String[] args) throws java.lang.Exception

{

System.out.println ("Hello, World!");

}

}

Сlass Code это класс. Класс — это часть кода, отвечающая за определенную задачу, которая, в свою очередь, состоит из подзадач — функций. И классов, и функций может быть много, все зависит от масштабов программы. Сейчас класс один, но если их несколько, то должен быть главный класс — перед ним ставится ключевое слово public.

public static void main (String[] args) throws java.lang.Exception – операторы. Это — главная функция класса. Она запускается первой. Функций может быть много, но main () должна присутствовать всегда. В скобках указаны аргументы — инструкции функции, с помощью которых она понимает, какие данные ей нужно принимать, и принимает их. Здесь это аргументы командной строки, т. е. указание на считывание данных с клавиатуры. После аргументов указано ключевое слово throws с исключением — оно позволяет программе завершиться без фатальных для системы ошибок при возникновении неполадок в коде, здесь — языковых.

System.out.println ("Hello, World!"); - оператор вывода, то есть инструкция программе. Оператор println выводит заданную в скобках информацию — переменную или строку. Здесь это строка, поэтому она указана в кавычках.

2.2 Си

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

Код на Си выглядит следующим образом

#include

<stdio.h>

{

int a,b,c;

a=5; b=7;

c=a+b;

printf("Cумма = %d \n",c)

}

В языке Си любая программа, состоит из нескольких программных единиц и каждая из них - функция. Функции в Си подобны функциям или подпрограммам в Фортране или процедурам в Паскале, имена функций выбираются произвольно (только латинскими буквами), но одно из них main, именно с нее начинается выполнение программы. Такая главная функция обычно обращается к другим функциям, которые находятся в одном файле с головной программой или извлекают из библиотеки предварительно подготовленных функций. Функция main не имеет аргументов, поэтому список ее выглядит так: ( ) . Скобки { } обрамляют операторы, которые реализуют собственно алгоритм. Эти скобки аналогичны BEGIN - END в Паскале.

Строка int a,b,c объявляет a,b,c переменными целого типа. Все используемые в программе переменные должны быть объявлены. Далее идут опрераторы присваивания к a значение 5, а к b - 7, с - значение их суммы. Функция printf выводит на экран: СУММА = 12.

2.3 Python

На третьем месте расположился высокоуровневый мультипарадигменный язык Python. Он создавался под влиянием многих языков программирования, среди которых языки: Си, С++, Smalltalk, Lisp, Fortran, Java и другие. Тем самым, он стал языком общего назначения, нацеленный на повышение скорости написания программ. Сфера применения очень обширна, от веб-разработки до научных проектов[[28]]. Все благодаря тому, что от других языков он взял самое лучшее. Например, реализация объектно-ориентированной парадигмы от С++, функциональные особенности от Lisp языков. Вследствие чего, он активно применяется в сфере обучения нейронных сетей и искусственного интеллекта. Python – универсальный язык программирования[[29]], при помощи которого можно делать любые приложения в диапазоне от интернет-сайтов и десктопных приложений до роботов и системных сервисов.

Плюсами языка являются:

- открытая разработка;

- предоставляет средства быстрого прототипирования и динамической семантики;

- простой понятный синтаксис;

- большое сообщество программистов;

- продуманная модульность и масштабируемость;

- большое количество библиотек.

Из минусов, можно выделить:

- ограниченность средств, для работы с базами данных;

- недостатки синтаксиса;

- невысокую скорость выполнения программ;

- отсутствие возможности модифицировать некоторые классы.

Код на языке Python выглядит следующим образом

a = abs(int(input()))

suma = 0

mult = 1

while a > 0:

digit = a % 10

suma += digit

mult *= digit

a = a // 10

print("Сумма:", suma)

print("Произведение:", mult)

2.4 С++

Четвертое место по праву занимает язык С++, применяемый для решения задач в которых требуется производительность и глубокий контроль происходящих процессов[[30]]. Многие компании используют этот язык для поддержания огромного количества софта, написанного на нем в свое время. Данный язык используется для написания различных редакторов, скоростных веб-серверов, а также для разработки игр на различных графических движках. То есть там, где требуется высокая производительность, и другие языки, неспособны в полной мере обеспечить эту возможность. Минусами языка можно назвать большую сложность в изучении, плохую поддержку модульности, наследование некоторых проблем языка Си.

Программу на C ++ можно определить как коллекцию объектов, которые обмениваются данными посредством вызова методов друг друга.

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

Если привести пример простой программы Hello World на языке С++, то можно увидеть структуру программы, в которой видно следующее:

- определяется несколько заголовков, которые содержат информацию, которая является необходимой или полезной для программы, в этом случае необходим заголовок <iostream> ;

- строка с использованием пространства имен std; сообщает компилятору использовать пространство имен std;

- строка ' // main () - это начало выполнения программы. '- это однострочный комментарий, доступный на C ++. Однострочные комментарии начинаются с // и останавливаются в конце строки;

- строка int main () является основной функцией, в которой начинается выполнение программы.

- строка cout << "Hello World"; вызывает на экране сообщение «Hello World».

- строка return 0; завершает функцию main() и заставляет ее возвращать значение 0 в вызывающий процесс.

2.5 Visual Basic.NET

На пятом месте находится язык Visual Basic .NET[19.]. В основном он предназначался как инструмент для быстрого создания Windows-приложений. После смены концепции язык обрел:

-поддержку ООП с конструкторами, деструкторами и наследованием;

-свободную многопоточность;

-компиляцию в байт-код, исполняемую при помощи CLR;

-структурную обработку исключений;

Но главное удобство — платформа .NET[[31]]. Теперь разработчики имеют доступ к огромному количеству библиотек платформы для работы с БД, графикой, формами, безопасностью и вебом. Споры о том, является ли Visual Basic .NET прямым потомком используемого миллионами разработчиков во всем мире языка Visual Basic или Microsoft изменила до неузнаваемости, введя столько новшеств, будут продолжаться еще долго. Полная поддержка наследования — наследования реализации и визуального наследования форм, позволяет создавать приложения, в которых повторно используются большие объемы кода. Типичный пример таких приложений — Internet-приложения, содержащие множество общих элементов: электронные магазины, порталы, поисковые системы.

Пример программы на Visual Basic.Net

Module HelloWorld

' every console app starts with Main

Sub Main( )

System.Console.WriteLine("Hello World")

End Sub

End Module

Здесь шаблон консольного приложения автоматически определяет класс Program с одним методом Main, который принимает в качестве аргумента массив String. Main — точка входа в приложение. Это метод, который автоматически вызывается средой выполнения при запуске приложения. Все аргументы, предоставленные в командной строке при запуске приложения, доступны через массив args. Он вызывает метод Console.WriteLine(String) для отображения литеральной строки "Hello World!"

2.6 JavaScript

На шестом месте находится скриптовый язык JavaScript[[32]]. Он обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса. На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами.

Пример кода языка Javascript

<!DOCTYPE HTML>

<html>

<head>

<!-- Тег meta для указания кодировки -->

<meta charset="utf-8">

</head>

<body>

<p>Начало документа...</p>

<script>

alert( 'Привет, Мир!' );

</script>

<p>...Конец документа</p>

</body>

</html>

Тег script содержит исполняемый код. Предыдущие стандарты HTML требовали обязательного указания атрибута type, но сейчас он уже не нужен. Далее браузер, когда видит <script> начинает отображать страницу, показывает часть документа до script. Встретив тег script, переключается в JavaScript-режим и не показывает, а исполняет его содержимое. Закончив выполнение, возвращается обратно в HTML-режим и только тогда отображает оставшуюся часть документа.

2.7 C#

С#[[33]] находящийся на седьмом месте рейтинга, язык объединивший в себе мощь языка Java и простоту С++. К 2000 году компания подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). В поддержку этих новшеств Microsoft выпустила инструментарий для разработки приложений – платформу .NET. Она также объединяла «под одной крышей» несколько языков программирования, что было в новинку для того времени.

Плюсами языка являются:

- высокая скорость разработки на начальных этапах;

- объектно-ориентированный подход;

- присутствует проверка переполнения;

- возможность работать с памятью напрямую;

- простой и понятный синтаксис.

При этом сферы применения этого языка очень широки:

- разработка REST API и веб-сервисов — ASP.NET MVC, ASP.NET Web API;

- разработка игр Unity;

- разработка мобильных приложений;

- разработка десктопных приложений;

- разработка кроссплатформенных приложений и сервисов;

- разработка облачных сервисов — под C# имеются SDK от всех крупных облачных платформ.

Пример кода на языке C#

// A Hello World! program in C#.

using System;

namespace HelloWorld

{

class Hello

{

static void Main()

{

Console.WriteLine("Hello World!");

// Keep the console window open in debug mode.

Console.WriteLine("Press any key to exit.");

Console.ReadKey();

}

}

}

2.8 PHP

В седьмой позиции рейтинга обосновался язык PHP. PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) - это распространенный язык программирования общего назначения с открытым исходным кодом[[34]]. PHP специально сконструирован для веб-разработок и его код может внедряться непосредственно в HTML. PHP отличается от JavaScript тем, что PHP-скрипты выполняются на сервере и генерируют HTML, который посылается клиенту. Если бы у вас на сервере был размещен скрипт, подобный вышеприведенному, клиент получил бы только результат его выполнения, но не смог бы выяснить, какой именно код его произвел. Вы даже можете настроить свой сервер таким образом, чтобы обычные HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта. Если посмотреть на историю языка и первые версии, становится понятно, что язык воплотил в себе все самые лучшие черты существующих языков программирования для настольных систем, например, многие функции напоминают поведение функций из языка C или C++. Согласно некоторым источникам, на развитие языка PHP оказали влияние такие языки, как Perl, C, C++, Java.

Преимущества PHP:

- является свободным программным обеспечением, распространяемым под особой лицензией (PHP license);

- легок в освоении на всех этапах;

- поддерживается большим сообществом пользователей и разработчиков;

- имеет развитую поддержку баз данных;

- имеется огромное количество библиотек и расширений языка;

- может использоваться в изолированной среде;

- предлагает нативные средства организации веб-сессий, программный интерфейс расширений;

- является довольно полной заменой проприетарной среды ASP (Active Server Pages) от Microsoft;

- может быть развёрнут почти на любом сервере;

- портирован под большое количество аппаратных платформ и операционных систем.

Из минусов можно выделить следующие:

- не подходит для создания десктопных приложений или системных компонентов;

- имеет слабые средства для работы с исключениями;

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

- объекты передаются по значению, что смущает многих программистов, привыкших к передаче объектов по ссылке, как это делается в большинстве других языков;

- веб-приложения, написанные на PHP, зачастую имеют проблемы с безопасностью.

Пример кода на языке PHP

<html>

<head>

<title>Пример</title>

</head>

<body>

<?

echo "Привет, я - скрипт PHP!";

?>

</body>

</html>

Сам код сценария начинается после открывающего тэга <? и заканчивается закрывающим ?>. Между этими двумя тэгами текст интерпретируется как программа, и в HTML-документ не попадает. Если же программе нужно что-то вывести, она должна воспользоваться оператором echo.

2.9 SQL

На девятом месте расположился SQL (Structured Query Language — Структурированный язык запросов) — язык управления базами данных для реляционных баз данных[[35]]. Сам по себе SQL не является полным языком программирования, но его стандарт позволяет создавать для него процедурные расширения, которые расширяют его функциональность до полноценного языка программирования. SQL создавался как простой стандартизированный способ извлечения и управления данными, содержащимися в реляционной базе данных. Позднее он стал сложнее, чем задумывался, и превратился в инструмент разработчика, а не конечного пользователя. В настоящее время SQL (по большей части в реализации Oracle) остается самым популярным из языков управления базами данных, хотя и существует ряд альтернатив.

Пример кода на SQL

sqlplus SCOTT/TIGER

SET SERVEROUTPUT ON

BEGIN

DBMS_OUTPUT.PUT_LINE('Hello World');

END;

/

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

- язык Go[[36]] разрабатывался как язык программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языкам Си и C++. Был разработан для решения реальных проблем, возникающих при разработке программного обеспечения в Google;

- Ruby[[37]] создавался для написания простых и в то же время понятных программ, где важна не скорость работы программы, а малое время разработки, понятность и простота синтаксиса;

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

Заключение

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

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

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

Список использованных источников

  1. Бартеньев О.В. Современный Фортран. – 3-е издание / О.В. Бартеньев. М. : Диалог-МИФИ, 2000. – 449 с.
  2. Горелик А. М. Эволюция языка программирования и перспективы его развития // Вычислительные методы и программирование. 2008, Т. 9 № 2, 71 с.
  3. Городняя Л.В. Парадигмы программирования / Л.В. Городняя. Новосибирск РИЦ НГУ, 2015. – 206 с.
  4. Красота Д. Введение в Python / Д. Красота, 2017.82 с.
  5. Себеста Р. У. Основные концепции языков программирования / Р.У. Себеста. 5-е изд. М.: Вильямс 2001.- 672 с.
  6. Павловская Г. А. С / С++ Программирование на языке высокого уровня / Г.А. Павловская. СПБ.: Питер, 2003. – 461 с.
  7. Тюгашев А.А. Основы программирования / А. А. Тюгашев. Часть 1.- СПБ: Университет ИТМО, 2016.- 160 с.
  8. Терехов А. Н. СПГУ. Алгол // Алгол и его влияние на программирование в СССР и России. 2014. 16 с.
  9. Орлов С.А. Теория и практика языков программирования: учебник для вузов / С.А. Орлов. Стандарт третьего поколения.- СПБ.: Питер, 2014.- 688 с.
  10. Уоллес В. Visual Basic.Net для “ чайников “ М.: 2002. – 336 с.
  11. Шилдт Г. Java 8. Полное руководство; 9-е изд. / Г. Шилдт. М.: Вильямс 2015. - 1 376 с.
  12. Язык Go // URL: http: // https://www.go.org / doc / faq#creating_a_new languade. (Дата обращения: 23.02.2019).
  13. Язык SQL // URL: https: // https://www.mysql.com / doc / refman / 8.0 / en / introduction.html. (Дата обращения: 23.02.2019).
  14. Язык Ruby // URL: http: // www.ruby-lang.org / ru / about. ( Дата обращения: 23.02.2019).
  15. Язык Алгол // URL: http: // www.phisics.uni – altai.ru / communiti / wiki / Algol. (Дата обращения: 2.02.2019).
  16. Язык Java // URL: http: // www.Java.com. (Дата обращения: 15.02.2019).
  17. Язык Python // URL: http: // www.python.org / about / apps. (Дата обращения: 15.02.2019)
  18. Язык С++ // URL: http: // www.isocpp.org. (Дата обращения: 15.02.2019).
  19. Язык Visual Basic.NET // URL: // www.docs.microsoft.com. (Дата обращения 16.02.2019).
  20. Язык Javascript // URL: http: // www.es5.javascript.ru / x4.html#x4.2. (Дата обращения: 16.02.2019).
  21. Язык С# // URL: http: // www.docs-microsoft.com / ru-ru / dotnet / csharp. (Дата обращения: 16.02.2019).
  22. Язык PHP // URL: http: // www.php.net / manual / ru / intro-whatis.php. (Дата обращения: 17.02.2019).

Приложение

Рисунок 1

Прослеживание происхождения языков высокого уровня

  1. Тюгашев А.А. Основы программирования ч.1 СПБ: Университет ИТМО 2016. с.47-49.

  2. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.5.

  3. Городняя Л.В. Парадигмы программирования. РИЦ НГУ, 2015. с.24-26.

  4. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.31-33.

  5. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.72-73.

  6. Городняя Л.В. Парадигмы программирования. РИЦ НГУ, 2015. с.92-93.

  7. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.452-456.

  8. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.17-19.

  9. Горелик А. М. Эволюция языка программирования и перспективы его развития // Вычислительные методы и программирование. 2008, Т. 9 № 2, с.53-54.

  10. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.70-72.

  11. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.7.

  12. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.74-77.

  13. Терехов А.Н. Алгол 68 и его влияние на программирование в СССР и России.СПбГУ 2014, с.2

  14. Язык Алгол // URL: http: // www.phisics.uni – altai.ru / communiti / wiki / Algol. (Дата обращения: 2.02.2019).

  15. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.81-83.

  16. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.6.

  17. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.85-86.

  18. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.96-97.

  19. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.109-111.

  20. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.74-77.

  21. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.78.

  22. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.112-114.

  23. Себеста Р. У. Основные концепции языков программирования. М.: Вильямс 2001. с.113.

  24. Шилдт Г. Java 8. Полное руководство; 9-е изд. 2015. с.37-39.

  25. Шилдт Г. Java 8. Полное руководство; 9-е изд. 2015. с.835.

  26. Язык Java // URL: http: // www.Java.com. (Дата обращения: 15.02.2019).

  27. Тюгашев А.А. Основы программирования ч. 1. СПБ: Университет ИТМО, 2016. с.120-121.

  28. Язык Python // URL: http: // www.python.org / about / apps. (Дата обращения: 15.02.2019)

  29. Красота Д. Введение в Python / Д. Красота, 2017. с.1-2.

  30. Язык С++ // URL: http: // www.isocpp.org. (Дата обращения: 15.02.2019).

  31. Уоллес В. Visual Basic.Net для “ чайников “ М.: 2002. с.28.

  32. Язык Javascript // URL: http: // www.es5.javascript.ru / x4.html#x4.2. (Дата обращения: 16.02.2019).

  33. Язык С# // URL: http: // www.docs-microsoft.com / ru-ru / dotnet / csharp. (Дата обращения: 16.02.2019).

  34. Язык PHP // URL: http: // www.php.net / manual / ru / intro-whatis.php. (Дата обращения: 17.02.2019).

  35. Язык SQL // URL: http: // https://www.mysql.com / doc / refman / 8.0 / en / introduction.html. (Дата обращения: 23.02.2019).

  36. Язык Go // URL: http: // https://www.go.org (Дата обращения: 23.02.2019).

  37. Язык Ruby // URL: http: //www.ruby-lang.org / ru / about. ( Дата обращения: 23.02.2019).