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

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

Содержание:

Введение

Актуальность. В настоящее время C++ является одним из самых популярных языков программирования. С++ использовался в следующих проектах: MS Windows, SQL Server, DirectX, Edge и Office, KDE, Qt, MySQL, Opera, Adobe Photoshop, Facebook, Google Chrome, Blender, Inkscape, LibreOffice, Firefox, VLC, 7-ZIP, Stellarium и очень многих других (с большой долей вероятности, во всех крупных и значимых проектах).

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

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

Достижение указанной цели определило постановку и решение следующих задач:

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

Предметом исследования можно назвать два языка программирования: C++ и Java.

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

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

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

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

Глава 1. История и характеристика Java

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

 JAVA- это название языка программирования, который активно используется с 90-х годов прошлого столетия. Несмотря на то, что этот язык является открытым, т.е. его может свободно использовать каждый, на данный момент им владеет и его поддерживает компания Oracle Corporation. Java разрабатывался как язык программирования, который будет использоваться на любых устройствах, в результате на данном языке пишутся программы для компьютеров, смартфонов и даже телевизоров с технологией СМАРТ-ТВ[1].

История Java восходит к 1991 году, когда группа инженеров из компании Sun под руководством Патрика Нотона (Patrick Naughton) и члена Совета директоров (разностороннего компьютерного волшебника) Джеймса Гослинга (James Gosling) занялась разработкой небольшого языка, который можно было бы использовать для программирования бытовых устройств, на- пример, контроллеров для переключения каналов кабельного телевидения (cable TV switchboxes).Поскольку такие устройства не потребляют много энергии и не имеют больших микро- схем памяти, я должен был быть маленьким и генерировать очень компактные программы. Кроме того, поскольку разные производители могут выбирать разные центральные процессоры (Central Processor Unit— CPU), было важно не завязнуть в какой-то одной архитектуре компьютеров. Проект получил кодовое название "Green"[2].

Стремясь изобрести небольшой, компактный и машинно-независимый код, разработчики возродили модель, использованную при реализации первых версий языка Pascal, заре эры персональных компьютеров. Никлаус Вирт, создатель языка Pascal, в свое время разработал машиннонезависимый язык, генерирующий промежуточный код для некоей гипотетической машины. Этот язык стал коммерческим продуктом под названием UCSD Pascal. Этот промежуточный код можно выполнять на любой машине, имеющей соответствующий интерпретатор. Инженеры, работавшие над проектом "Green", также использовали виртуальную машину, что решило их основную проблему[3].

Однако большинство сотрудников компании Sun имели опыт работы с операционной системой UNIX, поэтому в основу разрабатываемого ими языка был положен язык C++, а не Pascal. В частности, они сделали язык «объектно-», а не процедурно-ориентированным.

Как сказал Гослинг в своем интервью: "Язык — это всегда средство, а не цель". Сначала Гослинг решил назвать его "Oak" ("Дуб"). (Возможно потому, что он любил смотреть на дуб, растущий прямо под окнами его офиса в компании Sun). Потом сотрудники компании Sun узнали, что слово «Oak» уже используется в качестве имени ранее созданного языка программирования, и изменили название Java[4].

В 1992 году в рамках проекта Green была выпущена первая продукция, названная "*7". Это было средство для чрезвычайно интеллектуального дистанционного управления. (Оно имело мощность рабочей станции SPARK, помещаясь в коробочке размером 6x4x4 дюйма.) К сожалению, ни одна из компаний— производителей электронной техники не заинтересовалась этим изобретением.

Затем группа стала заниматься разработкой устройства для кабельного телевидения, которое могло бы осуществлять новые виды услуг, например, включать видеосистему по требованию. И снова они не получили ни одного контракта. (Забавно, что одной из компаний, отказавшихся подписать с ними контракт, руководил Джим Кларк (Jim Clark) — основатель компании Netscape, впоследствии сделавшей очень много для успеха языка Java.)[5]

Весь 1993 год и половину 1994 года продолжались безрезультатные поиски покупателей продукции, разработанной в рамках проекта "Green" (под новым названием "First Person, Inc."). (Патрик Нотон, один из основателей группы, впоследствии в основном занимавшийся маркетингом, налетал в общей сложности более 300 тысяч миль, пытаясь продать разработанную технологию.) Проект "First Person, Inc." был прекращен в 1994 году[6].

Тем временем в рамках Интернет разрасталась сеть World Wide Web. Ключом к этой сети является браузер, превращающий гипертекст в изображение на экране. В 1994 году большинство людей пользовалось браузером Mosaic, некоммерческим Web-броузером, разработанным в суперкомпьютерном центре Университета штата Иллинойс (University of Illinois) в 1993 году. (Частично этот браузер был написан Марком Андреессеном (Mark Andreessen) за 6,85 доллара в час. В то время Марк заканчивал университет и браузер был его дипломной работой. Затем он стал одним из основателей и главным программистом компании Netscape, и к нему пришли слава и богатство.

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

Главная их особенность – это обеспечение, несмотря на платформу, большого спектра модулей с системными интерфейсами. Стоит также отметить, что такая платформа обладает отличной безопасностью, потому подходит для любого сетевого окружения. У нее нейтральная архитектура, и это особо привлекательно для создания разных сетевых модулей. Итак, с использованием интерпретируемого и динамичного языка Java пользователь получает: Интерпретируемую среду, в которой с легкостью и быстротой создаются прототипы, не используя обычную сборку и перекомпиляцию. Среду, которую можно динамически расширить, ведь подгруздка классов проходит, когда это особо нужно и практически моментально. Отсутствие проблем с «хрупким базовым классом» ведь элементы встраиваются в память при загрузке, а не при компиляции[7].

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

Большое количество популярных приложений на платформе Android, такие как Angry Birds, Temple Run и Candy Crush Saga, написаны на языке Java. Тоже самое, касается и большей части платного софта, написанного для авиакомпаний, государственных и банковских учреждений[9].

1.2. Настоящее и будущее производительности Java

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

Исследуя многие источники информации можно сделать вывод, что разработчики считают, что производительность Java определяется именно конечным кодом реализованного приложения, так как сам язык программирования не может иметь такой критерий как производительность. В начале появления языка он проявлял себя не лучшим образом, так как его реализация «хромала». На данный момент многие уязвимости языка уже выявлены и устранены. Но для того, чтобы писать реально высокопроизводительные проекты необходимо очень длительное исследование и поиск всех лишних трат времени в алгоритме. Самым лучшим помощником в разработке высокопроизводительных проектов выступает OracleJDK. На данный момент он является самым актуальным в использовании[10].

OracleJavaDevelopmentKit – комплект разработчика приложения, реализованный на языке Java, который включает стандартный компилятор, библиотеки и т.д.. Самые известные проблемы уже устранены в этом комплекте. Одно из последних нововведений этого комплекта это стандартное средство для вызова эквивалентных операций на низких уровнях – VarHandles, реализованное в Java 9. Его предыдущая реализация Unsafe не стандартизирована и является не самым удобным API для повышения производительности. VarHandle — это динамически строго типизированная ссылка на переменную или на параметрически определенное семейство переменных, включая статические поля, нестатические поля, элементы массива или компоненты структуры данных с кучей. Доступ к таким переменным поддерживается в различных режимах доступа, включая простой доступ к чтению / записи, неустойчивый доступ для чтения / записи и сравнение, и обмен.

Рисунок 1. Структура APIVarHandle

На рисунке 1 приведен фрагмент презентации одного из разработчика, где указана структура APIVarHandle. С первого взгляда нельзя утверждать, что оно работает лучше, чем UneSafe. Прекрасным наглядным примеров повышения производительности в VarHandles является вызов метода lookup, позволяющий просмотреть объект из службы именования.

В отличии от Reflection (Java Reflection API - интерфейс API состоящий из классов пакетов java.lang и java.lang.reflect.) VarHandle проверяет доступ на lookup’е, а не на вызове метода. Вторым важным отличием является, то, что конкретные типы аргументов возвращаемого метода определяются компилятор в момент компиляции. Подробности ясно видны на рисунке 2.

Рисунок 2. Второе отличие метода VarHandles от Java Reflection API

Используя фабричные методы в LookupAPI, любое поле, представленное объектом API CoreReflection, может быть преобразовано в поведенчески эквивалентный VarHandle. Например, отражающий Fieldможет быть преобразован в использование VarHandleLookup.unreflectVarHandle. Полученные в результате VarHandles обычно обеспечивают более прямой и эффективный доступ к лежащим в основе полям. В качестве специального случая, когда API CoreReflection используется для просмотра методов режима полиморфного доступа подписи в этом классе, они выглядят как обычные неполиморфные методы. Их отражающий внешний вид, если смотреть Class.getDeclaredMethod, не зависит от их особого статуса в этом API.

Например, Method.getModifiers будут сообщаться точно эти биты модификатора, необходимые для любого аналогично объявленного метода, включая в этом случае nativeи varargs биты. Как и при любом отраженном методе, эти методы (при отражении) могут быть вызваны непосредственно java.lang.reflect.Method.invokeчерез JNI или косвенно через Lookup.unreflect. Однако такие рефлексивные вызовы не приводят к вызову метода режима доступа.

Такой вызов, если передан требуемый аргумент (один, типа Object[]), будет игнорировать аргумент и будет вызывать UnsupportedOperationException. Поскольку invokevirtual инструкции могут изначально ссылаться на методы режима доступа VarHandle под любым символьным дескриптором, это отражающее представление противоречит нормальному представлению этих методов с помощью байт-кодов.

Таким образом, эти нативные методы, когда они отражаются Class.getDeclaredMethod, могут рассматриваться только как заполнители. На данный момент VarHandles прекрасно подходит для повышения производительности приложений, реализованных на Java. Разработчики очень своевременно выпустили данный API.

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

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

Перед C++ был C. C (произносится как «Си») был разработан в 1972 году Деннисом Ритчи в Bell Telephone Laboratories как системный язык программирования. Т. е. язык для написания операционных систем. Основным заданием Ритчи было создание легко компилируемого минималистического языка, который предоставлял бы эффективный доступ к памяти, относительно быстро выполнялся, и на котором можно было бы писать эффективный код. Таким образом, создавая высокоуровневый язык, был разработан С, который во многом относился к языкам низкого уровня, оставаясь при этом независимым от платформ, под которые бы писался код.

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

В 1978 году Брайан Керниган и Деннис Ритчи опубликовали книгу под названием «Язык программирования Cи». Эта книга, более известна как «K&R» (первые буквы фамилий авторов), стала стандартом и своеобразной инструкциею к С. Когда требовалась максимальная портативность, то программисты придерживались рекомендаций в K&R, поскольку большинство компиляторов в то время были реализованы в соответствие стандартам, описанным в этой же книге.

В 1983 году Американский национальный институт стандартов («American National Standards Institute» — ANSI) сформировал комитет для установления официального стандарта для языка C. В 1989 году они закончили и выпустили стандарт C89, более широко известен как ANSI C. В 1990 Международная организация по стандартизации («International Organization for Standardization» — ISO) приняла ANSI C (с небольшими изменениями). Эта версия C стала известна как C90. В конечном счете, компиляторы адаптировались под требования ANSI C/C90 и программы, в которых требовалась максимальная портативность, писались в соответствие с этими стандартами.

В 1999 году комитет ANSI выпустил новую версию языка C, которая получила название C99. Она приняла много особенностей (фич), которые уже были реализованные в компиляторах (в виде разных расширений) или в C++.

C++ (произносится как «Си плюс плюс») был разработан Бьёрном Страуструпом в Bell Labs в качестве дополнения к C в 1979 г. Он добавил множество новых фич в язык С. Его популярность была вызвана объектно-ориентированностью языка.

C++ был ратифицированным (одобренным) комитетом ISO в 1998 году и потом снова в 2003 году (под названием C++03). Потом были еще три обновления (C++11, C++14 и C++17, ратифицированные в 2011, 2014 и 2017 годах соответственно), которые добавили больше функциональных возможностей.

Смысл философии языков С и C++ можно определить выражением «доверять программисту». Например, компилятор не будет вам мешать сделать что-то новое, что имеет смысл, но также не будет мешать вам сделать что-то такое, что может привести к сбою. Это одна из главных причин, почему так важно знать то, что вы не должны делать в C/C++, как и то, что вы должны делать.

В книге «Дизайн и эволюция C++» Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании C++ (приводятся в сокращении):

  1. Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка C.
  2. Непосредственно и всесторонне поддерживать множество стилей программирования.
  3. Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно.
  4. Максимально сохранить совместимость с C, тем самым делая возможным лёгкий переход от программирования на C.
  5. Избежать разночтений между C и C++: любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы.
  6. Избегать особенностей, которые зависят от платформы или не являются универсальными.
  7. «Не платить за то, что не используется» — никакое языковое средство не должно приводить к снижению производительности программ, не использующих его.
  8. Не требовать слишком усложнённой среды программирования.

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

2.2. Особенности языка программирования C++

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

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

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

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

Современный язык C++ обеспечивает следующие возможности:

  • Область стека вместо кучи или статической глобальной области.
  • Автоматическое определение типа вместо явных имен типов.
  • Интеллектуальные указатели вместо необработанных указателей.
  • Типы std::string и std::wstring (см. <string>) вместо необработанных массивов char[].
  • Стандартная библиотека шаблонов (STL) содержит такие контейнеры как vector, list и map, а не необработанные массивы пользовательских контейнеров. См. <vector>, <list> и < map >.
  • Алгоритмы STL вместо закодированных вручную.
  • Исключения для сообщения о состояниях ошибки и их обработки.
  • Свободное от блокировок взаимодействие между потоками с помощью STL std::atomic<> (см. <atomic>) вместо других механизмов взаимодействия между потоками.
  • Встроенные лямбда-функции вместо небольших функций, реализованных отдельно.
  • Конструкции на основе диапазонов для циклов, позволяющие создавать более надежные циклы, которые работают с массивами, контейнерами STL и коллекциями Среда выполнения Windows в форме for ( for-range-declaration : expression ). Это часть базовой языковой поддержки. Для получения дополнительной информации

1.Условные операторы.

Большая часть разработчиков, работающих с С++, знают и используют условные операторы.

2. Шаблоны и функции.

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

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

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

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

Иные варианты использования множественной парадигмы позволяют создавать способы программирования вне языка С — предка С++:

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

Команда: этот шаблон проектирования позволяет отложить выполнение кода. Большинство других шаблонов позволят легко и эффективно реализовать стили программирования, не входящие в список “официальных парадигм С++”. Кроме того, их использование улучшит типобезопасность (благодаря автоматизированным malloc/realloc/free).

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

Наиболее предпочтительный способ добавить объекту функции, который при этом будет в духе объектно-ориентированного программирования — сделать это с помощью non-member non-friend функции, а не просто функции-члена. Да, волосы многих Java-разработчиков сейчас встали дыбом, но это действительно так. А все, потому что:

  • В С++ как функции-члены, так и non-member функции находятся в одном пространстве имен.
  • функции-члены non-member функции не обладают привилегированным доступом к внутренностям класса. Из этого выходит, что использование non-member non-friend функции функцией-членом ослабит инкапсуляцию класса.

3. Объявление классов и функций.

В init части цикла for можно объявлять не одни лишь переменные. Здесь также можно разместить классы и функции.

Благодаря этому можно использовать множество переменных с разными типами.

4. Ассоциативность оператора массива

A [8] — это то же самое, что и *(A + 8). Так как операция сложения ассоциативна, она может быть переписана как *(8 + A), что синонимично …. 8[A]

Итак, для больших проектов наподобие разработки веб-браузера, создания драйвера видеокарты или написания алгоритма для финансовых торгов, язык C++ является самым лучшим вариантом. Этот язык обладает таким качеством, как объектно-ориентированное программирование, что в C поддерживается с огромным трудом. Благодаря этому, для некоторых задач C++ является более подходящим нежели C, так как поможет решить одну и ту же задачу за меньшее количеств времени[12].

Движки большинства популярных сегодня компьютерных игр, таких как Call of Duty, Halo и FIFA написаны на языке С++. Также, большие анимационные студии наподобие Pixar, Disney и DreamWorks используют C++ в той или иной степени в своем анимационном софте. Благодаря своей надежности и скорости, язык C++ применяется также при разработке частных высокочастотных торговых алгоритмов, позволяющих фирмам с Wall Street продавать тысячи акций за доли секунды.

Глава 3. Пример реализации Java и C++

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

Реализация в Java:

Пусть нам необходимо реализовать класс, содержащий в себе нативный метод, выводящий на экран “Hello world”.

JNIHelloWorld.java

Сгенерируем заголовки данного класса для C++.

Сначала создадим папку в корне проекта, где будем собирать бинарники:

Затем, скомпилируем наш класс в данную директорию.

В папке bin у нас появился class-файл. Вернее, в bin/ru/forwolk/test/. Переидем в папку bin и сгенерируем заголовки.

Как видно, в нашей папке bin появился файл ru_forwolk_test_JNIHelloWorld.h. Для простоты переименуем его в JNIHelloWorld.h

Открыв его, видим следующую картину:

Реализация на C++

Создадим файл с исходниками JNIHelloWorld.cpp. Я для этой цели создал проект в Clion, в который вставил необходимый файл. Реализуем наш метод.

Чтобы в Clion все работало корректно, необходимо в файл CMakeLists.txt добавить библиотеки Java:

Далее компилируем:

В корневой папке проекта появился файл helloworld.so. Переместим его в папку bin/ проекта Java.

Теперь необходимо загрузить нашу библиотеку. Хорошей практикой будет статическая загрузка библиотеки прямо в классе. Добавим загрузку прямо в класс JNIHelloWorld

Теперь мы можем полноценно использовать данный класс. Давайте проверим.

На выходе получаем:

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

Заключение

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

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

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

Большое количество популярных приложений на платформе Android, такие как Angry Birds, Temple Run и Candy Crush Saga, написаны на языке Java. Тоже самое, касается и большей части платного софта, написанного для авиакомпаний, государственных и банковских учреждений.

C++ (произносится как «Си плюс плюс») был разработан Бьёрном Страуструпом в Bell Labs в качестве дополнения к C в 1979 г. Он добавил множество новых фич в язык С. Его популярность была вызвана объектно-ориентированностью языка.

Для больших проектов наподобие разработки веб-браузера, создания драйвера видеокарты или написания алгоритма для финансовых торгов, язык C++ является самым лучшим вариантом. Этот язык обладает таким качеством, как объектно-ориентированное программирование, что в C поддерживается с огромным трудом. Благодаря этому, для некоторых задач C++ является более подходящим нежели C, так как поможет решить одну и ту же задачу за меньшее количеств времени.

Движки большинства популярных сегодня компьютерных игр, таких как Call of Duty, Halo и FIFA написаны на языке С++. Также, большие анимационные студии наподобие Pixar, Disney и DreamWorks используют C++ в той или иной степени в своем анимационном софте. Благодаря своей надежности и скорости, язык C++ применяется также при разработке частных высокочастотных торговых алгоритмов, позволяющих фирмам с Wall Street продавать тысячи акций за доли секунды.

Список литературы

Java навсегда! 12 причин длительного доминирования Java [Электронный ресурс]. Режим доступа: https://habrahabr.ru/post/201612/. Дата обращения: 23.05.2019.

Взгляд изнутри. Виртуальная машина Java [Электронный ресурс]. Режим доступа: http://learn.javajoy.net/jvm-inside. Дата обращения: 23.05.2019.

Герберт Шилдт Java 8 // Полное руководство. – М.: «Вильямс», 2015. – С. 1376.

Гукин, Д. Для "чайников". Программирование на C / Д. Гукин. - М.: Вильямс, 2016. - 384 c.

Дейтел, П. Android для программистов: создаём приложения / П. Дейтел, Х. Дейтел, Э. Дейтел, М. Моргано. – СПб.: Питер, 2013. – 560 с.

Достова, А. А. Анализ нововведений в объектно-ориентированном языке программирования Java / А. А. Достова, В. В. Тынченко // Актуальные проблемы авиации и космонавтики. – 2014. – № 10. – URL: http://cyberleninka.ru/article/n/analiz-novovvedeniy-v-obektnoorientirovannom-yazyke-programmirovaniya-java (дата обращения: 23.05.2019).

Лекция 1: Общие представления о языке Java [Электронный ресурс]. – URL: http://www.intuit.ru/studies/courses/569/425/lecture/9665 (дата обращения: 23.05.2019).

  1. Острицова В.А. Интернет вещей. Сравнительная характеристика протоколов беспроводной связи короткого диапазона / В.А. Острицова, В.В. Ткаченко // В сборнике: Научное обеспечение агропромышленного комплекса. Сборник статей по материалам 72-й научно-практической конференции студентов по итогам НИР за 2016 год. – Краснодар: КубГАУ, 2017. С. 413-416.

Свободная энциклопедия. Java. [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Java. Дата обращения: 23.05.2019.

Хорстманн, К. С. Java. Библиотека профессионала, том 1. Основы: пер. с англ. // Кей С. Хорстманн, Гари Корнелл. – Т. 1. – 9-е изд. – М.: ООО «И.Д. Вильямс», 2014. – 684 с.

Язык программирования Java [Электронный ресурс]. – URL: http:// www.codenet.ru/webmast/java/02.php (дата обращения: 23.05.2019).

  1. Достова, А. А. Анализ нововведений в объектно-ориентированном языке программирования Java / А. А. Достова, В. В. Тынченко // Актуальные проблемы авиации и космонавтики. – 2014. – № 10. – URL: http://cyberleninka.ru/article/n/analiz-novovvedeniy-v-obektnoorientirovannom-yazyke-programmirovaniya-java (дата обращения: 23.05.2019).

  2. Дейтел, П. Android для программистов: создаём приложения / П. Дейтел, Х. Дейтел, Э. Дейтел, М. Моргано. – СПб.: Питер, 2013. – 560 с.

  3. Язык программирования Java [Электронный ресурс]. – URL: http:// www.codenet.ru/webmast/java/02.php (дата обращения: 23.05.2019).

  4. Лекция 1: Общие представления о языке Java [Электронный ресурс]. – URL: http://www.intuit.ru/studies/courses/569/425/lecture/9665 (дата обращения: 23.05.2019).

  5. Хорстманн, К. С. Java. Библиотека профессионала, том 1. Основы: пер. с англ. // Кей С. Хорстманн, Гари Корнелл. – Т. 1. – 9-е изд. – М.: ООО «И.Д. Вильямс», 2014. – 684 с.

  6. Герберт Шилдт Java 8 // Полное руководство. – М.: «Вильямс», 2015. – С. 1376.

  7. Взгляд изнутри. Виртуальная машина Java [Электронный ресурс]. Режим доступа: http://learn.javajoy.net/jvm-inside. Дата обращения: 23.05.2019.

  8. Свободная энциклопедия. Java. [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Java. Дата обращения: 23.05.2019.

  9. Java навсегда! 12 причин длительного доминирования Java [Электронный ресурс]. Режим доступа: https://habrahabr.ru/post/201612/. Дата обращения: 23.05.2019.

  10. Острицова В.А. Интернет вещей. Сравнительная характеристика протоколов беспроводной связи короткого диапазона / В.А. Острицова, В.В. Ткаченко // В сборнике: Научное обеспечение агропромышленного комплекса. Сборник статей по материалам 72-й научно-практической конференции студентов по итогам НИР за 2016 год. – Краснодар: КубГАУ, 2017. С. 413-416.

  11. Гукин, Д. Для "чайников". Программирование на C / Д. Гукин. - М.: Вильямс, 2016. - 384 c.

  12. Белов В. Н., Ковалёв А. И., Новиков С. А. Реализация элемента пользовательского интерфейса Slider с помощью JavaScript // Современные наукоемкие технологии. 2016. № 10–2. С. 224–228.

  13. Свободная энциклопедия. Java. [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Java. Дата обращения: 21.06.2018.