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

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

Содержание:

Введение

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

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

Язык С оказал огромное влияние и внес вклад в индустрию программного обеспечения, помимо того синтаксис языка С стал основой для таких языков программирования, как C++ и Java. На данный момент C++ считают не самым простым языком,но с обширной библиотекой и репутацией хардкорной програмистики. Он компилируемый, даже можно сказать что это расширенный С. Превосходство С++ над другими языками в том, что тут есть поддержка объектно-ориентированного программирования (ООП). Технический прогресс стремителен и требования к современным приложениям очень велики. Из них можно выделить безопасность, высокую производительность, нейтральность к архитектуре и работоспособность в распределенной среде. Актуальность данной темы обусловлена тем, что прогресс компьютерных технологий определил появления новых разнообразных систем для записи алгоритмов – языков программирования.

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

В ходе поставленной цели будут решены следующие задачи:

- изучено программирование на С и С++: дано понятие языков программирования С и С++, их краткая история развития и базовые понятия;

- изучено программирование Java: дано понятие языка программирования Java, его история и базовые понятия.

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

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

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

Все мы знаем о том, что самыми распространенными языками программирования в мире являются С и С++. В разработке системного и прикладного ПО применяются в основном эти языки программирования. Любой специалист владеющий данными языками в сфере информационных технологий всегда будет иметь хорошую работу.

Особенности данного языка:

1) Эффективность и продуктивность. C обладает наивысшей интерактивностью разработки среди всех широко распространенных статически типизированных языков.

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

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

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

5) Переносимость. Среди преимуществ языка С следует отметить переносимость программ на компьютеры различной архитектуры и из одной операционной системы в другую, лаконичность записи алгоритмов, логическую стройность программ, а также возможность получить программный код, сравнимый по скорости выполнения с программами, написанными на языке ассемблера.

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

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

Перед тем как заняться изучением языков С и С++, нужно иметь представление об истории возникновения этих языков программирования. В далеком 1972 году прошлого века выдающийся программист Деннис Ритчи разработал язык С. Архетипом языка С был язык программирования БИ(В), который был разработан пионером компьютерной науки Кеном Томпсоном и внесший вклад в его разработку. Уместно было бы добавить и про язык программирования BCPL, который в свою очередь оказал на язык С огромное влияние ведь изначально предназначался для написания компиляторов для других языков. Невзирая на другие языки, язык Си сумел найти быстрое распространение благодаря прекрасному сочетанию краткости конструкций. Компиляторы Си работают отлично на Windows, Mac OS, Linux, FreeBSD, Solaris и др. Язык Си, разрабатывался для системного программирования, а стал одним из популярных языков как прикладного, так и системного программирования. В 1978 году вышедшая книга под авторством Брайана Кернигана и Денниса Ритчи, являлась неформальным руководством для разработчиков и на деле была стандартом языка Си, ведь до 1989 года стандарта не существовало. Но, 1989 год ознаменовался тем, что стандарт языка С все же был принят Американским Национальным Институтом Стандартов. Версия обозначается как С89. На русский же язык книга была переведена только в 1985 году. Во всей литературе и разного рода источникам по компиляторам ссылка на эту работу обозначается как K&R. Международная Организация Стандартов тоже приняла данный стандарт, но в 1995 году С89 был немного изменен. Язык Си стал базой для создания нового языка программирования и этим языком считается С++1, разработанный программистом Бьерном Страуструпом в 1979 году. По ходу разработки в него включили и другие средства, перекрывающие возможности конструкций Си.

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

По ходу разработки в него включили и другие средства, перекрывающие возможности конструкций Си. Поднимался неоднократно вопрос и о совместимости языков, но в итоге дискуссий все оставили, как и прежде. Пришлось приложить много усилий по разработке и совершенствованию С++. По итогу работы, институты ANSI/ISO приняли стандарт языка С++, и назвали версию С89. Это — объектно-ориентированная, усовершенствованная версия языка С.

Хотя С++2 и задумывался как набор объектно-ориентированных расширений для языка С, но все же новые средства увеличили исходный объем в 2 раза, тем самым сделав язык поистине одним из могучих. Он используется для разработки коммерческих продуктов, а 90% игр пишутся на С++ с применением DirectX. В 1999 году ANSI/ISO приняли второй стандарт для языка С. Версию назвали - С99 и включает она новые средства и набор усовершенствований. Одни из средств пришли из языка С++, а другие — совершенно иные. Таким образом, отдельные элементы, привнесенные в С99, несовместимы с языком С++. С появлением версии С99 язык Си больше не считается чистым подмножеством языка С++, но и с этой версией создавать совместимые программы с языком С++ тоже возможно. Новый стандарт языка С++ появился в 2011 году, его обозначение - C++11 или ISO/IEC 14882:2011. Полная его поддержка обещана в GCC 4.7. На сегодняшний день существует большое количество С-подобных языков, в основе которых все тот же язык С. Наиболее известные – это языки C++ Бьярни Страуструпа, Java фирмы Sun и С# (читается Си-Шарп) фирмы Microsoft. Так же в декабре 2011года приняли и новый стандарт языка С, версия названа С11 или ISO/IEC 9899:2011, часть её возможностей уже сейчас поддерживается компилятором GCC.

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

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

Алфавит языка является набором символов допустимых в данном языке. Данное обьяснение справедливо как для языка человека, так и для языков программирования.

В языке С++ алфавит можно условно разделить на группы знаков3:

1) прописные и строчные латинские буквы (A, B,..., Z, a, b,..., z);

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

3) специальные знаки: " , { } | [ ] ( ) + - / % \ ; '. : ? < = > _ ! & * # ~ ^

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

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

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

Alfa Alfa ALFA x _x a25 i_tek

Нужно обратить внимание на то, что:

• ALFA, Alfa и alfa, все это разные имена.

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

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

• Альфа (кириллица не допустима). Такие имена в качестве идентификаторов использовать нельзя!

Рекомендации по использованию имён:

1) Не использовать имена начинающиеся с символа подчеркивания. Такие имена используют разработчики компиляторов для своих целей.

2) Выбирайте разумное имя обьекта.

3) Чем больше область видимости имени, тем более выразительным и длинным должно быть имя.

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

4) Для имен констант лучше подойдут те, которые состоят из прописных латинских букв.

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

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

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

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

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

Комментарии

Комментарий – это последовательность символов, которая игнорируется компилятором языка C++. В языке С++ имеется два вида комментариев: однострочные и многострочные.

Однострочный комментарий начинается с символов // (две косые черты).

Всё, что записано после этих символов и до конца строки, считается комментарием.

Например:

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

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

Например:

/* Это мой большой

Многострочный при неправильном использовании комментариев читабельность программы может, напротив, серьезно пострадать. Компилятор не понимает смысл комментариев, поэтому не существует способа проверить, что комментарий:

а) содержателен;

б) имеет какое-то комментарий */

При отношение к программе;

в) не устарел.

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

Литералы

Литералы — это неизменяемые величины. Литералы представляют собой константы, включаемые непосредственно в текст программы и не могут быть изменены в тексте программы.

Литералы в языке C++ могут быть целые, вещественные, символьные и строковые и булевые. К целым относятся: десятичные, шеснадцатеричные и восьмеричные. Основание определяется префиксом в записи константы. Для десятичных констант префикс не нужен.

Десятичное целое — это последовательность десятичных цифр, начинающаяся не с нуля (если это не число нуль), например:

200 65 0 2008

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

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

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

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

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

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

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

Каждая константа состоит из следующих частей:

а) целая часть (десятичная целая константа);

б) десятичная точка;

в) дробная часть (десятичная целая константа);

г) признак показателя "Е" или "е";

д) показатель десятичной степени (десятичная целая константа, возможно, со знаком).

Примеры констант с плавающей точкой:

125. 3.14159265 1.0е-5 .314159Е25 0.0

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

'\n' — перевод строки;

'\t' — горизонтальная табуляция;

'\r' — возврат каретки (курсора) к началу строки;

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

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

'\"' — кавычка (символ двойной кавычки);

'\0' — нулевой символ;

'\a' — сигнал-звонок;

'\b' — возврат на одну позицию (на один символ);

'\f' — перевод (прогон) страницы;

'\v' — вертикальная табуляция;

'\?' — знак вопроса.

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

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

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

Символы можно использовать в качестве целочисленных операндов в выражениях.

Строковые литералы или строковые константы. Они вообще не относятся к константам в языке С++, а являются отдельным типом его лексем и определяются последовательностью символов заключенных в двойные кавычки (не в апострофы!):

"Это строка"

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

Пример ниже:

"\n Текст \n разместится \n на 3-х строках"

"\n Текст \n разместится \n на 3-х строках"

В памяти компьютера представления строковых констант подчиняются следующим правилам.

1) Все символы строки размещаются подряд, и каждый символ занимает ровно 1 байт.

2) В конце записи строковой константы компилятор помещает символ '\0'.

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

"Строка в 18 байт."

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

И последнее. Булево значение предполагается, что это значение двоичное имеет 2 состояние ИСТИНА, ЛОЖЬ. По другому можно представить себе в виде галочки, если галочка взведена - значит наше булево значение истина, если нет - значит ложь.

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

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

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

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

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

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

Беря во внимание произношение в русском языке, мы видим, что образовались две разные нормы данного языка - заимствованная англоязычная джава» и традиционно - национальная «ява», которая соответствует принятому произношению названия острова Ява. Компания Sun придерживается первого варианта - англоязычного произношения везде. Иногда в обычной жизни применяют и жаргонное слово «Жаба» (например, изображение жабы есть на календариках группы российских пользователей Java (JavaUsersGroup).

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

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

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

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

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

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

Малогабаритность устройства *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 году разработчик ПО компании Sun Microsystems Патрик Нотон (Patrick Naughton) понял, что ему надоело поддерживать сотни различных интерфейсов программ, используемых в компании, и сообщил исполнительному директору Sun Microsystems и своему другу Скотту МакНили (ScottMcNealy) о своем намерении перейти работать в компанию NeXT. МакНили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть такое решение проблем, как если бы он был Богом и мог исполнить все, что угодно.

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

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

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

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

Целые числовые константы5 в исходном коде Java (так называемые литерные константы) могут быть десятичными или шестнадцатеричными. Они записываются либо символами ASCII, или символами Unicode следующим образом.

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

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

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

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

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

Рассмотрим примеры.

Зарезервированные слова языка Java6

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

Слова, зарезервированные для синтаксических конструкций языка

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

Таблица 2

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

В языке Java только 8 примитивных (скалярных, простых) типов: boolean, byte, char, short, int, long, float, double.

Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode-16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причем в Java, в отличие от других языков, он не является беззнаковым.

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

Типы 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, запрещающее повышение точности.

Преобразования при математических операциях7.

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

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

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

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

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

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

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

Заключение

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

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

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

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

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

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

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

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

7. Пол Ирэ, "ООП с использованием С++", Киев, "ДиаСофт", 2010. 480 с.

8. Секунов Н. Самоучитель Visual C++ 6. изд. «БХВ-Петербург», Санкт-Петербург, 2003. 925 с.

9. Синтес Антони. Освой самостоятельно объектно-ориентированное программирование за 21 день. — М.: «Вильямс», 2002. 372 с.

10. Хабибуллин И.Ш. Самоучитель Java 2. СПб.: БХВ-Петербург, 2007. 720 с.

11. Шилдт Герберт, Холмс Джеймс, Искусство программирования на Java, 2005. 336 с.

12. Эккель Б. Философия Java. Библиотека программиста. СПб.: Питер, 2001. 640 с.