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

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

Содержание:

Введение

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

Язык C стал основоположником новой эпохи программирования. язык С, несмотря на присутствие развитых определенных языков программирования, определил направление всего будущего программирования. Его разработал Кен Томпсон и Деннис Ритчи в 70х прошлого века. Деннис Ритчи так же он известен созданием языков BCPL, B, расширением ALTRAN для языка FORTRAN, и участием в разработке операционных систем Unix и Multics. Кен Томпсон, помимо создания языка С, участвовал в создании UNIX, B и стандарта UTF-8.

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

В процессе выполнения цели работы, сформированы данные задачи:

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

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

Курсовая работа содержите две главы в которых описываются язык С вместе с С++ и Java соответственно.

Глава 1. Язык программирования С и С++

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

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

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

-Эффективность.

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

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

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

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

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

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

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

.

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

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

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

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

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

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

В октябре 2011 г. создали новый стандарт языка С++ Джесс либерти, «Освой самостоятельно C++ за 21 день», изд. Дом «Вильямс», Москва - Санкт-Петербург - Киев, 2001. - С. . Его обозначение- C++11 или ISO/IEC 14882 .

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

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

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

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

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

- прописные и строчные латинские буквы (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;

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

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

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

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

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

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

Ключевое слово Packed больше не используется в С++

Таблица 2. Новые ключевые слова для С++

Константы - это неизменяемые величины. В языке 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 предоставляет возможность конвертировать статические веб-страницы в интерактивные динамические документы и создавать распределенные (независимые от платформы) приложения.

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

Гослинг, в начале 40-х годов, присоединился к Sun из исследовательского отдела IBM в 1984 году. Его первая задача, проект, является интересным с технической точки зрения, но не коммерчески успешным window interface news. Он также написал GOSMACS, первую реализацию текстового редактора EMACS в C.

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

Принимая во внимание произношение на русском языке, мы видим, что сформировались две разные нормы этого языка-заимствованная англоязычная" Ява "и традиционно-национальная" Ява", что соответствует принятому произношению названия острова Ява. Sun придерживается первого варианта-английское произношение везде. Иногда в обиходе также используется сленговое слово "жаба" (например, изображение жабы находится в календарях группы русских пользователей Java (javausersgroup).

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

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

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

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

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

До того, как присоединиться к зеленой команде, 30-летний Naughton возглавил проект Sun для разработки пользовательской среды openWindow.

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

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

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

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

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

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

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

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

- Применение технологии перевода байт-кода к машинному коду непосредственно во время работы программы (Технология JIT) с одновременным сохранением версий классов в машинном коде;

- Широкое применение кода, ориентированного на платформу (native code), в стандартных библиотеках;

- Оборудование, которое позволяет ускорить байт-кода обработки (например, 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, которая является основой платформы.Сеть от Microsoft.

Ключевая функция:

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

- расширенные функции обработки исключений;

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

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

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

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

Майкл Эферган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.

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

Таблица 3. ключевые слова для Java

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

В языке 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, тоже

стандартизованы.

Таблица 4. Длины и диапазоны значений примитивных типов

Тип

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

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

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++

Заключение

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

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

программой относительно трудно.

Поскольку язык С обладает высоким уровнем и машинным уровнем смешанного программирования, он используется в большинстве аппаратных приложений. Он очень подходит для написания программ в встроенные устройства, проектирование микросхем, продукты промышленной автоматизации и т.д. Между тем программное обеспечение, такое как “Unix”, “windows” и другие антивирусы, также может быть создано на языке С. И последнее, но не менее важное: алгоритм также может быть легко реализован на языке Си.

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

относительно простой в использовании C++ для разработки большой или огромной системы по сравнению с C44 язык C++ поддерживает объектно-ориентированные функции. Однако C++ имеет некоторые недостатки. Код C++ легко подвержен ошибкам, связанным с типами данных, потому что C++ не предлагает очень сильной проверки типов. C++ не поддерживает независимость от платформы. Он не может работать на всех видах платформ. Основным недостатком является то, что C++ не является чистым объектно-ориентированным языком программирования, поскольку он не имеет функции сборки мусора. C++ использует указатели, которые не обеспечивают безопасность данных.

C++ может быть широко использован в индустрии программного обеспечения. Поскольку C++ может быть очень быстрым языком программирования после компиляции, программное обеспечение, такое как прикладное программное обеспечение, драйверы устройств и высокопроизводительный сервер, может быть разработано C++.

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

Java-это язык программирования, потребляющий много памяти. Java работает медленно, потому что имеет дополнительный слой между системами и программами. Дополнительный уровень-это виртуальная машина Java (JVM). Все, что сделано Java программы должны выполняться виртуальной машиной Java. Затем он заставляет систему выполнять фактические инструкции. Java имеет три различные формы: Java 2 Standard Edition (J2SE), Java2 Micro Edition (J2ME) и Java2 Enterprise Edition (J2EE), что очень похоже на то, что мы имеем в операционных системах Windows, таких как Windows Vista Home Basic Edition, Windows Vista Business Edition и Windows Vista Ultimate Edition. Каждая форма Java имеет свою подходящую область применения. J2SE, который также называется CORE Java, подходит для настольные приложения. J2ME в основном используется при разработке встраиваемых систем, таких как мобильные телефоны, беспроводные приложения и программирование КПК. J2EE, предназначенный для

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

В целом можно сделать вывод, что все 3 языка программирования C, C++ и 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с.