Файл: Понятие языков программирования Си и С++.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.05.2023

Просмотров: 251

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

  1. Если проявить интерес к тому, какой язык положил начало современной эпохе программирования, ответ будет прост — язык Си. Язык был создан Д.Ритчем в 70-х годах прошлого столетия для компьютера под названием PDP 11, который принадлежал компании DEC (Digital Equipment Corporation) и был предназначен под ОС UNIX. Даже при наличии конкуренции, в виде развитых языков того времени, в этой нише, Си определил направление всего будущего программирования.
  2. С++ появился на 10 лет позже, в 80-е годы в Bell Laboratories. Так или иначе, С++ - это расширенная языка Си, но, имевшая преимущество, в отличии от своего предшественника и от языков более высокого уровня в том, что в С++ технически поддерживало концепции перегруженных операций, объектно-ориентированного программирования, создание полномасштабных десктоп-приложений.

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

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

За цель проекта взяты рассмотрение и ознакомление с историей появления и развития языков Java, С++ и Си.

В рамках проекта решатся следующие задачи:

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

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

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

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

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

Если не смотреть на текущие реалии рынка ИТ, то до недавних пор наиболее востребованными были Си подобные языки программирования. Как правило они использовались не только для создания и поддержки системных утилит,но и прикладных программ, куда входит большинство пользовательских любимых вещей — браузеры, игры и т.д.


Что касается языков этого семейства, то можно отметить следующие особенности:

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

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

Компактность. Приложение практически не тянет дополнительных библиотек.

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

Так же предлагается взглянуть на недостатки:

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

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

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


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

Язык С (по-русски произносится как «Си») был разработан сотрудником фирмы 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 был незначительно изменен.

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


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

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

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

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

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

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

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

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

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

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