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

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

Содержание:

Введение

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

Таким образом, актуальностью выбранной темы является востребованность языков программирования С (С++) и Java. Чтобы знать и понимать язык программирования, желательно знать и его историю.

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

Для достижения поставленной цели решены следующие задачи:

- изучить источники информации по теме;

- выявить причину возникновения языков программирования;

- узнать историю языков Си (C++) и Java;

- рассмотреть развитие языков Си (C++) и Java;

- проанализировать место языков С (С++) и Java в современном мире и будущем.

Объект исследования: языки программирования Си (C++) и Java.

Предмет исследования: история, структура, польза, потенциал таких языков программирования, как Си (C++) и Java.

Курсовая работа по теме «История возникновения и развития языков программирования Си (С++) и Java» может быть использована на занятиях информатикой, программированием и во внеклассной работе в школах, колледжах, вузах и других образовательных учреждениях и несет исследовательски-образовательный характер.

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

ГЛАВА 1 Программирование на С и С++

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

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

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

  • Простота. Руководство по языку и его документация сильно упрощены для упрощения восприятия.
  • Эффективность. Заключается в том, что программы, которые написаны на этом языке пропорционально небольшого размера с соответственно большой скоростью исполнения.
  • Лаконичность. Запись алгоритма чётко выражена, краткая и при этом понятна.
  • Компактность. Язык содержит малое количество встроенных ключевых слов и средств.
  • Большой потенциал. Скорость работы достигается при помощи использования большого числа библиотек.
  • Совместимость. Компиляторы работают на всех ОС и аппаратных платформ, из-за чего программу можно скомпилировать и запустить практически везде.

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

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

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

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

По поводу возникновения языка Си Питер Мойлан в своей книге «The case against C» пишет: «Нужен был язык, способный обойти некоторые жесткие правила, встроенные в большинство языков высокого уровня и обеспечивающие их надежность. Нужен был такой язык, который позволил бы делать то, что до него можно было реализовать только на ассемблере или на уровне машинного кода». Си стал именно таким языком.

Язык С создавался как инструмент для системного программирования. Ввиду превосходного сочетания лаконичности конструкций и богатства выразительных возможностей язык С быстро распространился и стал одним из самых известных языков прикладного и системного программирования. Компиляторы языка С совместим почти со всеми типами современных ПК и в ОС.

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

Первый официальный стандарт языка С приняли в 1989 году в Американском национальном институте стандартов и на практике обозначается как С89. Также, всё в том же году данный стандарт приняла и Международная организация стандартов. А в 1995г. стандарт С89 был немного изменен.

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

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

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

В октябре 2011года появился самый новый стандарт языка С++[3]. Его обозначение- C++11 или ISO/IEC 14882:2011.

А в декабре 2011г., по аналогу с С++, принимают стандарт и для языка С. Эту версию условно называют С11 или ISO/IEC 9899:2011.

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

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

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

Алфавит языка - набор знаков, который допустим в данном языке. В языке С++ алфавит можно буквально разделить на группы знаков[4]:

  1. прописные и строчные латинские буквы (A, B,..., Z, a, b,..., z);
  2. арабские цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  3. специальные знаки: " , { } | [ ] ( ) + - / % \ ; '. : ? < = > _ ! & * # ~ ^
  4. пробельные символы — это символы пробела, табуляции, перехода на новую строку.

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

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

omega Omega OMEGA o _o o50 o_lol

omega, Omega и OMEGA — разные имена.

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

50o (начинается с цифры);

Омега (кириллица не допустима).

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

Имя объекта имеет смысл;

в качестве имён констант используйте имена, состоящие из прописных латинских букв, например: E, OMEGA;

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

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

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

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

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

Таблица 1

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

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++ имеется пять типов констант: целые, вещественные, символьные, строковые и булевые.

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

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

11 221 0 2009213

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

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

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

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

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

0х1В — шестнадцатеричное представление десятичного целого 27.

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

125 9.8 25.5е-5 1.126159 Е25 1.1

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

'A', 'a', '5', '?'.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. Строки, строковые константы. Строки не относятся к константам языка С++, а являются отдельным типом его символов. Для них в литературе используется аналогичное: “строковые литералы”. Строковая константа определяется как последовательность символов, заключенная в двойные кавычки:

"Строчка"

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

"\n Группы \n Делятся на\n Первые \n Вторые \n Третьи \0"

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

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

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

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

"7 байт"

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

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

Комментарии

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

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

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

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

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

/* Начало комментария
1 2 3 4 5
6 7 8 9 10
конец */

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

ГЛАВА 2 Программирование Java

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

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

"Группе была поставлена задача создать распределенную систему…[6]" - вспоминает Гослинг, рассказывая о том, как появилась идея концепции работы языка, способного функционировать на любой ЭВМ.

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

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

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

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

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

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

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

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

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

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

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

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

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

Другое немаловажное достоинство технологии Java можно отметить полный контроль исполнения программы виртуальной машиной.

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

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

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

- широкое применение платформенно-ориентированного кода (встроенного) в стандартных библиотеках;

- аппаратные средства, которые обеспечивают ускоренную обработку байт-кода

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Алфавит языка Java состоит из букв, десятичных цифр и специальных символов. Буквами считаются латинские буквы (кодируются в стандарте ASCII), буквы национальных алфавитов (кодируются в стандарте Unicode, кодировка UTF-16), а также соответствующие им символы, кодируемые управляющими последовательностями

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

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

Латинские буквы ASCII

ABCD...XYZ - заглавные

abcd...xyz – строчные

Дополнительные "буквы" ASCII

_ - знак подчеркивания,

$ - знак доллара.

Национальные буквы на примере алфавита русского языка

АБВГ…ЭЮЯ - заглавные (прописные),

абвг…эюя – строчные

Десятичные цифры 0 1 2 3 4 5 6 7 8 9

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

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

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

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

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

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

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

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

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

Мы привыкли работать с числами, записанными в так называемой десятичной системе счисления. В ней имеется 10 цифр (от 0 до 9), а в числе имеются десятичные разряды. Каждый разряд слева имеет вес 10 по сравнению с предыдущим, то есть для получения значения числа, соответствующего цифре в каком-то разряде, стоящую в нем цифру надо умножать на 10 в соответствующей степени. То есть 52=5 \times 10+2, 137=1 \times 10^2+3 \times 10^1+7, и т.п.

В программировании десятичной системой счисления пользоваться не всегда удобно, так как в компьютерах информация организована в виде бит, байт и более крупных порций. Человеку неудобно оперировать данными в виде длинных последовательностей нулей и единиц. В настоящее время в программировании стандартной является шестнадцатеричная система записи чисел. Например, с ее помощью естественным образом кодируется цвет, устанавливаются значения отдельных бит числа, осуществляется шифрование и дешифрование информации, и так далее. В этой системе счисления все очень похоже на десятичную, но только не 10, а 16 цифр, и вес разряда не 10, а 16. В качестве первых 10 цифр используются обычные десятичные цифры, а в качестве недостающих цифр, больших 9, используются заглавные латинские буквы A, B, C, D, E, F:

0 1 2 3 4 5 6 7 8 9 A B C D E F

То есть A=10, B=11, C=12, D=13, E=14, F=15.

Заметим, что в шестнадцатеричной системе счисления числа от 0 до 9 записываются одинаково, а превышающие 9 отличаются. Для чисел от 10 до 15 в шестнадцатеричной системе счисления используются буквы от A до F, после чего происходит использование следующего шестнадцатеричного разряда. Десятичное число 16 в шестнадцатеричной системе счисления записывается как 10. Для того, чтобы не путать числа, записанные в разных системах счисления, около них справа пишут индекс с указанием основания системы счисления. Для десятичной системы счисления это 10, для шестнадцатеричной 16. Для десятичной системы основание обычно не указывают, если это не приводит к путанице. Точно так же в технической литературе часто не указывают основание для чисел, записанных в шестнадцатеричной системе счисления, если в записи числа встречаются не только "обычные" цифры от 0 до 9, но и "буквенные" цифры от A до F. Обычно используют заглавные буквы, но можно применять и строчные.

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

0x10 = 10_{16} =16 ;

0x100 = 100_{16} =16 \times 16=256;

0x1000 = 1000_{16} =(16)^3=4096;

0x20 = 20_{16} =2 \times 16 =32;

0x21 = 21_{16} =2 \times 16 +1=33;

0xF = F_{16} =15 ;

0x1F = 1F_{16} =1 \times 16 +15=31 ;

0x2F = 2F_{16} =2 \times 16 +15=47 ;

0xFF = FF_{16} =15 \times 16+15=255;

Зарезервированные слова языка Java[9] - это слова, зарезервированные для синтаксических конструкций языка, причем их назначение нельзя переопределять внутри программы. (см. табл.2)

Таблица 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

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

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

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

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

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

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

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

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

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

ГЛАВА 3 Языки программирования С (С++) и Java в современном мире


3.1 С++, Java и другие языки программирования. Их область применения

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

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

Главный конкурент языка С, Java не отстаёт и так же пользуется огромным спросом, в основном этот язык используют в написании серверных приложений, веб приложений, мобильные приложения для ОС Android, и не только. Одна из самых популярных и при этом гибкая, за счёт концепции языка, игра “Minecraft” была написана на Java, но всё же сильные позиции у языка в промышленном программировании, в сегменте крупных компаний, и на основе этих фактов делаем вывод, что Java мощный, развитый язык, подходящий для всех сфер деятельности.

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

Ещё один язык программирования, обогнавший Java, является Python. Его главная особенность - это тот факт, что он интерпретируемый, его простота позволяет быстро овладеть им. Компактность делает все коды краткими, но эффективными, уменьшая трудозатраты. Также существует множество реализаций: CPython; Jython (для Java) и другие, давая возможность программировать на двух языках одновременно, так же он один из лучших в математических вычислениях, так как имеет библиотеки NumPy, SciPy. Но нужно заметить, что данный язык подходит только для высокоскоростным ВМ, более того, Питон по распространению не уступает упомянутым выше языкам, по причине своей универсальности, что даёт возможность решать задачи разного спектра. Сегодня Он используется в веб-разработке, создании десктопных и мобильных приложений, программировании игр, а также в аналитике и машинном обучении.

Один из лидеров для разработки WEB-приложений является PhP: язык программирования, используемый на стороне WEB-сервера для динамической генерации HTML-страниц, один из немногих языков программирования, созданных специально для разработки веб-приложений. Поэтому он включает в себя все функции, необходимые именно для работы на веб-сервере, и при этом лишен избыточности. Ещё одна из главных функций этого языка – интеграция, он работает практически со всеми ОС, и веб-серверами, поддерживает большинство серверных протоколов и прекрасно работает с базами данных, как дополнение к этому, PhP не зависит от платформы. Применение PhP происходит преимущественно при разработке web-приложений, сайтов, форумов или же серверов, по итогу, в каком-то плане данный язык является уникальным, всегда необходимым при работе с web-средствами, и поэтому является таким известным.

Таким образом, можно увидеть, что разные языки программирования имеют разные функции и области применения – от низкоуровневого программирования до программирования в аэрокосмической отрасли. А С – второй по популярности, незначительно уступающей Java, согласно рейтингу Tiobe (см. Приложение 1).

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

3.2 Будущее и потенциал языков С++ и Java

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

Одним из главных преимуществ языков С и Java является то, что они имеют влиятельную инфраструктуру. «Мёртвые» языки программирования такого не достигли, поэтому и являются такими. То есть язык может быть отличный, но пока нет документации, пока нет сообщества, которое умеет отвечать на вопросы (например, у Java есть Java Native Interface) и, наконец, самое главное, пока нет большого количества библиотек, язык не становится успешным.

Язык Java обладает большим плюсом – простотой его изучения. Вячеслав Ковалевский, инженер-исследователь c опытом в мировых ИТ гигантах, занимается разработками в сфере искусственного интеллекта и обучением программированию, считает, что

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

Java — язык энтерпрайза или больших компаний, это надо учитывать при выборе языка и финансовых перспектив разработчика. Нет компаний, которые не используют Java. Человечество не сможет отказаться от этого языка, так как на нём написано очень много».

Диаграмма использования языка Java по версии NOP::Nuances of programming представлена в приложении 2.

Язык Java в настоящее время участвует в функционировании 134 861 сайта, включая ESPN, SnapDeal, Alibaba и т.д. За всю историю существования этот язык доказал свою высокую эффективность в разработке ПО.

У Java-разработчиков высокие перспективы на рынке труда. Кроме того, их труд оплачивается выше, чем труд разработчиков на JavaScript, PHP и Python.[11]

Почему мы до сих пор используем C/C++?

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

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

Заключение

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

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

Язык Java является объектно-ориентированным и поставляется с достаточно объемной библиотекой классов. Благодаря библиотекам классов Java значительно упростилась разработка приложений.

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

Язык Java был создан, когда появилась необходимость концепции работы языка, способного функционировать на любой ЭВМ.

Язык С был создан на основе более сложных его предшественников. В нём были исправлены все их недостатки. А язык С++ разработан как улучшенная версия языка С.

С/С++ и Java имеют самую широкую область применений, так как являются мощными, развитыми языками, подходящими для всех сфер деятельности.

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

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

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

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

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

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

4. Джордж Шлосснейгл. Профессиональное программирование на PHP, 2006, 624с.

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

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

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

8. Пэйн Дж., Начиная с Python: Использование Python 2.6 и Python 3.1 / Д. Пэйн: Wiley Publishing, 2009. – 624 с.

9. Богазова З. Разные языки программирования и их области применения. Лекция в Яндексе https://habr.com/ru/company/yandex/blog/272759/ [Электронный ресурс] 13.01.2019

10. Вакомс Н. Языки C и C++. Где их используют и зачем? https://nuancesprog.ru/p/4549/ [Электронный ресурс] 15.08.2019

11. Перевод Д. Топ 9 фреймворков Java в 2020 году. URL: https://medium.com/nuances-of-programming/7c0d26ef5f2b [Электронный ресурс]

Приложения

Приложение 1

Рейтинг языков программирования от TIOBE

https://habrastorage.org/webt/do/ue/ky/doueky2lpakl5hiqehfwbxzkev0.png

Приложение 2

Диаграмма использования Java

https://miro.medium.com/max/591/0*bbWkn1WzBI5nlBH-

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

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

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

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

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

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

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

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

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

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

  11. Перевод Д. Топ 9 фреймворков Java в 2020 году. URL: https://medium.com/nuances-of-programming/7c0d26ef5f2b