Файл: История возникновения и развития языка программирования Си (С++) и Java (Возникновение и эволюция языка Си и С++).pdf

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

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

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

Добавлен: 26.06.2023

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

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

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

Введение.

1.1. Возникновение и эволюция языка Си и (С++)

Перед тем как возник язык программирования С++ у него был предшественник –С . Язык С (по-русски читается «Си») был создан Денисом Ритчи в 1972г. во время совместной работы с Кеном Томсоном операционной системой UNIX . Прообразом этой программы послужил язык Би (В), разработанным К.Томпсоном. так же имело большое влияние на С язык BCPL, созданный М.Ричардсом. В отличий от многих других языков программирования (Ада, Алголь-60 и тд.), язык С вначале создавался просто как рабочий инструмент, не претендующий на широкое применение. Но при созданий этого языка , они создали часть компилятора С, затем использовали ее для компиляции остальной части компилятора С и, применили её полученный в результате компилятор для компиляции . операционная система UNIX первоначально распространилась в исходных кодах на С среди университетов и лабораторий, получатель мог откомпилировать исходный код на С в машинный код с помощью подходящего компилятора С. Распространение этого исходного кода сделало операционную систему UNIX уникальной ; программист мог сам изменить операционную систему, а исходный код мог быть перенесен с одной аппаратной платформы на другую. Так же стандарта на язык С до 1989г. Не существовало, и в качестве формального писания разработчики капилляров использовали первое издание книги Б.Кернинга и Д.Ритчи, вышедший в 1978г. с США. Роль неформального стандарта языка С сохранилась все же за этой книгой и в по сей день. Ссылка на эту работу по капиллярам обозначается специальным сокращением K&R.

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

Первый стандарт языка С был принят в 1989г., американским национальным институтом стандартов ( American National Standards Institute-ANSI) . Эту версию языка обычно обозначают С89. Кроме того, этот же стандарт был принят и международной организацией стандартов, а в 1995г. стандарт С89 был незначительно изменен.


Разработчиком языка С++ и создателем первого транслятора является Бьерн Страуструп. Он был сотрудником научно – исследовательского вычислительного центра AT&T Bell Laboratories в Мюррей Хилл (Нью-Джерси, США). Б. Страуструп получил звание магистра математики и вычислительной техники в университете г.Аарус (Дания), а докторское звание по вычислительной технике в кембриджском университете (Англия). Он специализируется в области распределенных систем операционных систем. Моделирования и программирования. Вместе с М.А. Эллис он является автором полного руководства по языку С++ - « Руководство по С++ с примечаниями». В 1979 был создан язык С++ (по русский читается «Си-Плюс-Плюс). Язык С++ был создан Бьерни Страуструпом он высвободил объектно- ориентировочный потенциал С путем перенесения возможностей классов Simula67 в С. Б. Страуструпом в то время только начал работать в Bell Labs. Разработка этого языка у Б. Страуструпа потребовало больших усилий на протяжений 80-х и большей части 90-х годов. Все же, в июле1983г., язык С++ впервые вышел за пределы исследовательской группы, однако многие возможности С++ еще не были разработаны. Другие расширения, введены за период между 1985 и 1991г.г. (такие как множественное наследование, статистические функции-члены и чистые виртуальные функции), скорее появились в результате общения опыта программирования на С++. За шесть лет расширения языка прежде всего были направлены на повешение выразительности С++. Примерно в 1987г. стало очевидно что работа по стандартам С++ неизбежна и что следует незамедлительно приступить к созданию основы для нее. И наконец , в 1998г. был принят ANSI/ISO-стандарт языка С++.первоначально новый язык носил имя «С с классами» и только потом он стал называться С++.

С++ достиг популярности будучи разработанным в Bell Labs, позже он был перенесен в другие индустрии и корпорации. Говоря в общих словах, язык С++ является усовершенствованной , объективно-ориентировочной версией языка С. С++ построен на основе версии С89, включающей все изменения 1995г., и теперь эту версию С89 называют С-подмножеством языка С++. Язык С++изначально был задуман как набор объективно – ориентировочных расширений для языка С, вскоре его начали развивать как самостоятельный язык программирования. В настоящее время его новые средства почти удвоили объем исходного языка. Язык С++ - один из самых мощных компьютерных языков, разработанных до сих пор, который наследует как хорошие, так и плохи стороны С.

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


Затем в течение многих лет велись работы по выработке новых стандартов языков С и С++, которые завершились в конце 2011г. где в том же году в октябре месяце вышел новый стандарт языка С++, обозначаемый как С++11 или ISO/IEC 14882:2011. Полная его поддержка обещана в GCC 4.7. а в декабре 2011г. был принят новый стандарт и для языка С. Где эту версию условно называют С11 или ISO/IEC 9899:2011, так же часть ее возможностей уже сейчас поддерживается компилятором GCC.

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

1.1.2. Сравнение языков С++ и С

Выбор С в качестве базового языка для С++ объясняется следующими его достоинствами:

универсальность, краткость и относительно низкий уровень;

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

он идет в любой системе и на любой машине;

полностью подходит для программной среды UNIX.

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

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

существуют миллионы строк программ на С, которые можно улучшить с помощью С++, но при условии, что полной переписи их на язык С++ не потребуется;

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

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

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


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

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

Для изучения С++ не обязательно знать С. Программирование на С способствует усвоению приемов и даже трюков, которые при программировании на С++ становятся просто ненужными. Например, явное преобразование типа (приведение) , в С++ нужно гораздо реже, чем в С. Тем не менее, хорошие программы на языке С по сути являются программами на С++. Например, все программы из классического описания С являются программами на С++. В процессе изучения С++ будет полезен опыт работы с любым языком со статическими типами.

1.1.3. Улучшенный С

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

Самая зачаточная концепция модульности реализуется с помощью механизма раздельной трансляции.

1.1.4. Краткий обзор С++

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

лучше языка С;

поддерживать абстракцию данных;

поддерживать объектно-ориентированное программирование.

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


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

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

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

1.1.5. Почему С++

Важной вехой в развитий программирования явилось создание и широкое распространение языка С++. Ведь этот язык, сохранил средства ставшего общепризнанным стандартом для написания системных и прикладных систем языка С. Он ввел в практику программирования возможности нового технологического подхода к разработке программного обеспечения, получившего название «объективно–ориентировочное программирование». С++ в настоящее время считается господствующим языком, использующим для разработки коммерческих программных продуктов. Хотя, в последнее время это господство поколебалось вследствие аналогических претензий со стороны такого языка, как Java, но общественное мнение чуть качнулся в другую сторону, и многие программисты, которые бросили С++ ради Java , поспешили вернуться к своей прежней привязанности. Но, все же, эти два языка настолько похожи. Что, изучив один из них, автоматически можно освоить другую программу на 90%. Подход к моделированным предметным областям все более успешно применяется в качестве основы для структуризации их информационных отражений и, в частности, баз знаний, ведь Microsoft разработал для своей сетевой платформу новый язык – С#. Где, так же, язык С# и С++ разновидные, и , несмотря на ряд принципиальных отличий, эти языки совпадают на 90%. Но вероятно пройдёт не мало времени , прежде чем язык С# составит серьезную конкуренцию С++.