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

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

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

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

Добавлен: 28.04.2023

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

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

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

Министерство обороны США много лет предписывало использовать язык Ada в военных приложениях, что в итоге выразилось в афоризме «Язык Ada – это не просто хорошая идея, это – закон!». Сначала язык просто настоятельно рекомендовался к использованию, но со временем многим проектировщиком было запрещено использовать другие языки программирования. Конгресс США принял закон, требующий, чтобы в большинстве военных приложений использовался только язык Ada. Под влиянием рыночных и технических реалий, этот закон был вскоре отменен. В настоящее время этот язык играет важную роль в аэрокосмических приложениях и областях, связанных с разработкой встроенных систем.

Язык Ada стал военным стандартом в 1980 году, стандарт ANSI был принят в 1983 году, а стандарт ISO – в 1987 году.[16]

Язык Simula был разработан в первой половине 1960-х годов Кристеном Нюгордом и Оле-Йоханом Далем в Норвежском вычислительном центре и университете Осло. Язык simula принадлежит к семейству языков algol. При этом он является источником большинства фундаментальных идей, которые сегодня называют объектно-ориентированным программированием. Он был первым языком, в котором реализованы наследование и виртуальные функции. [17]

CPL (от Combined Programming Language, до того — Cambridge Programming Language) — язык программирования, разработанный совместно Кембриджем и Лондонским университетом в 1960х годах. Иногда аббревиатура в шутку расшифровывается как Cambridge Plus London.

В 1963 году была опубликована статья “The main features of CPL”, описывающая основные возможности языка. Язык создавался под влиянием Algol, но предназначался для решения более широкого круга задач, в частности, для исследований в области программирования и разработки компиляторов, и поэтому стал гораздо более громоздким.

Из-за сложности и размера языка первые работающие компиляторы были созданы гораздо позже, чем его теоретическое описание, — около 1970 года. Они были предназначены для двух схожих машин — Атлас в Лондоне и Титан в Кембридже. CPL так и не стал популярным и прекратил свое существование в середине 1970х годов, успев, впрочем, оказать влияние на создание BCPL.[18]

Язык BCPL (Basic Combined Programming Language) — язык программирования, разработанный Мартином Ричардсом в 1966 году в Кембриджском университете. Изначально он предназначался для написания компиляторов для других языков.

Сейчас BCPL практически не используется, но в своё время он был очень важен из-за хорошей портируемости. Урезанная версия языка с несколько изменённым синтаксисом стала языком программирования B, который оказал сильное влияние на язык программирования Си. По этой причине программисты в шутку расшифровывали название BCPL как Before C Programming Language («язык программирования, появившийся до языка Си»).


BCPL стал ответом на сложности своего предшественника, языка CPL, разработанного в начале 1960-х. Ричардс создал BCPL, «удалив из полного языка те функции, которые усложняли компиляцию». Первая реализация компилятора, работавшего на IBM 7094 под ОС CTSS, была написана Ричардсом весной 1967 в ходе посещения им исследовательской лаборатории «Project MAC» в МТИ. Язык был впервые описан в документе, представленном на 1969 Spring Joint Computer Conference.

Язык BCPL нашел отражение в языке под названием B, который был изобретен Кеном Томпсоном, и который в дальнейшем привел к разработке языка С.[19]

Большой отпечаток на современное программирование наложил язык Си (первая версия – 1972 год), являющийся очень популярным в среде разработчиков систем программного обеспечения (включая операционные системы). Этот язык создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си сочетает в себе как черты языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивают такие языки как Бейсик и Паскаль. [20]

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

Глава 2. История создания и развития языка С (Си).

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

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


Деннис Ритчи (Dennis Ritchie) разработал язык программирования С в Исследовательском центре по компьютерным наукам (Computer Science Research Center) компании Bell Telephone Laboratories в Мюррей-Хилл, штат Нью-Джерси (Murray Hill. New Jersey) на машине PDP-11 фирмы DEC, использующую операционную систему UNIX. Язык С был эволюционным продолжением языка под названием BCPL. Если же копнуть совсем глубоко, то истоки языка С в языке ALGOL. Перед изобретением С компьютерные языки в основном разрабатывались либо в качестве академических упражнений, либо в административно создаваемых комитетах. Язык С же разработали работающие программисты-практики, заключив в него свои подходы к разработке программ.[21] Прелесть языка С в том, что он был преднамеренно простым языком программирования, позволявшим близко подойти к фундаментальным аспектам аппаратного обеспечения. Большинство усложнений было внесено позднее и часто вопреки желанию Денниса Ритчи. Частично успех языка С объясняется его широкой доступностью, но его реальная сила проявлялась в непосредственном отображении свойств языка на свойства аппаратного обеспечения. Деннис Ритчи лаконично описывал язык С как «строго типизированный язык со слабым механизмом проверки». Это значило, что язык С имел систему статических (распознаваемых на этапе компиляции) типов, а программа, использовавшая объект вопреки его определению, считалась неверной. Однако компилятор языка С не мог выполнять такие проверки, потому что он должен был работать при наличии всего 48 Кбайт памяти. Вскоре язык С вошел в практику, и программисты написали программу lint. Которая отдельно от компилятора проверяла соответствие кода системе типов.

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

Кен Томпсон (Ken Thompson) и Деннис Ритчи стали авторами системы Unix, возможно, наиболее влиятельной операционной системы за все времена. Язык С ассоциировался и по-прежнему ассоциируется с операционной системой Unix, а через нее – с системой Linux и движением за открытый код.[23]

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


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

Язык С оказался первым языком, в котором успешно сочетались мощь, элегантность и выразительность. Его лаконичный, но в то же время легко осваиваемый синтаксис вместе со стратегией, утверждающей главенство программиста (а не языка), быстро завоевал симпатии программистов. Сегодня это уже трудно представить, но С стал, можно сказать, той струей свежего воздуха, которую так ждали программисты. В результате С быстро превратился в наиболее широко используемый язык структурного программирования.[24]

Деннис Ритчи вышел на пенсию из компании Lucent Bell Labs. На протяжении сорока лет он работал в исследовательском центре по компьютерным наукам компании Bell Telephone. Он закончил Гарвардский университет (Harvard University) по специальности «физика», степень доктора философии по прикладной математике он так и не получил, потому что он то ли забыл, то ли отказался внести небольшой (60 долларов) регистрационный взнос.[25]

За всё время своего существования, язык Си оброс легендами по поводу мотивов своего создания.

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


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

Компилятор языка Си унаследовал традицию, заложенную ещё Никлаусом Виртом и был написан на самом Си. Согласно мнению большинства, название языка Си является третьей буквой алфавита. Оно появилось как указание на то, что язык Си является более усовершенствованным, чем язык Би. Однако, сам Ритчи по поводу названия языка говорил следующее:«Создав систему типов, соответствующий синтаксис и компилятор для нового языка, я почувствовал, что он заслуживает нового имени: NB показалось мне недостаточно четким. Я решил следовать однобуквенному стилю и назвал его C (Си), оставляя открытым вопрос, являлось ли после B это следующей буквой в алфавите или в названии BCPL».[26]

Так же справедливо указать некоторых людей, оказавших большое влияние на развитие языка С в 1974-1979 годы из компании Bell Labs. Дуг Мак-Илрой (Doug Mcllroy) был всеобщим любимцем, критиком и генератором идей. Он оказал огромное влияние на языки С++, С и на операционную систему Unix.

Брайан Керниган (Brian Kernighan) – не только выдающийся программист, но и писатель. Он даже оказал влияние на стиль изложения Бьярне Страуструпа, создателя С++, в своих книгах, по признанию самого Бьярне. В настоящее время Брайан Керниган – профессор Принстонского университета, он превосходных преподаватель, излагающий просто и ясно довольно сложные темы. Брайан закончил Университет Торонто по специальности «физика», в Принстонском Университете он получил степень доктора философии по электротехнике.

Первая книга, посвящённая языку Си была написана Керниганом и Ритчи в 1978 году и вышла в свет под названием «Язык программирования Си». Эта книга, в среде программистов более известная как «K&R», стала неофициальным стандартом языка Си.

Рисунок 4. Генеалогическое древо языков семейства С.[27]

Разработкой стандарта языка Си занялся Американский национальный институт стандартов (ANSI). При нём в 1983 году был сформирован комитет X3J11, который занялся разработкой стандарта. Первая версия стандарта была выпущена в 1989 году и получила название С89. В 1990, внеся небольшие изменения в стандарт, его приняла Международная Организация Стандартизации ISO. Тогда он стал известен под кодом ISO/IEC 9899:1990, но в среде программистов закрепилось название, связанное с годом принятия стандарта: С90. Последней на данный момент версией стандарта является стандарт ISO/IEC 9899:1999, также известный как С99, который был принят в 2000 году.