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

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

Содержание:

Введение

Актуальность. В настоящее время 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 является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась еще в 1996 году в недрах компании Sun Microsystems, впоследствии поглощенной компанией Oracle. Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. И к настоящему времени язык Java проделал большой путь, было издано множество различных версий. Текущей версией является Java 10, которая вышла в марте 2018 года.

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

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

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

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

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

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

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

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

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

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

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

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

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

Апплет - небольшая программа работающая с окнами, которые внедрены в страницу HTML. Чтобы выполнить Java апплеты, нужна поддержка Java Web-браузером, то есть Internet Explorer, Netscape Navigator, Hot Java и т.д. или средство просмотра апплета. Также Java допускал другие средства, с помощью которых браузер мог выполнить программу Java на нашей системе[2]

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

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

Java - это интерпретируемый и компилированный язык программирования. Исходный текст (файлы с расширением a Java) откомпилирован со справкой компилятора Java (javac), который преобразовывает исходный текст в байт-код (файлы с расширением a.class).

JAVA – это объектно-ориентированный язык программирования, разработанный Джеймсом Ослингом и запущен в 1995 году в качестве одного из ключевых компонентов платформы JAVA Sun Microsystems.

Cинтаксис языка взят у большинства из языка программирования С ++ и С, о том JAVA имеет более простую объективную модель и более низкий уровень объектов. JAVA – приложения как правило транслированы в байт-код (длина каждого кода операции – один байт). Который может быть обработан любимой виртуальной машиной JAVA (Java Virtual Mashine. JVM) независимо от компьютерной архитектуры.

Первоначально реализация ссылок на компиляторы JAVA, виртуальных машин и библиотек классов, была представлена ​​компанией Sun в 1995 году. В мае 1997 года вместе с JAVA Communitz Process Sun разработала технологию JAVA согласно GNU General Public License. Другие компании также искали альтернативы технологии предложенной Sun как GNU Compiler для JAVA и GNU Classpath.

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

История создания языка Java начинается в июне 1991 года, когда Джеймс Гослинг создал проект для использования в одном из своих многочисленных сет-топ проектов. Язык, который рос вне офиса Гослинга, как дуб, Oak - первоначальное название Java до 1995 года, после в дальнейшем история Java продолжалась под именем Green, а позже был переименован как Java.

Но официальной датой создания языка Java считается 23 мая 1995 года, после выпуска компанией Sun первой реализации Java 1.0. Она гарантировала «Напиши один раз, запускай везде», обеспечивая недорогой стоимостью на популярных платформах[3].

Джеймс Гослинг начал разрабатывать проект языка программирования JAVA в июле 1991 года, для использования его в одном из своих многочисленных проектов set – top box. Язык сначала называлась (Oak) “Дуб” в честь дуба, который рос перед офисом Гослинга, но в конце выбор был остановлен на JAVA, название было выбрано из списка случайным образом.

Гослинг решил предложить в дополнение к виртуальной машины, которая будет иметь стиль С С++. Sun выпустила свой продукт под именем JAVA 1.0. Девиз звучал (пишешь один раз запускаешь везде). Следует отметить и настроенную безопасность, которая позволяет использовать границу на уровне файлов доступа.

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

В декабре 1998 года появилась JAVA 2. Новая версия предлагала большинство конфигураций, созданных специально для различных типов платформ, например JDEE приложение типа enterprise в то время как stripped + down Sun МЭ был придуман для мобильных платформ. 

Sun переиминувала новые версии JD2 следующим образом: JAVA EE; JAVA ME; JAVA SE;  

JAVA остается стандартом, которым руководствуется JAVA Community Process (процесс, который позволяет заинтересованным лицами принимать участие в формировании будущих спецификаций JAVA). Sun предложила большинство частей JAVA бесплатно, независимо на статус владельца программного обеспечения. Доходы от JAVA поступают за счет продажи спецализированных продуктов, таких как Enterprise Java System[4].

13 ноября 2006 Sun запустила несколько программ JAVA в виде программного обеспечения, с открытым исходным кодом под лицензией GNU General Public License (лицензия на свободное программное обеспечение)[5].

8 мая 2008 Sun завершила процесс, который сделал пригодным для использования все коды ядра JAVA, с условием розширения свободного программного обеспечения с открытым кодом, кроме небольшой части кода, на которую Sun расширяет свои права.[6]

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

⇒ простота в использовании, объектная ориентированность и легкость изучения

⇒ надежность и безопасность 

⇒ независимость от архитектуры 

⇒ возможность интерпретации 

⇒ интерактивность и динамичность

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

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

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

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

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

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

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

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

Байт-код легко переводится непосредственно в родные машинные коды, независимо на то, что в JAVA используется интерпретатор при котором достигается очень высокая производительность. Инструкции java bytecode похожи с инструкциями машинного кода, но предназначены для виртуальной машины и созданы специально для аппаратного владельца.

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

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

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

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

JVM была построена и оптимизирована под типизированный код со статическим контекстом, генерируемый javac компилятором, но со временем разработчики языков поняли, что JVM может запускать код написанный не только на языке Java. Если компилятор создает корректный Java байт код, JVM не волнует на каком языке он был написан. Эти магические возможности используются многими веб-сайтами с высокой посещаемостью. Разработчики пишут код на своем ноутбуке, а затем разворачивают приложение на мощном сервере, где оно использует многоядерную мощь в полную силу. Достоинство подобного способа выполнения программ – в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина[11].

Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Однако, такая универсальность данной технологии рождает недостаток – требовательность к ресурсам компьютера. Так как Java-программы не содержат машинного кода и при их запуске включается в работу система времени выполнения Java, их производительность заметно ниже, чем у обычных программ, составленных, например, на языке программирования C++[12].

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

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

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

Преимущества Java как языка программирования:

Объектно-ориентированный: в Java все является объектом. Дополнение может быть легко расширено, так как он основан на объектной модели.

Платформонезависимый: в отличие от многих других языков, включая C и C++, Java, когда был создан, он не компилировался в платформе конкретной машины, а в независимом от платформы байт-коде. Этот байт код распространяется через интернет и интерпретируется в Java Virtual Machine (JVM), на которой он в настоящее время работает.

Простой: процессы изучения и введение в язык программирования Java остаются простыми. Если Вы понимаете основные концепции объектно-ориентированного программирования, то он будет прост для Вас в освоении.

Безопасным: методы проверки подлинности основаны на шифровании с открытым ключом.

Архитектурно-нейтральным: компилятор генерирует архитектурно-нейтральные объекты формата файла, что делает скомпилированный код исполняемым на многих процессорах, с наличием системе Java Runtime.

Портативный: архитектурно-нейтральный и не имеющий зависимости от реализации аспектов спецификаций — все это делает Java портативным. Компилятор в Java написан на ANSI C с чистой переносимостью, который является подмножеством POSIX.

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

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

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

Высокопроизводительный: введение Just-In-Time компилятора, позволило получить высокую производительность.

Распространенный: предназначен для распределенной среды интернета.

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

Язык Java не был первым языком для написания кроссплатформенных приложений, но он стал самым популярным. Это не означает полную совместимость на разных платформах – отсутствующие библиотеки или несовместимые версии библиотек запросто похоронят ваш код. Вы не можете взять код десктоп приложения, скомпилированный под JRE 1.7 и запустить его на телефоне в Java ME. Чуда не произойдет. Если вы используете правильные версии Java и у вас достаточно памяти, ваш код будет работать.

По оценкам аналитиков TIOBE Software, самым востребованным в профессиональной среде инструментом для создания приложений в настоящий момент является Java – язык программирования, за прошедшие 12 мес прибавивший почти 6 % в общем рейтинге, занявший 21,5 % рынка и получивший почетный титул «язык 2015 года».

Вторым по популярности среди разработчиков является язык С (16 %), замыкает тройку лидеров C++, чья доля на рынке составляет примерно 7 %. На четвертой позиции фигурирует C# (4,7 %) (рис. 1). Компания TIOBE Software, Анализ данных проводится на основе результатов поисковой выдачи многих систем, включая Google, Google Blogs, Yahoo!, Wikipedia, MSN, YouTube, Bing, Amazon и Baidu (рис. 1). Как мы видим, язык Java занимает первые места во многих рейтингов, это говорит о том, что он очень востребован.

Рисунок 1. Визуализация инструмента программирования в графическом виде

Самой выдающейся чертой языка Java является то, что его приложения компилируются в специальный байт-код и выполняются в специальной виртуальной машине в любой операционной системе и на любом оборудовании. На этом языке программирования могут создаваться веб-приложения для london escort service, мобильные приложения или программы, «удобочитаемые» на любом компьютере. К уже реализованным всемирно известным проектам на Java относятся Amazon, eBay, Yandex.

Другим важным преимуществом языка является довольно высокая безопасность. Поскольку все приложения выполняются и, соответственно, контролируются Java-машиной, то при любой попытке несанкционированного доступа или соединения программа просто прерывает свою работу. Некоторые программисты выделяют и более упрощенную саму форму написания программ Java по сравнению с ее предшественниками, коими являются С, С+ и С++. Помимо этого, к языку существует огромное количество бесплатных программных библиотек, написанных программистами всего мира. К недостаткам языка следует отнести чрезмерную нагрузку на оперативную память оборудования. По некоторым данным и время выполнения одних и тех же задач в 1,5–2 раза у продуктов этого языка медленнее, чем на тех же С. Тем не менее, пока преимущества языка Java перевешивают его недостатки, он остается одним из самых востребованных.

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

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

Создание языка программирования Си положило начало новой эпохе программирования. Язык был разработан Деннисом Ритчи для создания операционной системы UNIX[14].

Си возник в результате начавшейся в 60-е годы революции в структурном программировании. В то время большие программы представляли собой тяжело отслеживаемый, длинный набор вызовов, возвратов, безусловных переходов, так называемый «макаронный код». Структурное программирование Си, сменив такие языки, как Алгол и Фортран, облегчило жизнь программиста. Сейчас программист — высокооплачиваемая профессия, на сайте поиска работы HeadHunter — hh.ua ежедневно публикуются сотни интересных предложений как для начинающих программистов для работы системным администратором, так и для профи — для разработки программного обеспечения[15].

В Кембриджском университете в начале 60-х годов задались целью написать язык, на котором можно было бы писать другие языки. Впоследствии к ним подсоединился Лондонский университет. Этот язык, восходящий корнями к Алголу, назвали CPL (Combine Programming Language). Язык Си явился логическим итогом этой работы и впитал многие конструкции CPL. Компилятор Си, в соответствии с традицией, заложенной Николаусом Виртом, написан на самом Си[16].

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

Другая причина того, что в 1980-е годы язык C++ превратился в самый распространенный и популярный среди языков структурного программирования, – это его емкий, но простой синтаксис. Язык C++ – это удачное сочетание эффективности, выразительности и изящества.

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

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

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

Перегрузка операторов позволяет кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме. Имеется возможность управления константностью объектов (модификаторы const, mutable, volatile).

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

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

Недостатки языка С++[20]:

− Плохо продуманный синтаксис сужает спектр применимости языка (что, с учётом претензий на «универсальность», делает его крайне неудобным в некоторых задачах).

− Унаследованные от Си низкоуровневые свойства существенно тормозят и затрудняют прикладную разработку.

− Язык не содержит многих важных возможностей.

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

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

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

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

C – это очень мощный язык программирования. Благодаря своей силе, C просто идеален, когда вам нужно получить полный контроль над создаваемой программой. Именно поэтому, большинство современных популярных операционных систем, таких как Windows, OSX и Linux, написаны именно на языке C. Почти все компьютеризированные устройства, полностью или частично, используют в своей работе язык C. От микроволновок, пультов дистанционного управления и калькуляторов до баз данных и управляющих механизмов Шаттлов — язык C настолько универсален, что используется почти повсеместно[21].

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

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

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

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

2.2. Структура данных и синтаксис языка программирования C++

Особенность работы со стандартными типами данных в С/С++, связанная с различными размерами и точностью этих типов, приводит к зависимости реализации программного кода от транслятора. При смене платформы можно получить различное поведение программы. Из составных типов данных необходимо отметить отсутствие структур (struct) и перечислений (enum)[25].

Подобная ситуация и с массивами: в языках С# и Java это объекты класса Array. В C, C++ и C# есть как настоящие многомерные массивы, так и массивы массивов. Реализация пользовательского типа данных класс, который является основой парадигмы объектно-ориентированного программирования, может быть выполнена двумя способами: как структура (в С) с определенными ограничениями в применении и как класс (в С++, C# и Java). Использование параметризованных типов данных, как основы обобщенного программирования, реализовано в виде шаблонов (template) в С++, интегрировано в виртуальную среду выполнения C# и поддерживается в виде «контейнеров типа Т» (generics) в Java.

Работа с данными в программе, начиная с языка программирования С++, реализовано с использованием механизма пространства имен (namespace). Синтаксической основой для всех рассматриваемых языков программирования является С. Неизменным синтаксическим правилам подчиняются: реализация основных алгоритмических конструкций: альтернативное и многозначное ветвление, итерационные и арифметические циклы; правила объявления, определения и вызова функций, объявления и использования переменных; однозначные обозначения большинства операций и поддержка соответствующих приоритетов в их работе. Различий также много, рассмотрим наиболее существенные из них. Для всех языков программирования семейства С точкой входа в программу является функция main(). В С/С++ функция main() не имеет прототипа и, следовательно, можно использовать различные ее формы: void main(); int main(); int main(int argc, char *argv[], char* envp[]). В силу того, что C# и Java полностью объектно-ориентированные языки, один из классов в программном должен быть открытым классом и содержать метод main, с которого начнется выполнение программы.

Традиционными указателями для С/С++ являются неуправляемые указатели, которым можно присвоить любой адрес памяти, даже если она находится за пределами исполнительной среды. В С# среда исполнения Common Language Runtime (CLR) позволяет работать с неуправляемыми данными, но при этом соблюдается определенная дисциплина в их использовании: например, соответствующий модуль должен быть помечен как небезопасный (unsafe).

Еще одной традицией при работе с памятью для С/С++ является ручной способ управления, который поддерживает явное выделение и освобождение памяти в куче. В этом случае возможна «утечка памяти», когда память занята данными, ссылки на которые удалены или больше не используются. В С# и Java для разрешения таких ситуаций используется система сборки мусора (Garbage Collector). Сборщик мусора освобождает память от лишних объектов автоматически по ходу выполнения программы, является частью исполнительной среды С# и виртуальной машины Java.

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

Глава 3. Пример использования языков программирования Java и C++

Отправка электронной почты с помощью Java:

Для отправки электронной почты необходимо установить соединение с сокетом по порту 25, который обычно используется для протокола SMTP(Simple Mail Transport Protocol - простой протокол передачи почты). Протокол SMTP описывает формат электронных сообщений. Вы можете подключаться к любому серверу, на котором выполняется служба SMTP. Однако сервер должен быть готов к приему запроса на соединение. 

Ранее серверы с демонами sendmail могли принимать любые электронные сообщения, но в настоящее время из-за большого объема спама в большинстве серверов встроена проверка и допуск почтовых сообщений только от разрешенных пользователей или IP-адресов.

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

Создайте сокет на компьютере:

В выходном потоке передайте следующую информацию:

В спецификации протокола SMTP(документ RFC 821) требуется, чтобы строки заканчивались символами /r и /n.

Приведем пример с надписью «HelloWorld» на языке Java, С++ и на С.

Java.

С

С++

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

Строка 3. В C/C++ выполнение программы всегда начинается с функции main.

Строки 7 и 11. В заголовке цикла через точку с запятой указываются начальная установка, условие продолжения и правило пересчета параметра цикла. Операции ++ и -/- - известнейшие из сокращений языка С, означающие инкремент и декремент переменной, то есть увеличение и уменьшение ее значения на единицу.

Строка 8. Функция scanf вводит по формату, заданному первым параметром, значения переменных, адреса которых заданы остальными параметрами. Здесь адрес, куда вводится значение, вычисляется с помощью адресной арифметики, к адресу расположения массива М прибавляется смещение на N элементов. Тот же эффект можно получить, записав &M[N].

Строка 12. Операция % вычисляет остаток от деления. Условие оператора if считается выполненным, если численное значение выражения отлично от нуля.

Строка 13. Функция printf - печать по формату действует аналогично scanf, но вместо адресов ей передаются значения, подлежащие выводу.

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

Строка 5. Конструктор класса. В нем инициализируется представление объекта. Например, в поле М заносится адрес блока памяти, заказанного операцией new T[Size].

Строка 8. Пример перегрузки операции []. Функция operator [] будет вызываться, когда квадратные скобки будут появляться справа от объекта класса Array .

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

Строки 15-24. Определение функции Аrrау::Add(T) (между прочим, это ее полное имя).

Строка 27. Создаем объект типа Array. Темплет Аггау параметризируется типом int.

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

Заключение

Java – это объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретенной компанией Oracle). Дата официального выпуска – 23 мая 1995 г.

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

Самой выдающейся чертой языка Java является то, что его приложения компилируются в специальный байт-код и выполняются в специальной виртуальной машине в любой операционной системе и на любом оборудовании. На этом языке программирования могут создаваться веб-приложения для london escort service, мобильные приложения или программы, «удобочитаемые» на любом компьютере. К уже реализованным всемирно известным проектам на Java относятся Amazon, eBay, Yandex.

В настоящее время 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 и очень многих других (с большой долей вероятности, во всех крупных и значимых проектах).

Создание языка программирования Си положило начало новой эпохе программирования. Язык был разработан Деннисом Ритчи для создания операционной системы UNIX.

C – это очень мощный язык программирования. Благодаря своей силе, C просто идеален, когда вам нужно получить полный контроль над создаваемой программой. Именно поэтому, большинство современных популярных операционных систем, таких как Windows, OSX и Linux, написаны именно на языке C. Почти все компьютеризированные устройства, полностью или частично, используют в своей работе язык C. От микроволновок, пультов дистанционного управления и калькуляторов до баз данных и управляющих механизмов Шаттлов — язык C настолько универсален, что используется почти повсеместно.

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

В третьей главе мы рассмотрели примеры использования Javaи С: пример с надписью «HelloWorld»,отправка электронной почты с помощью Java и ввод из файла ряд целых чисел, а затем вывести только нечетные из них, причем в обратном порядке следования на языке С++.

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

Архангельский, А. Я. C++Builder. Работа с документами Excel / А.Я. Архангельский. - М.: Бином-Пресс, 2016. - 480 c.

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

Боровский, А. C++ и Pascal в Kylix 3. Разработка интернет-приложений и СУБД / А. Боровский. - М.: БХВ-Петербург, 2015. - 544 c.

Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей Гарнаев , Сергей Гарнаев. - Москва: СПб. [и др.] : Питер, 2017. - 718 c.

Гербер. Ш. Java. Руководство для начинающих / Шилдт Герберт. - М.: Диалектика / Вильямс, 2014. - 104 c.

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

Гриффитс, Д. Изучаем программирование на C / Д. Гриффитс, Д. Гриффитс. - М.: Эксмо, 2015. - 624 c.

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

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

Кениг, Э. Эффективное программирование на C++. Практическое программирование на примерах. Т. 2 / Э. Кениг, Б.Э. Му. - М.: Вильямс, 2016. - 368 c.

Перри, Г. Программирование на C для начинающих / Грег Перри , Дин Миллер. - М.: Эксмо, 2015. - 368 c.

Полубенцева, М. C/C++. Процедурное программирование / М. Полубенцева. - М.: БХВ-Петербург, 2014. - 448 c.

Понамарев, В. Программирование на C++/C# в Visual Studio .NET 2003 / В. Понамарев. - М.: БХВ-Петербург, 2015. - 917 c.

Прата. С. Язык программирования C++. Лекции и упражнения / Стивен Прата. - М.: Вильямс, 2015. - 445 c.

Савитч. У. Язык Java. Курс программирования / Уолтер Савитч. - М.: Вильямс, 2015. - 928 c.

Секунов, Н. Программирование на C++ в Linux / Н. Секунов. - М.: БХВ-Петербург, 2016. - 425 c.

Сеттер, Р. В. Изучаем Java на примерах и задачах / Р.В. Сеттер. - М.: Наука и техника, 2016. - 240 c.

Хабибуллин. И. Самоучитель Java / Ильдар Хабибуллин. - М.: БХВ-Петербург, 2014. - 768 c.

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

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

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

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

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

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

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

  1. Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей Гарнаев , Сергей Гарнаев. - Москва: СПб. [и др.] : Питер, 2017. - 718 c.

  2. Савитч. У. Язык Java. Курс программирования / Уолтер Савитч. - М.: Вильямс, 2015. - 928 c.

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

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

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

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

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

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

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

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

  11. Хабибуллин. И. Самоучитель Java / Ильдар Хабибуллин. - М.: БХВ-Петербург, 2014. - 768 c.

  12. Гербер. Ш. Java. Руководство для начинающих / Шилдт Герберт. - М.: Диалектика / Вильямс, 2014. - 104 c.

  13.  Сеттер, Р. В. Изучаем Java на примерах и задачах / Р.В. Сеттер. - М.: Наука и техника, 2016. - 240 c.

  14.  Полубенцева, М. C/C++. Процедурное программирование / М. Полубенцева. - М.: БХВ-Петербург, 2014. - 448 c.

  15. Боровский, А. C++ и Pascal в Kylix 3. Разработка интернет-приложений и СУБД / А. Боровский. - М.: БХВ-Петербург, 2015. - 544 c.

  16. Понамарев, В. Программирование на C++/C# в Visual Studio .NET 2003 / В. Понамарев. - М.: БХВ-Петербург, 2015. - 917 c.

  17. Секунов, Н. Программирование на C++ в Linux / Н. Секунов. - М.: БХВ-Петербург, 2016. - 425 c.

  18. Архангельский, А. Я. C++Builder. Работа с документами Excel / А.Я. Архангельский. - М.: Бином-Пресс, 2016. - 480 c.

  19. Прата. С. Язык программирования C++. Лекции и упражнения / Стивен Прата. - М.: Вильямс, 2015. - 445 c.

  20. Перри, Г. Программирование на C для начинающих / Грег Перри , Дин Миллер. - М.: Эксмо, 2015. - 368 c.

  21. Отличия Java от C++ [Электронный ресурс] // Справочник CodeNet – все для программиста. – URL: http://www.codenet.ru/ webmast/java/02.php (дата обращения: 18.08.2018).

  22. Гриффитс, Д. Изучаем программирование на C / Д. Гриффитс, Д. Гриффитс. - М.: Эксмо, 2015. - 624 c.

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

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

  25. Кениг, Э. Эффективное программирование на C++. Практическое программирование на примерах. Т. 2 / Э. Кениг, Б.Э. Му. - М.: Вильямс, 2016. - 368 c.