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

История возникновения и развития языка программирования Си (С++) и Java (История возникновения языка программирования Java)

Содержание:

ВВЕДЕНИЕ

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

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

Существует множество реализаций языка C ++, как бесплатных, так и коммерческих, а также для различных платформ. Например, на платформе x86 это GCC, Visual C ++, Intel C ++ Compiler, Embarcadero (Borland) C ++ Builder и другие. C ++ оказал огромное влияние на другие языки программирования, особенно Java и C #.

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

Цель данной работы - ознакомиться с историей возникновения и развития языков программирования С и С++ и Java.

Предмет исследования: язык программирования С++, Java. Изучение основ и тонкостей этих зыков и их применения для решения задач широкого круга направленности.

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

В курсовой будут решены след задачи:

1. Описана краткая история развития языков С и С++;

2. Освящена краткая история возникновения языка программирования Java;

3. Даны базовые понятия языка Java и С и С++.

Для написания курсовой работы использованы труды следующих авторов - Дорогова В.Г., Монахова В.В., Страуступ Б., Фридмана А.Л. и других.

Методологической базой исследования выступили такие методы, как: анализ научно-методической литературы по теме исследования, обобщение и систематизация материала.

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

ГЛАВА 1. ОСНОВЫ ПРОГРАММИРОВАНИЕ НА С И С++

1.1. История развития языков С и С++

В 1972 году-Деннис Ричи совместно с Кеном Томсоном, сотрудником AT & T из подразделения Bell Labs, переписали UNICS, операционную систему, полностью написанную на ассемблере, на более "развитый" язык.

Это стало причиной возникновения новой категории языков с языком С (произносится «Си» на русском языке). Это было основано на языке B(Би), который пришел из BPCL. Таким образом, УНИКС, написанный на ассемблере, был изменен и написан на языке Си и был переименован в UNIX.

BPCL - - - > B - - - - > C

Кроме того, язык SQL (Structured Query Language) был разработан IBM.

Эта эпоха также знаменует собой рождение новой парадигмы "объектно-ориентированного программирования". Но C поддерживал структурное программирование. Таким образом, он был обновлен, чтобы создать новую версию, которая поддерживала OOP, названную Obj C Брэдом Коксом (1984) и C++ Бьярне Стострупом (1981-86). [7]

        Язык Си был разработан в первую очередь как инструмент для системного программирования. Благодаря идеальному сочетанию лаконичного дизайна и богатства выразительных функций, язык Си сумел найти быстрое распространение и стал одним из самых популярных языков для прикладного и системного программирования. Компиляторы C работают практически на всех типах современных ПК в Windows, Mac OS, Linux, FreeBSD, Solaris и других операционных системах [2].

В отличие от многих языков программирования (Ada, ALGOL-60 и т. Д.), Которые вступили в силу только после принятия соответствующих национальных и международных стандартов, язык C изначально был создан с целью использования его в качестве рабочего инструмента, который не был предназначен для широкого распространения. До 1989 г. стандарта С не существовало, и в качестве формального описания авторы составителей (разработчиков) использовали книгу Б. Кернигана и Д. Ричи (первое издание), которая была опубликована в 1978 г. в США (она был переведен на русский язык в 1985 году). Роль этой книги как неофициального стандарта языка Си сохранилась до наших дней. Не случайно во всей литературе и различной документации по компиляторам ссылки на эту работу обозначены специальной аббревиатурой K & R [2].

          Первый официальный стандарт языка Си был принят в 1989 году Американским национальным институтом стандартов (ANSI). Эта версия языка называется C89 на практике. Этот стандарт также был принят международной организацией по стандартизации (ISO). В 1995 году стандарт C89 был слегка модифицирован [25].

          C ++ (на русском языке это читается как «Си Плюс Плюс», как развитие языка C, появившегося в 1979 году. Он был разработан Бьярни Страуструпом, который начал работать в Bellabs в то время. Разработка и совершенствование язык C ++ вызвал значительные усилия его создателя в 80-х-90-х годах. В результате стандарт ANSI / ISO для C ++ был принят в 1998 году. В целом, C ++ является объектно-ориентированной, улучшенной версией язык C.C ++ основан на версии C89, которая содержала все изменения в 1995 году. И теперь эта версия C89 называется C-подмножеством языка C ++. Несмотря на то, что C ++ был задуман как набор объектно-ориентированных расширений для языка Си, позже он смог развиваться как самостоятельный язык программирования [13].

           Сегодня его новые инструменты почти удвоили области исходного языка. Нет необходимости доказывать, что C ++ является одним из самых мощных компьютерных языков, разработанных до сих пор.

В 1999 году был принят второй стандарт ANSI / ISO для языка Си. Эта версия называется C99, которая включает в себя набор улучшений, а также некоторые новые инструменты. Некоторые из этих «новых» инструментов пришли из языка C ++, в то время как другие предоставляют пользователю совершенно новые, новые функции. Таким образом, некоторые элементы, введенные в C99, несовместимы с языком C ++. Это означает, что с появлением версии C99 стандарт C больше не считается чистым подмножеством C ++ [13].

К счастью, причина многих «несовместимостей» связана со специальными транспортными средствами, которые можно легко преодолеть. В результате эта версия языка C позволяет создавать программы, совместимые с языком C ++.

В течение следующих нескольких лет была проведена работа по разработке новых стандартов для языков C и C ++, которые были завершены в конце 2011 года [3].

В октябре 2011 года был введен новый стандарт языка C ++: «Изучайте C ++ самостоятельно за 21 день. Его обозначение - C ++ 11 или ISO / IEC 14882: 2011. Полная поддержка обещана в GCC 4.7.

А в декабре 2011 года они приняли новый стандарт языка Си. Эта версия условно называется C11 или ISO / IEC 9899: 2011. Некоторые из ее функций уже поддерживаются компилятором GCC [18].

     Сегодня существует очень большое количество языков, подобных Си, которые основаны на языке Си. Наиболее важными из них являются C ++ Бьярни Страуструпа, Java Sun и Microsoft C # (читай C-sharp) [5].

     Азбука языка - это набор знаков (символов), приемлемых для этого языка. Это определение действительно как для человеческого языка, так и для языков программирования [6].

1.2. Понятие языков программирования С и С++

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

    Разработка C не была первоначальной целью его основателей. На самом деле, различные обстоятельства и проблемы создали идеальную ситуацию для его создания. В 1960-х Деннис Ритчи из Bell Bell Labs (AT & T) работал с некоторыми из своих коллег над разработкой операционной системы, которая могла бы использоваться многими пользователями одновременно. Её название Multics, и она должна была позволить многим пользователям совместно использовать общие вычислительные ресурсы. Multics предлагала много преимуществ, но также имели много проблем. Это была большая система, и с точки зрения затрат и выгод, казалось, что затраты перевешивали выгоды. [5]

    Постепенно лаборатории Беллы вышли из проекта. Именно тогда Ричи присоединился к Кену Томпсону и Брайану Кернигану в другом проекте. Проект включал разработку новой файловой системы. Томпсон разработал новую файловую систему для декабрьского суперкомпьютера PRP - 7 на языке ассемблера. После этого создатели файловой системы сделали множество улучшений Unix можно проследить до его предшественника, Multics. Название первоначально было unics (унифицированная информация и вычислительная служба) как каламбур на Multics (мультиплексированные информационные и компьютерные сервисы). Unics был позже изменен на Unix. UNIX был написан на языке ассемблера, что, хотя и идеально для машин, было трудным предложением для людей. [28] Unix Unix для Fortran B. B. Именно здесь идея развития языка C начала формироваться в умах его создателей.

    Первое изменение (пусть и небольшое) произошло, когда Американский национальный институт стандартов (ANSI) сформировал Комитет по стандартизации языка C в 1983 году. После обзора они немного изменили его, чтобы он также был совместим с другими программами. это предшествовало C. Таким образом, новый стандарт ANSI появился в 1989 году и известен как ANSI C или C89. Международная организация по стандартизации (ISO) также внесла вклад в стандартизацию c [10].

     Со временем Си стал использоваться в персональных компьютерах для разработки программных приложений и других целей. C эволюционировал, добавляя важные функции, такие как управление памятью, функции, классы и библиотеки, к своему богатому набору. C используется в некоторых из самых крупных и известных проектов и продуктов в мире. C также повлиял на разработку многих языков: am amp, awk, csh, C ++, C--, C #, Objective-C, бит C, D, Go, Java, JavaScript, Джулия, Limbo, LPC, Perl, PHP, Щука, обработка, Python, RUST, Seed7, Vala Ver Verilog [21].

Особенности этого языка:

  1. Эффективность. Это связано с тем, что программы, написанные на C, имеют небольшой размер и высокую скорость выполнения одновременно.
  2. Краткость. Это означает, что запись алгоритма является выразительной и лаконичной.
  3. Компактность. Язык содержит небольшое количество встроенных инструментов и ключевых слов.
  4. Мощность. Сила применения достигается за счет использования большого количества библиотек [11].
  5. Портативность. Компиляторы созданы для всех ОС и аппаратных платформ, поэтому программу можно скомпилировать и запускать практически везде [11].

    Конечно, язык Си имеет свои недостатки. Это может включать в себя довольно слабый контроль преобразования типов и уязвимость в процессе работы с адресами и динамической памятью, что позволяет легко допустить ошибку в программе, которую потом будет сложно обнаружить. С другой стороны, эти недостатки позволили создать исполняемый код, который приближает эффективность программы на языке ассемблера. В 1981 году появился язык C ++, который многие называют «C с классами». Автор языка - Бьярн Страуструп внес вклад в добавление методов объектного языка к знакомым C-классам, которые служат для представления внутренней структуры объектов, механизма наследования и новых инструментов для работы с динамической памятью и вводом-выводом. Благодаря этим инструментам вы можете не только писать объектно-ориентированные программы, но и создавать библиотеки шаблонов и классов, то есть расширять пользовательские инструменты и область действия самого языка. C / C ++ сочетает в себе вышеуказанные преимущества C и новые возможности C ++, предоставляя возможность «изнутри» изучать принципы программирования высокого уровня [11].

          Язык C ++ содержит инструменты и методы как для программирования высокого, так и низкого уровня. К первым относятся классы, структуры, механизмы наследования и позднего связывания, а также шаблоны. Второй может включать в себя механизм указателя, работу с символьными битами и работу с механизмом прерывания. Это делает C ++ очень привлекательным для решения широкого круга задач [1].

   В C ++ алфавит можно разделить на группы знаков:

  • заглавные и строчные латинские буквы (A, B, ..., Z, a, b, ..., z);
  • Арабские цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  • специальные знаки: ", {} | [] () + - /% \; '.:? <=> _! & * # ~ ^
  • пробелами являются пробелы, символы табуляции и символы новой строки [4].

    Идентификатор - это имя объекта в программе. Например, имена присваиваются переменным, функциям, классам и т. Д. Имя может состоять из букв латинского алфавита, цифр и символа _ (подчеркивание). Имя может начинаться с буквы или подчеркивания, но не с цифры. Важно отметить, что прописные и строчные латинские буквы, используемые в идентификаторах, считаются разными (это требование является общим для всех C-подобных языков: C, C ++, C #, Java, Perl и многих других. В таких языках, как Fortran, Pascal и Basic, в именах не делается различий между заглавными и строчными латинскими буквами).

Пример допустимых идентификаторов:

alfa, Alfa , ALFA x _x a25 i_tek

Обратите внимание: здесь alfa, Alfa и ALFA - это разные названия [19].

Имена, подобные перечисленным ниже, никогда не должны использоваться в качестве идентификаторов:

25а (начинается с цифры);

Alfa (кириллица не допускается) [7].

Общепринятые рекомендации по использованию имен:

  • желательно, чтобы название объекта было осмысленным;
  • использовать имена, состоящие из заглавных латинских букв, в качестве константных имен, например: PI, GAMMA;
  • не используйте имена, начинающиеся с подчеркивания, так как эти имена часто используются разработчиками компилятора для своих собственных целей;
  • чем больше объем имени, тем более выразительным и длинным должно быть имя. Короткие однобуквенные или двухбуквенные имена допускаются только внутри небольших блоков программы, внутри коротких пользовательских функций [12].

В большинстве случаев длина имени не ограничена, но длина внешних имен (имен библиотек, функций) может быть ограничена операционной системой.

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

В C ++ есть 63 ключевых слова [27].

Таблица 1.

Ключевые слова в C ++

Asm

Do

If

return

typedef

Auto

Double

Inline

short

typeid

Bool

dynamic_cast

Int

signed

typename

Break

Else

Long

sizeof

union

Case

Enum

Mutable

static

unsigned

Catch

Explicit

Namespace

static_cast

using

Char

Export

New

struct

virtual

Class

Extern

Operator

switch

void

const

False

Private

template

volatile

const_cast

Float

Protected

this

wchar_t

continue

For

Public

throw

while

default

Friend

Register

true

delete

Goto

reinterpret_cast

Try

Константы являются неизменными значениями. В C ++ существует пять типов констант: целочисленные, вещественные, символьные, строковые и логические [12].

  1. Целочисленные константы. Правила языка позволяют использовать целочисленные константы трех типов: десятичные, шестнадцатеричные и восьмеричные. База определяется префиксом в записи константы. Вам не нужен префикс для десятичных констант.

Десятичное целое число - это последовательность десятичных цифр, которая не начинается с нуля (если это не число ноль), например:

100 25 0 2009

Восьмеричное целое число - это последовательность цифр, которая начинается с 0 и не содержит десятичных цифр старше 7, например:

016 - восьмеричное представление десятичного целого числа 14;

025 - восьмеричное представление десятичного целого числа 21.

Шестнадцатеричное целое число - это последовательность шестнадцатеричных цифр (0, 1, ..., 9, A, B, C, D, E, F), перед которыми стоят символы 0x или 0X, например:

0x25 - шестнадцатеричное представление десятичного целого числа 37;

0XFF - шестнадцатеричное представление десятичного целого числа 255.

  1. Материальные константы. Для представления действительных (нецелых) чисел используются константы, которые представлены в памяти компьютера в форме с плавающей запятой. Каждая действительная константа состоит из следующих частей: целая часть (десятичная константа); десятичная точка; дробная часть (десятичная константа); знак индикатора «е» или «е». десятичная степень цифры (десятичная целочисленная константа, возможно со знаком) [14].

при записи констант с плавающей точкой целая или дробная часть может быть опущена (но не одновременно); десятичная точка или символ степени с индикатором питания (но не одновременно). Примеры констант с плавающей точкой:

125. 3.14159265 1.0 e-5. 314159E25 0,0 [14].

  1. Символы или символьные константы. Символьные константы используются для представления отдельных символов, которые имеют индивидуальные внутренние коды. Каждая символьная константа является токеном, который состоит из изображения символа и ограничивающих апострофов. Например: «А», «А», «5», «?» и т. д. [8]
  2. Любой символ, отображаемый на дисплее или принтере в текстовом режиме, может быть написан внутри апострофов. Однако компьютер также использует коды, которые не имеют графического представления на экране дисплея, клавиатуре или принтере. Примерами таких кодов являются код перехода курсора на новую строку или код возврата каретки (возврат курсора в начало текущей строки). Для изображений соответствующих символьных констант в программе используется комбинация нескольких символов с графическим представлением. Каждая такая комбинация начинается с символа «\» (обратный слеш). Такие наборы букв, начинающиеся с символа «\», в литературе называются управляющими последовательностями на C и C ++.

Ниже приведен их список:

'\ n' - новая строка;

'\ t' - горизонтальная вкладка;

'\ r' - возвращает каретку (курсор) в начало строки;

'\\' - обратная косая черта \;

'\ "- апостроф (одинарная кавычка);

'\ "' - кавычка (символ двойной кавычки);

'\ 0' - нулевой символ;

'\ a' - мелодия звонка;

'\ b' - вернуть одну позицию (один символ);

'\ f' - перевод страницы (запуск);

'\ v' - вертикальная вкладка;

'\? - знак вопроса. [27]

Обратите внимание, что перечисленные константы представлены двумя или более буквами, и они представляют одну символьную константу, которая имеет отдельный двоичный код. Управляющие последовательности представляют собой особый случай escape-последовательностей, которые также включают в себя токены вида '\ ddd' или '\ xhh' или '\ Xhh', где

'\ ddd' - восьмеричное представление любой символьной константы. Здесь d - восьмеричное число (от 0 до 7). Например, «\ 017» или «\ 233».

«\ xhh» или «\ Xhh» - шестнадцатеричное представление любой символьной константы. Здесь h - шестнадцатеричная цифра (от 0 до F). Например, «\ x0b», «\ x1A» и т. д. [15]

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

  1. Строки или строковые константы. Строки на самом деле не являются константами языка C ++, но представляют собой отдельный тип его лексем [22].

В литературе для них используется другое название: «строковые литералы». Строковая константа определяется как последовательность символов (см. Символьные константы выше), заключенная в двойные кавычки (не апострофы!):

«Это строка».

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

"\ n Текст \ n будет помещен \ n на 3 строки"

Представление строковых констант в памяти компьютера подчиняется следующим правилам. Все символы в строке помещаются в строку, и каждый символ (включая символ, представленный escape-последовательностью) занимает ровно 1 байт. В конце записи строковой константы компилятор помещает символ '\ 0' [5].

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

«Строка из 18 байтов».

Внимание. При работе с символьной информацией важно помнить, что длина символьной константы, такой как «A», составляет 1 байт, а длина строки «A» - 2 байта, поскольку строка заканчивается нулевым символом ('\ 0 «).

  1. Булевы константы. Есть только два значения: true - true и false-false [5].

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

Комментарии игнорируются компилятором языка программирования и имеют отношение только к пользователю. В C ++ есть два типа комментариев: однострочные и многострочные.

Однострочный комментарий начинается с символов / / (две косые черты). Все, что написано после этих символов и до конца строки, считается комментарием. Например:

// Это текст комментария

Многострочный комментарий начинается с пары символов / * (косая черта и звездочка) и заканчивается * / символами (звездочка и косая черта). Текст такого комментария может занимать одну или несколько строк. Все, что находится между / * и * / считается комментарием [20].

Например:

/ * Это мой большой

многострочный комментарий * /

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

ГЛАВА 2.ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ JAVA

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

Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик ПО Sun Microsystems SOFTWARE Патрик Нотон осознал, что устал от поддержки сотен различных программных интерфейсов, используемых компанией, и сообщил исполнительному директору Sun Microsystems и его другу Скотту Макнили о своем намерении присоединиться к NeXT. Макнили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть решение проблем, как если бы он был Богом и мог сделать что угодно. [23]

   Нотон, хотя он и не ожидал, что кто-то обратит внимание на его письмо, тем не менее изложил свои претензии, беспощадно критикуя недостатки Sun Microsystems, в частности архитектуры ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, разрабатываемой в то время. К удивлению Нотона, его письмо было успешным: оно было отправлено всем ведущим инженерам Sun Microsystems, которые не замедлили ответить и выразили горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение было одобрено высшим руководством компании, а именно Биллом Джой (BillJoy), основателем Sun Microsystems, и Джеймсом Гослингом (JamesGosling), главой Naughton [17].

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

    Команда из шести человек под кодовым названием «Грин» отправилась в добровольное изгнание, приняв участие в исследовании бытовых устройств, таких как Nintendo Gameboys, устройства дистанционного управления. [2] Зеленая команда пыталась найти способ установить взаимодействие между этими устройствами. Вскоре стало ясно, что электрические устройства, такие как видеомагнитофоны, проигрыватели лазерных дисков и стереосистемы, были реализованы на разных процессорах. Это означало, что, если производитель хотел добавить дополнительные функции или функции к телевизору или видеомагнитофону, он был бы зажат в средствах, встроенных в аппаратное обеспечение. Эта проблема в сочетании с ограниченным объемом памяти чипов этих устройств выдвинула новый подход к программированию ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, который должен был стать ведущим на рынке бытовой электроники [24].

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

Вскоре Sun Microsystems превратила команду Зеленых в Первого Человека. У новой компании была интересная концепция, но она не смогла найти для нее подходящего приложения. После ряда неудач ситуация для компании неожиданно изменилась: была объявлена ​​Mosaic - так появилась World Wide Web, которая положила начало быстрому развитию Интернета [26].

     Нотон предложил использовать Oak для создания интернет-приложений. Таким образом, Oak стал независимым продуктом, и вскоре были написаны Oak-компилятор и Oak-браузер "WebRunner". В 1995 году Sun Microsystems решила анонсировать новый продукт, переименовав его в Java (единственное разумное объяснение имени - любовь программистов к кофе). Когда Java попала в руки Интернета, возникла необходимость запускать Java-апплеты - небольшие программы, загружаемые через Интернет. WebRunner был переименован в HotJava, а Netscape начал поддерживать продукты Java [15].

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

Java - это язык программирования, разработанный в Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной машине Java (JVM) независимо от самой архитектуры компьютера. Официальная дата выпуска языка - 23 мая 1995 года. Сегодня технология Java предоставляет инструменты для превращения статических веб-страниц в интерактивные динамические документы, а также возможность создавать распределенные (независимые от платформы) приложения.

«Группе было поручено создать распределенную систему, которая могла бы продаваться как современная технология программного обеспечения производителям бытовой электроники. Джон Родли создал Java-апплеты [28].

    Гослинг в свои 40 лет пришел в Sun в 1984 году из исследовательского отдела IBM. Его первая задача, проект, представляет интерес с технической точки зрения, но не является коммерчески успешным оконным интерфейсом NeWS. Он также написал GOSMACS, первую реализацию текстового редактора EMACS на C [26].

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

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

Принимая во внимание произношение на русском языке, мы видим, что были сформированы две разные нормы этого языка - заимствованная англоязычная «Джава» и традиционная национальная «Ява», что соответствует принятому произношению названия острова Ява. Sun придерживается первого варианта - английского произношения везде. Иногда в повседневной жизни также используется сленговое слово «жаба» (например, изображение жабы есть в календаре группы русских пользователей Java (JavaUsersGroup) [19].

Java - это не только название самого языка, но и платформа для создания и выполнения приложений на этом языке.

     Первоначально язык назывался Oak («дуб») и разрабатывался, как отмечалось выше, Джеймсом Гослингом для программирования бытовых электронных устройств. Затем он был переименован в Java и использовался для написания клиентских приложений и серверного ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. честь марки кофе Java, которая была так любима некоторыми программистами, поэтому на официальном логотипе языка изображена чашка с дымящимся кофе. Конечно, существует и другая версия происхождения названия Java, а именно Java - сленг обозначение кофе (названного в честь одноименного острова, который производит популярный кофе) с указанием на кофемашину, в качестве примера бытовой техники, на программирование того, что изначально было создано языком [18].

    Гослинг не хотел связывать разработку с конкретной платформой, поэтому он начал с расширения компилятора C ++. Со временем стало ясно, что независимо от того, как вы расширяете C ++, он никогда не сможет удовлетворить все существующие потребности в одиночку. Результатом этого понимания стало создание языка Oak (позже, при поиске товарного знака, его имя было изменено на Java). «В конце концов, язык - это средство, а не самоцель», - объясняет Гослинг. - Мы не собирались зацикливаться на C ++, но хотели разработать систему, которая позволила бы вам создать большую распределенную гетерогенную сеть бытовых электронных устройств, которые могут взаимодействовать друг с другом. Джон Родли Создание Java-апплетов [14].

     В конце 1992 года, по словам тогдашнего инженера проекта Патрика Нотона, «огромные усилия по переработке дуба и других компонентов», команда проекта «Зеленый» выпустила «*7» - PDA-тип устройство под названием Гослинг "ручное дистанционное управление".

«За полтора года мы сделали столько же, сколько другие крупные команды в Sun сделали за три года», - с гордостью отмечает Нотон. - Операционная система GreenOS, язык, инструменты, пользовательский интерфейс, новая аппаратная платформа, три пользовательских чипа ... и каждый этап был связан с риском, потому что мы использовали совершенно новые технологии » [20].

    Прежде чем присоединиться к команде Green, 30-летний Нотон руководил проектом Sun по разработке пользовательской среды Open Window.

Небольшой размер устройства * 7 показал в выгодном свете компактность и эффективность кода, который был основой технологии. Этот продукт был широко продемонстрирован на Солнце, и он смог произвести впечатление на таких важных людей, как Скотт Макнили и Билл Радость, но то, что случилось с ним позже, остается неизвестным. [8]

   Гослинг полагал, что браузер - это компонент, который «создает рынок» для всех инструментов, серверов и сред разработки. И именно язык Java играет центральную, доминирующую роль во всех этих инструментах. До Java страница WWW была фактически листом бумаги. С появлением Java браузер устанавливает структуру и значительно расширяет возможности поставщиков контента.

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

   Если у нас есть такие инструменты, как Java и Web, мы можем получить изначально организованную систему, - подчеркивает Гомслинг. «Если вы создаете клиентскую часть приложения на Java, для ее запуска достаточно перейти на соответствующую страницу. Установка проста - просто поместите необходимое программное обеспечение на веб-сервер [9]. И проблем не будет с портированием, в связи с тем, что существует только одна версия приложения. " Многие фирмы, по словам Гослинга, уже организуют базы данных в виде веб-страниц, используя Common Gateway Interface (CGI) - особый стандарт для запуска внешних программ на HTTP-сервере.

Java-программы преобразуются в байт-код, который выполняется виртуальной машиной Java (JVM), программой, которая обрабатывает байт-код и затем передает инструкции оборудованию в качестве интерпретатора [5].

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

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

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

- применение технологии для перевода байт-кода в машинный код непосредственно во время работы программы (технология JIT) при сохранении версий классов в машинном коде;

- широкое использование платформенно-ориентированного кода (native-кода) в стандартных библиотеках;

- аппаратное обеспечение, обеспечивающее ускоренную обработку байт-кода (например, технология Jazelle, которая поддерживается некоторыми процессорами ARM) [19].

    По данным сайта shootout.alioth.debian.org для 7 различных задач, время выполнения в Java в среднем в 1,5-2 раза больше, чем в C / C ++, а в некоторых случаях Java даже быстрее, а в некоторых случаях в 7 раз помедленнее. С другой стороны, для большинства из них потребление памяти на Java-машине было в 10-30 раз больше, чем на C / C ++-программе. Также заслуживает внимания исследование, проведенное Google, согласно которому производительность в тестовых случаях на Java значительно ниже, чем в аналогичных программах на C ++ [13].

Идеи, лежащие в основе концепции и различных реализаций среды виртуальных машин Java, вдохновили многих энтузиастов на расширение списка языков. Который может быть использован для создания программ, которые работают на виртуальной машине. Эти идеи также выражены в спецификации CLI инфраструктуры общего языка, которая является основой платформы .NET от Microsoft.

Основные возможности:

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

- расширенные функции для обработки исключительных ситуаций;

- богатый набор инструментов фильтрации ввода / вывода;

- набор стандартных коллекций, таких как массив, список, стек и т. д. [10];

- наличие простых инструментов для создания сетевых приложений (в том числе с использованием протокола RMI);

- наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;

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

- унифицированный доступ к базам данных:

- на уровне отдельных SQL-запросов - на основе JDBC, SQLJ;

- на уровне концепции объектов, которые могут храниться в базе данных - на основе Java Data Objects и Java Persistence API;

- поддержка шаблонов (начиная с версии 1.5).

- параллельное выполнение программ [10].

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

   В отличие от C ++, Java не поддерживает перегрузку операторов или множественное наследование для классов, хотя множественное наследование поддерживается для интерфейсов. [1]

    Java использует комментарии, аналогичные тем, которые используются в C ++. Существует три различных стиля комментариев: один линейный стиль, помеченный двумя косыми чертами (/ /), множественный линейный стиль, открытый / * и закрытый * /, и стиль комментария Javadoc, открытый / ** и закрытый * /.

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

Традиционная программа Hello world может быть написана на Java следующим образом:

Рисунок 1. программа Hello world написанная на Java

Алфавитный язык Java состоит из букв, десятичных цифр и специальных символов. Буквы считываются латинскими буквами (кодируются в стандарте ASCII), буквами алфавитов (кодируются в стандарте Unicode, кодировка UTF-16), а также в них отображаются символы, кодируемые управляющими последовательностями. Буквы и цифры можно использовать в качестве идентификаторов языков программирования. Правда, при использовании в идентифицированных символах будут возникать проблемы.

В алфавитном порядке. Остальные символы национальных алфавитов - это специальные символы. Ява и не могут входить в состав идентификаторов [18].

Латинские буквы ASCII

• ABED ... XYZ - заглавные (прописные),

• abed ... xyz - строчные

Дополнительные "буквы" ASCII

• _ - знак подчеркивания,

• $ - знак доллара.

Национальные буквы на примере русского алфавита

• АБВГ ... ЭЮЯ - заглавные (прописные),

• абвг ... эюя - строчные

• Десятичные цифры0 1 2 3 4 5 6 7 8 9 [10].

Десятичные и шестнадцатеричные цифры и целые числа

Целые числовые константы в исходном коде Java (так называемые литерные константы) могут быть десятичными или шестнадцатеричными. Они записываются либо символами ASCII, или символами Unicode следующим образом [10].Десятичные константы записываются как обычно. Например, -137.

    Шестнадцатеричная константа начинается с символов 0 или 0 (цифра 0, после которой следует латинская буква X), а затем идет само число в шестнадцатеричной нотации. Например, 0x10 соответствует; 0x2F соответствует, и т.д. О шестнадцатеричной нотации рассказано чуть ниже [7].

Ранее использовавшиеся восьмеричные числа и на языках C / C, а также старые версии Java можно было записать в виде числа, начиная с цифр 0. То есть 010 означало [7].

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

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

Поясним теперь, что такое шестнадцатеричная нотация записи чисел и зачем она нужна.

    Последовательность бит в компьютере в двоичном виде. Бит - это минимальная порция информации, которую он может представлять в видеобъектах, в которой хранится или ноль, или единица. Информация хранится, кодируется и передается байтами - порциями по 8 бит.

     Под "ячейкой памяти" будет пониматься непрерывная область памяти (выделенная программа для хранения данных). На рисунках мы будем изображать ячейки данных. Если у вас есть имя, оно будет написано рядом с этим прямоугольником [27].

     Мы привыкли работать с числами, записанными в так называемой десятичной системе счисления. В ней имеется 10 цифр (от 0 до 9), а в наличии имеются десятичные разряды. Каждый разряд слева имеет вес 10, по сравнению с предыдущим, чтобы получить значения числа. То есть, и т.п.

     В программировании десятичной системы счисления пользоваться не всегда удобно, так как компьютерная информация организована в виде битов, более крупных порций. Человеку неудобно оперировать данными в виде длинных последовательных нулей и единиц. В настоящее время система программирования является шестнадцатеричной системой записи чисел. Это означает, что значения в битах определяются шифрованием и дешифрованием информации, и так далее. В этой системе используются только десятичные числа, но не только 10, а 16 цифр и вес разряда не 10, а 16. В качестве первых 10 цифр используются обычные десятичные цифры, а в качестве недостающих цифр - большие 9, используются заглавные латинские буквы A, B, C, D, В, F:

• 0 1 2 3 4 5 6 7 8 9 A B C D IN F

То есть A = 10, B = 11, C = 12, D = 13, In = 14, F = 15 [20].

В шестнадцатеричной записи числа от 0 до 9 пишутся одинаково, но числа больше 9 отличаются. Для чисел от 10 до 15 шестнадцатеричная система счисления использует буквы от A до F, после чего используется следующая шестнадцатеричная цифра. Десятичное число 16 в шестнадцатеричном виде записывается как 10. Чтобы не перепутать числа, записанные в разных системах счисления, напишите справа от них указатель, указывающий основание системы счисления [14].

     Для десятичной системы счисления это 10, шестнадцатеричное 16. Для десятичной системы счисления обычно не указывается, не приводит ли это к путанице. Точно так же в технической литературе часто не указывается основание для чисел, написанных в шестнадцатеричной записи, если число написано не только «нормальными» числами от 0 до 9, но также и «буквенными» числами от A до F. Обычно используются заглавные буквы , но строчные буквы также могут быть использованы [3].

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

Таблица 2.

Слова, зарезервированные для синтаксических конструкций языка

abstract

Boolean

break

Byte

case

catch

Char

class

Const

continue

default

Do

double

Else

enum

extends

False

final

Finally

float

for

goto

if

implements

import

instanceof

Int

interface

Long

native

new

null

package

Private

protected

public

return

short

Static

super

switch

synchronized

this

Throw

throws

transient

true

try

Void

volatile

while

Их нельзя использовать в качестве идентификаторов (имен переменных, подпрограмм и т. Д.), Но их можно использовать в строковых выражениях.

     В Java есть только 8 примитивных (скалярных, простых) типов: логический, байтный, char, short, int, long, float, double [13].

     Длина и диапазоны типов примитивов определяются стандартом, а не реализацией, и показаны в таблице. Тип char был сделан двухбайтовым для простоты локализации (один из идеологических принципов Java): на момент формирования стандарта Unicode-16 уже существовал, но не Unicode-32. Поскольку не осталось однобайтового типа, был добавлен новый тип байта, и в Java, в отличие от других языков, он не является беззнаковым. Типы float и double могут иметь специальные значения, а не «число» (NaN).

Для типа double они обозначаются Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN; [16]

для типа float они одинаковы, но с префиксом Float вместо Double. Минимальные положительные значения, принятые типами float и double, также стандартизированы (Таблица 3).

Таблица 3.

Минимальные положительные значения, принятые типами float и double

Тип

Длина (в байтах)

Диапазон или набор значений

boolean

не определено

true, false

byte

1

?128..127

char

2

0..216?1, или 0..65535

short

2

?215..215?1, или ?32768..32767

int

4

?231..231?1, или ?2147483648..2147483647

long

8

?263..263?1, или примерно ?9.2·1018..9.2·1018

float

4

-(2-2?23)·2127..(2-2?23)·2127, или примерно ?3.4·1038..3.4·1038, а также , , NaN

double

8

-(2-2?52)·21023..(2-2?52)·21023, или примерно ?1.8·10308..1.8·10308, а также , , NaN

Эта строгая стандартизация была необходима, чтобы сделать язык независимым от платформы, что является одним из идеологических требований для Java и одной из причин его успеха. Тем не менее, одна небольшая проблема с независимостью платформы все еще остается. Некоторые процессоры используют 10-байтовые регистры для промежуточного хранения результатов или повышения точности вычислений другими способами. Чтобы сделать Java максимально совместимым между различными системами, в ранних версиях были запрещены любые способы повышения точности вычислений. Однако это привело к снижению производительности. Оказалось, что ухудшение точности ради независимости платформы не нужно многим людям, особенно если вам приходится платить за это замедлением работы программ. После многочисленных протестов этот запрет был снят, но было добавлено ключевое слово strictfp, запрещающее повышение точности [20].

В Java применяются следующие правила:

  1. Если один операнд имеет тип double, другой также преобразуется в тип double.
  2. В противном случае, если один операнд имеет тип с плавающей точкой, другой также преобразуется в тип с плавающей точкой.
  3. В противном случае, если один операнд имеет тип long, другой также преобразуется в тип long.
  4. В противном случае оба операнда преобразуются в тип int. [24]

     Этот метод неявного преобразования встроенных типов точно такой же, как преобразование типов в C ++.

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

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

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

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

Java не поддерживает арифметику указателей в стиле C / C ++, где адреса объектов могут обрабатываться арифметически (например, путем добавления или вычитания смещений). Это позволяет сборщику мусора перемещать указанные объекты и обеспечивает безопасность типов и безопасность.

Как и в C ++ и некоторых других объектно-ориентированных языках, переменные примитивных типов данных Java хранятся либо непосредственно в полях (для объектов), либо в стеке (для методов), а не в куче, что обычно верно для не примитивных типы данных (но см. раздел escape-анализ). Это было сознательное решение Java-разработчиков по соображениям производительности.

Java содержит несколько типов сборщиков мусора. По умолчанию HotSpot использует мусор параллельной очистки. Однако есть также несколько других сборщиков мусора, которые вы можете использовать для управления кучей. Для 90% Java-приложений достаточно параллельного сборщика мусора Mark-Sweep (CMS). Oracle стремится заменить CMS первым сборщиком мусора (G1).

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

     В данной курсовой работе я рассмотрел наиболее распространенные языки программирования C и Java.

    В ходе курса были выполнены все задачи:

1. Описана краткая история развития языков Си и Си ++;

3. Освящена краткая история языка программирования Java;

4. Рассмотрены основные понятия языка Java и Си и Си ++.

Цель курсовой работы достигнута.

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

1. Александреску А. Язык программирования D / А. Александреску. — М.: Символ, 2016. — 536 c.

2. Александреску А. Язык программирования D / А. Александреску. — СПб.: Символ-плюс, 2017. — 544 c.

3. Ашарина И.В. Основы программирования на языках С и С++: Курс лекций для высших учебных заведений / И.В. Ашарина. — М.: Гор. линия-Телеком, 2018. — 208 c.

4. Баженова И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. — М.: ИЦ Академия, 2018. — 368 c.

5. Белоусова С.Н. Основные принципы и концепции программирования на языке VBA в Excel: Учебное пособие / С.Н. Белоусова, И.А. Бессонова. — М.: БИНОМ. ЛЗ, 2017. — 200 c.

6. Бьянкуцци Ф. Пионеры программирования: Диалоги с создателями наиболее популярных языков программирования / Ф. Бьянкуцци, Ш. Уорден; Пер. с англ. С. Маккавеев. — СПб.: Символ-Плюс, 2017. — 608 c.

7. Бьянкуцци Ф. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования / Ф. Бьянкуцци, Ш. Уорден. — М.: Символ, 2018. — 608 c.

8. Бьянкуцци Ф. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования / Ф. Бьянкуцци, Ш. Уорден. — СПб.: Символ-плюс, 2018. — 608 c.

9. Гавриков М.М. Теоретические основы разработки и реализации языков программирования: Учебное пособие / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. — М.: КноРус, 2016. — 184 c.

10. Гергель В.П. Современные языки и технологии паралелльного программирования: Учебник / В.П. Гергель. — М.: МГУ, 2016. — 408 c.

11. Гергель В.П. Современные языки и технологии параллельного программирования: Учебник/ предисл.: В.А. Садовничий. / В.П. Гергель. — М.: Изд. МГУ, 2016. — 408 c.

12. Голицына О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2017. — 400 c.

13. Головин И.Г. Языки и методы программирования: Учебник для студентов учреждений высшего профессионального образования / И.Г. Головин, И.А. Волкова. — М.: ИЦ Академия, 2017. — 304 c.

14. Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. — М.: ДМК, 2016. — 134 c.

15. Дорогов В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. — М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2017. — 224 c.

16. Касторнова В.А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль: Учебное пособие / В.А. Касторнова. — СПб.: BHV, 2016. — 304 c.

17. Кауфман В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2017. — 464 c.

18. Керниган Б. Язык программирования C. 2-е изд. / Б. Керниган, Д.М. Ритчи. — М.: Вильямс, 2016. — 288 c.

19. Керниган Б.У. Язык программирования С / Б.У. Керниган, Д.М. Ритчи; Пер. с англ. В.Л. Бродовой. — М.: Вильямс, 2016. — 304 c.

20. Маслов, В.В. Основы программирования на языке Perl / В.В. Маслов. — М.: Радио и связь, 2016. — 144 c.

21. Монахов В.В. Язык программирования Java и среда NetBeans. 3-е изд., пер. и доп. + DVD / В.В. Монахов. — СПб.: BHV, 2017. — 704 c.

22. Новичков В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2017. — 268 c.

23. Страуструп Б. Язык программирования C++: Специальное издание / Б. Страуструп; Пер. с англ. Н.Н. Мартынов. — М.: БИНОМ, 2017. — 1136 c.

24. Страуступ Б. Язык программирования С++. Специальное издание / Б. Страуступ. — М.: Бином, 2015. — 1136 c.

25. Троелсен Э. Язык программирования С# 5.0 и платформа .NET 4.5 / Э. Троелсен; Пер. с англ. Ю.Н. Артеменко. — М.: Вильямс, 2016. — 1312 c.

26. Фридман А.Л. Основы объектно-ориентированного программирования на языке Си++ / А.Л. Фридман. — М.: Гор. линия-Телеком, 2016. — 234 c.

27. Хейлсберг А. Язык программирования C#. Классика Computers Science / А. Хейлсберг М. Торгерсен, С. Вилтамут. — СПб.: Питер, 2016. — 784 c.

28. Цуканова Н.И. Теория и практика логического программирования на языке Visual Prolog 7: Учебное пособие для вузов / Н.И. Цуканова, Т.А. Дмитриева. — М.: Гор. линия-Телеком, 2016. — 232 c.