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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

Цель исследования – дать обзор языков программирования высокого уровня.

В соответствии с поставленными целями решались следующие основные задачи:

- дать понятие языка программирования;

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

- рассмотреть язык программирования Фортра́н (Fortran);

- изучить особенности языка COBOL (Кобол);

- рассмотреть историю и возможности Pascal;

- дать характеристика языка Ada (Ада);

- рассмотреть особенности языка BASIC (Бейсик);

- дать характеристику языкам программирования Си и C++ (Си++);Методы исследования:

-обработка, анализ научных источников;

-анализ научной литературы, учебников и пособий по исследуемой проблеме.

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

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

1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ И ВИДЫ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

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

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

За все временя существования программирования было разработано более 8 000 языков программирования различных типов.

С каждым годом количество возрастает. Некоторые языки доступны только небольшому числу их разработчиков, другие стали известны огромному количеству пользователей. Профессиональные программисты могут программировать на десятках различных языков программирования. Язык программирования используется для написания компьютерных программ, представляющих собой набор правил, которые позволяют компьютеру выполнить какой-либо вычислительный процесс, организовать управление различными объектами и т. п. Отличие языка программирования от естественного языка в том, что он предназначен для взаимодействия человека с ЭВМ, а естественный язык – для общения людей между собой. У большинства языков программирования для определения и манипулирования структурами данных и управления процессом вычислений используются специальные конструкции[1].

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

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

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

Стандартизация языков программирования. Для большинства широко распространённых языков программирования разработаны международные стандарты.

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

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

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

Разделение на компилируемые и интерпретируемые языки довольно условно. Так, например, для языка Pascal, который традиционно считается компилируемым языком, можно написать интерпретатор. Кроме того, большинством современных «чистых» интерпретаторов не исполняются конструкции языка непосредственно, а компилируются в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).

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

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

1.2 Классификация языков программирования

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

Рис. 1. Классификация языков программирования.

Процедурные языки.

Процедурные языки являются языками высокого уровня, в которых используется метод разбиения программ на отдельные связанные между собой модули – подпрограммы (процедуры и функции). Компоненты языка состоят из последовательности операторов, которые используют библиотечные процедуры и функции. Первым процедурным языком был Fortran, затем появился Cobol, Algol, Pascal, C, Ada[3].

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

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

К языкам низкого уровня относится: программирование в машинных кодах; ассемблер; макроассемблер.

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

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

Недостаток некоторых языков высокого уровня состоит в большом размере программ по сравнению с программами на языках низкого уровня. В то же время текст программ на языке высокого уровня гораздо меньше, но в байтах код, написанный на ассемблере, будет более компактным. Поэтому языки высокого уровня преимущественно используют для создания программного обеспечения для компьютеров и вычислительных устройств с большим объемом памяти. Языки же низкого уровня используются для написания программ к устройств, для которых критичным является размер программы[4].

Языки высокого уровня делятся на универсальные и проблемно-ориентированные. Наиболее распространенные универсальные языки C#, C++, Basic, Pascal (Delphi) используются для разработки Windows-приложений. Большой вклад в программирование на начальных этапах внесли языки Fortran, Cobol, Algol, C и др. Языки программирования для разработки Интернет-приложений скорее относятся к универсальным языкам. К ним относятся современные версии C#, Basic, J#.

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

В машинном коде операции должны быть указаны точно. Например, если часть информации должна быть извлечена из памяти, машинный код должен будет сообщить компьютеру, где в памяти его найти. Писать непосредственно в машинный код возможно, но очень сложно. Низкоуровневые языки программирования добавляют немного абстракции к машинным кодам. Эта абстракция скрывает конкретные инструкции машинного кода за декларациями, которые более читабельны для человека. Языки ассемблера являются языками самого низкого уровня рядом с машинным кодом. В машинный код пользователь может написать что-то вроде «10110000 01100001», но язык ассемблера может упростить это как «MOV AL, 61h».

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

Объектно-ориентированные языки Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java.

Декларативные языки программирования. В декларативном программировании задается спецификация решения задачи, то есть дается описание того, что представляет собой проблема и какой ожидается результат. Программы, созданные с помощью декларативного языка, не содержат переменные и операторы присваивания. К декларативным языкам можно отнести SQL и HTML. К подвидам декларативного программирования относится функциональное и логическое программирование[5].

Функциональные языки программирования Функциональные языки являются языками искусственного интеллекта. Программа, написанная на функциональном языке, состоит из последовательности функций и выражений, которые необходимо вычислить. Основной структурой данных является связный список. Функциональное программирование принципиально отличается от процедурного. Основными функциональными языками являются Lisp, Miranda, Haskel.

Логические языки программирования.

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

Языки сценариев (скрипты)

Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек. Языки, ориентированные на данные Языки ориентированы на работу с одним определенным типом данных. Например, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами.

2. ХАРАКТЕРИСТИКА ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

2.1 Фортра́н (Fortran)

Фортра́н (Fortran) — первый язык программирования высокого уровня, получивший практическое применение. Язык был создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM.

Эпоха, когда прикладные программы создавались на языке Fortran, почти полностью совпадает с периодом существования компьютеров общего назначения. Это удивительный факт, и с учётом того, что многие другие языки программирования высокого уровня прекратили своё существование, трудно понять, почему получилось именно так. Возможно, исходные принципы проектирования Джона Бэкуса (John Backus) – простота использования и эффективность выполнения – стали двумя решающими факторами. Возможно, сыграла роль преданность языку Fortran сообщества его пользователей, которые всегда старались не отставать от новейших разработок в области технологии программирования и адаптировать язык к постоянно расширяющемуся кругу требований

Fortran - это одна из немногих действительно удобных сред разработки для одноименного языка. Вообще Фортран, нынче не особенно востребован, так что найти достойное программное решение для написания кода на нем, да еще и со встроенным дебаггером, довольно сложно. Так что адекватных альтернатив данному приложению не существует[6].

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

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

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

Но ни один стандарт до Fortran 2003 включительно не содержал никаких средств, специально предназначенных для поддержки параллельного программирования. Такая поддержка осуществлялась опосредованно, с привлечением вспомогательных стандартов, в частности HPF (High-Performance Fortran), MPI (Message Passing Interface), OpenMP и Posix Threads (Pthreads). Использование библиотек MPI и OpenMP стало массовым явлением, но HPF в конечном счёте не имел особого успеха[7].

Сейчас, после принятия стандарта Fortran 2008 одним из самых сильных свойств современного языка Fortran является непосредственная поддержка параллельного программирования, благодаря введению чрезвычайно востребованного средства: комассивов (coarrays).

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

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

Posix Threads – это стандарт, определяющий спецификацию библиотеки для поддержки многопоточности.

В отличие от всех перечисленных средств, главной целью введения комассивов является предоставление синтаксиса, минимально влияющего на внешний вид программы и позволяющего распределить по нескольким процессорам не только данные, как в модели «одна инструкция, много данных» (Single Instruction Multiple Data, SIMD), но и работу в соответствии с моделью «одна программа, много данных» (Single Program Multiple Data, SPMD). От программиста требуется знание лишь небольшого набора новых правил. Работа с комассивами — это самое важное новшество в стандарте Fortran 2008, но кроме него была введена новая форма управляющей конструкции doconcurrent как способ распараллеливания циклов. Вполне очевидно, что появилась возможность обеспечения полноценного режима параллельного выполнения, не выходя за рамки языка[8].

Другие важные нововведения в стандарте Fortran 2008: подмодули (submodules), более удобный доступ к объектам данных, усовершенствованные средства ввода/вывода и управления выполнением, дополнительные внутренние процедуры, в частности, для работы с битами. Fortran 2008 был опубликован в 2010 году, и в настоящее время является действующим стандартом.

Возможности

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

Из прочих преимуществ стоит выделить наличие системы всплывающих подсказок, которые отображаются при написании кода на Fortran. Программа может автоматически указывать на частые проблемы вроде зацикливающихся функций и ошибок в названиях команд/аргументов. Редактор отличное запускается под WINE на системах отличных от Windows и комплектуется подробной документации. Последняя, как и сама программа, доступна исключительно на английском языке. Впрочем, учитывая "специализацию" ПО данный факт сложно отнести к серьезным недостаткам[9].

Интерфейс

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

Ключевые особенности

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

В реализации современного Fortran многое осталось неизменным:

• Fortran нечувствителен к регистру символов, в отличие от многих языков программирования, используемых в наши дни;

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

• по своей сущности Fortran ориентирован на эффективное выполнение. Это особенно заметно в последнем стандарте Fortran 2008, где все нововведения направлены на то, чтобы помочь компилятору в создании быстрых и эффективных программ.

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

real :: r

r = 1 / 3

Здесь переменная r получает значение 0.0, а не 0.333333..., так как сначала выполняется операция деления двух целых чисел, результатом которой является новое целое число, а затем полученное целое число преобразуется в вещественное.

Точно такое же разделение операций и преобразования их результатов справедливо для операций с массивами:

integer, dimension(10) :: array

array = 2 * array(10:1:-1)

Эта инструкция выполняется (по крайней мере, теоретически) следующим образом:

integer, dimension(10) :: array

integer, dimension(10) :: tmp

integer :: i

Сначала вычисляется правая часть выражения, и результат сохраняется во временном массиве.

do i = 1,10

tmp(i) = 2 * array(11-i)

enddo

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

do i = 1,10

array(i) = tmp(i)

enddo

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

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

2.2 COBOL (Кобол)

Язык программирования COBOL - название акроним от общего бизнес-ориентированного языка (COmmon Business Oriented Language). Программирование для начинающих.

Язык программирования КОБОЛ был первоначально создан в 1959 на Комитете "The Short Range Committee". Это один из трех комитетов, предложенных для создания на совещании, состоявшемся в Пентагоне в мае 1959 года, организованного Чарльзом Филлипомс из Министерства обороны США.

"The Short Range Committee" был сформирован для разработки рекомендаций относительно нового языка программирования для бизнеса. Он состоял из членов, представляющих шесть производителей компьютеров и трех правительственных учреждений. В частности, шесть компаний-производителей компьютерных Burroughs Corporation , IBM , Minneapolis-Honeywell, RCA , Sperry Rand , и Sylvania Electric Products. Программирование для чайников. Три государственных учреждения были: ВВС США , David Taylor Model Basin, и Национальное бюро стандартов. Этот комитет был под председательством члена Национального бюро стандартов. После создания Комитет разработал спецификации языка программирования КОБОЛ.

Эта группа завершила спецификацию для COBOL, и в 1959 года подошла к выпустила в свет. Спецификации были в значительной степени вдохновлены FLOW-MATIC, языком, который был изобретен Грейс Хоппер, и языком от IBM, который назывался COMTRAN, а изобрел его Боб Бемер.
Спецификации были утверждены полным составом Комитета. После чего они были утверждены Исполнительным комитетом в январе 1960 , и отправлены в типографию правительства, которое отредактировало и напечатало эту спецификацию как язык программирования Cobol 60[10].

COBOL был разработан в течение шести месяцев, и еще до сих пор используется более чем 40 лет спустя, даже для обучения основам программирования.

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

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

COBOL имеет много зарезервированных слов, и трудно избежать непреднамеренного использования одного из них, без использования некоторых соглашений, например, таких как добавление вначале префикса для всех имен переменных. Оригинальная спецификация COBOL даже поддерживала самомодифицирующийся код через знаменитый "ALTER X TO PROCEED TO Y". В силу этих обстоятельств, очень мало нового кода пишется на COBOL. Однако, спецификации COBOL пересматривались на протяжении многих лет, чтобы решить некоторые из этих критических замечаний , а затем в COBOL устранили многие из этих недостатков, добавив: улучшения структуры управления, объектно-ориентированное программирование и удалив возможность использовать самомодифицирующийся код.

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

Таблица 1

Элементы синтаксиса COBOL

Комментарий до конца строки

* в седьмом столбце

Регистрозависимость

нет

Присваивание значения переменной

MOVE value TO varname

Объявление переменной

number varname PIC type

Равенство

=

Вызов функции

Funct(a,b,c)

Если - то

IF boolexp THEN ... END-IF

Если - то - иначе

IF boolexp THEN ... ELSE ... END-IF

Цикл с предусловием

SEARCH exp AT END ifstatementisfalse WHEN statement END-SEARCH

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

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

$ SET SOURCEFORMAT "FREE"

IDENTIFICATION DIVISION.

PROGRAM-ID. Multiplier.

AUTHOR. Michael Coughlan.

* Example program using ACCEPT, DISPLAY and MULTIPLY to

* get two single digit numbers from the user and multiply

* them together

DATA DIVISION.

WORKING-STORAGE SECTION.

01 Num1 PIC 9 VALUE ZEROS.

01 Num2 PIC 9 VALUE ZEROS.

01 Result PIC 99 VALUE ZEROS.

PROCEDURE DIVISION.

DISPLAY "Enter first number (1 digit) : " WITH NO ADVANCING.

ACCEPT Num1.

DISPLAY "Enter second number (1 digit) : " WITH NO ADVANCING.

ACCEPT Num2.

MULTIPLY Num1 BY Num2 GIVING Result.

DISPLAY "Result is = ", Result.

STOP RUN.

Среди языковых особенностей Кобола, которые могли бы показаться странными современным программистам, стоит отметить, в первую очередь, огромное количество зарезервированных слов - порядка четырёх сотен. Ни в одном современном языке программирования, даже в Аде, нет такого количества зарезервированных слов. Первая версия Кобола не включала поддержку многих приёмов программирования, без которых сейчас крайне сложно обойтись даже при разработке простых программ. В этот список входят рекурсия, локальные переменные, динамическое распределение памяти и даже конструкции структурного программирования. Зато в первой версии стандарта Кобол была поддержка самомодифицирующегося кода (благодаря так и не прижившейся конструкции ALTER X TO PROCEED TO Y).

Современные программисты критикуют COBOL, особенно его ранние версии, за возможность создания кода без особой структуры, из-за чего он разрастается в сложное нагромождение – так называемый «спагетти-код»[11]

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

Изначально COBOL разрабатывался как краткосрочное решение проблем для обработки бизнес-данных на несколько ближайших лет, пока на свет не появится что-либо более практичное. 

Однако COBOL жив и сейчас. Согласно данным IBM Research, в настоящее время более 200 млрд строк кода COBOL находится в постоянном использовании, и более 2 млрд строк нового кода или изменений появляется ежегодно.

2.3 История и возможности Pascal

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

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

Существует три стандарта языка:

1. Нерасширенный Паскаль (Unextended Pascal) был разработан в 1983 году и практически полностью совпадает с описанием языка по Вирту.

2. Расширенный Паскаль (Extended Pascal) содержит расширения, затрагивающие модульное программирование (отдельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация) и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и др.).

3. Объектный Паскаль (Object Pascal) принят в 1993 г. Он поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и другие атрибуты объектно-ориентированного программирования. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

Реализации языка:

  1. Для операционной системы MS-DOS самое большое распространение приобрела реализация языка Паскаль фирмы Borland под названием Turbo Pascal (первая версия языка появилась в 1983 году).
  2. Borland Pascal включает в себя более дешёвый и менее мощный Turbo Pascal и, кроме того позволяет создавать программы как под реальный, так и под защищённый 16-битный режим DOS, а так же программы для Windows. В нем открыты исходные тексты системных библиотек и функций времени выполнения.
  3. Delphi – интегрированная среда разработки ПО для Microsoft Windows на языке Delphi, созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies.
  4. Free Pascal – свободно распространяемый компилятор языка программирования Pascal с ориентацией на Object Pascal.
  5. Lazarus – свободно распространяемая интегрированная Delphi-подобная среда разработки программного обеспечения для компилятора Free Pascal, предоставляющая возможности кроссплатформенной разработки приложений.
  6. PascalABC – система, представляющая собой интерпретатор языка программирования Паскаль с интегрированной оболочкой. Создавалась как учебная среда программирования. Pascal ABC и PascalABC.NET всех версий является свободно распространяемым программным обеспечением[12].

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

Разработка программы состоит из следующих этапов:

    • Создание или редактирование текста программы.
    • Компиляция – перевод программы с языка высокого уровня в машинно-ориентированные коды.
    • Исполнение откомпилированного файла.
    • Тестирование и отладка.

Компиляцию программы выполняет особая программа, называемая компилятором.

Этапы компиляции:

    • Лексический анализ.
    • Синтаксический анализ.
    • Семантический анализ.
    • Генерация промежуточного кода.
    • Оптимизация кода.
    • Генерация результирующего машинного кода.

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

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

Семантика языка программирования – это система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений языка. Не все семантические ошибки могут быть выявлены компилятором. Например, запись выражения в виде a/b*c не вызовет ошибки, хотя и является неправильной, исходя из приоритета выполнения операций. В ходе семантического анализа компилятор проверяет соответствие типов и допустимость операндов в операторах. Так попытка изменить значение константы, которая по определению является неизменяемым значением, приведет к семантической ошибке. Использование типа данных, недопустимого в данной конструкции, или несоответствие типов формальных и фактических параметров процедуры или функции, так же является семантической ошибкой[13].

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

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

Среди самых удивительных реализаций Pascal являются:

  • Skype
  • Total Commander
  • TeX
  • Macromedia Captivate
  • Apple Lisa
  • Различные игры для ПК

Встроенные системы

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

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

2.4 Ada (Ада)

В 70-х годах 20 века, в разгар холодной войны, Министерство Обороны США устроило международный конкурс, по результатам которого необходимо было выбрать язык программирования для использования в военных целях. Однако ни один из существующих языков не устроил членов комиссии, поэтому путём долгого выбора и нескольких доработок на свет появился язык Ада, названный так в честь Ады Лавлейс. Далее началась многолетняя волокита со стандартизацией, регистрация торговой марки, запреты на кастомные трансляторы и прочие действия, отбившие желание массовой аудитории работать с Ада.

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

Синтаксис

Изначально, Ада — модульный язык программирования со строгой типизацией, унаследовавший синтаксис от Паскаль и Алгол. Если вы учили первый в школе или институте, то глядя на «Hello, World!» должны испытать ностальгию:

with Ada.Text_IO;

procedure Hello is

use Ada.Text_IO;

begin

Put_Line("Hello, world!");

end Hello;

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

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

Более поздние стандарты частично решали эти проблемы, но по понятным причинам, они не сделали из Ада второй Python.

Вопреки мнению широкой аудитории, язык Ада до сих пор активно используется, не только в США и не только в военной индустрии. Так, например, часть ПО самолёта-амфибии Бериев Бе-200 написана как раз на Ада. Поезда метрополитена без машиниста, которые курсируют во многих крупных городах (Париже, Лондоне, Нью-Йорке и др.), также используют оборудование с американским военным языком.

И да, конечно, среди «клиентов» была военная и гражданская авиация (в частности, Боинг-777), ракеты, шаттлы, спутники — в общем, практически весь перечень бесконечно дорогой американской продукции, предполагающей высшую степень безопасности.

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

Впрочем, почти 40 лет активного использования подтверждают, что пожалуй со своей главной задачей язык Ада справился — с его помощью всё ещё можно создавать надёжный код для систем с повышенными требованиями к безопасности. При этом, если вы посмотрите на современные тенденции, количество таких изделий неуклонно растёт: автомобили с автопилотом и гибридными двигателями, частные космические аппараты и малые летательные средства, скоростные поезда, а также огромное количество встраиваемых систем. Всё это потенциальное поле для деятельности языка Ада. Добавьте сюда тот факт, что стандарт был серьёзно переработан и модернизирован в 2012 году, инструменты для работы тоже выходят и обновляются.

Таким образом, язык Ада — это и фрагмент из не самого приятного прошлого, и один из инструментов для строительства яркого будущего.

2.4 BASIC (Бейсик)

Язык Бэйсик (он же Бейсик, он же BASIC) входит в семейство языков программирования высокого уровня.

BASIC - это аббревиатура, которая расшифровывается так: Beginner’s All-purpose Symbolic Instruction Code - универсальный код символических инструкций для начинающих).

Язык программирования Бейсик был разработан в 1964 году. Затея заключалась в том, чтобы создать язык, с помощью которого студенты, не имеющие навыков программирования, могли самостоятельно создавать компьютерные программы для решения своих задач[15].

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

Бэйсик с момента создания многократно дорабатывался и усложнялся, повинуясь законам современного программирования. По этой причине к настоящему времени он уже утратил (по сравнению с первыми версиями) свою простоту. Хотя, даже с учётом этого, современный Бэйсик всё-равно остаётся относительно простым языком, по сравнению с такими языками, как, например, С++.

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

Готовых программ тогда почти не было. Поэтому под каждую задачу надо было создавать отдельную программу. И делать это на компьютерах тех лет, используя имеющиеся тогда языки программирования, было очень сложно (отчасти поэтому раньше языки программирования создавались для решения конкретных задач, например, ПРОЛОГ был ориентирован на создание систем с искусственным интеллектом, ФОРТРАН - для работы с математическими формулами в научных и инженерных вычислениях и т.п.).

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

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

Вторую жизнь Бейсик получил с появлением Visual Basic от Microsoft. Но, несмотря на популярность, в 2001 году Microsoft отказалась от дальнейшей поддержки Visual Basic (если не ошибаюсь, последняя версия Visual Basic была 6.5) в пользу принципиально нового языка Visual Basic .NET, где язык был снова “перекроен” и “перешит”, ориентирован на кросс-платформенную технологию .NET, и в текущем состоянии практически совпадает по набору возможностей c языком C#. Отличия только в синтаксисе и ключевых словах.

Так Basic перерос из средства для создания программ любителями-непрофессионалами до полноценного средства создания программ.

Помимо написания полноценных программ, Бейсик широко применяется как основа для различных скриптовых языков (например, макросы в пакете Microsoft Office пишутся на диалекте VBA, язык сценариев VBScript используется в SCADA-системах и других подобных программах).

Даже в свои лучшие времена (1970...1980 годы) Бейсик подвергался жёсткой критике (впрочем, как и почти все другие языки программирования - критиковать у нас любят).

Конечно, у Бэйсика было немало недостатков. Но ведь он же таким и был задуман! Да, с недостатками. Но зато простой и доступный для понимания даже гуманитарию.

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

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

Язык Бэйсик (даже первые его реализации, такие как QBasic), вполне пригоден для обучения, потому что с моей точки зрения нет совершенно никаких проблем, при необходимости, выучить потом другой язык. Может быть в 60-е годы прошлого столетия это и было проблемой - не знаю (я родился в 1969). Но сейчас - нет.

К тому же сегодня и переучиваться особо не потребуется, так как можно создавать свои классные программы, например, на Visual Basic.

2.5 Языки программирования Си и C++ (Си++)

Си - стандартизированный процедурный язык программирования, который был разработан в начале 1970-х годов сотрудниками фирмы Bell Labs Кеном Томпсоном и Денисом Ритчи. Изначально язык Си был создан для использования в операционной системе UNIX, а затем был портирован на многие другие операционные системы и стал одним из наиболее популярных языков программирования[17].

C в первую очередь ценят за его эффективность. Он является основным языком для создания системного ПО. Также его очень часто используют для создания прикладного ПО.

Язык Си активно используется для обучения программированию, несмотря на то, что сразу он разрабатывался только для профессионально применения. В дальнейшем синтаксис Си стал основой для многих других популярных языков: C++, C#, Java, JavaScript, PHP и др.

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

C++ (Си++)

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

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

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

C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java, а очень популярный в последнее время C# фактически является производным от С++.

ЗАКЛЮЧЕНИЕ

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

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

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

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

Fortran (Formula Translator) был самым первым высокоуровневым языком программирования, успешно применяемым на практике.

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

Algol

Algol (Algoritmic Language) стал этаким европейским конкурентом Фортрана. В Америке на тот момент не было нормальных компиляторов Алгола - производитель компьютеров IBM тратил огромное количество ресурсов на продвижение Fortran.

Разработчики никак не могли условиться с синтаксисом: в США разделителем целого и дробного числа была точка, а в Европе - запятая. Зато в СССР с Algol было все замечательно. Были и собственные трансляторы, и широкое признание во многих организациях на советском пространстве. Именно в Алголе появилась блочная структура данных, предполагающая наличия основной программы и второстепенных подпрограмм. Так или иначе, Algol и его модификации оказали большое влияние на разработку последующих языков программирования, в том числе и очень популярного Pascal.

Basic

Basic (Beginner's All-purpose Symbolic Instruction Code) приобрел широкое распространение ввиду своей максимальной простоты. Он предназначался для создания программ для повседневных задач людьми, не имеющими профильного образования - этому способствовал рост доступности компьютеров в 60х годах прошлого века.

Особенно, кстати, этот простой язык пришелся на машине Altair, на которой было очень мало памяти для разработки ПО громоздкими Фортраном или Алголом. С Бейсиком и Альтаиром связано становление компании Microsoft как успешного производителя софта - написанный Биллом Гейтсом и Полом Алленом Altair Basic обеспечил прибыль будущей корпорации вплоть до появления MS-DOS.

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

Turbo Pascal

Паскаль (прототипом которому послужил Алгол) - наиболее известный широкому кругу обывателей язык. В основном благодаря тому, что его изучают на уроках информатики в старших классах средней школы. Turbo Pascal - диалект языка Паскаль производства фирмы Borland, который благодаря отличной рекламной кампании получил массовое распространение и принес огромные доходы разработчику.

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

Cobol

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

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

Ada

Ada получила свое название в честь той самой Ады Лавлейс, великого математика и первого в мире программиста. Этот язык был создан в конце семидесятых для бортовых систем военных объектов Пентагона. За пределы военной ниши у Ады выбраться не получилось как минимум по двум причинам.

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

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

C++ один из самых популярных языков программирования, также является ООП. Главная особенность представляет набор предопределенных классов, типы данных которых могут быть созданы несколько раз. Классы: можно дополнительно разместить членов функции для реализации определенных функций. Несколько объектов определенного класса могут быть определены для реализации функций в классе. Объекты могут быть определены как экземпляры, созданных во время выполнения. Эти классы также могут быть унаследованы от других новых классов.

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

  1. Альфред В. Ахо, Моника С. Лам, Сети Рави , Джеффри Д. Ульман Компиляторы. Принципы, технологии и инструментарий; Вильямс - М., 2015. - 636 c.
  2. Андреева Т. А. Программирование на языке Pascal; Интернет-университет информационных технологий, Бином. Лаборатория знаний - Москва, 2014. - 240 c.
  3. Вольский С. В., Дмитриев П. А. Turbo Pascal 7.0; Наука и техника - Москва, 2014. - 224 c.3
  4. Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования; КноРус - Москва, 2012. - 184 c.
  5. Голицына О. Л., Партыка Т. Л., Попов И. И. Языки программирования; Форум - Москва, 2013. - 400 c.
  6. Гриффитс Дэвид , Гриффитс Дон Изучаем программирование на C: моногр. ; Эксмо, Айдиономикс - М., 2013. - 624 c.
  7. Земсков Юрий Qt4 на примерах; БХВ-Петербург - М., 2017. - 813 c.
  8. Крупник Александр Самоучитель С++; Питер - М., 2012. - 256 c.
  9. Культин Н. C/C++ в задачах и примерах; БХВ-Петербург - М., 2017. - 981 c.
  10. Панюкова Т. А., Панюков А. В. Языки и методы программирования. Путеводитель по языку С++; Либроком - М., 2015. - 216 c.
  11. Рыжиков Ю. И. Современный Фортран; Корона-Принт - Москва, 2014. - 288 c.
  12. Симакова В.Е., Бедняк С.Г. Новые информационные технологии. Виртуализация // Научное сообщество студентов XXI столетия. Технические науки: сб. ст. по мат. VII междунар. студ. науч.-практ. конф. № 7. URL: http://sibac.info/archive/technic/7.pdf (дата обращения: 15.11..2017)
  13. Страуструп Бьярне Программирование. Принципы и практика с использованием C++; СИНТЕГ - Москва, 2016. - 918 c.
  14. C# для начинающих/ Под ред. Мартынов Н. Н – М., Кудиц-Пресс, 2007. – 23с.
  15. Фленов М.Е. Программирование на С++ глазами хакера (+ CD-ROM); БХВ-Петербург - М., 2014. - 632 c.
  16. Хусаинов Б. С. Структуры и алгоритмы обработки данных. Примеры на языке Си (+ CD-ROM); Финансы и статистика - , 2014. - 464 c.
  17. Хьюз Камерон , Хьюз Трейси Параллельное и распределенное программирование с использованием C++; Вильямс - М., 2013. - 672 c.
  18. Шнайер Брюс Прикладная криптография. Протоколы, алгоритмы и исходный код на C; Вильямс - М., 2016. - 845 c.
  19. Язык программирования С++.Специальное издание / Под ред. Бьерн Страуструп – М., Бином 2011 - 45 с.
  20. Языки программирования [Электронный ресурс]. URL: http://life-prog.ru (дата обращения: 25.11.2017).
  1. Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования; КноРус - Москва, 2012. - 184 c.

  2. Альфред В. Ахо, Моника С. Лам, Сети Рави , Джеффри Д. Ульман Компиляторы. Принципы, технологии и инструментарий; Вильямс - М., 2015. - 636 c.

  3. Рыжиков Ю. И. Современный Фортран; Корона-Принт - Москва, 2014. - 288 c.

  4. Хусаинов Б. С. Структуры и алгоритмы обработки данных. Примеры на языке Си (+ CD-ROM); Финансы и статистика - , 2014. - 464 c.

  5. Альфред В. Ахо, Моника С. Лам, Сети Рави , Джеффри Д. Ульман Компиляторы. Принципы, технологии и инструментарий; Вильямс - М., 2015. - 636 c.

  6. Рыжиков Ю. И. Современный Фортран; Корона-Принт - Москва, 2014. - 288 c.

  7. Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования; КноРус - Москва, 2012. - 184 c.

  8. Альфред В. Ахо, Моника С. Лам, Сети Рави , Джеффри Д. Ульман Компиляторы. Принципы, технологии и инструментарий; Вильямс - М., 2015. - 636 c.

  9. Рыжиков Ю. И. Современный Фортран; Корона-Принт - Москва, 2014. - 288 c.

  10. Панюкова Т. А., Панюков А. В. Языки и методы программирования. Путеводитель по языку С++; Либроком - М., 2015. - 216 c.

  11. Голицына О. Л., Партыка Т. Л., Попов И. И. Языки программирования; Форум - Москва, 2013. - 400 c.

  12. Симакова В.Е., Бедняк С.Г. Новые информационные технологии. Виртуализация // Научное сообщество студентов XXI столетия. Технические науки: сб. ст. по мат. VII междунар. студ. науч.-практ. конф. № 7. URL: http://sibac.info/archive/technic/7.pdf (дата обращения: 15.11..2017)

  13. Языки программирования [Электронный ресурс]. URL: http://life-prog.ru (дата обращения: 25.11.2017).

  14. Шнайер Брюс Прикладная криптография. Протоколы, алгоритмы и исходный код на C; Вильямс - М., 2016. - 845 c.

  15. Альфред В. Ахо, Моника С. Лам, Сети Рави , Джеффри Д. Ульман Компиляторы. Принципы, технологии и инструментарий; Вильямс - М., 2015. - 636 c.

  16. Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования; КноРус - Москва, 2012. - 184 c.

  17. Гриффитс Дэвид , Гриффитс Дон Изучаем программирование на C: моногр. ; Эксмо, Айдиономикс - М., 2013. - 624 c.