Файл: История возникновения и развития языка программирования Си (С++) и Java».pdf
Добавлен: 22.04.2023
Просмотров: 279
Скачиваний: 1
Такая стандартизация языка была необходима для того, чтобы сделать языковую платформу независимой, что является одним из идеологических направлений в Java и одной из причин ее успеха. Однако одна небольшая проблема с независимостью платформы все еще остается. Некоторые процессоры используются для промежуточного хранения результатов. Чтобы сделать Java максимально совместимой между различными системами, более ранние версии запрещали любые методы повышения точности. Однако это приводит к снижению производительности. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более, если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово strictfp, запрещающее повышение точности.
Преобразования при математических операциях[10]
В языке Java действуют следующие правила:
1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.
2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.
3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.
4. Иначе оба операнда преобразуются к типу int.
Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в C++.
Самый простой код, написанный на языке Java представляет из себя следующий вид:
/*многострочный комментарий
Объявление нового класса,
который содержит код программы*/
public class Program{ // начало объявления класса Program
// определение метода main
public static void main (String args[]){ // объявление нового метода
System.out.println("Hello Java!"); // вывод строки на консоль
} // конец объявления нового метода
} // конец объявления класса Program
Глава 3. Сравнение С++ и Java
Java и C ++ можно рассматривать как два языка-потомка Си, разработанных по разному соображению и пошедших по разным путям.
Синтаксис
C ++ поддерживает совместимость с Си, насколько это возможно. Java сохраняет внешне похожие Си и C++, но на самом деле сильно отличается от них.
Выполнение программы
Код Java компилируется в промежуточный код, который затем интерпретируется или компилируется, в то время как C ++ изначально ориентирован на компиляцию в машинный код внутреннего блока. Это явление вряд ли можно использовать при написании конкретных программ, таких как драйверы устройств или низкоуровневые утилиты. Механизм выполнения Java делает программы, даже скомпилированные (в байт-код), полностью переносимыми. Стандартная среда и среда выполнения позволяют Java-программам работать на любой аппаратной платформе и в любой операционной системе без каких-либо изменений, поэтому усилия по миграции программ минимальны. Цена переносимости - потеря эффективности, а работа среды исполнения приводит к дополнительным накладным расходам.
Управление ресурсами
C ++ допускает принцип «захвата ресурсов путем инициализации» (RAII), в котором ресурсы связаны с автоматическим освобождением при уничтожении объекта (например, std, vector и std, ifstream). Кроме того, когда программист использует следующие ресурсы (память под объекты, открытые файлы и т. д.), Он должен четко позаботиться об их своевременном освобождении. Java работает в среде сборки мусора, которая автоматически отслеживает прекращение использования объектов и освобождение занятой памяти, если это необходимо, в какой-то неопределенный момент времени. Ручное управление предпочтениями в системном программировании, где требуется полный контроль над ресурсами, RAII и сборкой мусора. Сборщик мусора Java требует системных ресурсов для обеспечения эффективного выполнения программ, лишает программы Java детерминизма выполнения и возможности отслеживать только память. Файлы, каналы, сокеты, объекты Java GUI всегда явно освобождаются.
Стандартизация окружающей среды
Java имеет несколько стандартов для ввода-вывода, графики, геометрии, диалоговых окон, базового доступа к данным и других типичных приложений. C++ гораздо свободнее в этом отношении, стандарты на графику, доступ к базе данных и т. д. являются недостатком, если программист хочет определить свой собственный стандарт.
Указатели
C ++ сохраняет возможность работы с низкоуровневыми указателями. В Java нет указателей. Использование указателей часто трудно обнаружить, но необходимо для низкоуровневого программирования. В основном, C ++ имеет набор инструментов (конструкторы и деструкторы, стандартные шаблоны, ссылки), которые позволяют почти полностью исключить ручное выделение памяти, освобождение и опасные операции указателя. Однако такое исключение требует определённой культуры программирования, в то время как в языке Java оно реализуется автоматически.
Парадигма программирования
В отличие от C ++, Java является чисто объектно-ориентированным языком, без возможности процедурного программирования. Для задания главной функции даже самой простой программы на Java необходимо поместить её в класс.
Динамическая информация о типах
В C++ RTTI(динамическая идентификация типа данных) позволяет сравнивать типы объектов друг с другом и литеральные значения. Java предоставляет дополнительную информацию о типах. Эта функция может быть реализована в C ++, имея полную информацию о типах времени компиляции CTTI.
Препроцессорная обработка
Задача препроцессора C++ - искать специальные команды, начинающиеся с символа#. Эти команды позволяют выполнять простой условный перевод и расширение макросов.
Java управляет своими задачами без помощи препроцессора, вместо стиля, принятого в Си, определения констант с директивой #define, он используетключевое слово final.
Заключение
Как и было сказано в первом издании книги «Язык программирования С++», автором которой был Bjarne Stroustrup. Язык программирования C++. Он руководствовался опытом широкого круга пользователей, работающих в различных областях программирования. За те, продуктивные, 6 лет, отделявшие нас от первого издания книги с описанием языка программирования C++, количество пользователей значительно увеличилось, примерно в тысячу раз. За этот короткий период было усвоено множество важных уроков, учтено в теории и реализовано на практике достаточное количество методов программирования.
Благодаря языку C++ произошел стремительный прорыв в развитии всего программирования. C++ по-прежнему является одним из самых доминирующих во всех языках программирования в мире. Благодаря появлению C++, сегодня огромное количество программистов в мире разрабатывают бесчисленное множество различных проектов, от маленьких программ для личного пользования, до целых систем, применяемых на предприятиях. И в дальнейшем этот язык программирования будет сохранять свои лидирующие позиции, совершенствуясь все больше с каждым днем.
Язык Java, как объектно-ориентированный язык программирования, поставляется с довольно большой библиотекой классов. Благодаря библиотекам классов Java, разработка приложений стала намного проще, т.к используя данные библиотеки программисту доступны достаточно мощные инструменты для решения типичных проблем и обширных задач. В результате чего программисту доступно значительно больше времени для полного сосредоточения на решении прикладных задач, вместо того чтобы тратить его на организацию динамических массивов, взаимодействии с ОС или реализации элементов пользовательского интерфейса.
Свойства языка Java:
- объектно-ориентированный язык программирования, оснащенный богатой библиотекой классов и в то же время достаточно простой в освоении;
- цикл разработки приложения сокращается за счет того, что система построена на базе интерпретатора;
- приложение автоматически мигрирует между несколькими платформами и операционными системами;
- благодаря встроенной системе «сбора мусора», программист избавлен от необходимости прямого управления памятью;
- приложение легко поддерживается и модифицируется, так как модули могут быть загружены из сети;
- приложение имеет встроенную систему безопасности, которая предотвращает несанкционированный доступ и проникновение вирусов.