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

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

Содержание:

Введение

Если задаться вопросом, с каким языком связано предисловие нынешней эры программирования, результат будет примитивен - с языком С. Данный язык разработал Д.Ритч в 70х прошлого века для компьютера PDP 11 компании DEC (Digital Equipment Corporation), где использовалась ОС UNIX. В то время именно язык С, невзирая на наличие развитых определенных языков программирования, определил направление каждого грядущего программирования.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мощность. Мощность использования достигается при помощи за применения большого числа библиотек.

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

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

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

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

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

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

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

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

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

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

В октябре 2011года возник новейший эталон языка С++. Его обозначение- C++11 либо ISO/IEC 14882:2011. Полная его помощь обещана в GCC 4.7.

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

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

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

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

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

  • прописные и строчные латинские буквы (A, B,..., Z, a, b,..., 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;
  • не используйте имена, начинающиеся с символа подчеркивания, потому что такие имена зачастую применяют разработчики компиляторов для своих целей;
  • чем огромнее область видимости имени, тем больше выразительным и длинным должно быть имя. Короткие однобуквенные, либо двухбуквенные имена возможны только внутри маленьких блоков программы, внутри коротких функций пользователя.

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

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

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

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

Таблица 1. Ключевые слова в языке С++

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

1. Целые константы. Правила языка допускают применениие трёх видов целых констант: десятичных, шестнадцатеричных и восьмеричных. Основание определяется префиксом в записи константы. Для десятичных констант префикс не необходим.

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

100 25 0 2009

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

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

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

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

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

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

2.Вещественные константы. Для представления вещественных (нецелых) чисел применяются константы, представляемые в памяти компьютера в форме с плавающей точкой. Любая вещественная константа состоит из следующих частей: целая часть (десятичная целая константа); десятичная точка; дробная часть (десятичная целая константа); знак показателя "е" либо "Е"; показатель десятичной степени (десятичная целая константа, допустимо, со знаком). При записи констант с плавающей точкой могут опускаться целая либо дробная часть (но не единовременно); десятичная точка либо символ экспоненты с показателем степени (но не единовременно).

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

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

3. Символы, либо символьные константы. Для изображения отдельных знаков, имеющих индивидуальные внутренние коды, применяются символьные константы. Вся символьная константа - это лексема, которая состоит из изображения символа и ограничивающих апострофов. Скажем: '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', и т.д.

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

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

"Это строка"

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

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

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

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

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

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

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

Комментарии

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

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

Однострочный комментарий начинается с символов // (две косые черты). Всё, что записано позже этих символов и до конца строки, считается комментарием. Скажем:

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

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

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

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

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

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

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

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

Гослинг, в возрасте 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

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

Целые числовые константы[4] в исходном коде 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[5]

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

Преобразования при математических операциях[6]

В языке 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 с.

7. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: Методические указания для студентов направления "Компьютерные науки". - М.: НУК, 2006. - 52 с.

8. Вязовик Н.А.. Программирование на Java. Курс лекций, Интернет-университет информационных технологий, 2003. 592 с.

9. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика. — 3-е изд. — М.: «Вильямс», 2004. 800 с.

10. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. - М.: Издательство <Бином>, 2009. 1454 с.

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

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

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

14. Страуструп Бьерн. Язык программирования С++. Бином, 2008. 369 с.

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

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

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

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

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

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

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

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

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