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

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

Содержание:

Введение

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

Языку программирования свойственные две связанные между собой цели: он дает программисту аппарат для того, чтобы задать действия, которые должны быть выполнены, и формируются концепции, используемые программистом, размышляя о том, что делать. Ответом на первую цель является язык, который настолько «близкий к машине», что все основные машинные аспекты могут быть использованы для программиста очевидным образом. Для ответа на вторую цель идеальным является язык, который настолько близок к решаемой задаче, чтобы её концепция решения может быть выражена коротко и прямо.

В настоящее время C++ считают господствующим языком, который используют для того, чтобы разработать коммерческие программные продукты. За последние годы данное господство поколебалось так как были аналогичные претензии от такого языка как Java, но при этом общественное мнение качнулось в другую сторону, и множество из программистов, которые бросили C++ ради Jаvа, за последнее время вернулись к своей прежней привязанности.

Целью работы является изучение истории возникновения и развития языка программирования Си (C++) и Java.

Для достижения этой цели необходимо было решить такие задачи:

Изучение истории языков Си (C++) и Java;

Рассмотрение структур, эффективности, этапов развития и применение;

Дать сравнительный анализ языков Java и C++

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

Предмет исследования: история, этапы, эволюция, потенциал языков.

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

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

1.1 Возникновение и эволюция языка C+ +

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

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

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

С++ появился в начале 1980-х годов. Б. Страуструп, сотрудник фирмы Bell Laboratories, усовершенствовал язык С под свои нужды. То есть изначально он не планировал создавать новый язык. Но в конце 1970-х программист начал работать над проблемами теории очередей (при моделировании телефонных звонков), он обнаружил, что попытки использовать существующие на тот момент языки моделирования, таких, как Симула и BCPL, оказываются неэффективными, а применение высокоэффективных машинных языков слишком сложно. Так, язык Симула имеет полезные функции для разработки большого программного обеспечения, но все работает слишком медленно, а язык BCPL достаточно быстр, но очень близок к низкоуровневым языкам, он не подходит для разработки больших программ.

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

Страуструп добавил к С возможность работы с типами данных (классами) и объектами. Благодаря быстродействию С практические задачи моделирования оказались доступными для решения на момент разработки и вычислений. В первую очередь в C были добавлены типы данных, их наследование, проверка типов и аргументы по умолчанию. Первые версии языка, изначально называвшегося Си с классами, стали доступны с 1980 года. Затем Страуструп создал компилятор cfront, который перерабатывал код С++ в код простого С, что позволило сразу применять его на практике[1].

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

В 1985 году вышло издание Языка программирования C++; это было первое описание языка, которое было очень важным из-за отсутствия официального стандарта.

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

В 1998 году был утвержден международный стандарт языка C++. Он свободен, никто не имеет права владеть им.

Стандарт C++ состоит из двух основных частей: описание стандартного сборника подпрограмм или объектов, используемых для разработки программ, и описание ядра языка. Также, существует огромное количество нестандартных библиотек C++ . В программах на C++ можно использовать многие библиотеки C[2].

Нововведениями C++ в сравнении с C являются:

  • поддержка объектно-ориентированного программирования;
  • поддержка обобщённого программирования;
  • новые типы данных;
  • исключения - реакции программы на ошибки;
  • пространства имён (хранилища для группировки уникальных идентификаторов);
  • встраиваемые функции;
  • перегрузка операторов (существования в одной области видимости нескольких различных вариантов применения оператора);
  • перегрузка имён функций;
  • ссылки и операторы управления свободно распределяемой памятью;
  • дополнения к стандартной библиотеке.

1.2 Структура и эффективность C++

С++ был развит из языка программирования C и за очень немногими исключениями, сохраняет C как подмножество. Базовый язык C - это подмножество С++, разработанное так, что имеется очень близкое соответствие между его типами, операциями и операторами, и компьютерными объектами, с которыми непосредственно приходится иметь дело: числа, символы и адреса. За исключением операций свободной памяти new и delete, отдельные выражения и операторы С++ обычно не нуждаются в скрытой поддержке во время выполнения.

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

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

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

Особое внимание, уделенное при разработке С++ структуре, отразилось на возрастании масштаба программ, написанных со времени разработки C. Небольшую программу (меньше 1000 строк) можно заставить работать с помощью грубой силы, даже нарушая все правила хорошего стиля. Для программ больших размеров это не совсем так. Если программа в 10 000 строк плохо структурирована, то можно обнаружить, что новые ошибки появляются так же быстро, как удаляются старые.

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

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

Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, думая о том, что делать. Первой цели идеально отвечает язык, который настолько «близок к машине», что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько «близок к решаемой задаче», чтобы концепции ее решения можно было выражать прямо и коротко. С таким умыслом предварительно задумывались средства, добавленные к C для создания С++.

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

2.1 Возникновение и эволюция языка Java

Технология Java дает возможность превращать статические Web-страницы в интерактивные динамические документы и создавать распределенные независимые от платформы приложения. Первоначально язык Java корпорации Sun предназначался для устройств бытовой электроники, и некоторые из них все еще могут использовать его раннюю версию, известную как Oak. Однако, Internet стал настоящей стартовой площадкой для быстрого развития Java.

Некоторые полагают, что для успеха любого бизнеса прежде всего необходимо продумать и четко поставить задачу. Однако, очевидно, что в случае с языком программирования Java компании Sun Microsystems проблема была решена до ее формулирования.

Создатель Java Дж. Гослинг считает, что генезис этой технологии можно проследить с начала 1991 года, когда в Sun была создана небольшая группа инженеров для изучения перспектив рынка бытовой электроники. В то время World Wide Web существовала только в проектах.

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

Чтобы не связывать разработку с конкретной платформой, Дж. Гослинг начал с расширения компилятора С++. Со временем он понял, что один лишь С++ не сможет удовлетворить все потребности. Поэтому в середине 1991 года был задуман язык Oak, который впоследствии был заменен на Java.

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

В конце 1992 года, предприняв огромные усилия по доработке Oak и других компонентов было выпущено "*7" - устройство типа PDA, названное Гослингом "ручным пультом дистанционного управления". За полтора года ими было сделано столько же, сколько иные большие коллективы в Sun делали за три года: Операционную систему GreenOS, язык, инструментарий, пользовательский интерфейс, новую аппаратную платформу, три заказных микросхемы и каждый этап был связан с риском, т.к. были использованы совершенно новые технологии.

Малогабаритность устройства «*7» выгодно подчеркивала компактность и эффективность кода, являвшегося ядром технологии.

К середине 1994 года сеть World Wide Web выглядела уже вполне солидно. Был создан первоклассный браузер. Это один из немногих компонентов архитектуры клиент-сервер, который был наделен такими необходимыми ему качествами, как независимость от архитектуры, работа в реальном времени, надежность, безопасность, не имеющие такого значения для рабочих станций. Поэтому и был разработали браузер.

К осени был закончен WebRunner - Web-браузер, написанный на языке Java. Первая реализация HotJava проявила Java-технологию в новом свете.

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

До появления Java страница WWW фактически представляла собой листок бумаги. С появлением Java браузер задает структуру и резко расширяет возможности провайдеров содержания.

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

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

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

Уже вскоре после выпуска версии Java 1.0, разработчики создали версию Java 1.1. Добавленные функциональные возможности значительно превосходили те, которые можно было ожидать, судя из изменения подномера версии.

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

Таким образом, в версии Java 1.1 были добавлены новые атрибуты и удалены некоторые атрибуты, определенные в первоначальной спецификации.

Следующей базовой версией Java стала версия Java 2 (второе поколение). Создание Java 2 явилось знаменательным событием, которое означало начало "современной эры" Java. Первой версии Java 2 был присвоен номер 1.2.

С появлением версии Java 2 компания Sun стала выпускать программное обеспечение Java в виде пакета J2SE (Java 2 Platform Standard Edition — Стандартная версия платформы Java 2.

В Java 2 была добавлена поддержка ряда новых функций (Swing и Collections Framework), были усовершенствованы виртуальная машина Java и различные средства программирования. Из Java 2 был исключен ряд свойств. Версия J2SE 1.3 была первой серьезной модернизацией первоначальной версии Java J2SE. В основном модернизация свелась к расширению существующих функциональных возможностей и уплотнению среды разработки.

Версия J2SE 1.4 продолжила совершенствование языка Java. Версия J2SE 1.4 содержала несколько важных модернизаций, усовершенствований и добавлений: в нее было добавлено новое ключевое слово assert, цепочки исключений и подсистема ввода-вывода на основе каналов. Несмотря на значительное количество новых функциональных возможностей, версия 1.4 сохранила стопроцентную совместимость по исходному коду с предшествующими версиями.

Следующей версией стала версия J2SE 5, в которой был внесен ряд революционных изменений. В отличие от старых модернизаций Java, J2SE 5 коренным образом расширяет область применения, возможности и диапазон языка. Чтобы оценить объем изменений, которые были внесены в язык Java в версии J2SE 5, ознакомимся с перечнем основных новых функциональных возможностей:

• общие функции;

• аннотации;

• автоматическое помещение в контейнер и автоматическое извлечение из контейнера;

• перечисления;

• усовершенствованный, поддерживающий стиль for-each, цикл for;

• аргументы переменной длины (varargs);

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

• форматированный ввод-вывод;

• утилиты параллельной обработки.

Важность новых функциональных возможностей нашла отражение в примененном номере версии - "5". Если следовать привычной логике, следующим номером версии Java должен был быть 1.5, но новые свойства настолько значительны, что переход от версии 1.4 к версии 1.5 не отражал масштаб внесенных изменений. Поэтому, чтобы подчеркнуть ее значимость, в компании Sun решили присвоить новой версии номер 5 (J2SE 5), а комплект разработчика - JDK 5.

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

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

История разработки языка Java, изложенная П. Нотоном, соавтором браузера HotJava и нынешним вице-президентом по технологии корпорации Starwave.

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

В 1991 году проходит совещание типа мозгового штурма по проекту Stealth, в котором участвовали Б. Джой, Э. Бехтолсхейм, У. Розинг, М. Шеридан, Дж. Гослинг и П. Нотон, которые серьезно взялись за работу. Нотон занимается графической системой Aspen, Гослинг - идеями языка программирования, а Шеридан - бизнес-разработкой. Проект продолжается под названием Green.

В 1992 году начинается интенсивная деятельность по доработке Oak, Green OS, пользовательского интерфейса, аппаратуры Star7 и соответствующих компонентов. Осенью 1992 годя завершают разработку устройства Star7.

В январе 1993 года коллектив переезжает в Пало Альто в здание, где раньше находилась лаборатория Western Research Lab компании DEC и была основана исходная группа Hamilton Group. После ознакомления с результатами испытаний кабельного интерактивного телевидения, проведенных компанией Time Warner, корпорация FirstPerson сосредотачивается на этой тематике и в апреле 1993 года выпускают первого графического браузера для Internet - Mosaic 1.0, разработанного в центре NCSA.

В конце 1993 года экспертиза операций на высоком уровне в FirstPerson обнаруживает, что у группы нет реальных партнеров (маркетинговой стратегии) и неясно представляет себе дату выпуска. Приходится отменить публичное заявление компании FirstPerson о выпуске, которое должно было состояться на конференции Technology, Entertainment and Design.

25 апреля 1994 года была создана компания Sun Interactive, куда переходит половина сотрудников FirstPerson.

В июне 1994 года был начат проект Liveoak, который нацелен Биллом Джоем на использование Oak в крупном проекте небольшой операционной системы.

Осенью 1994 года исполнительным лицам компании Sun впервые продемонстрирован прототип HotJava, затем Нотон уходит в компанию Starwave.

Осеню 1994 года Ван Хофф реализует компилятор Java на языке Java.

В 1995 году компания Sun официально представляет Java и HotJava на выставке SunWorld '95.

Одним из наиболее интересных аспектов Java-программирования являются Java-апплеты.

Java-апплет -- это Java-приложение с байт-кодом.

Java-апплеты выполняются в веб-браузере с использованием виртуальной Java-машины (JVM) или в Sun'sAppletViewer, автономном инструменте тестирования апплетов. Java-апплеты были введены в первой версии языка Java, в 1995 году.

Java-апплеты пишутся в основном на языке программирования Java, но могут быть написаны и на других языках, которые компилируются в байт?код Java, таких, как Jython.

Апплеты используются для предоставления интерактивных возможностей веб-приложений, которые предоставляются HTML. Байт-код Java платформо-независим и поэтому Java-апплеты могут выполняться с помощью плагинов браузерами многих платформ, включая Microsoft Windows, Apple Mac OS, UNIX и GNU/Linux. Такие программы с открытым исходным кодом, как applet2app, могут быть использованы для преобразования апплета в самостоятельные программы на Java или исполняемые файлы Linux и Windows.

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

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

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

3. Сравнительный анализ языков Java и C++

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

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

Основные сходства C# и Java. (Приложение А)

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

Представим список базовых сходств между C# и Java:

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

Сборка мусора: Низкоуровневые языки требуют пристального внимания за тем, что для грамотного удаления объектов необходимо сначала освободить ресурсы. C# и Java же имеют встроенную возможность сборки мусора, то есть разработчику даже не придется задумываться о том, какие объекты утратят свою актуальность на какой стадии работы программы. Утечки памяти все еще могут возникать, но это уже не проблема.

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

Интерфейсы. Интерфейс программная/синтаксическая структура, определяющая отношение между объектами, которые разделяют определённое поведенческое множество и не связаны никак иначе. При проектировании классов, разработка интерфейса тождественна разработке спецификации (множества методов, которые каждый класс, использующий интерфейс, должен реализовывать). представляет собой абстрактный класс, где все методы абстрактны. Основные различия. C# был разработан компанией Microsoft с целью создания собственного языка с функционалом Java на платформе Net.

Так как новый язык был уже не первым в своём роде, он имел все необходимые функции для решения современных проблем, с которыми столкнулись разработчики при попытке создать свою платформу Visual J++. Однако Java благодаря открытому исходному коду продолжал наращивать число пользователей, что привело к конкуренции [17].

Windows и open-source. C# в большинстве случаем применяется в разработках для платформ Microsoft — .NET Framework CLR. Java же имеет внушительных размеров систему с открытым исходным кодом.

Поддержка обобщений (Generics): Поддержка обобщений в Java, в отличие от С#, осуществляется с помощью стираний, т. е. параметры общего типа стираются и добавляются как приведения во время компиляции. В C# обобщения встроены, что немного увеличивает производительность, потому что сведения о типе предоставляются прямо во время выполнения программы.

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

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

Полиморфизм: C# и Java используют очень разные подходы к полиморфизму. Java разрешает полиморфизм по умолчанию, C# же обязан вызывать ключевое слово «virtual» для обозначения возможности переопределения метода и «override» в производном классе.

Перечисления (Enums): в C# перечисления представляют собой просто списки констант. Java предоставляет более широкий выбор перечислений, расценивая их как именованный экземпляр типа.

Заключение

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

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

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

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

  1. C/С++. Программирование на языке высокого уровня / Т.А. Павловская — СПб.: Питер, 2011 .
  2. Абельсон Х., Сассман Д. Структура и интерпретация компьютерных программ. — М.: Добросвет, 2010.
  3. Альфред, В. Ахо Компиляторы. Принципы, технологии и инструментарий / Альфред В. Ахо и др. - М.: Вильямс, 2015. - 689 c.
    2. Берд, Барри Java для чайников / Барри Берд. - М.: Диалектика / Вильямс, 2013. - 521 c.
  4. Васильев, А. Н. Самоучитель Java с примерами и программами / А.Н. Васильев. - М.: Наука и техника, 2016. - 368 c.
    4. Герберт, Шилдт Java 8. Руководство для начинающих / Шилдт Герберт. - М.: Диалектика / Вильямс, 2015. - 899 c.
  5. Герберт, Шилдт Java. Руководство для начинающих / Шилдт Герберт. - М.: Диалектика / Вильямс, 2014. - 104 c.
  6. Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей Гарнаев , Сергей Гарнаев. - Москва: СПб. [и др.] : Питер, 2017. - 718 c.
    4. Гонсалвес, Энтони Изучаем Java EE 7 / Энтони Гонсалвес. - М.: Питер, 2016. - 640c.
  7. Гупта, Арун Java EE 7. Основы / Арун Гупта. - М.: Вильямс, 2014. - 336c.
  8. Кнут Д. Искусство программирования. В 3 т. — М.: Вильямс, 2012.
  9. Кауфман В. Языки программирования. Концепции и принципы. — М.: ДМК Пресс, 2011.
  10. Керниган Б., Ритчи Д. Язык программирования Си. 2-е изд.— М.: Издательский дом «Вильямс», 2013.
  11. Монахов, В. Язык программирования Java и среда NetBeans (+ CD-ROM) / В. Монахов. - М.: БХВ-Петербург, 2012. - 720 c.
  12. Савитч, Уолтер Язык Java. Курс программирования / Уолтер Савитч. - М.: Вильямс, 2015. - 928 c.
  13. Страуструп Б. Язык программирования С++. 3-е изд. — М.: Бином, 2011.
  14. Хабибуллин, Ильдар Самоучитель Java / Ильдар Хабибуллин. - М.: БХВ-Петербург, 2014. - 768 c.
  15. Шилдт, Герберт Java 8. Руководство для начинающих / Герберт Шилдт. - М.: Вильямс, 2015. - 720 c.
  16. Эккель, Брюс Философия Java / Брюс Эккель. - М.: Питер, 2016. - 809 c.
  17. Дворянинова И. В. Сравнительный анализ языков Java и C# // Молодой ученый. — 2019. — №20. — С. 34-35. — URL https://moluch.ru/archive/258/59314/ (дата обращения: 12.06.2019).

Приложение А

 Языки по типизации: сильная-слабая, статическая-динамическая 

Распределение языков по слоям приложения по функциональному признаку

  1. Бьёрн Страуструп. Язык программирования C++. Специальное издание = The C++ programming language. Special edition. М.: Бином-Пресс, 2007. 1104 с. ISBN 5-7989-0223-4

  2. https://ru.wikipedia.org/wiki/C%2B%2Bhttp://articles.org.ru/web/specperl.php