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

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

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

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

Добавлен: 06.04.2023

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

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

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

Только в конце марта текущего года, вышел Java 10. Однако, в связи с тем, что компания Oracle изменила релизный цикл (каждые полгода новый релиз), к выходу уже готовится 11-я версия.

Java 10: краткая сводка.

Нововведения десятой версии: локальный вывод типов с помощью var, улучшения в процессах «сборки мусора» и возможность использовать Graal как основной JIT-компилятор.

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

var list = new ArrayList<String>(); // infers ArrayList<String>

var stream = list.stream(); // infers Stream<String>

Тем не менее решение ввести var закончилось неоднозначными отзывами участников сообщества. Кто-то поддерживал нововведение и утверждал, что дедупликация повышает читабельность кода. Но были и те, кто уверял, что сейчас ряд типов переменных (к примеру, connection) не будут очевидными. Несмотря на что, что IDE теперь могут показывать их по требованию, однако же в других средах будут возникать проблемы.

В десятом релизе для улучшенной сборки мусора содержались сразу два изменения: JEP 304 и JEP 307. JEP 304 улучшил изоляцию кода от разных сборщиков мусора посредством нового интерфейса GC, что дало возможность быстрее интегрировать сторонние сборщики. JEP 307, в свою очередь, позволил «собирать мусор» в несколько потоков.

Что можно сказать о новом JIT-компиляторе, то он направлен на рост производительности JVM. Предыдущая версия JVM была написана на C++, но в рамках проекта Metropolis значительную часть JVM перепишут на Java. Экспериментальный компилятор выступает первым шагом на пути к данной цели.

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

Часть разработчиков недовольна тем, как быстро меняется язык. Но есть и те, кто отмечает, что Java наконец-то обзаводится функциями, которых ему не хватало, и которые уже давно были реализованы в других ЯП. Вот некоторые из них.

Изменения в локальном выводе типов.

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

Добавление необработанных строковых литералов.

Это еще одно дополнение, над которым сейчас ведется работа. В необработанной строке каждый символ читается «как есть», включая символы разрыва. Например, такой строкой может быть разметка HTML или SQL-запрос:


String html = "<html>\n" +

" <body>\n" +

" <p>Hello World.</p>\n" +

" </body>\n" +

"</html>\n";

Используя строковый литерал, этот код можно записать следующим образом:

String html = `<html>

<body>

<p>Hello World.</p>

</body>

</html>

`;

Для обозначения необработанной строки используется обратный апостроф (`). Если вам нужно прописать апостроф внутри самой строки, то в этом случае для маркировки её границ используются двойные (или тройные, четверные и т. д.) обратные апострофы:

String str = ```This is a raw `string` with ``backticks`` inside```;

Появятся switch-выражения

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

int val;

switch (str) {

case "foo": val = 1; break;

case "bar": val = 2; break;

case "baz": val = 3; break;

default: val = -1;

}

С появлением switch-выражений, конструкция сократится:

int val = switch (str) {

case "foo": break 1;

case "bar": break 2;

case "baz": break 3;

default: break -1;

}

При этом если в case встречается только break, возможно использовать упрощенную нотацию:

int val = switch (str) {

case "foo" -> 1;

case "bar" -> 2;

case "baz" -> 3;

default -> -1;

}

Добавление switch expressions — это шаг вперед на пути к появлению метода сопоставления с образцом.

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

Заключение

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

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

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


Идеология Java подразумевает работу в компьютерных сетях и возможность подгрузки в нужный момент посредством сети требуемых классов и ресурсов, необходимых программе, и тех, что не были загружены до того. Для обеспечения такой работы приложения Java разрабатываются и распространяются, как большое число независимых классов. Тем не менее данный способ разработки ведет к очень высокой фрагментации программы. Даже небольшие учебные проекты как правило состоят из десятков классов, в то время как реальные проекты – из сотен. В то же время каждому общедоступному (public) классу соответствует свой файл, носящий такое же имя. Для того чтобы справиться с данным количесвом файлов, Java предусматривает специальное средство группировки классов, которое называется пакетом (package). Пакеты обеспечивают независимые пространства имен (namespaces), а также ограничение доступа к классам.

Список использованной литературы

  1. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления "Компьютерные науки". - М.: НУК, 2006. - 52 с.
  2. Блинов И.Н., Романчик В.С. Java 2. Практическое руководство. // Мн.: УниверсалПресс, 2005. 400 с.
  3. Блох Д. Java. Эффективное программирование. // М.: Лори, 2002. – 224 с.
  4. Вебер Д. Технология Java в подлиннике: пер. с англ [Текст] - СПб.: БХВ - Петербург, 2001
  5. Вязовик Н.А. Программирование на Java. Курс лекций, Интернет-университет информационных технологий, 2003. 592 с.
  6. Гослинг Дж., Арнольд К. Язык программирования Java: Пер. с англ. — СПб.: Питер, 1997. — 304 с.
  7. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. — М.: «Вильямс», 2004. 800 с.
  8. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. - М.: Издательство <Бином>, 2009. 1454 с.
  9. Либерти Джесс. Освой самостоятельно C++ за 21 день. - Вильямс, г. Москва, 2001. 816 с.
  10. Любош Бруга. Java по-быстрому. Практический экспресс-курс., 2006
  11. Пол Ирэ, "ООП с использованием С++", Киев, "ДиаСофт", 2010. 480 с.
  12. Программирование на Java А.В. Гаврилов, С.В. Клименков, Е.А. Цопа 2010г – 132с. 3. Арнольд К., Гослинг Дж., Холмс Д.. Язык программирования Java. 3- е изд. // М: Вильямс, 2001. 624 с.
  13. Секунов Н. Самоучитель Visual C++ 6. изд. «БХВ-Петербург», Санкт-Петербург, 2003. 925 с.
  14. Синтес Антони. Освой самостоятельно объектно-ориентированное программирование за 21 день. — М.: «Вильямс», 2002. 372 с.
  15. Страуструп Бьерн. Язык программирования С++. Бином, 2008. 369 с.
  16. Сухов С. А. Основы программирования на Java [Текст]: учебное пособие/Сухов С. А. - Ульяновск: УлГТУ, 2006. - 88 с.
  17. Тейт Б. Горький вкус Java. // СПб: Питер, 2003. – 334 с.
  18. Хабибуллин И.Ш. Самоучитель Java 2. СПб.: БХВ-Петербург, 2007. 720 с.
  19. Хорстманн К.С., Корнелл Г. Библиотека профессионала. Основы. М.Вильямс, 2004. – 848 с.
  20. Шилдт Г. Java 2, v5.0 (Tiger). Новые возможности. // СПб.: БХВПетербург, 2005. – 208 с.
  21. Шилдт Герберт, Холмс Джеймс, Искусство программирования на Java, 2005. 336 с.
  22. Эккель Б. Философия Java. Библиотека программиста. СПб.: Питер, 2001. 640 с.