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

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

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

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

Добавлен: 25.06.2023

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

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

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

Введение

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

Язык программирования C был разработан в начале 1970-х годов в качестве системного языка для создававшейся тогда операционной системы Unix. Созданный на слабом аппаратном обеспечении в качестве инструмента для улучшения программного окружения, он остаётся одним из доминирующих даже в 2016 году. Эта работа — наблюдение за его эволюцией и эволюцией его последователей.

Во второй части работы рассматривается история создания языка Java и эволюция языка с момента создания по сегодняшний день.

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

Предшественники языка Си

Ранним предшественником языка Си можно назвать язык ALGOL (ALGOrithmic Language), который был разработан в 1958-1960 годах (Алгол 58, Алгол 60) как универсальный язык программирования для широкого круга применений и усовершенствован в 1964-1968 годах (Алгол 68). Язык Алгол был последователем языка Фортран и был призван исправить недостатки Фортрана.

60-е годы были эпохой становления операционных систем и языков программирования высокого уровня. В 1963 году в результате совместной разработки кембриджского и лондонского университетов был создан язык CPL. Название языка расшифровывается как Combined Programming Language. Язык CPL был во многом вдохновлён языком Algol 60. Но в отличие от элегантного и простого Algol 60, который был предназначен преимущественно для научных вычислений, язык CPL предназначался для широкого применения и поэтому был значительно сложнее, чем Algol 60. В настоящее время язык CPL не используется, а наследником CPL стал язык BCPL.

Язык BCPL был разработан Мартином Ричардсом в 1966 году, в Кембриджском университете. Ричардс создал BCPL на основе CPL «удалив из полного языка те функции, которые усложняли компиляцию». Изначально BCPL предназначался для написания компиляторов для других языков. В качестве шутки программисты расшифровывали название языка BCPL как Before C Programming Language («Язык программирования, появившийся до Си).


В 1969 был опубликован, основанный на «BCPL» язык программирования «B». Язык был разработан в стенах AT&T Bell Telephone Laboratories Кеном Томпсоном (Kenneth Lane "Ken" Thompson) и Деннисом Ритчи (Dennis Ritchie). Этот язык стал непосредственным предшественником появления языка C.

Язык программирования Си был разработан Деннисом Ритчи и Кеном Томпсоном в лабораториях компании Bell Labs в период с 1969 по 1973 годы в то время, когда они работали над операционной системой UNDC. Помимо языка Си, в разные годы в стенах этой лаборатории были разработаны такие технологии как радиоастрономия, транзистор, лазер, кварцевые часы, теория информации, операционная система Unix.

Согласно словам одного из авторов языка, самый активный период в создании пришёлся на 1972 год. Язык был назван «Си» («C» – третья буква латинского алфавита) потому что многие особенности были заимствованы у более раннего языка программирования «Би» («B» – вторая буква латинского алфавита).

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

Причины возникновения языка Си

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

Изображение с сайта с сайта slideshare.net

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


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

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

Развитие и стандартизация языка Си

В то время как язык Си набирал всё большую популярность, компиляторы для него выпускались различными фирмами, и случалось что программа, которая собиралась на компиляторе одной фирмы, не уже не собиралась на компиляторе другой. Эти сложности были связаны с отсутствием чётко оговоренного стандарта языка Си. Все разработчики ориентировались на книгу Кернигана и Ритчи «Язык программирования Си», но интерпретировали её по-своему.

Высокая популярность языка C на различных типах компьютеров привела ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это стало серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких разных платформах. Тогда стало ясно, что необходима стандартная версия языка C. В 1983г. ANSI (Американский Национальный Комитет Стандартов) сформировал технический комитет X3J11 для создания стандарта языка C (чтобы "обеспечить недвусмысленное и машинно-независимое определение языка"). В 1989 этот стандарт был утвержден. ANSI скооперировался с ISO (Международной Организацией Стандартов), чтобы стандартизовать C в международном масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899:1990. Этот стандарт совершенствуется до сих пор и поддерживается большинством фирм разработчиков компиляторов.


Среди новшеств стандарта С99 стоит обратить внимание на изменение правила, касающегося места объявления переменных. Теперь новые переменные можно было объявлять посреди кода, а не только в начале составного блока или в глобальной области видимости. Это уводит Си от концепции объявления переменных в начале функции, которая присутствует в Паскале. С принятием стандарта С99, в программе Borland Embarcadeo RAD Studio 2010, ограничение на объявление переменных в начале блока кода всё ещё действует. Также можно указать другие места, в которых стандарты Си не до конца соблюдаются. Есть мнение, что это связано с тем, что основное внимание больших компаний, таких как Microsoft и Borland сосредоточено на более новых языках программирования. Однако, согласно заверениям компании Sun Microsystems, её среда разработки Sun Studio полностью поддерживает С99.

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

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

Перспективы языка Си

На языке Си написана значительная часть операционной системы Unix. В настоящее время (2016 год) Unix является самой распространённой операционной системой в мире, если считать по общему числу других операционных систем, разработанных на базе Unix. Например, операционные системы Android и iOS, используемые в современных смартфонах тоже разработаны на базе Unix. В последних версиях Unix содержится уже более 10 миллионов строк кода.


Изображение с сайта Wikipedia.org

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

Книга «Язык программирования Си»

Первое издание книги «Язык программирования Си» увидело свет в 1978 году. Книга известна также под названием «K&R» — по первым буквам фамилий авторов, Брайана Кернигана и Денниса Ритчи. Эта книга до сих пор не утратила своей актуальности и в интернет-магазинах возможно купить букинистическое издание. Благодаря именно этой книге появилась традиция писать первым делом на любом языке программирования программу, выводящую на экран сообщение «Hello world». Долгое время книга «Язык программирования Си» была единственным справочным руководством по разработке на Си.

Спустя 10 лет после первого издания, в 1988 году вышло второе издание книги. Во втором издании была представлена версия Си, принятая в качестве стандарта ANSI (American national standarts institute — Американский национальный институт стандартов). Были добавлены новые разделы, описание стандартной библиотеки Си и краткий перечень отличий ANSI C от прежней версии. Второе издание книги было переведено более чем на 25 языков.

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

Пример программы на языке Си

Ниже приведён листинг программы, которая печатает на стандартное устройство вывода сообщение «Hello world». Эта программа была приведена ещё в первом издании книги «Язык программирования Си» Кернигана и Ричи.

#include <stdio.h>

int main()

{

printf("Hello, world!");

return 0;

}

Возникновение языка C++

Язык C++ (Си плюс плюс) возник в начале 1980-х годов. Он был создан всё в той же лаборатории Bell Labs уроженцем Дании, Бьёрном Страуструпом. Бьёрн придумал ряд усовершенствований к языку C для решения задач, с которыми ему приходилось сталкиваться, работая в Bell Labs над моделированием очередей телефонных звонков. Страуструп добавил к языку C возможность работы с классами и объектами, наследование классов, строгую проверку типов, inline-функции и аргументы по умолчанию. Ранние версии языка назывались «С with classes» («Си с классами») и стали доступны с 1980 года.