Файл: История возникновения и развития языка программирования Си (С++) и Java».pdf
Добавлен: 22.04.2023
Просмотров: 281
Скачиваний: 1
Идеи, лежащие в основе концепции и различных реализаций среды виртуальной машины Java вдохновили многих энтузиастов расширить список языков, которые могут быть использованы для создания программ, работающих на виртуальной машине. Эти идеи выражены в спецификации CLI инфраструктуры общего языка, которая является основой платформы Microsoft.NET.
Ключевые характеристики:
- автоматическое управление памятью;
- расширенная обработка исключений;
- богатый набор инструментов фильтрации ввода-вывода;
- набор стандартных коллекций, таких как массив, список, стек и т. д.
- наличие простых инструментов для создания сетевых приложений (в том числе с использованием протокола RMI);
- наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
- встроенные языковые средства для создания многопоточных приложений;
- единый доступ к базам данных:
- на уровне отдельных SQL запросов-на основе JDBC, SQLJ;
- на уровне концепции объектов с возможностью хранения в базе данных-на основе Java Data Objects и Java Persistence API;
- поддержка шаблонов (начиная с версии 1.5);
- параллельное выполнение программ.
2.2 Краткая история возникновения языка программирования Java
Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик программного обеспечения Sun Microsystems, Patrick Naughton понял, что ему надоело поддерживать сотни различных программных интерфейсов, используемых компанией, и сообщил генеральному директору Sun Microsystems и другу Scott McNealy о своем намерении перейти в NeXT. McNealy, в свою очередь, попросил Naughton составить список его жалоб и предложить решения проблем.
Patrick Naughton, не ожидая, что кто-то обратит внимание на его письмо, тем не менее изложил свои претензии, беспощадно критикуя недостатки Sun Microsystems, в частности архитектуру, разрабатываемую в то время по умолчанию. К его удивлению, письмо оказалось более чем успешным: оно было разослано всем ведущим инженерам Sun Microsystems, которые быстро откликнулись и выразили горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems. Обращение было встречено высшим руководством компании, а именно, основателем Sun Microsystems, и назначили главного исполнительного директора, которым стал Patrick Naughton.
В тот день, когда Patrick Naughton должен был покинуть компанию, было принято решение создать команду ведущих разработчиков, чтобы они могли делать что угодно, но не создавать что-то необычное.
Команда из шести человек под кодовым названием Green отправилась в добровольное изгнание, погрузившись в исследования бытовых устройств, таких как игровые автоматы Nintendo, устройства дистанционного управления. Зеленая команда пыталась найти способ связи между этими устройствами. Вскоре выяснилось, что такие электроприборы, как видеомагнитофоны, лазерные проигрыватели дисков, стереосистемы - все они были реализованы на разных процессорах. Это означало, что, если производитель хочет добавить дополнительные функции или функции к телевизору или видеомагнитофону, он будет сжат с помощью встроенного оборудования. Эта проблема, в сочетании с ограниченным объемом памяти микросхем этих устройств, выдвинула новый подход к программированию программного обеспечения, который должен был стать ведущим на рынке бытовой электроники.
Команда начала разработку нового объектно-ориентированного языка программирования под названием Oak, в честь дерева, которое росло под окном Gosling-а.
Sun Microsystems преобразовала команду Green в компанию FirstPerson. Новая компания имела интересную концепцию, но не смогла найти для нее подходящего применения. После серии неудач ситуация для компании неожиданно резко изменилась: была анонсирована Mosaic-так родилась всемирная паутина, с которой началось бурное развитие Интернета.
Patrick Naughton предложил использовать Oak при создании интернет-приложений. Так Дуб стал самостоятельным продуктом, вскоре был написан Oak компилятор и Oak браузер "WebRunner". В 1995 году Sun Microsystems решила анонсировать новый продукт, переименовав его в Java (единственное разумное объяснение названия-любовь программистов к кофе). Когда Java попала в руки интернета, возникла необходимость запускать Java-апплеты-небольшие программы, загружаемые через интернет. Webrunner был переименован в HotJava, и компания Netscape стала поддержать продукты Java.
2.3 Базовые понятия языка
Алфавит языка Java состоит из букв, десятичных цифр и специальных символов. Буквами считаются латинские буквы (кодируются в стандарте ASCII), буквы национальных алфавитов (кодируются в стандарте Unicode, кодировка UTF-16), а также соответствующие им символы, кодируемые управляющими последовательностями
Буквы и цифры можно использовать в качестве идентификаторов (т.е. имен) переменных, методов и других элементов языка программирования. Правда, при использовании в идентификаторах национальных алфавитов в ряде случаев могут возникнуть проблемы – эти символы будут показываться в виде вопросительных знаков.
Как буквы рассматривается только часть символов национальных алфавитов. Остальные символы национальных алфавитов — это специальные символы. Они используются в качестве операторов и разделителей языка Java и не могут входить в состав идентификаторов.
Латинские буквы ASCII
ABCD...XYZ - заглавные (прописные),
abcd...xyz – строчные
Дополнительные "буквы" ASCII
_ - знак подчеркивания,
$ - знак доллара.
Национальные буквы на примере русского алфавита
АБВГ…ЭЮЯ - заглавные (прописные),
абвг…эюя – строчные
Десятичные цифры: 0 1 2 3 4 5 6 7 8 9
Десятичные и шестнадцатеричные цифры и целые числа
Целые числовые константы[8] в исходном коде Java (так называемые литерные константы) могут быть десятичными или шестнадцатеричными. Они записываются либо символами ASCII, или символами Unicode следующим образом.
Десятичные константы записываются как обычно. Например, -137.
Шестнадцатеричная константа начинается с символов 0x или 0X (цифра 0, после которой следует латинская буква X), а затем идет само число в шестнадцатеричной нотации. Например, 0x10 соответствует 1016 = 16 ; 0x2F соответствует 2F16 = 47, и т.д. О шестнадцатеричной нотации рассказано чуть ниже.
Ранее иногда применялись восьмеричные числа, и в языках C/C++, а также старых версиях Java можно было их записывать в виде числа, начинающегося с цифры 0. То есть 010 означало 108 = 8. В настоящее время в программировании восьмеричные числа практически никогда не применяются, а неадекватное использование ведущего нуля может приводить к логическим ошибкам в программе.
Целая константа в обычной записи имеет тип int. Если после константы добавить букву L (или l, что хуже видно в тексте, хотя в среде разработки выделяется цветом), она будет иметь тип long, обладающий более широким диапазоном значений, чем тип int.
Поясним теперь, что такое шестнадцатеричная нотация записи чисел и зачем она нужна.
Информация представляется в компьютере в двоичном виде – как последовательность бит. Бит – это минимальная порция информации, он может быть представлен в виде ячейки, в которой хранится или ноль, или единица. Но бит – слишком мелкая единица, поэтому в компьютерах информация хранится, кодируется и передается байтами - порциями по 8 бит.
Под "ячейкой памяти" будет пониматься непрерывная область памяти (с последовательно идущими адресами), выделенная программой для хранения данных. На рисунках мы будем изображать ячейку прямоугольником, внутри которого находятся хранящиеся в ячейке данные. Если у ячейки имеется имя, оно будет писаться рядом с этим прямоугольником.
Мы привыкли работать с числами, записанными в так называемой десятичной системе счисления. В ней имеется 10 цифр (от 0 до 9), а в числе имеются десятичные разряды. Каждый разряд слева имеет вес 10 по сравнению с предыдущим, то есть для получения значения числа, соответствующего цифре в каком-то разряде, стоящую в нем цифру надо умножать на 10 в соответствующей степени. То есть 52 = 5 x 10 + 2,137 = 1 x 102 + 3 x 101 + 7, и т.п.
В программировании десятичной системой счисления пользоваться не всегда удобно, так как в компьютерах информация организована в виде бит, байт и более крупных порций. Человеку неудобно оперировать данными в виде длинных последовательностей нулей и единиц. В настоящее время в программировании стандартной является шестнадцатеричная система записи чисел. Например, с ее помощью естественным образом кодируется цвет, устанавливаются значения отдельных бит числа, осуществляется шифрование и дешифрование информации, и так далее. В этой системе счисления все очень похоже на десятичную, но только не 10, а 16 цифр, и вес разряда не 10, а 16. В качестве первых 10 цифр используются обычные десятичные цифры, а в качестве недостающих цифр, больших 9, используются заглавные латинские буквы A, B, C, D, E, F:
0 1 2 3 4 5 6 7 8 9 A B C D E F
То есть A=10, B=11, C=12, D=13, E=14, F=15.
Заметим, что в шестнадцатеричной системе счисления числа от 0 до 9 записываются одинаково, а превышающие 9 отличаются. Для чисел от 10 до 15 в шестнадцатеричной системе счисления используются буквы от A до F, после чего происходит использование следующего шестнадцатеричного разряда. Десятичное число 16 в шестнадцатеричной системе счисления записывается как 10. Для того, чтобы не путать числа, записанные в разных системах счисления, около них справа пишут индекс с указанием основания системы счисления. Для десятичной системы счисления это 10, для шестнадцатеричной 16. Для десятичной системы основание обычно не указывают, если это не приводит к путанице. Точно так же в технической литературе часто не указывают основание для чисел, записанных в шестнадцатеричной системе счисления, если в записи числа встречаются не только "обычные" цифры от 0 до 9, но и "буквенные" цифры от A до F. Обычно используют заглавные буквы, но можно применять и строчные.
Рассмотрим примеры.
0x10=1016=16
0x100=10016=16x16=256
0x1000=100016=(16)3=4096
0xF=F16=15
0x1F=1F16=1x16+15+31
0x2F=2F16=2x16+15+47
0xFF=FF16=15x16+15+255
Зарезервированные слова языка Java[9]
Это слова, зарезервированные для синтаксических конструкций языка, причем их назначение нельзя переопределять внутри программы. (см. табл.2)
Таблица 2
Слова, зарезервированные для синтаксических конструкций языка
Их нельзя использовать в качестве идентификаторов (имен переменных, подпрограмм и т.п.), но можно использовать в строковых выражениях.
В языке 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, тоже стандартизованы.