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

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

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

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

Добавлен: 22.04.2023

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

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

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

Постоянность языка программирования Си в течении многих лет и стала одной из основных причин для его лидерства в перечисленных сферах. С выходом стандарта C99 ситуация стала менее ясной. Язык Си практически превратился из подмножества Си++ в самостоятельно развивающийся язык.

2. ВОЗНИКНОВЕНИЕ И ИСТОРИЯ РАЗВИТИЯ ЯЗЫКА JAVA

История создания языка программирования Java начинается в июне 1991 года, когда Джеймс Гослинг создал проект для применения в одном из своих многочисленных сет-топ проектов.

Однако официальной датой создания языка Java считается 23 мая 1995 года, после выпуска компанией Sun первой реализации Java 1.0. Она гарантировала «Напиши один раз, запускай везде», обеспечивая недорогой стоимостью на популярных платформах.

Язык Java был зарожден как часть проекта создания передового программного обеспечения для различных бытовых приборов. Реализация проекта была начата на языке C++, однако вскоре возникли проблемы, оптимальным способом борьбы с которыми было изменение самого инструмента - языка программирования.

Стало понятно, что нужен платформо-независимый язык программирования, который позволяет писать программы, которые не нужно компилировать отдельно для каждой архитектуры и можно было бы применять на различных процессорах под различными операционными системами [10, с. 147].

Язык Java был нужен для создания интерактивных продуктов для сети Internet. Фактически, большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, сходный с C и C++.

В Java применяются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++.

В технологии языка Java объединились три ключевых элемента:

  • Java предоставляет для широкого применения свои апплеты - небольшие, динамичные, надежные, не зависящие от платформы активные сетевые приложения, которые встраиваются в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям также легко, как любые документы HTML;
  • Java высвобождает мощь объектно-ориентированной разработки приложений, комбинируя знакомый и простой синтаксис с удобной и надежной в работе средой разработки. Это дает возможность широкому кругу разработчиков в короткие сроки писать новые апплеты и программы;
  • Java предоставляет программисту большой набор классов объектов для ясного абстрагирования большинства системных функций, применяемых при работе с сетью, окнами и для ввода-вывода. Головная особенность данных классов состоит в том, что они обеспечивают создание независимых от используемой платформы абстракций для широкого спектра системных интерфейсов [11, с. 123].

Существовали четыре основных цели при создании языка Java, которые приведены на рисунке 1.

Основные цели при создании языка Java

Объектно-ориентированный язык

Независим от целевой платформы

Должен содержать объекты и библиотеки для работы в сети

Он предназначен для надежного выполнения кода из удаленных источников

Рисунок 1 - Основные цели при создании языка Java

Объектная ориентация.

Первая характеристика, объектно-ориентированный подход, относится к методу программирования для чайников и дизайну язык. Основная идея объектно-ориентированного подхода заключается в разработке программного обеспечения все это «вещи» (объекты), которыми можно манипулировать, а не действия, которые нужно выполнять. Это основано на том, что первое (объекты) изменяются реже и радикальнее, чем действия, что делает такие объекты (содержащие данные) более стабильной основу для разработки программного обеспечения.

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

Независимость от платформы.

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

Программист должен быть в состоянии написать программу один раз и запустить её в любом месте. Это достигается путем компиляции Java-кода «наполовину» в байт-код - упрощенные машинные команды, которым соответствуют стандартный набор реальных команд процессору. Этот код затем необходимо запустить на виртуальной машине, то есть программе, написанной на машинном коде для взаимодействия с аппаратными средствами, которая переводит байт-код Java в пригодный для использования код на конкретном оборудовании.

Кроме того, предоставляются стандартизированные библиотеки для обеспечения доступа к особенностям архитектуры конкретной машины (например, графики и сетей) единым способам. Язык Java также включает поддержку для многопоточных программ - жизненно важная необходимость для многих сетевых приложений и основа программирования [12, с. 306].

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

Однако, эти реализации создают программы, которые выполняются медленнее, чем полностью скомпилированные программы, созданные типичным компилятором С++ и немного позднее появившимися компиляторами языка Java, поэтому язык страдает от приобретенной репутации «производитель медленных программ». В более поздних реализациях Java VM создает программы, которые работают намного быстрее, используя несколько методов. 


Первый метод - это просто компиляция непосредственно в машинный код, как традиционные компилятор, пропуская этап превращения программы в байт-код целиком. Этим достигается большая производительность, но за счет утраты мобильности и переносимости программ. Другой метод, «в процессе исполнения» или «JIT», компилирует байт-код Java в машинный код во время выполнения программы. Более сложные виртуальные машины даже использовали динамические перекомпиляции, в которой VJM может анализировать поведение работы программы и выборочно перекомпилировать и оптимизировать критические части программы. Обе эти технологии позволяют программе воспользоваться скоростью машинного код без потери мобильности. 

Портативность является технически трудной целью для достижение и успех Java вдостижении этой цели является предметом споров. Хотя на самом деле можно писать программы для платформы Java, которые ведут себя одинаково на многих платформах, но все же большее количество доступных платформ не выполняет программу как ожидалось, а выдает небольшое количество ошибок или несоответствий, что привело к появлению пародии на известный лозунг компании Sun «Написал один раз, работает везде» в другой «Написал один раз, отлаживал везде».

Независимый от платформы Java, однако, стал очень успешным для серверов приложений, таких как веб-сервисы, сервлеты, или Enterprise Java Beans.

Безопасное выполнение удаленного кода.

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

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

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

По мнению большинства людей, Java технология достаточно хорошо подходит для всех этих целей. Язык, однако, не без недостатков.

Java как правило, более высокого уровня, чем аналогичные языки (такие как C++), что означает, что языку Java не хватает функций, таких как аппаратные или для работы с конкретными типами данных или, например, низкоуровневыме указатели на произвольные ячейки памяти [13, с. 179].


Хотя этими функциями часто злоупотребляют или используются программистами неправильно, они также являются мощными инструментами. Однако, технология Java включает Java Native Interface (JNI), способ вызова машинного кода из кода на языке Java. С JNI можно использовать эти возможности.

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

Для выполнения данного байт-кода используется виртуальная Java-машина JVM, версии которой созданы сегодня для любых платформ.

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

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

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

За последнее время были внесены некоторые усовершенствования, увеличившие скорость реализации программ на Java:

  • использование технологии трансляции байт-кода в машинный код во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
  • широкое применение платформенно-ориентированного кода в стандартных библиотеках,
  • аппаратные средства, которые обеспечивают ускоренную обработку байт-кода (к примеру, технология Jazelle, которая поддерживается определенными процессорами компании ARM) [14, с. 189].

Заложенные в концепцию и разного рода реализации идеи среды Javа вдохновили большое количество энтузиастов на расширение списка языков, которые могли бы быть использованы для написания исполняемых на виртуальной машине программ.

Данные идеи нашли также выражение вспецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы.NET компанией Microsoft.

Основные достоинства языка программирования Java представлены на рисунке 2.

Основные достоинства языка программирования Java


Наибольшая среди всех языков программирования степень переносимости программ

Мощные стандартные библиотеки

Встроенная поддержка работы в сетях

Рисунок 2 - Основные достоинства языка программирования Java

Основными недостатками языка программирования Java являются низкое, в сравнении с другими языками, быстродействие, повышенные требования к объему оперативной памяти [15, с. 189].

Благодаря своей уникальности, Java приобрела популярность в самых различных областях. Прежде всего, это различные приложения для компьютеров – они несложные, не требуют предварительной установки – просто запускаются. Единственным требование является то, что в операционную систему должна быть встроена среда исполнения Java.

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

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

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

Интерфе

Система Java создана на основе «простого» языка программирования, техника применения которого близка к общепринятой и обучение которому не требует существенных усилий. Язык Java обладает библиотеками, обеспечивающими функциональность от стандартного ввода/вывода и сетевых протоколов до графических пользовательских интерфейсов, которые без труда могут быть расширены.

Java значительно облегчает создание надежного программного обеспечения. Помимо исчерпывающей проверки на этапе компиляции, система предусматривает анализ на этапе реализации. Сам язык спроектирован таким образом, чтобы вырабатывать у разработчика привычку писать «правильно». Модель работы с памятью, где запрещено применение указателей, делает невозможными целый класс ошибок, характерных для С и С++.