Файл: История возникновения и развития языка программирования Си (С++).pdf
Добавлен: 22.04.2023
Просмотров: 278
Скачиваний: 3
Поскольку Java служит для работы в распределенной среде, безопасность становится очень важной проблемой. Требования безопасности определяют большинство черт, как языка, так и реализации всей системы.
Компилятор Java производит байт-коды, то есть модули приложения обладают архитектурно-независимым форматом, который может быть проинтерпретирован на множестве разнообразных платформ.
Следующим шагом является «замораживание» стандарта на формат основных встроенных типов данных. Написанная на одной платформе программа функционирует на всех остальных.
Данный стандарт может быть реализован на любой аппаратно-программной платформе, которая поддерживает многопотоковость.
Схема работы системы и набор байт-кодов виртуальной машины Java дают возможность достичь высокой производительности на этапе реализации: анализ кодов на соблюдение правил безопасности выполняется один раз до запуска кодов на выполнение, в момент осуществления таких проверок уже не требуется, и коды реализуются максимально эффективно.
Работа с базовыми типами является максимально эффективной, для операций с ними зарезервированы специальные байт-коды.
Методы в классах не обязательно связываются динамически. Автоматический сборщик мусора работает отдельным фоновым потоком, не замедляя основную работу программы, однако одновременно с этим обеспечивая своевременный возврат свободной памяти в систему.
Стандарт предусматривает возможность написания критических по производительности участков программы в машинных кодах: интерпретируемый, многопотоковый и динамический.
Интерпретируемая природа языка дает возможность сделать фазу линкования простой, инкрементальной и, следовательно, быстрой. Это резко сокращает цикл разработки и тестирования программных фрагментов.
Благодаря многопоточности можно выполнять в рамках одного приложения ряд задач одновременно.
Это становится особенно актуально в современных распределенных приложениях, где процессы сетевого обмена могут идти асинхронно либо одновременно. Причем программа продолжает реагировать на ввод данных пользователем без неприятных задержек.
Поддержка многопоточности выполняется на уровне языка - часть примитивов синхронизации встроена в систему реального времени, а в библиотекау включен базовый класс Thread. К тому же системные библиотеки написаны thread-safe, то есть они применимы в многопотоковых приложениях.
Система обеспечивает динамическую сборку программы. Классы подгружаются по мере необходимости, при этом загружены они могут быть с любой точки сети, что дает возможность сделать внесение изменений в приложения прозрачным для пользователя.
Пользователь может быть уверен, что всегда работает со свежей версией приложения.
Как показывает опыт, отсутствие стандартных базовых библиотек для языка С++ очень затрудняет работу с ним. Поскольку любое нетривиальное приложение требует наличия определенного набора базовых классов, программисты вынуждены использовать различные несовместимые между собой библиотеками либо писать свой собственный вариант такого набора. Все это осложняет и разработку, и дальнейшую поддержку приложений, а также стыковку приложений, разработанных разными людьми.
Полная система Java содержит готовый набор библиотек, который можно разбить на следующие пакеты:
- java.lang - базовый набор типов, отраженных в самом языке. Данный пакет в обязательном порядке входит в состав любого приложения.
Он включает описания классов Object и Class, а также поддержку многопоточности, исключительных ситуаций, оболочку для базовых типов, а также некоторые фундаментальные классы.
- java.io - потоки и файлы произвольного доступа. Аналог библиотеки стандартного ввода-вывода системы UNIX. Поддержка сетевого доступа (sockets, telnet, URL) содержится в пакете java.net.
- java.util - классы-контейнеры (Dictionary, HashTable, Stack) и некоторые другие утилиты. Кодирование и декодирование. Классы Date и Time.
- java.awt - Abstract Windowing Toolkit, архитектурно-независимый оконный интерфейс, благодаря которому можно производить запуск интерактивных оконных Java-приложений на любой платформе.
Включает такие базовые компоненты интерфейса, как события, цвета, фоны, а также основные оконные элементы - кнопки, scrollbars и т.д. [15, с. 209].
Каждая из изложенных характеристик по отдельности может быть найдена в уже имеющихся программных пакетах. Новым является соединение их в стройную непротиворечивую систему, которая должна стать всеобщим стандартом.
ЗАКЛЮЧЕНИЕ
В курсовой работе были изучены история возникновения и эволюция языков программирования Си и Java.
Как и все остальные языки программирования, данные языки возникли не на пустом месте. Они имели предшественников, изучение которых может помочь найти ключ к разгадке свойств и механизмов языков Си и Java.
Царившая в 1960-х годах атмосфера способствовала возникновению чего-либо подобного. Была нужда в языке, который мог бы обойти определенные жесткие правила, имеющиеся во многих языках высокого уровня и обеспечивающие их надежность.
Необходим был язык, который дал бы возможность делать то, что до него можно было осуществить лишь на ассемблере либо на уровне машинного кода. Все это способствовало возникновению концепции машинно-ориентированных языков промежуточного уровня.
Необходимо признать, что язык программирования Си был не единственным языком подобного рода и тем более не самым первым. В то время появлялось все большее количество машинно-ориентированных языков, которые были похожи друг на друга, однако вовсе не потому, что авторы занимались плагиатом, а потому, что на них влияли одни и те же идеи.
История создания языка программирования Java начинается в июне 1991 года, когда Джеймс Гослинг создал проект для применения в одном из своих многочисленных сет-топ проектов.
Однако официальной датой создания языка Java считается 23 мая 1995 года, после выпуска первой реализации Java 1.0 компанией Sun.
Язык Java был нужен для создания интерактивных продуктов для сети Internet. Фактически, большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, сходный с C и C++.
В Java применяются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++.
В процессе выполнения курсовой работы были раскрыты сущность понятий языков программирования Си и Java, изучены история возникновения и развития данных языков.
Учитывая, что все поставленные задачи курсовой работы решены, можно обоснованно утверждать, что главная цель исследования была достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Авдеева С.М. Си в примерах и задачах. – Мн.: Новое знание, 2011. – С.4
2. Брикман С.Л. Практическое руководство по Си. – Вильямс, 2013. – С.56-90
3. Васильев, А.Н. Программирование на Java для начинающих / А.Н. Васильев. - М.: Эксмо, 2014. - 416 c.
4. Великович, Л.С. Программирование для начинающих / Л.С. Великович. - М.: Бином. Лаборатория знаний, 2011. - 287 c.
5. Иванов, В.Б. Программирование микроконтроллеров для начинающих Визуальное проектирование, язык C, ассемблер / В.Б. Иванов. - СПб.: Корона-Век, 2015. - 176 c.
6. Гончаров Д. Основы программирования. - Вильямс, 2010. – С.125
7. Дейт К. Введение в системное программирование. – Вильямс, 2006. – С.725
8. Дейт К. Как писать программы на Си. – Символ-Плюс, 2010. – С.123
9. Дейт К., Дарвен Х. Основы программирования. – Янус-К, 2011. – С.102
10. Дунаев В.В. Язык Си. – СПб. : БХВ-Петербург, 2010. – С.88
11. Дж. Кастаньетто, Х.Рават, С.Шуман, К.Сколло, Д.Велиаф «Профессиональное программирование». – Пер. с англ. – СПб: Символ-Плюс, 2010. – С.76