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

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

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

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

Добавлен: 31.03.2023

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

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

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

Введение

Программирование — самая перспективная профессия XXI века. Автоматизация охватывает всё новые области, компьютеры все больше входят в нашу жизнь. И это многообразие задач переходит в многообразие программ, которые написаны на языках программирования.

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

Когда этот язык — язык программирования, его влияние, независимо от нашего желания, сказывается на нашем способе мышления.

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

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

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

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

Глава 1. История возникновения и развития языка программирования Си (C++)

Общие сведения об языке программирования Си(С++)

C - это компилируемый, статически типизированный язык программирования общего назначения, который был разработан компанией Bell Labs-сотрудники Деннис Ричи (рис.1) 1969-1973 как развитие B-язык. Изначально он был разработан для реализации операционной системы UNIX, но с тех пор была портирована на многие другие платформы.

Рис. 1. Денис Ричи

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


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

Язык C был разработан как язык системного программирования, для которого может быть создан однопроходный компилятор.

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

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

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

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

Основные особенности Си:

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

В то же время в Си отсутствуют:

  • вложенные функции;
  • прямое возвращение нескольких значений из функций;
  • сопрограммы;
  • средства автоматического управления памятью;
  • встроенные средства объектно-ориентированного программирования;
  • средства функционального программирования.

Часть отсутствующих возможностей может имитироваться встроенными средствами (например, сопрограммы можно имитировать с помощью функций setjmp и longjmp), часть добавляется с помощью сторонних библиотек (например, для поддержки многозадачности и для сетевых функций можно использовать библиотеки pthreads, sockets и тому подобные; существуют библиотеки для поддержки автоматической сборки мусора), часть реализуется в некоторых компиляторах в виде расширений языка (например, вложенные функции в GCC).


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

Механизмы ООП, основанные на данной модели, реализованы в библиотеке GLib и активно используются в фреймворке GTK+. GLib предоставляет базовый класс GObject, возможности наследования от одного класса и реализации множества интерфейсов.

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

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

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

Краткая история развития языка Cи (C++)

Язык программирования Си живет по принципу «всякая сущность есть объект». Его причисляют к объектно-ориентированным, а точнее объектным, языкам программирования. «Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода» – так принято характеризовать его. Однако скептики сомневаются как минимум в его безопасности.

Сторонники Cи называют его самым мультипарадигменным, универсальным, продвинутым и удобным в использовании языком программирования. Учитывая тот факт, что за ним стоит платформа Microsoft .NET, число таких сторонников достаточно велико.

Далекие предки Cи появились еще в 60-х годах. Все началось с появления языка B, который в 1969 году был создан коллективом разработчиков из Технологического института Массачусетса (MIT). Главным автором B является Кен Томпсон. Тогда команда работала над операционной системой UNIX.

Уже существовавший язык PL/I, применявшийся в то время для мэйнфреймов производства компании IBM, был достаточно громоздким и меньше подходил для поставленной задачи. Поэтому ученые решили создать новый язык, который и получил название B. Он является типичным представителем ранних императивных языков программирования.


В 70-х программистов на Cи было немного и большинство из них были пользователями UNIX. Тем не менее, в 80-х Cи вышел за узкие рамки мира UNIX. Компиляторы Cи стали доступны на различных машинах, работающих под управлением разных операционных систем. В частности, Си стал распространяться на быстро развивающейся платформе IBM PC.

K&R ввёл следующие особенности языка:

  • структуры (тип данных struct);
  • длинное целое (тип данных long int);
  • целое без знака (тип данных unsigned int);
  • оператор += и подобные ему (старые операторы =+ вводили анализатор лексики компилятора Си в заблуждение, например, при сравнении выражений i =+ 10 и i = +10).

K&R C часто считают самой главной частью языка, которую должен поддерживать компилятор Си. Многие годы даже после выхода ANSI Cи он считался минимальным уровнем, которого следовало придерживаться программистам, желающим добиться от своих программ максимальной переносимости, потому что не все компиляторы тогда поддерживали ANSI C, а хороший код на K&R C был верен и для ANSI C.

Вместе с ростом популярности появились проблемы. Программисты, писавшие новые компиляторы брали за основу язык, описанный в K&R. К сожалению, в K&R некоторые особенности языка были описаны расплывчато, поэтому компиляторы часто трактовали их на своё усмотрение. Кроме того, в книге не было чёткого разделения между тем, что является особенностью языка, а что особенностью операционной системы UNIX.

После публикации K&R C в язык было добавлено несколько возможностей, поддерживаемых компиляторами AT&T, и некоторых других производителей:

  • - функции, не возвращающие значение (с типом void), и указатели, не имеющие типа (с типом void *);
  • - функции, возвращающие объединения и структуры;
  • - имена полей данных структур в разных пространствах имён для каждой структуры;
  • - присваивания структур;
  • - спецификатор констант (const);
  • - стандартная библиотека, реализующая большую часть функций, введённых различными производителями;
  • - перечислимый тип (enum);
  • - дробное число одинарной точности (float).

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

В конце 1970-х годов, язык Си начал вытеснять BASIC, который в то время был ведущим в области программирования микрокомпьютеров. В 1980-х годах он был адаптирован под архитектуру IBM-PC, что привело к значительному скачку его популярности.


После B, как это ни странно, последовал С, который был изобретен в 1972 году. Основой для нового языка послужил сам B.

Создателями C были Кен Томпсон и Денис Ритчи, которые работали в исследовательской лаборатории компании AT&T (AT&T Bell Telephone Laboratories). В 1971 году Ритчи начал создавать расширенную версию B. Сначала он назвал её NB (New B), но когда язык стал сильно отличаться от B, название сменили на C. B расширился за счет явного использования типов, структур и ряда новых операций.

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

В 1984 году Бьярне Страуструп (Bell Labs) выступил с проектом языка С++. Когда Страуструп (Рис 2.) занимался исследованиями в фирме, ему потребовалось написать несколько имитационных программ для моделирования распределенных вычислений.

Рис. 2. Бьерн Страуструп

SIMULA-67 — объектно-ориентированный язык – мог бы стать идеальным инструментом для решения подобных задач, если бы не его сравнительно низкая скорость выполнения программ.

Так был создан язык программирования С++, первоначально получивший название «Си с классами» (С with classes). Название «С++» придумал Рик Мэсчитти. "++" — это оператор инкремента в С, который как бы намекает на то, что язык С++, нечто больше, чем просто С.

Microsoft решила отметить Миллениум выпуском новых программных продуктов. К 2000 году компания подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework).

В поддержку этих новшеств Microsoft выпустила инструментарий для разработки приложений – платформу .NET. Она также объединяла «под одной крышей» несколько языков программирования, что было в новинку для того времени.

Еще одним новшеством платформы .NET была технология активных серверных страниц ASP.NET (Active Server Page). С её помощью можно было относительно быстро разработать веб-приложения, взаимодействующие с базами данных.

Язык программирования C# был создан специально для ASP.NET. На C# полностью была написана и сама ASP.NET.

Название «Си шарп» (от англ. sharp — диез) несет «сакральный» смысл. Знак «#» (в музыкальной нотации читается как «диез») означает повышение высоты звука на полтона. С другой стороны, название «C#» получается путем следующей «эволюционной цепочки»: C → C++ → C++++(C#), так как символ «#» можно составить из 4-х знаков «+».