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

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

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

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

Добавлен: 22.04.2023

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

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

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

ВВЕДЕНИЕ

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

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

Язык программирования Си является универсальным языком программирования. Впервые он появился в ОС UNIX, и развивался как основной язык систем, совместимых с операционной системой UNIX.

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

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

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

Одним из основных плюсов языка Java является то, что он независим от платформы и типа компьютера, на котором реализуются программы. Так, один и тот же код можно запускать под управлением операционных систем Windows, FreeBSD, Linux, Solaris, Apple Mac и т.п. Это весьма важно в тех случаях, когда программы загружаются через Интернет и используются на различных платформах. Java может работать как со статичными текстами и графикой, так и с различными динамическими объектами.

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

Объектом исследования курсовой работы являются «Основы программирования», а предметом исследования – «языки программирования Си и Java».

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


Для того, чтобы достичь поставленные цели в курсовой работе требуется выполнить следующие задачи:

1) изучить историю возникновения и развития языка программирования Си;

2) изучить историю возникновения и развития языка программирования Java;

3) изучить достоинства и недостатки языков программирования Си и Java.

При написании данной курсовой работы были использованы научные труды следующих авторов: Авдеева С.М. [1], Брикман С.Л. [2], Гончаров Д.[3] и другие.

1. ВОЗНИКНОВЕНИЕ И ЭВОЛЮЦИЯ ЯЗЫКА СИ

С тем количеством программного обеспечения, которое было разработано на языке Си, пожалуй, не сравнится ни один другой язык программирования. История языка программирования Си полна ложных стереотипов и мифов, самым популярным из которых является авторство языка. Часто люди заблуждаются, считая одним из разработчиков языка Си Брайана Кернигана. Керниган не был участником создания языка, однако активно популяризировал его и вместе с Деннисом Ритчи написал бестселлер «Язык программирования Си».

Истоки языка программирования Си.

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

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

Все это способствовало возникновению концепции машинно-ориентированных языков промежуточного уровня. Необходимо признать, что язык программирования Си был не единственным языком подобного рода и тем более не самым первым. В то время появлялось все большее количество машинно-ориентированных языков, которые были похожи друг на друга, однако причиной этому явилось вовсе не списывание их авторами друг у друга, а то, что они были под влиянием одинаковых идей [1, с. 311].

BCPL стал основным прародителем языка программмирования Си. Он был разработан Мартином Ричардсом во время посещения последнего в 1966–1967 гг. Массачусетского технологического института. Изначально компилятор BCPL был создан для ОС MULTICS и GECOS, которые работали на компьютерах компании General Electric. BCPL применялся для реализации ОС TRIPOS, впоследствии положенной в основу AmigaDOS. Примерно таким же как и BCPL, является язык BLISS, создателем которого является Билл Вульф [2, с. 156].


В 1969 г. Дуг Макилроем был создан язык TMG, задуманный специально для создания компиляторов. Кен Томпсон пришел к выводу, что для ОС UNIX (тогда она имела другое название) необходим свой язык системного программирования.

После того, как он сделал несколько неудачных попыток создать Фортран, им был разработан такой язык, которому он дал название B (Би). По большому счету, B является синтаксически видоизмененным BCPL, который Томпсон смог вместить в 8 Кбайт памяти.

Общеизвестно, языком написания компилятора языка Си был сам Си. Но не все знают, что его разработчики во многом пошли по следам компилятора языка B. В результате работ Макилроя был создан компилятор компиляторов TMGL, с помощью которого была проведена программная раскрутка сначала языка B, а потом и Си. Иначе говоря, для написания компиляторов для этих языков были использованы те же самые языки.

Компилятор языка B в первый раз появился на компьютере PDP-7. Данные фрагменты совершают элементарные операции. Примечательно, что у языка программирования B первый компилятор занимал объем памяти восемь Кбайт, а у языка Си - шестнадцать Кбайт [3, с. 311].

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

Отличием BCPL от потомков заключается в том, что он имел широкий набор управляющих конструкций.

Языки BCPL и B являются бестиповыми, они работают со словом, которое содержит фиксированное число разрядов. Память рассматривается ими как линейный массив слов, в котором значение ячейки памяти можно рассматривать как индекс в данном массиве. Язык BCPL для этого применяет оператор «!», тогда как язык программирования B - оператор «*».

Успех Си напрямую зависел от того, что одновременно появились язык программирования Си, ОС UNIX и мини-компьютер PDP-11. За прошедшие несколько десятков лет PDP-11 и пришедший ему на смену VAX-11 сменили более совершенные технические решения, однако языки программирования UNIX и Си все еще остаются на лидерских позициях программной индустрии.

В разработке ОС UNIX приняли участие шесть человек. Катализатором создания UNIX стала система MULTICS, применяемая по сей день. Данная система была создана как результат проекта MAC, который стартовал в ноябре 1962 г. в MIT [4, с. 219].


Становление и развитие языка

Эволюция языка программирования Си состоит из трех этапов: детство (1971–1977), юность (1978–1988) и зрелость (с 1989 г.).

На первой стадии главный акцент ставился на техническую сторону дела. На второй стадии основное внимание было уделено популяризации и формированию сообщества пользователей. На третьей стадии начался процесс активного промышленного применения языка [5, с. 433].

Выход в свет в 1978 г. бестселлера «Белая книга», стало одним из определяющих событий [1]. Бестселлер фактически установил стандарт языка и сделал его каноническим как минимум на целых десять лет.

Юридически язык программирования Си был стандартизирован в 1989 г. ANSI. Годом позже фактически этот же стандарт был принят организацией ISO.

Помимо BCPL и B, большое влияние на язык Си оказал Алгол-68. Основные изменения язык претерпел в 1972–1973 гг., во время подготовки к «погружению» в него ОС UNIX. Самым главным по значимости из них стал препроцессор. В то же время благодаря работам Джона Рейзера и Майка Леска появились компиляция и макросы в Си. В 1973 году Майком Леском была создана стандартная библиотека ввода-вывода, ставшая важной составляющей популярности и практической ценности языка [6, с. 288].

К главным особенностям языка Си относятся:

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

Одновременно с этим в языке Си отсутствуют:

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

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


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

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

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

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

Однако эти недостатки являются оборотной стороной достоинств. При разработке Си++ Бьерн Страуструп искал основной язык для того, чтобы расширить его концепцией классов из языка Симула. В качестве альтернативы рассматривались Smalltalk, Модула-2, Ада, Mesa и CLU, но предпочтение все же было отдано языку Си.

Благодаря работам Бьерна Страуструпа появился язык Си++ (1984), который стал фактически основным языком программной индустрии, а также всеобщее увлечение программированием и объектно-ориентированным проектированием вынудили сойти с арены знаменитого предшественника - язык программирования Си. В процессе программной эволюции возникли два направления, закрепившие за языком программирования Си статус безусловного лидерства: перенацеливаемые компиляторы и API-программирование [9, с. 173].

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

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