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