Файл: Современные языки программирования (ИСТОРИЯ И ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

Локальные переменные и возвращаемые значения Ref

Операции удаления

Двоичные литералы и цифровые разделители

Выражения throw

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

Сфера применения C# продолжает расширяться. Теперь .NET Core подходит для любой операционной системы и движется в направлении облачных технологий и портативности. Разработчики активно занимаются этими новыми возможностями с добавлением новых функций.

С# 8.0

В C# 8.0 добавлены следующие функции и улучшения языка C#:

Члены только для чтения

Методы интерфейса по умолчанию

Улучшения сопоставления шаблонов:

Объявления using.

Статические локальные функции.

Удаляемые ссылочные структуры.

Ссылочные типы, допускающие значение NULL

Асинхронные потоки.

Индексы и диапазоны.

Присваивание объединения со значением NULL

Неуправляемые сконструированные типы

Выражение stackalloc во вложенных выражениях

Улучшение интерполированных строк verbatim

C# 8.0 поддерживается в .NET Core 3.x и .NET Standard 2.1.

В C# 8.0 добавлены и изменены многие функции, а также улучшены старые что повышает количество возможностей языка. Данное обновление совершенно новое и требуется время для анализа его работы. [16]

2.2 Java

Java — строго типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems, в дальнейшем приобретенный компанией Oracle. Разработка ведется сообществом, организованным через Java Communiti Process. Язык и основные реализующие его технологии распространяются по лицензии GPL. Права на торговую марку принадлежат корпорации Oracle.

Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре с помощью виртуальной Java - машины. Дата официального выпуска — 23 мая 1995 года.
На 2019 год Java — один из самых популярных языков программирования.

Изначально язык назывался Oak («Дуб»), разрабатывался Джеймсом Гослингом для программирования бытовых электронных устройств. Из-за того, что язык с таким названием уже существовал, вскоре Oak был переименован в Java. Назван в честь марки кофе Java, которая, в свою очередь, получила наименование одноимённого острова (Ява), поэтому на официальной эмблеме языка изображена чашка с горячим кофе. Существует и другая версия происхождения названия языка, связанная с аллюзией на кофе-машину как пример бытового устройства, для программирования которого изначально язык создавался. В соответствии с этимологией в русскоязычной литературе с конца двадцатого и до первых лет двадцать первого века название языка нередко переводилось как Ява, а не транскрибировалось.


В результате работы проекта мир увидел принципиально новое устройство, которое опередило своё время более чем на 10 лет. Устройство получило название Star7, но из-за большой стоимости в 50 долларов не смогло произвести переворот в мире технологии и постепенно забылось.

Star7 не пользовался популярностью в отличие от языка программирования Java и его окружения. Следующим этапом жизни языка стала разработка интерактивного телевидения. В 1994 году стало очевидным, что интерактивное телевидение было ошибкой.

С середины 1990-х годов язык стал широко использоваться для написания клиентских приложений и серверного программного обеспечения. Тогда же определённое распространение получила технология Java-апплетов — графических Java-приложений, встраиваемых в веб-страницы; с развитием возможностей динамических веб-страниц в 2000-е годы технология стала применяться редко.

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

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

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

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

Обширное использование платформенно-ориентированного кода
(native-код) в стандартных библиотеках,

Аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами архитектуры ARM).

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10—30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.


Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

Версии Java

JDK 1.0

Разработка Java началась в 1990 году, первая официальная версия — Java 1.0, — была выпущена только 21 января 1996 года.

JDK 1.1

Вторая версия была выпущена 19 февраля 1997 года.

Библиотека Accessibility.

Java 2D.

Поддержка технологии drag-and-drop.

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

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

Полная поддержка технологии CORBA.

JIT-компилятор, улучшенная производительность.

Усовершенствования инструментальных средств JDK, в том числе поддержка профилирования Java-программ.

J2SE 1.2

Дата выпуска 8 декабря 1998 года. Кодовое имя Playground. В данном случае встречается путаница. Выпускались книги, например, Beginning Java 2 by Ivor Horton (Mar 1999), фактически по J2SE 1.2 (бывшее название — Java 2). Вместе с тем по сей день такие книги публикуются, например: Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантри. Технологии программирования на Java 2. Распределённые приложения (2011).

Когда Java 2 был исторически заменен следующими релизами, подобные названия книг дезориентируют в понимании, о какой же версии Java они написаны на самом деле. Язык J2SE 1.2 принято считать
за Java 2, а авторы книг за Java 2 принимают JDK 7, это приводит к полной путанице.

J2SE 1.3

Дата выпуска 8 мая 2000 года. Кодовое имя Kestrel.

J2SE 1.4

Дата выпуска 6 февраля 2002 года. Кодовое имя Merlin.

J2SE 5.0

Спецификация Java 5.0 была выпущена 30 сентября 2004 года, кодовое имя Tiger. C этой версии изменена официальная индексация, вместо Java 1.5 правильно Java 5.0. Внутренняя индексация Sun осталась
прежней — 1.x. Минорные изменения теперь включаются без изменения индексации, для этого используется слово «Update» или буква «u», например, Java Development Kit 5.0 Update 22. В обновления могут входить как исправления ошибок, так и небольшие добавления в API, JVM.

В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:

1. Перечислимые типы. Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.

2. Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.


3. Перечисление может реализовывать интерфейсы.

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

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

Средства обобщённого программирования английское обозначение generics — механизм, аналогичный средствам языков Ada и Eiffel позже также появились и в C#, принципиально отличаются от шаблонов C++, дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.

Методы с неопределённым числом параметров.

Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками, например, между int — Integer. Наличие такой возможности сокращает код, поскольку исключает необходимость выполнения явных преобразований типов в очевидных случаях.

Разрешён импорт статических полей и методов.

В язык введён цикл по коллекции объектов итератор, англ. foreach.

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

Java SE 6

Релиз версии состоялся 11 декабря 2006 года, кодовое имя Mustang. Изменена официальная индексация — вместо ожидаемой 6.0 версия значится
как 6. Минорные изменения, как и в Java 5.0, вносятся в обычные обновления версии, например, Java Standard Edition Development Kit 6 Update 27. Внесены следующие изменения:

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

Добавлена поддержка японского императорского календаря наряду с уже существующими григорианским и буддийским календарями.

Доступны классы-потоки для чтения и передачи сжатых данных, с возможностью передачи их по сети. Сняты ограничения на количество файлов в архиве ранее 64 Кб, длину названия файла ранее 256 символов и количество одновременно открытых файлов ранее 2000 шт.


Организована система управления кэшем и добавлена поддержка параметра «no-cache» в HTTP-запросе.

JConsole, графический мониторинг JVM, стала официально поддерживаемой утилитой.

Java HTTP Server, позволяет создать полноценный HTTP-сервер, с минимально необходимыми функциональными свойствами.

Повысилась скорость вычислений на 70 %, скорость операций ввода-вывода возросла в два раза.

Swing — улучшена работоспособность OpenGL и DirectX; обработка текста на LCD; добавлен GifWriter, для работы с файлами формата GIF.

Исправлено большое количество ошибок.

Java SE 7

Релиз версии состоялся 28 июля 2011 года, кодовое имя Dolphin. В финальную версию Java Standard Edition 7 не были включены все ранее запланированные изменения. Согласно плану развития план «Б», включение нововведений будет разбито на две части: Java Standard Edition 7 без лямбда-исчисления, проекта Jigsaw, и части улучшений проекта Coin и Java Standard Edition 8, намеченный на конец 2012 года.

В новой версии, получившей название Java Standard Edition 7, помимо исправления большого количества ошибок, было представлено несколько новшеств. Так, например, в качестве эталонной реализации Java Standard Edition 7 использован не проприетарный пакет JDK, а его открытая реализация OpenJDK, а сам релиз новой версии платформы готовился при тесном сотрудничестве инженеров Oracle с участниками мировой экосистемы Java, комитетом JCP расшифровывается как Java Community Process
и сообществом OpenJDK. Все поставляемые Oracle бинарные файлы эталонной реализации Java Standard Edition 7 собраны на основе кодовой базы OpenJDK, сама эталонная реализация полностью открыта под лицензией GPLv2
с исключениями GNU ClassPath, разрешающими динамическое связывание с проприетарными продуктами. К другим нововведениям относится интеграция набора небольших языковых улучшений Java, развиваемых в рамках проекта Coin, добавлена поддержка языков программирования с динамической типизацией, таких, как Ruby, Python и JavaScript, поддержка загрузки классов по URL, обновлённый XML-стек, включающий JAXP 1.4, JAXB 2.2a и JAX-WS 2.2 и другие.

За 5 дней до выхода релиза Java Standard Edition 7 было обнаружено несколько серьёзных ошибок в горячей оптимизации циклов, которая включена по умолчанию и приводит виртуальную машину Java к краху. Специалисты Oracle найденные ошибки за столь короткий срок исправить не могли, но пообещали, что они будут исправлены во втором обновлении Java 7 Update 2 и частично в первом.

Поддержка динамически-типизированных языков InvokeDynamic — расширение JVM (семантики байт-кода), языка Java для поддержки динамически-типизированных языков.

Строгая проверка class-файлов — class-файлы версии 51 Java Standard Edition 7 или более поздней версии должны быть проверены typechecking-верификатором; JVM не должна переключаться на старый верификатор.