Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История возникновения и развития языка программирования Си (С++) и Java (Понятие языков программирования С и С++)

Содержание:

Введение

Задаваясь вопросом, какой язык положил начало современной эпохи программирования, то ответ будет явный - язык С (по-русски произносится как «Си»). Язык С разработал Деннис Ритчч в 70-е годы ХХв. для компьютера PDP 11 компании Digital Equipment Corporation (DEC), где применялась операционная система “UNIX”. Именно язык С определил направление всего будущего программирования.

Язык С++ разработан в 80-е годы ХХв. корпорацией Bell Laboratories. По сути, С++ - это расширение языка С, главным преимуществом которого, в отличие от своего предшественника, и языков более высшего уровня в том, что в С++ есть поддержка объектно-ориентированного программирования, перегруженных операций, а также возможность разработать полномасштабные windows-приложения.

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

Эти факторы повлияли на пересмотр взглядов на процесс создания и распределения приложений на множестве ЭВМ различных архитектур. Требования к переносимости привели к необходимости отказа от обычного принятого способа создания и доставки бинарных файлов, которые содержали машинные коды и, как следствие, были привязаны к определенной платформе. Тогда компания SunMicrosystems создала систему разработки Java, которая удовлетворяла все вышеперечисленные требования.

Цель работы: изучить историю возникновения и развития языков программирования С(С++) и Java.

Глава 1 Программирование на С и С++

1.1 Понятие языков программирования С и С++

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

Посмотрим на особенности языка С.

1) Переносимость. Компилятор создан для всех ОС и аппаратных платформ, что позволяет скомпилировать и запустить программу, практически, всюду.

2) Мощность. Достигается при помощи за использования большого числа различных библиотек.

3) Компактность. Язык содержит небольшое количество встроенных средств и ключевых слов.

4) Лаконичность. Запись алгоритма выразительная и краткая.

5) Эффективность. Заключается в том, что программы, которые написаны на языке С имеют небольшой размер и, одновременно, большую скорость исполнения.

Разумеется, как и любой другой язык, язык С имеет и недостатки. К ним можно отнести незащищенность при работе с адресами и динамической памятью, в результате чего в программе можно легко совершить ошибку, которую потом сложно обнаружить, а также достаточно слабый контроль преобразования типов. В то же время, эти недостатки дали возможность создать исполняемый код, по эффективности близкий к программе на языке Ассемблера. В 1981 году появился язык С++, который многие называют “С с классами“. Автор языка - Бьерн Страуструп.

Язык программирования С++ поспособствовал добавлению в привычный С методов объектного языка - классов, служащих для представления внутренней структуры объектов, механизм наследования и новые средства работы с динамической памятью и с вводом и выводом. Благодаря этим средствам появилась возможность не только писать объектно-ориентированные программы, но и создавать библиотеки шаблонов, классов, тем самым расширив инструментарий пользователя и сферу применения самого языка. С++ объединяет в себе вышеперечисленные достоинства языка С и новые возможности самого С++, давая возможность изучить принципы программирования высокого уровня “изнутри”. С++ содержит в себе средства и методы и высокоуровневого и низкоуровневого программирования. К первому относятся классы, структуры, механизмы наследования и позднего связывания и шаблоны. Ко второму можно отнести механизм указателей, работу с битами символов, работу с механизмом прерываний. Благодаря этому С++ весьма привлекательный для целей решения огромного круга задач.

1.2 Краткая история развития языков С и С++

Язык С был разработан Деннисом Ритчи, сотрудником фирмы AT&T из подразделения Bell Labs в 1972г. во время совместной работы с Кеном Томпсоном над ОС UNIX. Прообразом С послужил язык Би (B), разработанный К. Томпсоном. Также большое влияние на С имел язык BCPL, автором которого был М. Ричардсоном.

Разрабатывался С как инструмент для системного программирования. Однако, благодаря сочетанию лаконичности конструкций и богатства выразительных возможностей, язык С получил быстрое распространение и стал одним из самых популярных языков как прикладного, так и системного программирования. Компиляторы языка С работоспособны почти на всех типах современных ПК в операционных системах Windows, Mac OS, Linux и многих других.

В отличие от многих других языков программирования (Ада, Алгол-60 и т.д.), вступавших в силу только после принятия соответствующих стандартов, язык С сразу создавался с целью применения его как рабочего инструмента, который не имел задачи в широком распространении. На язык С не существовало стандарта до 1989 года. В роли формального описания авторы компиляторов применяли книгу Б. Кернигана и Д. Ритчи, которая вышла в 1978 году в США ( на русский язык она была переведена в 1985 году). Роль этой книги как неформального стандарта для языка С осталась и по сей день. Не случайно в литературе и различной документации по компиляторам ссылка на эту работу обозначается специальным сокращением K&R.

Первый официальный стандарт языка С приняли в 1989 году в Американском национальном институте стандартов (American National Standards Institute- ANSI). На практике эту версию языка обозначают так: С89. Также, данный стандарт приняла и Международная организация стандартов (International Standarts Organization -- ISO). А в 1995г. стандарт С89 был незначительно изменен.

Язык С++ (по-русски читается «Си-Плюс-Плюс») как развитие языка С, появился в 1979 году. Его автором стал Бьерн Страуструп, в то время работавший в BellLabs. Разработка и усовершенствование языка С++ потребовал от его создателя значительных усилий в течении 80-х - 90-х годов. Как итог, в 1998г. был принят ANSI/ISO-стандарт для языка С++. Если говорить проще, язык С++ - это объектно-ориентированная, улучшенная версия языка С. С++ построен на основе версии С89, которая содержала в себе все изменения 1995г. Теперь версию С89 называют С-подмножеством языка С++. Несмотря на то, что язык С++ создавался как набор объектно-ориентированных расширений для языка С, в дальнейшем он развился как самостоятельный язык программирования. В наше время его новые средства почти в два раза увеличили объем исходного языка. Не нужно доказательств, что С++ является одним из самых мощных компьютерных языков, разработанных до сих пор.

Второй ANSI/ISO - стандарт для языка С приняли в 1999 году. Эта версия называется С99 и включает набор усовершенствований и новых средств. Некоторые из этих «новых» средств пришли из языка С++, а другие - представляют из себя совершенно иные, новые возможности. Таким образом, отдельные элементы, добавленные в С99, несовместимы с языком С++, что значит, что с появлением версии С99 стандарт языка С больше не считается подмножеством языка С++. К счастью, причина многих «несовместимостей» связана со средствами специального назначения, которые можно запросто решить. Как итог, и этот вариант языка С дает возможность создавать программы, которые будут совместимы с языком С++.

В последующие годы велись работы с целью разрабатывания новых стандартов языков С и С++, которые завершились в конце 2011 года.

В октябре 2011 года появился новый стандарт языка С++. Его обозначение- C++11 или ISO/IEC 14882:2011. А в декабре 2011г. принимают новый стандарт и для языка С. Эту версию условно называют С11 или ISO/IEC 9899:2011. Часть её возможностей уже сейчас поддерживается компилятором GCC.

Сегодня существует очень огромное количество языков программирования, в основу которых лег язык С. Наиболее известные из них, это языки C++ Бьярни Страуструпа, Java фирмы Sun и С# (читается Си-Шарп) фирмы Microsoft.

1.3 Базовые понятия языка

Алфавит языка представляет собой набор знаков (символов), который допустим в данном языке. Такое определение справедливо как для языка человека, так и для языков программирования.

В языке С++ алфавит можно условно разделить на группы знаковДжесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург - Киев, 2001.- С.43.:

· прописные и строчные латинские буквы (A-Z; a-z);

· арабские цифры (0; 1; 2; 3; 4; 5; 6; 7; 8; 9);

· специальные знаки:

"

,

{

}

|

[

]

(

)

+

-

/

\

%

;

'

.

:

?

<

=

>

_

!

&

*

#

~

^

· пробельные символы - это символы пробела, табуляции и перехода на новую строку.

Идентификатор - имя какого-либо объекта программы. Имя может состоять из латинских букв, цифр и символа _ (символ подчеркивания). Начинаться имя может с буквы или символа подчеркивания, но не с цифры. Важно учитывать, что прописные и строчные латинские буквы, используемые в идентификаторах, считаются различными (это требование является общим для всех С-подобных языков:С, С++, С#, Java, Perl и многих других. В таких же языках, как Fortran, Pascal, Basic не делается различия в именах между прописными и строчными латинскими буквами). Имена дают переменным, функциям, классам и т.д.

Пример допустимых идентификаторов:

Alfa; alfa; ALFA; x _x; a25; i_tek

Обратите внимание: здесь alfa, Alfa и ALFA - разные имена.

Имена, подобные приведенным ниже, нельзя использовать в качестве идентификаторов:

25a (начинается с цифры);

Альфа (кириллица не допустима).

Общепринятые рекомендации по использованию имён:

· Хорошо, если имя объекта является осмысленным;

· В качестве имён для констант, используйте имена, состоящие из прописных латинских букв, например: PI, GAMMA;

·Не используйте имена, начинающиеся с символа подчеркивания, так как такие имена часто используют разработчики компиляторов для своих целей;

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

Длина имени в большинстве случаев не ограничена, но на длину внешних имён (библиотек, функций) может накладывать ограничение сама операционная система.

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

В языке С++ имеется 63 ключевых слова. Все они приведены в таблице:

Таблица 1

Ключевые слова в языке С++

asm

do

if

else

typedef

auto

double

inline

short

typeid

bool

dynamic_cast

int

signed

typename

break

return

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

try

private

template

volatile

const_cast

float

protected

this

wchar_t

continue

for

public

throw

while

default

friend

register

true

false

delete

goto

reinterpret_cast

Константы- неизменные величины. В языке C++ имеется пять типов констант: целые, вещественные, символьные, строковые и булевые.

1. Символы, или символьные константы. Для изображения отдельных знаков, имеющих индивидуальные внутренние коды, используются символьные константы. Каждая символьная константа -- это лексема, которая состоит из изображения символа и ограничивающих апострофов. Например: 'A', 'a', '5', '?', и т.д.

Внутри апострофов можно записывать любые символы, изображаемые на дисплее или принтере в текстовом режиме. Однако, используются и коды, не имеющие графического представления на дисплее, клавиатуре или принтере. Примерами таких кодов является код перехода курсора дисплея на новую строку или код возврата каретки (возврат курсора к началу текущей строки). Для отображения в программе соответствующих символьных констант используются комбинации из нескольких символов, имеющих графическое представление. Каждая такая комбинация начинается с символа '\' (backslash- обратная косая черта). Такие наборы литер, начинающиеся с символа '\', в языках C и С++ называют управляющими последовательностями. Приведу таблицу:

\n

перевод строки

\0

нулевой символ

\t

горизонтальная табуляция

\v

вертикальная табуляция

\r

возврат каретки (курсора) к началу строки

\'

апостроф (одиночная кавычка)

\"

кавычка (символ двойной кавычки)

\f

перевод (прогон) страницы

\a

сигнал-звонок

\b

возврат на одну позицию (на один символ)

\\

обратная косая черта \

\?

знак вопроса

Стоит обратить внимание, что перечисленные константы изображаются двумя или более литерами, а обозначают они одну символьную константу, имеющую индивидуальный двоичный код. Управляющие последовательности являются частным случаем эскейп-последовательностей (ESCAPE-sequence), к которым также относятся лексемы вида '\ddd' либо'\xhh' или '\Xhh', где

· '\ddd' - восьмеричное представление любой символьной константы. Здесь d - восьмеричная цифра (от 0 до 7). Например, '\017' или '\233'.

· '\xhh' или '\Xhh' - шестнадцатеричное представление любой символьной константы. Здесь h - шестнадцатеричная цифра (от 0 до F). Например, '\x0b', '\x1A', и т.д.

2. Символы имеют целый тип, то есть, их можно использовать в качестве целочисленных аргументов в выражениях (целые константы). Правила языка допускают использование 3-х видов целых констант: восьмеричных, десятичных и шестнадцатеричных. Префикс определяет основание при записи константы. Для десятичных констант префикс не нужен.

Восьмеричное целое - последовательность цифр, начинающаяся с 0 и не содержащая десятичных цифр старше 7, например:

- 016 - восьмеричное представление десятичного целого 14;

- 025 - восьмеричное представление десятичного целого 21.

Десятичное целое- последовательность цифр, начинающаяся не с нуля (если это не число нуль), например: 105; 20; 0; 2012.

Шестнадцатеричное целое - последовательность символов(0, …, 9, А, B, С, D, Е, F), перед которой записаны символы 0х или 0Х, например:

- 0х25 - шестнадцатеричное представление десятичного целого 37;

- 0ХFF - шестнадцатеричное представление десятичного целого 255.

3. Вещественные константы. Для представления не целых (вещественных) чисел используют константы, представляемые памятью компьютера в виде значений с плавающей точкой. Каждая такая константа состоит из следующих частей: целая часть (десятичная целая); десятичная точка; дробная часть (десятичная целая); признак показателя "е" или "Е"; показатель десятичной степени (десятичная целая, возможно, со знаком). При записи констант с плавающей точкой могут опускаться целая или дробная часть (но не одновременно); десятичная точка или символ экспоненты с показателем степени (но не одновременно). Примеры констант с плавающей точкой: 125.2; 3.14159265; 1.0е-5; 2.314159Е25; 0.0

4. Строки. Строковые константы, вообще, не относятся к константам языка С++. Они представляют собой отдельный тип его лексем. Для них в литературе используется одно название: «строковые литералы». Строка определяется как последовательность символов, заключенная в двойные кавычки: "Это строка"

Среди символов строк могут быть escape-последовательности- сочетания знаков, соответствующих неизображаемым символам, или символам, задаваемым их внутренними кодами. В таком случае их изображения начинаются с обратной косой черты '\': "\n Этот текст \n расположится \n в три строки"

Представление строковых констант в памяти компьютера подчиняется следующим правилам: все символы строки размещаются подряд, каждый символ занимает ровно 1 байт (в том числе и эскейп-последовательность). В конце записи строковой константы компилятор помещает символ '\0'.

Итак, количество байтов, выделяемых памятью компьютера, чтобы представить значения строки, на единицу больше, чем число символов в записи этой строковой константы: "Эта строка занимает 29 байт."

Однако, при работе с символьной информацией необходимо помнить, что длина символьной константы, например, 'A' равна всего 1 байту, а длина строки "A" равна 2 байтам, т.к. строка заканчивается нуль-символом ('\0').

5.Булевые константы. Существует только два значения: true- истина и false- ложь.

Комментарии

Комментарий - последовательность любых символов, используемая в тексте программы для её объяснения. Чаще всего, в тексте программы делают вводный комментарий к программе в целом (назначение, автор, дата создание и т.д.), а после дают комментарии к отдельным фрагментам текста программы, смысл которых не совсем очевиден. Важно давать объяснение не только тому, что делается, но и с какой целью это делается. Комментарии всегда важны: будь-то создание программы для себя, или если ней будут работать другие.

Компилятор языка программирования игнорирует комментарии, они имеют значение только для пользователя. Язык С++ имеет два вида комментариев: однострочные и многострочные.

Однострочный комментарий начинается с двух косых черт “//”. Всё, что написано далее, до конца строки, считается комментарием. Например:

// - текст комментария

Многострочный комментарий начинается косой чертой и звездочкой “/*”, а заканчивается в обратном порядке “*/”. Текст такого комментария может занимать от одной до нескольких строк. Всё, что находится между знаками /* и */ , считается комментарием. Например:

/* - это мой большой

многострочный комментарий */

Глава 2 Программирование Java

2.1 Понятие языка программирования Java

Благодаря деятельности в сфере бытовой электроники (Позже проект "Green"), Гослинг и его коллеги увидели, какую ценность для потребителей имеют такие показатели, как - стоимость, надежность, соответствие стандартам и простота. В то время, как у пользователей рабочих станций был интерес к большей мощности, высоким ценам, необходимости длительного обучения и присутствию различных ошибок, то обычным потребителям нужны были дешевые, простые и надежные устройства. Чтобы стать успешными конкурентами на рынке бытовой электроники, фирмы должны воспринимать процессоры в роли обычного товара, который легко можно заменить более дешевым, предоставив при этом возможность обеспечения обратной совместимости и соблюдения стандартов, которые установлены на устройствах длительного использования, например, на телевизоре.

Java - язык программирования, разработанный в компании SunMicrosystems. Приложения написанные на языке Java, как правило, компилируются в специальный байт-код, после чего эти приложения имеют возможность работать на любой виртуальной Java-машине, при этом независимо от самой компьютерной архитектуры. Официальной датой выпуска языка Java считается 23 мая 1995 года. На сегодняшний день технологии Java предоставляют средства для превращения статических Web-страниц в интерактивные, а также возможность создания приложений, не зависящих от платформы.

"Группе была поставлена задача создать распределенную систему, которую можно было бы в качестве современной программной технологии продавать производителям бытовой электроники”, Джон Родли, Создание Java-апплетов .- TheCoriolis Group,Inc.,1996, Издательство НИПФ "ДиаСофт Лтд.",1996 - С.32." - вспоминает Дж. Гослинг.

Изначально язык разрабатывался Джеймсом Гослингом для программирования бытовых электронных устройств и назывался “Oak” (В переводе на русский- дуб). Позже язык стал применяться для создания клиентских приложений и серверного ПО, а также получил свое окончательное имя. Выбор названия, как и официальной эмблемы в виде дымящейся чашки кофе был сделан неспроста, а потому-что Java- марка кофе, который очень любили некоторые программисты. Есть также и вторая версия происхождения названия Java, а именно то, что Java- сленговое обозначение кофе, связанное с одноименным островом, где он производится, с аллюзией на кофе-машину, как прямой пример бытовой техники, для чего, изначально, язык и создавался.

Сам Джеймс Гослинг перешел в компанию SunMycrosistems из исследовательского отдела IBM в 1984 году, в возрасте около 40-ка лет. Первой его задачей стал проект оконного интерфейса NeWS, который не стал успешным в коммерческом плане, однако был интересным с технической точки зрения. Также Гослинг написал первую реализацию текстового редактора EMACS на языке С - “GOSMACS”.

Если говорить о произношении названия языка на русском языке, то можно заметить, что образовались две нормы: 1- англоязычная “Джава”; 2- традиционно-национальная “Ява”. SunMycrosistems придерживается англоязычного произношения везде. Иногда Java жаргонно называют “Жаба” (например, изображение жабы присутствует на календариках группы российских пользователей Java).

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

Гослингу не нравилась идея объединения разработки с определенной платформой, так он начал с расширения компилятора C++. Спустя время стало понятно, сколько ни расширяй C++, язык не сможет удовлетворить все существующие потребности. Создание языка Oak и стало разрешением этой проблемы. “В конце концов, язык - это средство, а не самоцель, - поясняет Гослинг. - Мы не собирались зацикливаться на С++, а хотели разработать систему, которая позволяла бы создавать большую распределенную разнородную сеть из бытовых электронных устройств, способных взаимодействовать между собой”, Джон Родли, Создание Java-апплетов .- TheCoriolis Group,Inc.,1996, Издательство НИПФ "ДиаСофт Лтд.",1996 - С.35-37.".

В конце 1992 года тогдашний инженер проекта Патрик Нотон выразил “огромные усилия по доработке Oak и других компонентов”. Коллектив проекта “Green” выпустили “*7” - устройство типа PDA, которое Гослинг называл “ручной пульт дистанционного управления”.

"За полтора года мы сделали столько же, сколько иные большие коллективы в SunMycrosistems делали за три года, - с гордостью отмечает Патрик Нотон. - Операционную систему GreenOS, язык, инструментарий, пользовательский интерфейс, новую аппаратную платформу, три заказных микросхемы... и каждый этап был связан с риском, т.к. мы использовали совершенно новые технологии".

30-летний П. Нотон, до прихода в команду Green, возглавлял проект по разработке пользовательской среды OpenWindow в SunMycrosistems.

Малые размеры устройства *7 выставляли его в выгодном положении в плане компактности и эффективности кода, который и являлся ядром технологии. Этот продукт широко демонстрировали в Sun, он смог произвести впечатление на таких важных людей, как Скотт Макнили и Билл Джой, однако, что случилось с ним потом- неизвестно.

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

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

Если иметь инструментальные средства как Java и Web, мы можем получить изначально организованную систему- подчеркивал Гослинг. "Если вы создаете на языке Java клиентскую часть приложения, его запуск сводится всего лишь к переходу на соответствующую страницу. Инсталляция примитивна - просто поместите необходимое программное обеспечение на Web-сервер. И не возникнет никаких проблем с переносом, в силу того, что присутствует только одна версия приложения". Многие фирмы, по словам Гослинга, уже организуют БД в виде Web-страниц с применением интерфейса Common Gateway Interface (CGI) - специфического стандарта для работы внешних программ на сервере HTTP.

Программы на Java транслируются в байт-код, которые выполняет виртуальная машина Java (JVM) - программа, которая обрабатывает байтовый код и передает далее инструкции оборудованию в роли интерпретатора.

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

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

Часто к недостаткам данной концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может достаточно снизить производительность программ и алгоритмов, которые реализованы на языке 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.

Основные возможности:

- автоматическое управление памятью;

- расширенные возможности обработки исключительных ситуаций;

- богатый набор средств фильтрации ввода/вывода;

- набор стандартных коллекций, таких как массив, список, стек и т. п.;

- наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);

- наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;

- встроенные в язык средства создания многопоточных приложений;

- унифицированный доступ к базам данных:

- на уровне отдельных SQL-запросов - на основе JDBC, SQLJ;

- на уровне концепции объектов, обладающих способностью к хранению в базе данных - на основе Java Data Objects и Java Persistence API;

- поддержка шаблонов (начиная с версии 1.5);

- параллельное выполнение программ.

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

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

В 1990 году, Патрик Нотон, будучи разработчиком ПО в компании SunMycrosistems понял, что поддерживать сотни различных интерфейсов программ, что использовались в компании, ему надоело, о чем он сказал исполнительному директору и своему другу Скотту МакНили, сообщив о своем намерении перейти работать в компанию NeXT. МакНили попросил Нотона описать причины его недовольства и предложить вариант решения возникших проблем.

Нотон, не рассчитывая, что на его работу кто-то обратит внимание, высказал претензии, сильно раскритиковав недостатки SunMycrosistems, в том числе и разрабатываемую в тот момент архитектуру ПО NeWS. На удивление Нотона, письмо возымело успех и быстро было перенаправлено ведущим инженерам, которые, в свою очередь, поддержали своего коллегу. Одобрило обращение и высшее руководство компании в лице основателя SunMycrosistems, Билла Джоя, и Джеймса Гослинга- непосредственного начальника Нотона.

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

Команда Green, состоящая из 6-и человек, погрузилась в исследования бытовых устройств и устройств дистанционного управления. Green пытались найти средство, при помощи которого стало бы возможной установка взаимодействия между этими устройствами. Вскоре стало ясно, что такие электроприборы, как видеомагнитофоны, проигрыватели лазерных дисков, стереосистемы - все они были реализованы на разных процессорах. Это означало, что если производитель захочет добавить телевизору или видеомагнитофону дополнительные функции или характеристики, он будет зажат в рамках средств, зашитых в аппаратное обеспечение. Эта проблема, в сочетании с ограниченностью памяти микросхем этих устройств, выдвинула новый подход к программированию ПО, который должен был стать ведущим на рынке бытовой электроники.

Команда приступила к разработке нового объектно-ориентированного языка программирования, который был назван Oak (дуб), в честь дерева, росшего под окном Гослинга.

Вскоре компания SunMicrosystems преобразовала команду Green в компанию FirstPerson. Новая компания обладала интереснейшей концепцией, но не могла найти ей подходящего применения. После ряда неудач неожиданно ситуация для компании резко изменилась: был анонсирован Mosaic - так родился WorldWide Web, с которого началось бурное развитие Internet.

Нотон предложил использовать Oak в создании Internet- приложений. Так Oak стал самостоятельным продуктом, вскоре был написан Oak-компилятор и Oak-браузер "WebRunner". В 1995 году компания SunMicrosystems приняла решение объявить о новом продукте, переименовав его в Java (единственное разумное объяснение названию - любовь программистов к кофе). Когда Java оказалась в руках Internet, стало необходимым запускать Java-аплеты - небольшие программы, загружаемые через Internet. 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

Десятичные и шестнадцатеричные цифры и целые числа

Целые числовые константы Майкл ЭферганJava: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998. - С.89. в исходном коде Java (так называемые литерные константы) могут быть десятичными или шестнадцатеричными. Они записываются либо символами ASCII, или символами Unicode следующим образом.

Десятичные константы записываются как обычно. Например, -137.

Шестнадцатеричная константа начинается с символов 0x или 0X (цифра 0, после которой следует латинская буква X), а затем идет само число в шестнадцатеричной нотации. Например, 0x10 соответствует ; 0x2F соответствует , и т.д. О шестнадцатеричной нотации рассказано чуть ниже.

Ранее иногда применялись восьмеричные числа, и в языках C/C++, а также старых версиях Java можно было их записывать в виде числа, начинающегося с цифры 0. То есть 010 означало . В настоящее время в программировании восьмеричные числа практически никогда не применяются, а неадекватное использование ведущего нуля может приводить к логическим ошибкам в программе.

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

Поясним теперь, что такое шестнадцатеричная нотация записи чисел и зачем она нужна.

Информация представляется в компьютере в двоичном виде - как последовательность бит. Бит - это минимальная порция информации, он может быть представлен в виде ячейки, в которой хранится или ноль, или единица. Но бит - слишком мелкая единица, поэтому в компьютерах информация хранится, кодируется и передается байтами - порциями по 8 бит.

Под "ячейкой памяти" будет пониматься непрерывная область памяти (с последовательно идущими адресами), выделенная программой для хранения данных. На рисунках мы будем изображать ячейку прямоугольником, внутри которого находятся хранящиеся в ячейке данные. Если у ячейки имеется имя, оно будет писаться рядом с этим прямоугольником.

Мы привыкли работать с числами, записанными в так называемой десятичной системе счисления. В ней имеется 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 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. Обычно используют заглавные буквы, но можно применять и строчные.

Зарезервированные слова языка JavaМайкл ЭферганJava: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998 - С.67.

Это слова, зарезервированные для синтаксических конструкций языка, причем их назначение нельзя переопределять внутри программы:

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

Их нельзя использовать в качестве идентификаторов (имен переменных, подпрограмм и т.п.), но можно использовать в строковых выражениях.

В языке 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, тоже стандартизованы.

Тип

Длина (в байтах)

Диапазон или набор значений

boolean

не определено

true, false

byte

1

?128..127

char

2

0..216?1, или 0..65535

short

2

?215..215?1, или ?32768..32767

int

4

?231..231?1, или ?2147483648..2147483647

long

8

?263..263?1, или примерно ?9.2·1018..9.2·1018

float

4

-(2-2?23)·2127..(2-2?23)·2127, или примерно ?3.4·1038..3.4·1038, а также , , NaN

double

8

-(2-2?52)·21023..(2-2?52)·21023, или примерно ?1.8·10308..1.8·10308, а также , , NaN

Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java и одной из причин её успеха. Тем не менее, одна небольшая проблема с платформенной независимостью всё же осталась. Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые регистры или другими способами улучшают точность вычислений. Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более, если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово strictfp, запрещающее повышение точности.

Преобразования при математических операциях Майкл ЭферганJava: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998. - С.71-75.

В языке Java действуют следующие правила:

1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.

2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.

3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.

4. Иначе оба операнда преобразуются к типу int.

Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в C++.

Заключение

Как было обещано в первом издании книги «Бьерн Страуструп. Язык программирования С++ », запросы пользователей определили развитие С++. Его направлял опыт широкого круга пользователей, которые трудились в различных сферах программирования. За 6 лет, которые отделяли нас от первого издания описания С++, количество пользователей увеличилось в сотни раз. За этот небольшой период усвоились множество уроков, рассмотрены в теории и применено на практике достаточное число приемов программирования.

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

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

Свойства языка Java:

- язык программирования объектно-ориентирован, оснащён богатой библиотекой классов и одновременно довольно прост для освоения;

- цикл разработки приложений сокращен при помощи того, что система построена на основе интерпретатора;

- приложение получается автоматически переносимым между множеством платформ и ОС;

- за счет встроенной системы сборки «мусора» программист освобождается от необходимости явного управления памятью;

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

- в приложения встроена система безопасности, не допускающая незаконного доступа и проникновения вирусов.

Список использованной литературы

1. «Бьерн Страуструп. Язык программирования С++» , изд. Бином, М. -1136с.

2. Джесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург - Киев, 2001. - 834с.

3. Джон Родли Создание Java-апплетов.- TheCoriolis Group,Inc.,1996, Издательство НИПФ "ДиаСофт Лтд.",1996 - 654с.

4. Герберт Шилдт. C + + для начинающих. Пер. с англ. М: ЭКОМПаблишерз 2007. - 546с.

5. Герберт Шилдт. Полный справочник по C + + 4-е издание. Пер. с англ. М: издательский дом « Вильямс » 2010. - 543с.

6. Майкл ЭферганJava: справочник.- QUE Corporation, 1997, Издательство "Питер Ком", 1998. - 687с.