Файл: История возникновения и развития языка программирования Си (С++) и Java(История и характеристика Java ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.04.2023

Просмотров: 147

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Функциональные объекты (функторы) – конструкции, позволяющие использовать объект как функцию. Чаще всего функторы в С++ используются в качестве предикатов, псевдозамыканий или функций сравнения в алгоритмах STL, например, в for_each().

Алгоритмы STL универсальны, они могут работать с различными структурами данных – это и классы контейнеров STL, и структуры данных, определенные пользователем и удовлетворяющие требованиям выбранного алгоритма. Это достигается благодаря получению доступа к элементам контейнера посредством итераторов. Java Collections Framework (JCF) [6] – это набор связанных классов и интерфейсов, используемых для хранения и обработки данных.

В основе всех коллекций в Java лежит применение того или иного интерфейса. На вершине иерархии JCF располагаются следующие два интерфейса: Collection (позволяет определять основные методы работы с простыми наборами элементов), а также Map (предоставляет методы для работы с данными вида «ключ» – «значение»). Интерфейс Collection расширяет интерфейс Iterable, именно поэтому в Java все объекты коллекций возможно перебирать в цикле по типу for-each.

Интерфейсы и классы коллекций для создания однопоточного приложения хранятся в пакете java.util, а для создания многопоточного – java.util.concurrent. Именно поэтому перед использованием коллекций необходимо подключить данные пакеты. Схематично вся система коллекций в Java представлена на рисунке 2.

Рисунок 2. Коллекции в Java

Интерфейс List представляет собой неупорядоченную коллекцию элементов, допускающую дублирующиеся значения. Наиболее широко используемой реализацией интерфейса List является ArrayList (массив с автоматически изменяемым размером при добавлении новых элементов). Интерфейс Set является неупорядоченным множеством элементов без повторений. Реализуется с помощью HashSet, LinkedHashSet, TreeSet. Пример реализации интерфейса Set за счет TreeSet приведен на рисунке 1.

Интерфейс Queue представляет собой коллекцию, осуществляющую хранение элементов в порядке необходимом для их обработки. Одним из ключевых методов интерфейса Collection является метод Iterator<E> iterator(). Он возвращает итератор, то есть объект, реализующий интерфейс Iterator, который в свою очередь возвращает поочередно все элементы коллекции. Для того чтобы использовать итераторы в Java необходимо подключить специальный пакет java.util.Iterator. Данный интерфейс содержит следующие методы:

hasNext() (возвращает значения типа boolean в зависимости от того есть элементы в коллекции или нет);


next() (возвращает следующий элемент в коллекции);

remove() (позволяет удалить элемент, который был возвращен последним вызовом next() и многие другие).

Пример работы итераторов приведен в листингах кода рисунке 3 посредством их использования в коллекциях vector (C++) и ArrayList (Java).

Рисунок 3. Листинги кода с примером использования итераторов в C++ (STL) и Java

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

Таблица 1

Основные отличия библиотеки STL в C++ и Java Collections Framework в Java

STL (C++)

JCF (Java)

Алгоритмы не зависят от контейнера, с которым они работают.

Алгоритмы организованы контейнером.

Программист, используя библиотеку STL, должен контролировать освобождение памяти.

В Java нет необходимости контролировать работу с памятью.

В STL контейнеры могут содержать указатели на объекты или сами объекты (при применении "&").

В Java коллекции всегда содержат только указатели на объекты.

В STL не используются интерфейсы.

JCF очень сильно опирается на интерфейсы.

STL использует семантику значений. Присваивание одного контейнера другому копирует всю коллекцию.

Java использует ссылочную семантику. Присваивание коллекций присваивает только ссылку.

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

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

В C++ функциональный объект создаётся с помощью класса у которого перегружен operator().

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

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


Заключение

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

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

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

C++ один из самых популярных языков программирования, также является ООП. Главная особенность представляет набор предопределенных классов, типы данных которых могут быть созданы несколько раз. Классы: можно дополнительно разместить членов функции для реализации определенных функций. Несколько объектов определенного класса могут быть определены для реализации функций в классе. Объекты могут быть определены как экземпляры, созданных во время выполнения. Эти классы также могут быть унаследованы от других новых классов.

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

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

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

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


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

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

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

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

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

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

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

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

Краткий обзор GUI-фреймворков для Java [Электронный ресурс]. Режим доступа: http://eax.me/java-swing/. Дата обращения: 01.12.2018.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. Краткий обзор GUI-фреймворков для Java [Электронный ресурс]. Режим доступа: http://eax.me/java-swing/. Дата обращения: 01.12.2018.

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

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

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

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

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

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

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

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

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

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

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

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

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