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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

Цель работы: Изучить историю возникновения и развития языка программирования Си и Java. Для того, чтобы достигнуть эту цель необходимо было решить такие задачи:

  1. Изучить источники информации по теме.
  2. Узнать историю языков Си и Java.
  3. Рассмотреть развитие языков Си и Java.
  4. Определить область применения Си и Java.

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

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

Методы исследования: анализ, синтез, дедукция.

Характеристика источников: в работе были использованы труды исследователей Вязовика Н.А. Мейерса С., Перри Г.

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

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

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

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

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

Разработчиком языка и создателем первого транслятора является Бьерн Страуструп. Он является сотрудником в научно-исследовательском вычислительном центре AT&T Bell Laboratories в Мюррей Хилл (Нью-Джерси, США). Им было получено звание магистра математики и вычислительной техники в университете г. Аарус (Дания), при этом докторское звание по вычислительной технике им было получено в кэмбриджском университете (Англия). Специализацией его является область распределенных систем, операционных систем, программирования и моделирования. Вместе с М. А. Эллисом они являются авторами по полному руководству по языку , которое носит название «Руководство по с примечаниями».

Несомненно , обязан языку , который сохраняется, являясь его подмножеством. Сохраняются и все свойственные средства низкого уровня, которые предназначены для того, чтобы решить самые насущные задачи в системном программировании. , в свою очередь, обязан многим своему предшественнику языку . Комментарий языка восстановлен в .[1] Еще один из источников вдохновения является язык , так как именно из него заимствуется концепция классов (совместно c производными классами и виртуальными функциями). Возможность в выполнять перегрузки операций и свобода размещения описаний всюду, где встречается оператор, при этом напоминает язык Алгол-68[2].

Наиболее ранние версии языка, которые носят название « с классами», были использованы, начиная с 1980 г. Данный язык смог возникнуть потому, что автору необходимо было написать программы моделирования, которые управляются прерываниями.[3] Язык является идеально подходящим для этого, если не учитывать эффективность. Язык « с классами» был использован для решения больших задач в моделировании. Строгая проверка была в возможности написания на нем программ, для которых являются критичными ресурсы памяти и времени. В этом языке не хватало перегрузки ссы[4]лок, операций, виртуальных функций и множества других возможностей. Впервые выходит за пределы исследовательской группы, в которой работал автор, в июле 1983 г., но тогда множество из возможностей не были еще разработаны.

Название (си плюс плюс) придумал Рик Маскитти летом в 1983 г. Данное название смогло отразить эволюционный характер в изменениях языка . Обозначение означает операцию наращивания . Если использовать немного короче имя , то это является синтаксической ошибкой. К тому же оно уже было использовано, как название совершенно другого языка. Знатоками семантики находят, что хуже, чем . Языком не получено названия , так как он является не чем иным как расширение , и при этом в нем нет попыток для того, чтобы решать какие-либо из проблем за счет того, что происходит отказ от возможностей . [5]

Изначально задумывался, чтобы автор и его друзья не программировали на ассемблере, или других современных языках высокого уровня. Его основным предназначением является упрощение и сделать процесс программирования для отдельного взятого программиста наиболее приятным. До недавнего времени не было в планах разработки на бумаге. Проектирование, реализация и документация шли параллельно. Не существовало никогда «проекта » или «Комитета по разработке ». Соответственно язык развивался и развивается сейчас для того, чтобы было возможно преодолеть все проблемы, с которыми пользователи сталкиваются. Толчками к развитию являются и обсуждения автором с его друзьями и коллегами всех проблем языка[6].

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

Другие из расширений, которые вводились в период между 1985 и 1991 г.г. (такие как статические функции-члены, множественное наследование и чистые виртуальные функции), появились, как результат обобщения опыта программирования на и были почерпнуты из других языков.

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

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

Фирмой AT&T Bell Laboratories был внесен в эту работу основной вклад. Порядка ста представителей из около 20 организаций изучали и комментировали то, что явилось современной версией в справочном руководстве и исходными материалами для ANSI по стандартизации . Таким образом, по инициативе фирмы Hewlett-Packard в декабре 1989 г. в составе ANSI образовался комитет X3J16.[9]

Во время разработки языка один из важных критериев являлся простота. Когда возникал вопрос, а что возможно упростить: руководство по языку и какую-либо другую документацию или транслятор, то выбрали первое. Совместимости с языком придавалось огромное значение, что затруднило удалить его синтаксис.[10]

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

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

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

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

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

Язык программирования был задуман как язык, который будет[14]:

  • Лучше языка ;
  • Поддерживать абстракцию данных;
  • Поддерживать объектно-ориентированное программирование.

Сравнение языков С++ и С

Выбор С в качестве базового языка для С++ объясняется следующими его достоинствами:

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

В С существуют свои проблемы, но в языке, разрабатываемом «с нуля» они появились бы тоже, а проблемы С, по крайней мере, хорошо известны. Более важно то, что ориентация на С позволила использовать язык «С с классами» как полезный (хотя и не очень удобный) инструмент в течение первых месяцев раздумий о введении в С классов в стиле Симулы.[15]

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

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

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

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

С данными видами объектов возможно работать просто и надежно даже тогда, когда этот тип невозможно установить во время стадии трансляции[18]. Программирование при использовании таких объектов носит название объектно-ориентированное. Данный метод применяется правильно, то тогда становятся понятнее и короче программы, а также их сопровождение значительно упрощается [19].

Ключевое понятие – это класс. Классом называется тип, определяемый пользователем. Посредством классов происходит упрятывание данных, их инициализацию, динамическое задание типов, неявное преобразование пользовательских типов, контролируемое пользователем управление памятью и средства для того, чтобы перегрузить операции. В языке концепции контроля типов и модульного построения программ реализуются более полноценно нежели в .[20] Помимо этого содержит усовершенствования, которые напрямую с классами не связаны: функции-подстановки, перегрузка имен функций, символические константы, стандартные значения параметров функций, операции управления свободной памятью и ссылочный тип. В сохраняются все возможности , которые обеспечивают эффективную работу с основными объектами и при этом отражают аппаратную «реальность» (байты, слова, разряды, адреса и т.д.). Что помогает очень эффективно реализовать пользовательские типы.[21]

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

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

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

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

Это означает, что должна быть возможность для того, чтобы производились эффективные числовые операции и средства с таким доступом к памяти, позволяющий на этом языке написать драйверы для устройств. [23]Помимо этого, необходимо уметь написать вызовы функций в довольно непривычной записи, которая принята для того, чтобы происходили обращения в традиционных операционных системах. И естественно, должна быть возможность из языка, который поддерживает объектно-ориентированное программирование, вызвать функции, которые были написаны на других языках, а также вызывать функцию из других языков на этом языке, который поддерживает объектно-ориентированное программирование.[24]

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

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

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

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

Развивается язык на базе языка , и, при этом есть исключение, сохранен, как подмножеств . Базовый язык спроектирован так, что есть очень тесная связь между операциями, типами, объектами и операторами, с которыми и работает машина, то есть символами, числами и адресами. За исключением операций , и , а также проверяемого блока для того, чтобы выполнить операторы и выражения не требуется скрытая динамическая аппаратная или программная поддержка.[28]

Изначально язык был задуман, как конкурент ассемблера, который способен вытеснять его из основных задач в системном программировании. В проекте принимались меры для того, чтобы успехи в данной области не были под угрозой. Между двумя языками различие состоит прежде всего в степени внимания, которое уделяется структурам и типам. Язык является более выразительным, но такая выразительность может быть лишь тогда, когда уделяют большое внимание типам. Когда известны типы объектов, то транслятором правильно распознаются такие выражения, иначе в них программисту нужно было бы записывать операции с подробностями.[29]

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

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

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

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

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

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

Гослингу, которому на данный момент 65 лет, перешел из исследовательского отдела IBM в Sun в 1984 г. Его первой работой является технически интересный, но при этом не имеющий коммерческого успеха оконный интерфейс NeWS. Им также была написана GOSMACS – первая реализация текстового редактора EMACS на языке С[32].

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

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

Относительно произношения на русском языке, как и в некоторых других, были образованы две разные нормы — заимствованная англоязычная джава») и традиционно-национальная «ява», которая соответствует традиционному произношению названия острова Ява. Компания Sun придерживается англоязычного произношения во всех странах мира. Порой в обиходе используется жаргонное слово «Жаба» (к примеру, изображена жаба на календарях группы российских пользователей Java (Java Users Group)[35].

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

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

Для того, чтобы разработка не была связана с конкретной платформой, Гослингом было принято решение начать с расширения компилятора . Но со временем, он понял, что один , каким бы образом его ни расширяли, им не получится удовлетворить все из потребностей. Поэтому с середины 1991 года была задумка языка Oak ( что впоследствии во время поиска торговой марки было названо, как Java). «То есть, язык является средством, а не самоцелью, как поясняет Гослинг. Мы не хотели зацикливаться на , а хотели разработать систему, позволяющую создавать большую и распределенную, при этом разнородную сеть из бытовых электронных устройств, которые способны между собой взаимодействовать».

К концу 1992 года, предпринимая, по мнению тогда еще инженера проекта Патрика Нотона, «огромные усилия на то, чтобы доработать Oak и другие компоненты», коллективом проекта «Green» было выпущено «*7» - устройство типа PDA, которое названо Гослингом, как «ручной пульт дистанционного управления».[37]

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

До того, как прийти в команду Green Нотон был возглавляющим проект Sun, который основан на том, чтобы разработать пользовательскую среду Open Window.[38]

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

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

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

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

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

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

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

Зачастую недостатком концепции виртуальной машины является то, что исполнение байт-кода у виртуальной машины снижает производительность программ и алгоритмов, которые реализуются на языке Java. За последнее время внесены были следующие усовершенствования, которые некоторым образом увеличили скорость выполнения программ на Java[43]:

  • Применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
  • Широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,
  • Аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

Для семи различного рода задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для , в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее.[44] С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на . Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на .[45]

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

Основными возможностями являются:

  • Автоматическое управление памятью;
  • Расширенные возможности обработки исключительных ситуаций;
  • Богатый набор средств фильтрации ввода/вывода;[46]
  • Набор стандартных коллекций, таких как массив, список, стек и т. п.;
  • Наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);
  • Наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
  • Встроенные в язык средства создания многопоточных приложений;
  • Унифицированный доступ к базам данных:
  • На уровне отдельных SQL-запросов — на основе JDBC, SQLJ;
  • На уровне концепции объектов, обладающих способностью к хранению в базе данных — на основе Java Data Objects и Java Persistence API;
  • Поддержка шаблонов (начиная с версии 1.5);
  • Параллельное выполнение программ[47].
    1. Этапы развития языка Java

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

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

15 января 1991 г. - Совещания типа мозгового штурма по проекту Stealth (названном так Скоттом Макнили) в Аспене, в котором принимали участие Билл Джой, Уэйн Розинг, Энди Бехтолсхейм, Джейм Гослинг, Майк Шеридан и Патрик Нотон.

1 февраля 1991 г. - Гослинг, Шеридан и Нотон всерьез берутся за работу. Нотон занимается графической системой Aspen, Гослинг - идеями языка программирования, Шеридан - бизнес-разработкой.

8 апреля 1991 г. - Переезд по новому адресу и разрыв прямого соединения с локальной сетью (и большинством других средств связи) компании Sun; проект продолжается под названием Green.

15 апреля 1991 г. - К проекту Green присоединяются Эд Фрэнк (архитектор системы SPARCstation 10), Крейг Форрест (дизайнер чипа SS10) и Крис Уорт (разработчик системы NeWS).[49]

Май 1991 г. - Эд Фрэнк присваивает прототипу аппаратуры название *7 (или Star7; *7 - код, который было необходимо набрать в офисе Sand Hill, чтобы ответить на любой звонок с любого телефона).

Июнь 1991 г. - Гослинг начинает работу над интерпретатором Oak, который через несколько лет (при поисках торговой марки) переименован в Java.

1 августа 1991 г. - Осуществлено объединение Oak и Aspen; заработала их первая реальная программа.

19 августа 1991 г. - Коллектив разработчиков Green демонстрирует идеи базового пользовательского интерфейса и графическую систему сооснователям компании Sun Скотту Макнили и Биллу Джою.[50]

17 октября 1991 г. - Шеридан и Нотон присваивают конструкторской философии своего коллектива девиз "1st Person", который со временем становится названием компании[51].

17 ноября 1991 г. - Офис проекта Green снова подключается к главной сети компании Sun линией на 56 Кбит/с

1 марта 1992 г. - К проекту Green присоединяется Джонатан Пейн, который позднее участвует в написании HotJava.[52]

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

4 сентября 1992 г. - Завершена разработка устройства Star7; оно продемонстрировано Джою и Макнили.[53]

1 октября 1992 г. - Из компании SunLabs переходит Уэйн Розинг, принимающий на себя руководство коллективом.

1 ноября 1992 г. - Организована корпорация FirstPerson.

15 января 1993 г. - Коллектив переезжает в Пало Альто в здание, где раньше находилась лаборатория Western Research Lab компании DEC и была основана исходная группа Hamilton Group (она же OSF).

15 марта 1993 г. - После ознакомления с результатами испытаний кабельного интерактивного телевидения, проведенных компанией Time Warner, корпорация FirstPerson сосредотачивается на этой тематике.

Апрель 1993 г. - Выпуск первого графического браузера для Internet - Mosaic 1.0, разработанного в центре NCSA.

14 июня 1993 г. - Компания Time Warner продолжает проводить свои испытания интерактивного кабельного ТВ с компанией SGI, несмотря на признанное превосходство технологии компании Sun и уверения, что Sun выиграла эту сделку.[54]

Лето 1993 г. - Нотон пролетает 300 тыс. миль, продавая Oak всем, занимающимся бытовой электроникой и интерактивным телевидением; тем временем темп, с которой люди получают доступ к Internet, головокружительно нарастает.

Август 1993 г. - Через несколько месяцев многообещающих переговоров с компанией 3DO относительно разработки ОС для приставок, президент 3DO Трип Хокинс предлагает купить технологию. Макнили отказывается, и сделка срывается.[55]

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

7 декабря 1993 г. - Экспертиза операций на высоком уровне в FirstPerson обнаруживает, что эта группа не имеет реальных партнеров или маркетинговой стратегии и неясно представляет себе дату выпуска.

8 февраля 1994 г. - Отменено публичное заявление компании FirstPerson о выпуске, которое должно было состояться на конференции Technology, Entertainment and Design (TED).

17 февраля 1994 г. - Исполнительным лицам компании Sun для разносторонней экспертизы представлен альтернативный бизнес-план корпорации FirstPerson по разработке мультимедийной платформы для CD-ROM и онлайновой работы.[56]

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

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

Июль 1994 г. - Нотон ограничивает область применения проекта Liveoak, просто переориентировав Oak на Internet.[57]

16 сентября 1994 г. - Пейн и Нотон начинают писать WebRunner - браузер типа Mosaic, позднее переименованный в HotJava.

Осень 1994 г. - Ван Хофф реализует компилятор Java на языке Java. (Ранее Гослинг реализовывал его на языке С).[58]

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

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

Java-апплетом является прикладная программа на Java, имеющая формат байт-кода. Java-апплеты выполняются в веб-браузере, при использовании виртуальной Java машины (JVM), или в Sun'sAppletViewer, автономном инструменте для того, чтобы тестировать апплеты. Java-апплеты внедрены были в первую версию языка Java в 1995 г. Java-апплеты пишутся обычно на языке программирования Java, но при этом они написаны могут быть и на других языках, которые компилируются в байт‐код Java, таких, как Jython.[59]

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

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

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

3 Применение С++ и Java

3.1 Область применения С++

Рассмотрим применение С (С++):

1. Операционные системы;[61]

Любая операционная система в первую очередь должна быстро запускаться и эффективно управлять системными ресурсами. Разработчик на языке C может реализовывать все структуры данных самостоятельно. Такая высокая гибкость — весомый аргумент в пользу языка.

2. Программирование встроенных систем;[62]

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

Ещё важнее здесь — код на C, будучи платформенно-независимым, не связан с каким-либо конкретным микропроцессором или системой.

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

3. Разработка игр и игрового движка;[63]

Производительность крайне важна для игры, поэтому выбор языка программирования здесь ограничен. Например, Counter-Strike, Diablo I, World of Warcraft — все эти игры написаны на C++. В ядре игрового движка Unity — самого популярного движка для создания видеоигр под несколько операционных систем одновременно — также использовался C++.

4. Разработка настольных и кроссплатформенных приложений;

C++ также можно использовать для создания настольных приложений. Всё благодаря превосходным кроссплатформенным средствам разработки (иногда называемым фреймворками), таким как Qt. Оно позволяет нацелиться на Windows, Linux, macOS, Android и встроенные системы — все c единой кодовой базой. [64]

В Facebook перевели часть кода из PHP на язык C++, чтобы сократить затраты электроэнергии в расчёте на одного пользователя. Возможно, облачные системы хранения, базы данных, драйверы устройств и другие виды ПО тоже используют C++.[65]

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

Языки C/C++ вполне подходят для:

  • разработки операционных систем,
  • программирования встроенных систем,
  • разработки игр,
  • разработки баз данных,
  • разработки настольных и кроссплатформенных приложений (с помощью средств C++).[66]

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

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

3.2 Область применения Java

Существует множество областей применения Java, от сайтов электронной коммерции до Android приложений, от научных до финансовых приложений, таких как трейдинговые системы, от игр, типа Minecraft, до настольных программных средств, таких как Eclipse, Netbeans и IntelliJ, от open source фреймворков до J2ME приложений и т.д.

Рассмотрим детально область применения Java:[67]

  • android приложения;
  • серверные приложения в сфере финансовых услуг;
  • вэб-приложения;
  • программные средства;
  • трейдинговые приложения;
  • J2ME приложения;
  • встраиваемые системы;
  • большие данные[68];
  • высокочастотные трейдинговые пространства;
  • научные приложения.[69]

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

Рассмотрена область применения языка Java.

ЗАКЛЮЧЕНИЕ

Данная курсовая работа посвящена рассмотрению возникновения и развития языков программирования С (С++) и Java.

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

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

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

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

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

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

Три ключевых элемента объединились в технологии языка Java

  • Java предоставляет для широкого использования свои апплеты (applets) — небольшие, надежные, динамичные, не зависящие от платформы активные сетевые приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTML
  • Java высвобождает мощь объектно-ориентированной разработки приложений, сочетая простой и знакомый синтаксис с надежной и удобной в работе средой разработки. Это позволяет широкому кругу программистов быстро создавать новые программы и новые апплеты

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

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

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

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

  1. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компьютерные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. - 52 с.
  2. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий / Н.А. Вязовик, 2003. - 592 с.
  3. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. / Иан Грэхем. — М.: «Вильямс», 2004. - 800 с.
  4. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. / П.Дж. Дейтел, Х.М. Дейтел - М.: Бином, 2009. - 1454 с.
  5. Мейерс С. Эффективный и современный С++. 42 рекомендации по использованию C++/ С. Мейерс. - М.: Вильямс, 2016. – 304с.
  6. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – 368 с.
  7. Прата С. Язык программирования C++. Лекции и упражнения / С. Прата. - М.: Диалектика, 2018г. – 1244 с.
  8. Синтес Антони. Освой самостоятельно объектно-ориентированное программирование за 21 день. - М.: «Вильямс», 2002. - 372 с.
  9. Страуструп Бьерн. Язык программирования С++/ Бьерн Страуструп. – М.: Бином, 2008. - 369 с.
  10. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - 720 с.
  11. Шилдт Г. C. Полное руководство. Классическое издание / Г. Шилдт. – М.: Вильямс, 2020 – 704 с.
  12. Шилдт Г. Java. Полное руководство./ Г. Шилдт. – М.: Диалектика, 2018. – 1488 с.
  13. Шлее М. Qt 5.3. Профессиональное программирование на C++ / М. Шлее. – Спб.: БХВ-Петербург, 2015. – 928 с.
  14. Эккель Б. Философия Java / Б. Эккель. - Спб.: Питер, 2019. – 1168с.
  15. История языка программирования Java [Режим доступа]: http://java-study.ru/3-java-history.html (дата обращения: 08.11.2020).
  16. Программирование на С и С++: Происхождение языка С++ [Режим доступа]: http://www.c-cpp.ru/books/proishozhdenie-yazyka-s-0 (дата обращения: 10.11.2020).
  1. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. / Иан Грэхем.— М.: «Вильямс», 2004. - с. 213-266.

  2. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. / П.Дж. Дейтел, Х.М. Дейтел - М.: Бином, 2009. - с. 216-299.

  3. Мейерс С. Эффективный и современный С++. 42 рекомендации по использованию C++/ С. Мейерс. - М.: Вильямс, 2016. –с. 117-188.

  4. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. / Иан Грэхем. - М.: «Вильямс», 2004. - с. 402-456.

  5. Мейерс С. Эффективный и современный С++. 42 рекомендации по использованию C++/ С. Мейерс. - М.: Вильямс, 2016. – с. 99-122.

  6. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. / П.Дж. Дейтел, Х.М. Дейтел - М.: Бином, 2009. - с. 456-500.

  7. Мейерс С. Эффективный и современный С++. 42 рекомендации по использованию C++/ С. Мейерс. - М.: Вильямс, 2016. – с. 111-144.

  8. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с.100-133.

  9. Программирование на С и С++: Происхождение языка С++ [Режим доступа]: http://www.c-cpp.ru/books/proishozhdenie-yazyka-s-0 (дата обращения: 10.11.2020).

  10. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 166-188.

  11. Страуструп Бьерн. Язык программирования С++/ Бьерн Стра-уструп. – М.: Бином, 2008. - с. 200-2444.

  12. Прата С. Язык программирования C++. Лекции и упражнения / С. Прата. - М.: Диалектика, 2018г. – с. 800-888.

  13. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 288-300.

  14. Прата С. Язык программирования C++. Лекции и упражнения / С. Прата. - М.: Диалектика, 2018г. – с. 750-811.

  15. Синтес Антони. Освой самостоятельно объектно-ориентированное программирование за 21 день. - М.: «Вильямс», 2002. - с. 213-244

  16. Прата С. Язык программирования C++. Лекции и упражнения / С. Прата. - М.: Диалектика, 2018г. – с. 199-224..

  17. Синтес Антони. Освой самостоятельно объектно-ориентированное программирование за 21 день. - М.: «Вильямс», 2002. - с. 213-255

  18. Страуструп Бьерн. Язык программирования С++/ Бьерн Страуструп. – М.: Бином, 2008. - с. 199-211.

  19. Страуструп Бьерн. Язык программирования С++/ Бьерн Страуструп. – М.: Бином, 2008. - с. 212-277

  20. Шилдт Г. C. Полное руководство. Классическое издание / Г. Шилдт. – М.: Вильямс, 2020 – с. 355-399.

  21. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 111-178.

  22. Шилдт Г. C. Полное руководство. Классическое издание / Г. Шилдт. – М.: Вильямс, 2020 – с. 313-388.

  23. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 255-289.

  24. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. / Иан Грэхем.— М.: «Вильямс», 2004. – с. 502-522 .

  25. Шилдт Г. C. Полное руководство. Классическое издание / Г. Шилдт. – М.: Вильямс, 2020 – с. 213-294.

  26. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 217-229.

  27. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. / Иан Грэхем.— М.: «Вильямс», 2004. - с. 455- 490.

  28. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 215-251.

  29. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. / Иан Грэхем.— М.: «Вильямс», 2004. - с. 341-359

  30. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. / П.Дж. Дейтел, Х.М. Дейтел - М.: Бином, 2009. – с. 701-768.

  31. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. - с. 5-45

  32. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 123-188

  33. История языка программирования Java [Режим доступа]: http://java-study.ru/3-java-history.html (дата обращения: 10.11.2020).

  34. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. - с. -25

  35. История языка программирования Java [Режим доступа]: http://java-study.ru/3-java-history.html (дата обращения: 10.11.2020).

  36. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 456-500

  37. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 400-444.

  38. История языка программирования Java [Режим доступа]: http://java-study.ru/3-java-history.html (дата обращения: 10.11.2020).

  39. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. - с. 6-25

  40. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 366-401.

  41. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. – с. 3-50

  42. 1История языка программирования Java [Режим доступа]: http://java-study.ru/3-java-history.html (дата обращения: 10.11.2020).

  43. История языка программирования Java [Режим доступа]: http://java-study.ru/3-java-history.html (дата обращения: 10.11.2020).

  44. 14. Эккель Б. Философия Java / Б. Эккель. - Спб.: Питер, 2019. - с. 1-49

  45. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 433-488.

  46. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. - с. 4-31.

  47. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 123-200

  48. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий / Н.А. Вязовик, 2003. - с. 100-155.

  49. Шилдт Г. Java. Полное руководство./ Г. Шилдт. – М.: Диалектика, 2018. – с. 100-145.

  50. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий / Н.А. Вязовик, 2003. - с. 231-288.

  51. Эккель Б. Философия Java / Б. Эккель. - Спб.: Питер, 2019. – с. 400-490.

  52. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 311-366.

  53. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий / Н.А. Вязовик, 2003. - с. 322-378.

  54. 1Эккель Б. Философия Java / Б. Эккель. - Спб.: Питер, 2019. – с. 3-56.

  55. Шилдт Г. Java. Полное руководство./ Г. Шилдт. – М.: Диалектика, 2018. – с. 500-555.

  56. Хабибуллин И.Ш. Самоучитель Java 2./ И.Ш. Хабибуллин. - СПб.: БХВ-Петербург, 2007. - с. 322-388

  57. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий / Н.А. Вязовик, 2003. - с. 300-344

  58. Шилдт Г. Java. Полное руководство./ Г. Шилдт. – М.: Диалектика, 2018. – с. 1000-1111.

  59. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. – с. 5-43.

  60. Мейерс С. Эффективный и современный С++. 42 рекомендации по использованию C++/ С. Мейерс. - М.: Вильямс, 2016. – с. 255-280.

  61. Прата С. Язык программирования C++. Лекции и упражнения / С. Прата. - М.: Диалектика, 2018г. – с. 1105-1200.

  62. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 301-344

  63. Мейерс С. Эффективный и современный С++. 42 рекомендации по использованию C++/ С. Мейерс. - М.: Вильямс, 2016. – с. 255-280.

  64. Перри Г, Миллер Д. Программирование на С для начинающих / Г. Перри, Д Миллер. – М.: ЭКСМО, 2015г. – с. 301-344

  65. Прата С. Язык программирования C++. Лекции и упражнения / С. Прата. - М.: Диалектика, 2018г. – с. 1105-1200.

  66. Шилдт Г. Java. Полное руководство./ Г. Шилдт. – М.: Диалектика, 2018. – с. 1000-1201.

  67. 1. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления «Компью-терные науки» / Е. Ю. Беркунський. - М.: НУК, 2006. - с. 3-44

  68. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий / Н.А. Вязовик, 2003. - с. 322-366.