Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
КУРСОВАЯ РАБОТА
по дисциплине
«Технологии программирования»
на тему
«История возникновения и развития языка программирования Си (С++)
и Java»
Научный руководитель:
Морозова Елена Радионовна.
МОСКВА
2020
СОДЕРЖАНИЕ
ВВЕДЕНИЕ..............................................................................................................3
ГЛАВА 1. ПРОГРАММИРОВАНИЕ НА С И С++...............................................5
1.1 Понятие языков программирования С и С++.................................................5
1.2 Краткая история развития языков С и С++.....................................................6
1.3 Базовые понятия языка......................................................................................7
ГЛАВА 2. ПРОГРАММИРОВАНИЕ JAVA.........................................................15
2.1 Понятие языка программирования Java........................................................15
2.2 Краткая история возникновения языка программирования Java................20
2.3 Базовые понятия языка....................................................................................26
ЗАКЛЮЧЕНИЕ......................................................................................................32
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ...............................................34
ЗАКЛЮЧЕНИЕ......................................................................................................37
2
ВВЕДЕНИЕ
4
ГЛАВА 1. ПРОГРАММИРОВАНИЕ НА С И С++
5
код, по эффективности приближающийся к программе на языке Ассемблера.
В 1981 году появляется язык С++, который многие называют “С с классами“.
Автор языка – Бъярн Страуструп1 способствовал добавлению в привычный С
методы объектного языка – классы, служащие для представления внутренней
структуры объектов, механизм наследования и новые средства работы с
динамической памятью и с вводом/выводом. Благодаря данным средствам
появилась возможность не только писать объектно-ориентированные
программы, но и создавать библиотеки шаблонов, классов - т.е. расширить
инструментарий пользователя и сферу применения самого языка. С/С++
объединяет в себе вышесказанные достоинства С и новые возможности С++,
предоставляя возможность “изнутри“ изучить принципы программирования
высокого уровня. Язык С++ содержит в себе средства и методы как
высокоуровневого, так и низкоуровневого программирования. К первым
относятся классы, структуры, механизмы наследования и позднего
связывания, шаблоны. Ко вторым можно отнести механизм указателей,
работу с битами символов, работу с механизмом прерываний. Благодаря
этому С++ весьма привлекательный для целей решения обширного круга
задач.
6
программного обеспечения. А именно, создание разнообразных прикладных
программ, разработка операционных систем, драйверов устройств, а также
видео игр и многое другое. Существует несколько реализаций языка
программирования C++ — как бесплатных, так и коммерческих. Их
производят проекты: GNU, Microsoft и Embarcadero (Borland). Проект GNU
— проект разработки свободного программного обеспечения (СПО).
Язык программирования С++ был создан в начале 1980-х годов, его
создатель сотрудник фирмы Bell Laboratories — Бьёрн Страуструп.
Он придумал ряд усовершенствований к языку программирования C,
для собственных нужд. Т. е. изначально не планировалось создания языка
программирования С++. Ранние версии языка С++, известные под именем
«Cи с классами», начали появляться с 1980 года. Язык C, будучи базовым
языком системы UNIX, на которой работали компьютеры фирмы Bell,
является быстрым, многофункциональным и переносимым. Страуструп
добавил к нему возможность работы с классами и объектами, тем самым
зародил предпосылки нового, основанного на синтаксисе С, языка
программирования. Синтаксис C++ был основан на синтаксисе C, так как
Бьёрн Страуструп стремился сохранить совместимость с языком C.
В 1983 году произошло переименование языка из «Cи с классами»в
«язык программирования C++».
В него были добавлены новые возможности: виртуальные функции,
перегрузка функций и операторов, ссылки, константы и многое другое. Его
первый коммерческий выпуск состоялся в октябре 1985 года.
Язык программирования C++ является свободным, то есть никто не
обладает на него правами.
7
В языке С++ алфавит можно условно разделить на группы знаков2:
прописные и строчные латинские буквы (A, B,..., Z, a, b,..., z);
арабские цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
специальные знаки: " , { } | [ ] ( ) + - / % \ ; '. : ? < = > _ ! & * # ~ ^
пробельные символы — это символы пробела, табуляции,
перехода на новую строку.
Идентификатор — это имя какого-либо объекта программы. Например,
имена дают переменным, функциям, классам и т.д. Имя может состоять из
латинских букв, цифр и символа _ (символ подчеркивания). Начинаться имя
может с буквы или символа подчеркивания, но не с цифры. Важно учитывать,
что прописные и строчные латинские буквы, используемые в
идентификаторах, считаются различными (это требование является общим
для всех С-подобных языков:С, С++, С#, Java, Perl и многих других. В таких
же языках, как Fortran, Pascal, Basic не делается различия в именах между
прописными и строчными латинскими буквами).
Пример допустимых идентификаторов:
Джесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург -
2
8
не используйте имена, начинающиеся с символа подчеркивания,
так как такие имена часто используют разработчики компиляторов для своих
целей;
чем больше область видимости имени, тем более выразительным
и длинным должно быть имя. Короткие однобуквенные или двухбуквенные
имена допустимы только внутри небольших блоков программы, внутри
коротких функций пользователя.
Длина имени в большинстве случаев не ограничена, но на длину
внешних имён (имён библиотек, функций) может накладывать ограничение
операционная система.
Ключевые (зарезервированные) слова — это слова, которые можно
использовать в программе только по их прямому назначению, т.е. эти имена
нельзя использовать для обозначения, например, своих переменных3.
В языке С++ имеется 63 ключевых слова. Все они приведены в таблице:
Таблица 1
Ключевые слова в языке С++
asm do if return typedef
auto double inline short typeid
bool dynamic_cast int signed typename
break else long sizeof union
case enum mutable static unsigned
catch explicit namespace static_cast using
char export new struct virtual
class extern operator switch void
const false private template volatile
const_cast float protected this wchar_t
continue for public throw while
default friend register true
delete goto reinterpret_cast try
9
констант префикс не нужен.
Десятичное целое — это последовательность десятичных цифр,
начинающаяся не с нуля (если это не число нуль), например:
100 25 0 2009
10
символьные константы. Каждая символьная константа — это лексема,
которая состоит из изображения символа и ограничивающих апострофов.
Например: 'A', 'a', '5', '?', и т.д.
Внутри апострофов можно записать любой символ, изображаемый на
дисплее или принтере в текстовом режиме. Однако в компьютере
используются и коды, не имеющие графического представления на экране
дисплея, клавиатуре или принтере. Примерами таких кодов служит код
перехода курсора дисплея на новую строку или код возврата каретки (возврат
курсора к началу текущей строки). Для изображения в программе
соответствующих символьных констант используются комбинации из
нескольких символов, имеющих графическое представление. Каждая такая
комбинация начинается с символа '\' (обратная косая черта — backslash).
Такие наборы литер, начинающиеся с символа '\', в литературе по языкам C и
С++ называют управляющими последовательностями. Ниже приводится их
список:
'\n' — перевод строки;
'\t' — горизонтальная табуляция;
'\r' — возврат каретки (курсора) к началу строки;
'\\' — обратная косая черта \;
'\'' — апостроф (одиночная кавычка);
'\"' — кавычка (символ двойной кавычки);
'\0' — нулевой символ;
'\a' — сигнал-звонок;
'\b' — возврат на одну позицию (на один символ);
'\f' — перевод (прогон) страницы;
'\v' — вертикальная табуляция;
'\?' — знак вопроса.
Обратите внимание на то, что перечисленные константы изображаются
двумя или более литерами, а обозначают они одну символьную константу,
имеющую индивидуальный двоичный код. Управляющие
11
последовательности являются частным случаем эскейп-последовательностей
(ESCAPE-sequence), к которым также относятся лексемы вида '\ddd' либо'\xhh'
или '\Xhh', где
'\ddd' — восьмеричное представление любой символьной
константы. Здесь d — восьмеричная цифра (от 0 до 7). Например, '\017' или
'\233'.
'\xhh' или '\Xhh' — шестнадцатеричное представление любой
символьной константы. Здесь h — шестнадцатеричная цифра (от 0 до F).
Например, '\x0b', '\x1A', и т.д.
Символьная константа (символ) имеет целый тип, т.е. символы можно
использовать в качестве целочисленных операндов в выражениях.
4. Строки, или строковые константы. Строки вообще-то не относятся к
константам языка С++, а представляют собой отдельный тип его лексем. Для
них в литературе используется еще одно название: «строковые литералы».
Строковая константа определяется как последовательность символов (см.
выше символьные константы), заключенная в двойные кавычки (не в
апострофы!):
"Это строка"
Среди символов строки могут быть эскейп-последовательности, т.е.
сочетания знаков, соответствующие неизображаемым символам, или
символам, задаваемым их внутренними кодами. В этом случае, как и в
представлениях отдельных символьных констант, их изображения
начинаются с обратной косой черты '\':
"\n Текст \n разместится \n на 3-х строках"
Представления строковых констант в памяти компьютера подчиняются
следующим правилам. Все символы строки размещаются подряд, и каждый
символ (в том числе представленный эскейп-последовательностью) занимает
ровно 1 байт. В конце записи строковой константы компилятор помещает
символ '\0'.
Таким образом, количество байтов, выделяемое в памяти компьютера
12
для представления значения строки, на единицу больше, чем число символов
в записи этой строковой константы:
"Строка в 18 байт."
Внимание. При работе с символьной информацией важно помнить, что
длина символьной константы, например, 'A' равна 1 байту, а длина строки "A"
равна 2 байтам, т.к. строка заканчивается нуль-символом ('\0').
5.Булевые константы. Имеется всего два значения: true — истина и false
— ложь.
Комментарии
Комментарий — это последовательность любых знаков (символов),
которая используется в тексте программы для её пояснения. Обычно в тексте
программы делают вводный комментарий к программе в целом (её
назначение, автор, дата создание и т.д.), а далее дают комментарии к
отдельным фрагментам текста программы, смысл которых не является
очевидным. Важно дать объяснение не только того, что делается, а с какой
целью это делается. Комментарии важны всегда: будь то создание программа
для себя, или с ней будут работать другие.
Комментарии игнорируются компилятором языка программирования,
они имеют значение только для пользователя. В языке С++ имеется два вида
комментариев: однострочные и многострочные.
Однострочный комментарий начинается с символов // (две косые
черты). Всё, что записано после этих символов и до конца строки, считается
комментарием. Например:
// Это текст комментария
Многострочный комментарий начинается парой символов /* (косая
черта и звёздочка) и заканчивается символами */ (звёздочка и косая черта).
Текст такого комментария может занимать одну или несколько строк. Всё, что
находится между знаками /* и */ , считается комментарием. Например:
/* Это мой большой
многострочный комментарий */
13
14
ГЛАВА 2. ПРОГРАММИРОВАНИЕ JAVA
Лтд.",1996 – С.32.
15
товара, который в любую минуту можно заменить другим, более дешевым, и
предоставить возможность обеспечить обратную совместимость и
соблюдение стандартов, которые установлены на устройства длительного
использования, будь то тостер, или телевизор.
Беря во внимание произношение в русском языке, мы видим, что
образовались две разные нормы данного языка - заимствованная
англоязычная джава» и традиционно - национальная «ява», которая
соответствует принятому произношению названия острова Ява. Компания
Sun придерживается первого варианта - англоязычного произношения везде.
Иногда в обычной жизни применяют и жаргонное слово «Жаба» (например,
изображение жабы есть на календариках группы российских пользователей
Java (JavaUsersGroup).
Java – это название не только самого языка, но и платформы для
создания и исполнения приложений на основе данного языка.
Изначально язык назывался Oak («дуб») и разрабатывался, как было
отмечено выше, Джеймсом Гослингом для программирования бытовых
электронных устройств. Затем он был переименован в Java и стал
применяться для написания клиентских приложений и серверного ПО.
Название было дано в честь марки кофе Java, который так любили некоторые
программисты, поэтому на официальной эмблеме языка и изображена чашка
с дымящимся кофе. Существует, конечно, и другая версия происхождения
названия Java, а именно – Java - это сленговое обозначение кофе (по имени
одноименного острова, где производится популярный кофе) с аллюзией на
кофе-машину, как пример бытового устройства, для программирования чего и
изначально язык создавался.
Гослинг не хотел связывать разработку с определенной платформой,
поэтому он начал с расширения компилятора С++. Со временем пришло
понимание, что как ни расширяй С++, все равно он не сможет никогда
удовлетворить один все существующие потребности. Результатом этого
понимания явилось создания языка Oak (позже при поиске торговой марки
16
его название было изменено на Java). "В конце концов, язык - это средство, а
не самоцель, - поясняет Гослинг. - Мы не собирались зацикливаться на С++, а
хотели разработать систему, которая позволяла бы создавать большую
распределенную разнородную сеть из бытовых электронных устройств,
способных взаимодействовать между собой5".
В конце 1992 года, предприняв, по выражению тогдашнего инженера
проекта Патрика Нотона, "огромные усилия по доработке Oak и других
компонентов", коллектив проекта "Green" выпустил "*7" - устройство типа
PDA, названное Гослингом "ручным пультом дистанционного управления".
"За полтора года мы сделали столько же, сколько иные большие
коллективы в Sun делали за три года, - с гордостью отмечает Нотон. -
Операционную систему GreenOS, язык, инструментарий, пользовательский
интерфейс, новую аппаратную платформу, три заказных микросхемы... и
каждый этап был связан с риском, т.к. мы использовали совершенно новые
технологии".
30-летний Нотон до прихода в команду Green возглавлял проект Sun по
разработке пользовательской среды OpenWindow.
Малогабаритность устройства *7 выставляла в выгодном свете
компактность и эффективность кода, который являлся ядром технологии.
Этот продукт широко демонстрировали в Sun, он смог произвести
впечатление на таких важных людей, как Скотт Макнили и Билл Джой,
однако что случилось с ним потом, осталось неизвестным.
Гослинг считал, что браузер является таким компонентом, который
"создает рынок" для всех инструментальных средств, серверов и сред
разработки. И именно язык Java во всех этих средствах играет центральную,
главенствующую роль. До появления Java страница WWW по факту
представляла собой листок бумаги. С появлением Java браузер задает
структуру и резко расширяет возможности провайдеров содержания.
Лтд.",1996 – С.35-37.
17
Гослинг полагал, что технология Java предоставит людям возможность
переосмыслить роль вычислений клиент-сервер. В стандартной модели вы
имеете конкретные базы данных, пишете пакеты клиентского программного
обеспечения, который имеет возможность взаимодействия с ними, и создаете
какой-то интерфейс". В границах этой модели трудно создавать
распределенные системы и осуществлять их модернизацию, в частности,
если их элементы имеют разное происхождение, указывает Гослинг.
Если иметь инструментальные средства как Java и Web, мы можем
получить изначально организованную систему- подчеркивает Гомслинг.
"Если вы создаете на языке Java клиентскую часть приложения, его запуск
сводится всего лишь к переходу на соответствующую страницу. Инсталляция
примитивна - просто поместите необходимое программное обеспечение на
Web-сервер. И не возникнет никаких проблем с переносом, в силу того, что
присутствует только одна версия приложения". Многие фирмы, по словам
Гослинга, уже организуют БД в виде Web-страниц с применением интерфейса
Common Gateway Interface (CGI) - специфического стандарта для работы
внешних программ на сервере HTTP.
Программы на Java транслируются в байт-код, которые выполняет
виртуальная машина Java (JVM) - программа, которая обрабатывает байтовый
код и передает далее инструкции оборудованию в роли интерпретатора.
Достоинство подобного способа выполнения программ в том, что
существует полная независимость байт-кода от ОС и оборудования, что дает
возможность выполнять Java-приложения на любом устройстве, для которого
существует соответствующая виртуальная машина. Следующей
немаловажным достоинством технологии Java можно отметить полный
контроль исполнения программы виртуальной машиной.
Операции, превышающие лимиты установленных полномочий
программы - будь то попытка несанкционированного доступа к данным или
соединения с другим ПК - приводят к немедленному прерыванию.
18
Часто к недостаткам данной концепции виртуальной машины относят
то, что исполнение байт-кода виртуальной машиной может достаточно
снизить производительность программ и алгоритмов, которые реализованы
на языке Java. В последнее время были внесеныбольшое число
усовершенствований, которые смогли улучшить скорость выполнения
программ на Java:
- применение технологии трансляции байт-кода в машинный код
непосредственно во время работы программы (JIT-технология) с
одновременным сохранением версий класса в машинном коде;
- широкое применение платформенно-ориентированного кода (native-
код) в стандартных библиотеках;
- аппаратные средства, которые обеспечивают ускоренную обработку
байт-кода (например, технология Jazelle, которая поддерживается некоторыми
процессорами фирмы ARM).
По данным сайта shootout.alioth.debian.org, для 7 разных задач время
выполнения на Java составляет в среднем в 1,5-2 раза больше, чем для C/C++,
а в некоторых случаях Java даже быстрее, а в отдельных случаях в 7 раз
медленнее. С другой стороны, для большинства из них потребление памяти
Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также
примечательно исследование, проведённое компанией Google, согласно
которому отмечается существенно более низкая производительность и
большее потребление памяти в тестовых примерах на Java в сравнении с
аналогичными программами на C++.
Идеи, которые лежат в основе концепции и различных реализациях
среды виртуальной машины Java, дали вдохновение для множества
энтузиастов на расширение перечня языков, которые можно было бы
использовать для создания программ, которые исполняли на виртуальной
машине. Эти идеи нашли также выражение в спецификации общеязыковой
инфраструктуры CLI, заложенной в основу платформы.NET компанией
Microsoft.
19
Основные возможности:
- автоматическое управление памятью;
- расширенные возможности обработки исключительных ситуаций;
- богатый набор средств фильтрации ввода/вывода;
- набор стандартных коллекций, таких как массив, список, стек и т. п.;
- наличие простых средств создания сетевых приложений (в том числе
с использованием протокола RMI);
- наличие классов, позволяющих выполнять HTTP-запросы и
обрабатывать ответы;
- встроенные в язык средства создания многопоточных приложений;
- унифицированный доступ к базам данных:
- на уровне отдельных SQL-запросов - на основе JDBC, SQLJ;
- на уровне концепции объектов, обладающих способностью к
хранению в базе данных - на основе Java Data Objects и Java Persistence API;
- поддержка шаблонов (начиная с версии 1.5);
- параллельное выполнение программ.
20
Стремясь получить компактный и независимый от платформы код,
разработчики нового языка возродили модель, использовавшуюся при
реализации первых версий языка Pascal на заре эры персональных
компьютеров. Никлаус Вирт, создатель языка Pascal, в свое время разработал
переносимый язык, генерирующий промежуточный код для некоей
гипотетической машины. Такие машины называются виртуальными, отсюда
термин — виртуальная машина ]ava (JVM). Этот промежуточный код можно
выполнять на любой машине, имеющей соответствующий интерпретатор.
Инженеры, работавшие над проектом "Green", также использовали
виртуальную машину, что решило основную проблему переносимости кода.
Большинство сотрудников компании Sun Microsystems имели опыт
работы с операционной системой Unix, поэтому в основу разрабатываемого
ими языка был положен язык C++, а не Pascal. В частности, они сделали язык
объектно-, а не процедурно-ориентированным. Как сказал Гослинг в своем
интервью: "Язык — это всегда средство, а не цель". Сначала Гослинг решил
назвать его Oak (Дуб). (Возможно потому, что он любил смотреть на дуб,
росший прямо под окнами его рабочего кабинета в компании Sim
Microsystems.) Затем сотрудники компании узнали, что слово "Oak" уже
используется в качестве имени ранее созданного языка программирования, и
изменили название на Java. Этот выбор был сделан по наитию.
В 1992 г. в рамках проекта "Green" была выпущена первая продукция
под названием "*7". Это было устройство интеллектуального дистанционного
управления. (Умещаясь в корпусе 6x4x4 дюйма, оно имело мощность рабочей
станции SPARC.) К сожалению, ни одна из компаний-производителей
электронной техники не заинтересовалась этой разработкой. Затем группа
стала заниматься созданием устройства для кабельного телевидения, которое
могло бы осуществлять новые виды услуг, например, включать видеосистему
по требованию. И снова они не получили ни одного контракта.
Примечательно, что одной из компаний, согласившихся все-таки с ними
сотрудничать, руководил Джим Кларк (Jim Clark) — основатель компании
21
Netscape, впоследствии сделавшей очень много для развития языка Java
(/coding-на-java).
Весь 1993 год и половину 1994 года продолжались безрезультатные
поиски покупателей продукции, разработанной в рамках проекта "Green",
получившего новое название — "First Person, Inc.". Патрик Нотой, один из
основателей группы, в основном занимавшийся маркетингом, налетал в
общей сложности более 300 тысяч миль, пытаясь продать разработанную
технологию. Работа над проектом "First Person, Inc." была прекращена в 1994
г.
Тем временем в рамках Интернета начала развиваться система под
названием World Wide Web (Всемирная паутина). Ключевым элементом этой
системы является браузер, превращающий гипертекстовые данные в
изображение на экране. В 1994 году большинство пользователей применяли
некоммерческий веб-браузер Mosaic, разработанный в суперкомпьютерном
центре университета штата Иллинойс в 1993 г. Частично этот браузер был
написан Марком Андреессеном (Mark Andreessen), подрядившимся работать
за 6,85 доллара в час. В то время Марк заканчивал университет, и браузер был
его дипломной работой. (Затем он достиг известности и успеха как один из
основателей и ведущих специалистов компании Netscape.)
В своем интервью журналу Sun World Гослинг сказал, что в середине
1994 г. разработчики нового языка поняли: "Нам нужно создать
высококачественный браузер. Такой браузер должен представлять собой
приложение, соответствующее технологии "клиент-сервер", в которой
жизненно важным является именно то, что мы сделали: архитектурная
независимость, выполнение в реальном времени, надежность, безопасность
— вопросы, которые были не так уж важны для рабочих станций. И мы
создали такой браузер".
Сам браузер был разработан Патриком Йотоном и Джонатаном Пэйном
(Johnatan Payne). Позднее он был доработан и получил имя Hotjava. Чтобы
продемонстрировать все возможности Java (/coding/3413-язык-
22
программирования-java-особенности-и-преимущества), браузер был написан
на этом языке. Но разработчики не забывали о таких средствах, которые
теперь называются аплетами, наделив свой продукт способностью выполнять
код на веб-страницах. Программный продукт, подтверждавший
действенность новой технологии, был представлен 23 мая 1995 года на
выставке SunWorld '95 и вызвал всеобщий интерес к Java, сохраняющийся и
по сей день.
Компания Sun Microsystems выпустила первую версию Java в начале
1996 г. Пользователи быстро поняли, что версия Java 1.0 не подходит для
разработки серьезных приложений. Конечно, эту версию можно применять
для реализации визуальных эффектов на веб-страницах, например, написать
аплет, выводящий на страницу случайно "прыгающий" текст, но версия Java
1.0 была еще сырой. В ней даже отсутствовали средства вывода на печать.
Грубо говоря, версия Java 1.0 еще не была готова. В следующей версии, Java
1.1, были устранены наиболее очевидные недостатки, улучшены средства
рефлексии и реализована новая модель событий для программирования ГПИ.
Но несмотря на это, ее возможности были все еще ограничены.
Выпуск версии Java 1.2 стал основной новостью на конференции
JavaOne в 1998 г. В новой версии слабые средства для создания графического
пользовательского интерфейса и графических приложений были заменены
мощным инструментарием. Это был шаг вперед, к реализации лозунга "Write
Once, Run Anywhere" ("Однажды написано — везде выполняется"),
выдвинутого при разработке предыдущих версий. В декабре 1998 года через
три дня (!) после выхода в свет название новой версии было изменено на
громоздкое Java 2 Standard Edition Software Development Kit Version 1.2
(Стандартная редакция набора инструментальных средств для разработки
программного обеспечения на Java 2, версия 1.2).
Кроме Standard Edition, были предложены еще два варианта: Micro
Edition ("микроредакция") для портативных устройств, например для
23
мобильных телефонов, и Enterprise Edition (редакция для корпоративных
приложений).
Версии 1.3 и 1.4 набора инструментальных средств Standard Edition
являются результатами поэтапного усовершенствования первоначально
выпущенной версии Java 2. Они обладают новыми возможностями,
повышенной производительностью и, разумеется, содержат много меньше
ошибок. В процессе развития
Java многие взгляды на аплеты и клиентские приложения были
пересмотрены. В частности, оказалось, что на Java удобно разрабатывать
высококачественные серверные приложения.
В версии 5.0 язык Java подвергся наиболее существенной модификации
с момента выпуска версии 1.1. (Первоначально версия 5.0 имела номер 1.5, но
на конференции JavaOne в 2004 г. была принята новая нумерация версий.)
После многолетних исследований были добавлены обобщенные типы
(которые приблизительно соответствуют шаблонам C++), хотя при этом не
были выдвинуты требования модификации виртуальной машины. Ряд других
языковых элементов, например, циклы в стиле for each, автоупаковка и
метаданные, были явно "навеяны" языком С#.
Версия 6 (без суффикса .0) была выпущена в конце 2006 г. Опять же
сам язык не претерпел существенных изменений, но были внесены
усовершенствования, связанные с производительностью, а также
произведены расширения библиотек.
По мере того как в центрах обработки данных все чаще стали
применяться аппаратные средства широкого потребления вместо
специализированных серверов, для компании Sun Microsystems наступили
тяжелые времена, и в конечном итоге она была приобретена компанией
Oracle в 2009 г. Разработка последующих версий Java приостановилась на
долгое время. И только в 2011 году компания Oracle выпустила новую версию
Java 7 с простыми усовершенствованиями. А более серьезные изменения
было решено отложить до версии Java 8, выпуск которой ожидается в 2013 г.
24
В табл. 2 сведены данные об этапах развития языка и библиотек Java.
Как видите, размеры прикладного программного интерфейса API
значительно увеличились.
Таблица 2
Этапы развития языка Java
Верс Год Новые языковые средства Количество
ия выпуска классов и
интерфейсов
1.0 1996 Выпуск самого языка 211
25
2.3 Базовые понятия языка
26
Десятичные и шестнадцатеричные цифры и целые числа
Целые числовые константы6 в исходном коде Java (так называемые
литерные константы) могут быть десятичными или шестнадцатеричными.
Они записываются либо символами ASCII, или символами Unicode
следующим образом.
Десятичные константы записываются как обычно. Например, -137.
Шестнадцатеричная константа начинается с символов 0x или 0X
(цифра 0, после которой следует латинская буква X), а затем идет само число
Майкл ЭферганJava: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998. – С.89.
6
27
Под "ячейкой памяти" будет пониматься непрерывная область памяти (с
последовательно идущими адресами), выделенная программой для хранения
данных. На рисунках мы будем изображать ячейку прямоугольником, внутри
которого находятся хранящиеся в ячейке данные. Если у ячейки имеется имя,
оно будет писаться рядом с этим прямоугольником.
Мы привыкли работать с числами, записанными в так называемой
десятичной системе счисления. В ней имеется 10 цифр (от 0 до 9), а в числе
имеются десятичные разряды. Каждый разряд слева имеет вес 10 по
сравнению с предыдущим, то есть для получения значения числа,
соответствующего цифре в каком-то разряде, стоящую в нем цифру надо
умножать на 10 в соответствующей степени. То есть
, и т.п.
В программировании десятичной системой счисления пользоваться не
всегда удобно, так как в компьютерах информация организована в виде бит,
байт и более крупных порций. Человеку неудобно оперировать данными в
виде длинных последовательностей нулей и единиц. В настоящее время в
программировании стандартной является шестнадцатеричная система записи
чисел. Например, с ее помощью естественным образом кодируется цвет,
устанавливаются значения отдельных бит числа, осуществляется
шифрование и дешифрование информации, и так далее. В этой системе
счисления все очень похоже на десятичную, но только не 10, а 16 цифр, и вес
разряда не 10, а 16. В качестве первых 10 цифр используются обычные
десятичные цифры, а в качестве недостающих цифр, больших 9,
используются заглавные латинские буквы A, B, C, D, E, F:
0 1 2 3 4 5 6 7 8 9AB CDE F
То есть A=10, B=11, C=12, D=13, E=14, F=15.
Заметим, что в шестнадцатеричной системе счисления числа от 0 до 9
записываются одинаково, а превышающие 9 отличаются. Для чисел от 10 до
15 в шестнадцатеричной системе счисления используются буквы от A до F,
после чего происходит использование следующего шестнадцатеричного
28
разряда. Десятичное число 16 в шестнадцатеричной системе счисления
записывается как 10. Для того, чтобы не путать числа, записанные в разных
системах счисления, около них справа пишут индекс с указанием основания
системы счисления. Для десятичной системы счисления это 10, для
шестнадцатеричной 16. Для десятичной системы основание обычно не
указывают, если это не приводит к путанице. Точно так же в технической
литературе часто не указывают основание для чисел, записанных в
шестнадцатеричной системе счисления, если в записи числа встречаются не
только "обычные" цифры от 0 до 9, но и "буквенные" цифры от A до F.
Обычно используют заглавные буквы, но можно применять и строчные.
Рассмотрим примеры.
Зарезервированные слова языка Java7
Это слова, зарезервированные для синтаксических конструкций языка,
причем их назначение нельзя переопределять внутри программы. (см.
Приложение 1)
Их нельзя использовать в качестве идентификаторов (имен
переменных, подпрограмм и т.п.), но можно использовать в строковых
выражениях.
Майкл ЭферганJava: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998 – С.67.
7
29
В языке Java только 8 примитивных (скалярных, простых) типов:
boolean, byte, char, short, int, long, float, double.
Длины и диапазоны значений примитивных типов определяются
стандартом, а не реализацией и приведены в таблице. Тип char сделали
двухбайтовым для удобства локализации (один из идеологических принципов
Java): когда складывался стандарт, уже существовал Unicode-16, но не
Unicode-32. Поскольку в результате не осталось однобайтового типа,
добавили новый тип byte, причем в Java, в отличие от других языков, он не
является беззнаковым. Типы float и double могут иметь специальные
значения, и «не число» (NaN). Для типа double они обозначаются
Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN; для
типа float- так же, но с приставкой Float вместо Double. Минимальные
положительные значения, принимаемые типами float и double, тоже
стандартизованы.
30
повышения точности вычислений были запрещены. Однако это приводило к
снижению быстродействия. Выяснилось, что ухудшение точности ради
платформенной независимости мало кому нужно, тем более, если за это
приходится платить замедлением работы программ. После многочисленных
протестов этот запрет отменили, но добавили ключевое слово strictfp,
запрещающее повышение точности.
Преобразования при математических операциях8
В языке Java действуют следующие правила:
1. Если один операнд имеет тип double, другой тоже преобразуется к
типу double.
2. Иначе, если один операнд имеет тип float, другой тоже преобразуется
к типу float.
3. Иначе, если один операнд имеет тип long, другой тоже преобразуется
к типу long.
4. Иначе оба операнда преобразуются к типу int.
Данный способ неявного преобразования встроенных типов полностью
совпадает с преобразованием типов в C++.
Майкл ЭферганJava: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998. – С.71-75.
8
31
ЗАКЛЮЧЕНИЕ
32
- приложение получается автоматически переносимым между
множеством платформ и ОС;
- за счет встроенной системы сборки «мусора» программист
освобождается от необходимости явного управления памятью;
- приложение легко сопровождается и модифицируется, т.к. модули
могут быть загружены с сети;
- в приложения встроена система безопасности, не допускающая
незаконного доступа и проникновения вирусов.
33
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
34
15. Гутер Р.С. От абака до компьютера [Текст]/ Р.С. Гутер, Ю.Л.
Полунов. − М.: Знание, 2016. − 434 с.
35
24. Лебедев С.А. Электронные вычислительные машины [Текст]. -
М.: Изд-во Академии наук СССР, 2017. − 334 с.
25. Леонтьев В Л. Новейшая энциклопедия персонального
компьютера [Текст]/ Л.В. Леонтьев. − М.: ОЛМА-ПРЕСС, 2015. − 567 с.
Малиновский Б.Н. История вычислительной техники в лицах [Текст]. Киев:
КИТ. 2014. − 261 с
36
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ 1
Слова, зарезервированные для синтаксических конструкций языка
abstract boolean break byte case
catch char class const continue
default do double else enum
extends false final finally float
for goto if implements import
instanceof int interface long native
new null package private protected
public return short static super
switch synchronized this throw throws
transient true try void volatile
while
37