Файл: История возникновения и развития языка программирования Си (С++) и Java (История и характеристика Java).pdf
Добавлен: 05.04.2023
Просмотров: 336
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. История и характеристика Java
1.1. История языка программирования Java
1.2. Настоящее и будущее производительности Java
Глава 2. История и развитие языка программирования C++
2.1. История языка программирования C++
2.2. Особенности языка программирования C++
Введение
Актуальность. В настоящее время C++ является одним из самых популярных языков программирования. С++ использовался в следующих проектах: MS Windows, SQL Server, DirectX, Edge и Office, KDE, Qt, MySQL, Opera, Adobe Photoshop, Facebook, Google Chrome, Blender, Inkscape, LibreOffice, Firefox, VLC, 7-ZIP, Stellarium и очень многих других (с большой долей вероятности, во всех крупных и значимых проектах).
На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Java превратилась из просто универсального языка в целую платформу и экосистему, которая объединяет различные технологии, используемые в целого ряда задач: от создания десктопных приложений до написания крупных веб-порталов и сервисов. Кроме того, язык Java активно применяется для создания программного обеспечения для целого ряда устройств: обычных ПК, планшетов, смартфонов и мобильных телефонов и даже бытовой техники. Достаточно вспомнить популярность мобильной ОС Android, большинство программ для которой пишутся именно на Java.
Цель работы – изучить историю возникновения и развития языка программирования Си (С++) и Java.
Достижение указанной цели определило постановку и решение следующих задач:
- исследовать историю и характеристику Java;
- изучить историю и основные особенности С++;
- провести сравнение языков программирования Java и C++.
Предметом исследования можно назвать два языка программирования: C++ и Java.
Объектом исследования являются языки программирования Java и C++.
Теоретико-методологическую основу исследования составили научные труды, посвященные анализу языков программирования. При разработке и решении поставленных задач использовались методы сравнительного анализа, а также группировки.
Структура работы. Работа включает введение, две главы, заключение и список литературы.
Научно-методической основой работы служат труды отечественных и зарубежных ученых в области программирования. При выполнении работы использовалась научно-методическая литература, публикации в периодической печати и научных изданиях, материалы Интернет-порталов.
Глава 1. История и характеристика Java
1.1. История языка программирования Java
JAVA- это название языка программирования, который активно используется с 90-х годов прошлого столетия. Несмотря на то, что этот язык является открытым, т.е. его может свободно использовать каждый, на данный момент им владеет и его поддерживает компания Oracle Corporation. Java разрабатывался как язык программирования, который будет использоваться на любых устройствах, в результате на данном языке пишутся программы для компьютеров, смартфонов и даже телевизоров с технологией СМАРТ-ТВ[1].
История Java восходит к 1991 году, когда группа инженеров из компании Sun под руководством Патрика Нотона (Patrick Naughton) и члена Совета директоров (разностороннего компьютерного волшебника) Джеймса Гослинга (James Gosling) занялась разработкой небольшого языка, который можно было бы использовать для программирования бытовых устройств, на- пример, контроллеров для переключения каналов кабельного телевидения (cable TV switchboxes).Поскольку такие устройства не потребляют много энергии и не имеют больших микро- схем памяти, я должен был быть маленьким и генерировать очень компактные программы. Кроме того, поскольку разные производители могут выбирать разные центральные процессоры (Central Processor Unit— CPU), было важно не завязнуть в какой-то одной архитектуре компьютеров. Проект получил кодовое название "Green"[2].
Стремясь изобрести небольшой, компактный и машинно-независимый код, разработчики возродили модель, использованную при реализации первых версий языка Pascal, заре эры персональных компьютеров. Никлаус Вирт, создатель языка Pascal, в свое время разработал машиннонезависимый язык, генерирующий промежуточный код для некоей гипотетической машины. Этот язык стал коммерческим продуктом под названием UCSD Pascal. Этот промежуточный код можно выполнять на любой машине, имеющей соответствующий интерпретатор. Инженеры, работавшие над проектом "Green", также использовали виртуальную машину, что решило их основную проблему[3].
Однако большинство сотрудников компании Sun имели опыт работы с операционной системой UNIX, поэтому в основу разрабатываемого ими языка был положен язык C++, а не Pascal. В частности, они сделали язык «объектно-», а не процедурно-ориентированным.
Как сказал Гослинг в своем интервью: "Язык — это всегда средство, а не цель". Сначала Гослинг решил назвать его "Oak" ("Дуб"). (Возможно потому, что он любил смотреть на дуб, растущий прямо под окнами его офиса в компании Sun). Потом сотрудники компании Sun узнали, что слово «Oak» уже используется в качестве имени ранее созданного языка программирования, и изменили название Java[4].
В 1992 году в рамках проекта Green была выпущена первая продукция, названная "*7". Это было средство для чрезвычайно интеллектуального дистанционного управления. (Оно имело мощность рабочей станции SPARK, помещаясь в коробочке размером 6x4x4 дюйма.) К сожалению, ни одна из компаний— производителей электронной техники не заинтересовалась этим изобретением.
Затем группа стала заниматься разработкой устройства для кабельного телевидения, которое могло бы осуществлять новые виды услуг, например, включать видеосистему по требованию. И снова они не получили ни одного контракта. (Забавно, что одной из компаний, отказавшихся подписать с ними контракт, руководил Джим Кларк (Jim Clark) — основатель компании Netscape, впоследствии сделавшей очень много для успеха языка Java.)[5]
Весь 1993 год и половину 1994 года продолжались безрезультатные поиски покупателей продукции, разработанной в рамках проекта "Green" (под новым названием "First Person, Inc."). (Патрик Нотон, один из основателей группы, впоследствии в основном занимавшийся маркетингом, налетал в общей сложности более 300 тысяч миль, пытаясь продать разработанную технологию.) Проект "First Person, Inc." был прекращен в 1994 году[6].
Тем временем в рамках Интернет разрасталась сеть World Wide Web. Ключом к этой сети является браузер, превращающий гипертекст в изображение на экране. В 1994 году большинство людей пользовалось браузером Mosaic, некоммерческим Web-броузером, разработанным в суперкомпьютерном центре Университета штата Иллинойс (University of Illinois) в 1993 году. (Частично этот браузер был написан Марком Андреессеном (Mark Andreessen) за 6,85 доллара в час. В то время Марк заканчивал университет и браузер был его дипломной работой. Затем он стал одним из основателей и главным программистом компании Netscape, и к нему пришли слава и богатство.
Возможность беспрепятственно пользоваться апплетами – маленькими, практичными, и независимыми сетевыми приложениями внутри web-страниц. Настройка и распространение апплетов не сложнее чем у стандартного документа HTML. Приложения проходят мощную объектно-ориентированную обработку с простым и понятным синтаксисом внутри комфортной среды. Поэтому программисты в большом количестве занимаются созданием новых утилит и апплетов. Каждый программист получает классы в большом количестве и может ясно абстрагировать многие системные функции, включая в работу окна, сеть и функциональный ввод-вывод.
Главная их особенность – это обеспечение, несмотря на платформу, большого спектра модулей с системными интерфейсами. Стоит также отметить, что такая платформа обладает отличной безопасностью, потому подходит для любого сетевого окружения. У нее нейтральная архитектура, и это особо привлекательно для создания разных сетевых модулей. Итак, с использованием интерпретируемого и динамичного языка Java пользователь получает: Интерпретируемую среду, в которой с легкостью и быстротой создаются прототипы, не используя обычную сборку и перекомпиляцию. Среду, которую можно динамически расширить, ведь подгруздка классов проходит, когда это особо нужно и практически моментально. Отсутствие проблем с «хрупким базовым классом» ведь элементы встраиваются в память при загрузке, а не при компиляции[7].
Java является одним из самых популярных языков программирования. Как большой, так и малый бизнес переполнен софтом, написанным на этом языке. Поэтому, если у вас есть идея по созданию инновационной программы для бизнеса, Java, вполне возможно, наиболее подходящий для этого язык. Тоже самое касается и разработки приложений под платформу Android, так как Java является основным языком по написанию программ среди разработчиков под операционную систему Google[8].
Большое количество популярных приложений на платформе Android, такие как Angry Birds, Temple Run и Candy Crush Saga, написаны на языке Java. Тоже самое, касается и большей части платного софта, написанного для авиакомпаний, государственных и банковских учреждений[9].
1.2. Настоящее и будущее производительности Java
Учитывая обилие разработанных приложений на языке программирования высокого уровня JAVA сложно представить, что существуют реальные проблемы с производительностью. Для того, чтобы понять, что на данный момент является правдой необходимо учесть мнение двух сторон: создателям Java и разработчикам, применяемых этот язык в своих системах.
Исследуя многие источники информации можно сделать вывод, что разработчики считают, что производительность Java определяется именно конечным кодом реализованного приложения, так как сам язык программирования не может иметь такой критерий как производительность. В начале появления языка он проявлял себя не лучшим образом, так как его реализация «хромала». На данный момент многие уязвимости языка уже выявлены и устранены. Но для того, чтобы писать реально высокопроизводительные проекты необходимо очень длительное исследование и поиск всех лишних трат времени в алгоритме. Самым лучшим помощником в разработке высокопроизводительных проектов выступает OracleJDK. На данный момент он является самым актуальным в использовании[10].
OracleJavaDevelopmentKit – комплект разработчика приложения, реализованный на языке Java, который включает стандартный компилятор, библиотеки и т.д.. Самые известные проблемы уже устранены в этом комплекте. Одно из последних нововведений этого комплекта это стандартное средство для вызова эквивалентных операций на низких уровнях – VarHandles, реализованное в Java 9. Его предыдущая реализация Unsafe не стандартизирована и является не самым удобным API для повышения производительности. VarHandle — это динамически строго типизированная ссылка на переменную или на параметрически определенное семейство переменных, включая статические поля, нестатические поля, элементы массива или компоненты структуры данных с кучей. Доступ к таким переменным поддерживается в различных режимах доступа, включая простой доступ к чтению / записи, неустойчивый доступ для чтения / записи и сравнение, и обмен.
Рисунок 1. Структура APIVarHandle
На рисунке 1 приведен фрагмент презентации одного из разработчика, где указана структура APIVarHandle. С первого взгляда нельзя утверждать, что оно работает лучше, чем UneSafe. Прекрасным наглядным примеров повышения производительности в VarHandles является вызов метода lookup, позволяющий просмотреть объект из службы именования.
В отличии от Reflection (Java Reflection API - интерфейс API состоящий из классов пакетов java.lang и java.lang.reflect.) VarHandle проверяет доступ на lookup’е, а не на вызове метода. Вторым важным отличием является, то, что конкретные типы аргументов возвращаемого метода определяются компилятор в момент компиляции. Подробности ясно видны на рисунке 2.
Рисунок 2. Второе отличие метода VarHandles от Java Reflection API
Используя фабричные методы в LookupAPI, любое поле, представленное объектом API CoreReflection, может быть преобразовано в поведенчески эквивалентный VarHandle. Например, отражающий Fieldможет быть преобразован в использование VarHandleLookup.unreflectVarHandle. Полученные в результате VarHandles обычно обеспечивают более прямой и эффективный доступ к лежащим в основе полям. В качестве специального случая, когда API CoreReflection используется для просмотра методов режима полиморфного доступа подписи в этом классе, они выглядят как обычные неполиморфные методы. Их отражающий внешний вид, если смотреть Class.getDeclaredMethod, не зависит от их особого статуса в этом API.
Например, Method.getModifiers будут сообщаться точно эти биты модификатора, необходимые для любого аналогично объявленного метода, включая в этом случае nativeи varargs биты. Как и при любом отраженном методе, эти методы (при отражении) могут быть вызваны непосредственно java.lang.reflect.Method.invokeчерез JNI или косвенно через Lookup.unreflect. Однако такие рефлексивные вызовы не приводят к вызову метода режима доступа.
Такой вызов, если передан требуемый аргумент (один, типа Object[]), будет игнорировать аргумент и будет вызывать UnsupportedOperationException. Поскольку invokevirtual инструкции могут изначально ссылаться на методы режима доступа VarHandle под любым символьным дескриптором, это отражающее представление противоречит нормальному представлению этих методов с помощью байт-кодов.
Таким образом, эти нативные методы, когда они отражаются Class.getDeclaredMethod, могут рассматриваться только как заполнители. На данный момент VarHandles прекрасно подходит для повышения производительности приложений, реализованных на Java. Разработчики очень своевременно выпустили данный API.