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

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

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

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

Добавлен: 03.04.2023

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

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

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

ВВЕДЕНИЕ

Сейчас, наверно, невозможно найти в мире специалиста в IT-области, который бы ни разу не слышал о языке Си. Этот язык приобрёл огромную популярность во всём мире и оказал значительное влияние на многие другие языки программирования. Подавляющее большинство используемых на данный момент программно-аппаратных платформ и комплексов так или иначе используют для взаимодействия либо язык С, либо другой язык, созданный на его основе. Именно он является предшественником таких языков, как C++, C#, Java. Компания Microsoft для создания языка к своей платформе .Net выбрала именно Си-подобный синтаксис. Что ни говори, но язык Си серьезно изменил жизнь программистов прошлого века и стал незаменимым в области низкоуровневого программирования, оставив ассемблеру только те места, где производительность имела самое критическое значение.

В свою очередь история Java восходит к 1991 году, когда группа инженеров из компании Sun под руководством Патрика Нотона (Patrick Naughton) и члена Совета директоров (и разностороннего компьютерного волшебника) Джеймса Гослинга (James Gosling) занялась разработкой небольшого языка, который можно было бы использовать для программирования бытовых устройств, например, контроллеров для переключения каналов кабельного телевидения (cable TV switchboxes). И как было сказано ранее, основой для своих изыскания они выбрали язык C, и в большей степени выбор был обусловлен отсутствием зависимости и привязанности к конкретной аппаратной части, и при этом компактностью.

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

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


1. ЯЗЫК С.

1.1 Краткая предыстория. Предпосылки создания. Язык B.

Многие помнят имена создателей языка — Кена Томпсона и Денниса Ритчи, но я решил копнуть глубже и вспомнить историю создания и развития языка.

Язык Си восходит корнями к языку ALGOL (расшифровывается как ALGorithmic Language), который был создан в 1958 году вместе с комитетом Европейских и Американских учёных в сфере компьютерных наук. Точкой отсчета считается встреча 1958 года в Швейцарской высшей технической школе Цюриха. Язык был ответом на некоторые недостатки языка FORTRAN и попыткой их исправить.

Воспользовавшись и проанализировав все преимущества и достоинства языка ALGOL-60, Математическая лаборатория Кембриджского Университета вместе с Компьютерным отделом Лондонского университета создали в 1963 году язык CPL (Combined Programming Language).

Все началось в 1963 году, задолго до того, как Ритчи пришел в Bell Labs, – с проекта МАС (Multiple Access Computer, Machine-Aided Cognition, Man and Computer). Он начался как чисто исследовательский проект в MIT, призванный изучить использование ЭВМ с разделением времени.

В рамках данного проекта была разработана и спроектирована операционная система CTSS (Compatible Time-Sharing System). Во второй половине 60-х было создано несколько других систем с разделением времени, например, BBN, DTSS, JOSS, SDC и Multiplexed Information and Computing Service (MULTICS).

Multics – совместная разработка MIT, Bell Telephone Laboratories (BTL) и General Electric (GE) по созданию ОС с разделением времени для компьютера GE-645. Разработка была настолько успешной, что последний компьютер под управлением Multics выключили 31 октября 2000 года. Однако BTL отошел от этого проекта еще в начале 1969 года.

Кен Томпсон и Деннис Ритчи захотели продолжить работу над системами с разделением времени самостоятельно. Томпсон работал над игрой Space Travel на GE-635. Ее написали сначала для Multics, а потом переписали на Фортране под систему GECOS на GE-635. Игра моделировала тела нашей Солнечной системы, а игроку надо было успешно посадить корабль куда-нибудь на планету или спутник, являясь в своем роде космическим симулятором.

Первоначальная версия для GECOS была весьма сложна в управлении, к тому же сам процесс игры на GECOS был недешевым занятием — в 1960-х годах процессорное время большого компьютера строго распределялось между всеми желающими, что приводило к задержкам команд управления и погрешностям расчетов положения. Тогда Томпсону пришлось перейти на менее производительный, зато и менее популярный PDP-7, обладающий, помимо этого, хорошим графическим терминалом. Процесс переноса оказался неожиданно сложным — у программистов не было никаких утилит для написания программы, отсутствовала операционная система. Томпсону и Ричи специально для игры пришлось с нуля написать библиотеку для работы с числами с плавающей точкой на ассемблере, а также графическую подсистему и систему отладки кода. Память была объемом 8К, это 18-битных слов, и еще, был процессор векторного дисплея для вывода красивой для того времени графики.


Томпсон и Ритчи полностью вели разработку на кросс-ассемблере на GE и переносили код на перфолентах. Томпсона это абсолютно не устраивало, и он начал писать ОС для PDP-7, начиная с файловой системы. Так появилась UNIX.

Ядро UNIX было написано на ассемблере, но вскоре Деннис и Кен поняли, что им необходим язык «более высокого уровня», который дал бы им больше контроля над всеми данными. Примерно в 1970 году, они попытались создать вторую версию ядра на языке Fortran, но результат не оправдал ожиданий.

У них также имелся уже готовый и разработанный в их компании язык CPL, который посчитали сложным и не отвечающим поставленной задаче, и в ответ на это Мартином Ричардсоном был создан в 1966 году язык BCPL, основное предназначение которого заключалось в написании компиляторов.

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

BCPL послужил основой для создания языка Би, разработанного в 1969 в не менее знакомыми Кеном Томпсоном и Денсом Ритчи, так как он хоть и мог создавать компиляторы, но в основе своей также не отвечал понятиям гибкости, универсальности и компактности.

Язык Би был использован для написания самых ранних версий UNIX, созданной как ответ на проект Multics, разрабатываемый всё в той же Bell Laboratories. Именно этот язык послужил непосредственным предшественником языка Си.

1.2 Появление языка С.

Би был интерпретируемым языком – то есть исходный код частями преобразовывался в машинный код в процессе выполнения специальной программой. Cи же станет компилируемым языком. Он переводится в машинный код, а затем непосредственно выполнялся в CPU. Но в те дни Cи считался языком высокого уровня. Он предоставил Ритчи и Томпсону больше гибкости, в которой они нуждались, и в то же время, выполнялся быстрее.

Язык программирования Си был разработан в стенах Bell Labs в период с 1969 по 1973 годы. Как признался сам Ритчи, самый активный период творчества приходился на 1972 год.

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


Первая версия языка Си не сильно отличалась от версии, которую мы знаем сегодня. Хотя она была чуть проще. Она предлагала структуры данных и «типы» переменных. И это то, что Ритчи и Томпсон использовали для создания их нового ядра UNIX.

Далее со слов Роба Пайка, легенды программирования, непосредственно знакомого с Ритчи и Томпсоном, работавшего с ними в Bell Laboratories: «Они создали C для того, чтобы написать программу», – говорит Пайк, который присоединился к Bell Labs спустя 10 лет. «А программу, которую они хотели написать, называлась ядро UNIX».

«Когда вы пишете большую программу как UNIX – вы должны управлять взаимодействиями между самыми разными компонентами: пользователями, файловой системой, дисками, выполнением программы, и для того, чтобы управлять этим эффективно, вы должны иметь хорошее представление о информации с которой работаете. Мы называем ее структурами данных», – говорит Пайк.

«Написать ядро без структуры данных, с таким же строением и совершенством, как ядро UNIX – было бы намного сложнее. Им необходим был способ группировки всех данных, а реализовать это в Fortran было не возможно».

В то время это был необычный способ написания операционной системы, и именно это дало возможность Ритчи и Томпсону, в конечном счете, перенести операционную систему на другие платформы, что они и сделали в конце 70-х. «Это открыло шлюзы для работы UNIX на любой платформе», – говорит Пайк. «Все это стало возможным благодаря Cи».

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

От книги «Язык программирования С» к международной стандартизации ISO

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


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

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

Почувствовав необходимость, Американский национальный институт стандартов (ANSI) все же занялся разработкой стандарта языка Си. При нём в 1983 году был создан новый комитет X3J11, непосредственно занимавшийся разработкой стандарта.

Первая версия стандарта для С была выпущена в 1989 году с названием С89. В 1990, внеся несущественные изменения в стандарт, его приняла Международная Организация Стандартизации ISO. С тех пор он стал известен под кодом ISO/IEC 9899:1990, но среди программистов закрепилось название, связанное с годом принятия стандарта: С90. Последней, и на данный момент действующей версией стандарта, является стандарт ISO/IEC 9899:1999, также известный как С99, который был принят в 2000 году.

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