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

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

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

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

Добавлен: 03.04.2023

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

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

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

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

В 2007 году начались работы над следующим стандартом языка Си: С1x, и 19 декабря 2011 года международная организация по стандартизации ISO обьявила о выходе стандарта C — ISO/IEC 9899:2011 (ранее неофициально известного как C1X), который теперь называется С11.

Основные изменения по сравнению с C99:

Выравнивание данных. Для этого в язык добавили спецификатор _Alignas, оператор alignof, функцию aligned_alloc и заголовочный файл.

Спецификатор функции _Noreturn,

Выражения, не зависящие от типа (Type-generic expressions) с использованием ключевого слова _Generic,

Поддержка многопоточности, для этого в стандарт добавили спецификатор типа _Thread_local, заголовочный файл <threads.h>, включающий в себя функции по созданию и управлению потоками, мьютексами, мониторами и функции управления хранилищем потока (англ. en:Thread-local storage). Также в C11 добавили квалификатор типа _Atomic и заголовочный файл <stdatomic.h> для атомарных операций доступа к памяти; Улучшенная поддержка Unicode,

Возможности анализирования (англ. Analyzability features, Annex L);

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

Анонимные структуры и объединения, используемые для вложения структур и объединений, например, struct T { int tag; union { float x; int n; }; };.

Статические утверждения (англ. assertion), которые лучше, чем команды препроцессора #if и #error, потому что утверждение вычисляется в более поздней стадии трансляции, когда компилятор «знает», что какого типа;

Привилегированный режим создания и открытия (англ. exclusive create-and-open mode) "…x" для функции fopen. Этот режим аналогичен режимам POSIX O_CREAT|O_EXCL и обычно используется для блокировки файлов;

Функция quick_exit — третья функция для завершения программы, с минимальной деинициализацией значений, если завершить программу функцией exit не удается[12];

Макросы для создания комплексных чисел (были добавлены потому, что код real + imaginary*I мог не привести к ожидаемому значению, если мнимая часть была бесконечной или «не числом» (NaN)[13]).

1.3 Итоги появления языка C


Успех Си связан с тем, что на нём была написана большая часть операционной системы UNIX, которая в итоге получила очень большую популярность и еще большее распространение. Если посчитать все используемые на данный момент операционные системы, разработанные на базе UNIX, а именно, все машины, которые используют данные ОС, то она является самой распространённой системой в мире. В связи с этим, а также с тем, что на текущий момент объём операционной системы измеряется в миллионах строк кода (для примера, в последних версиях Linux содержится более 10 000 000 строк кода), что даже при острой необходимости, задача о переписывании UNIX на другой язык становиться практически невыполнимой (также следует учитывать то, что при ручном переписывании неизбежно возникнут ошибки, что существенно снизит стабильность работы, пострадают связи, возможны и критические несоответствия логики, а при переводе с использованием программных средств, пострадает производительность кода, и приведет к неимоверному росту объема как самой системы так и отдельно взятых исполняемых функций, что также приведет к падению производительности). Кроме того, язык Си, будучи приближённым к аппаратной реализации компьютера позволяет выжать из него намного больше, чем многие другие языки программирования. Эти и многие другие обстоятельства показывают бессмысленность перевода UNIX на другой язык. Из этого можно сделать вывод о том, что если другие языки программирования могут исчезнуть со временем, уступив дорогу новым технологиям, то язык Си будет жить, пока живёт UNIX. То есть пока существуют компьютеры в том виде, в котором мы их себе представляем.

2. ЯЗЫК JAVA

2.1 Предпосылки возникновения Java

История языка Java начинается в 1990 году. В то время никто еще не мог даже представить глобальное развитие интернета, всемирной сети даже в самых смелых мечтах. Поэтому глупо думать что язык Java, который все знают как основной язык для web-программирования создавался именно с этой целью.

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


Поэтому Скотт МакНили (Scott McNealy), член совета директоров, президент и CEO (исполнительный директор) корпорации Sun, был не слишком удивлен, хоть и озадачен, когда 25-летний, хорошо зарекомендовавший себя как программист Патрик Нотон (Patrick Naughton), проработавший под его начальством всего 3 года, решил перейти в компанию NeXT. Они были в хороших отношениях, и Патрик объяснил свое решение просто и коротко - "они все делают правильно". Скотт задумался на секунду, и решил что пора что то менять. Он попросил Патрика перед уходом написать, что, по его мнению, корпорация Sun делает не верно. Надо было не просто рассказать о проблемах, но и предложить решение, не оглядываясь на существующие правила и традиции компании, как будто в его распоряжении есть неограниченные ресурсы и возможности.

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

Среди его предложений были следующие идеи: нанять профессиональных художников-дизайнеров, чтобы сделать пользовательские интерфейсы Sun приятными, привлекательными и удобными; выбрать одно средство разработки и сконцентрировать усилия на одной оконной технологии, а не на нескольких (ранее Нотон был вынужден поддерживать сотни различных комбинаций технологий, платформ и интерфейсов, используемых в компании); и наконец, расформировать отдел Window Systems Group (он будет просто не нужен, если выполнить предыдущие условия).

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

МакНили отправил это письмо всему руководству корпорации, а те, в свою очередь, переслали его своим ведущим специалистам. Откликнулись буквально все, так как Нотон описал то, что все давно понимали, но боялись сказать. Решающей оказалась поддержка Билла Джоя (один из основателей и вице-президент Sun, а также участник проекта по созданию операционной системы UNIX в университете Беркли) и Джеймса Гослинга (пришел в Sun в 1984 году до этого он работал в исследовательской лаборатории IBM и был ведущим разработчиком, в частности автором первой реализации текстового редактора EMACS на C).


Чтобы развить этот успех, надо было предложить какой-то совершенно новый проект, в то же время это был бы «пилотный» проект, т.е. пробный. Нотон, совместно с группой технических специалистов, просидел до 4.30 утра обсуждая базовые концепции этого проекта, пока не пришли к общим понятным тезисам. Главное – потребитель, и весь проект опирается исключительно на его интересы. Основываясь на этом, небольшая команда должна будет спроектировать небольшую же аппаратно-программную платформу и воплотить эту платформу в некоего рода устройстве, которое будет предназначено для персонального использования, которое будет удобно и понятно в обращении. Что-то вроде компьютера для обывателя.

Этого оказалось достаточно, чтобы Джон Гейдж (John Gage), руководитель научных исследований Sun, организовал презентацию для руководителей высшего звена корпорации, на которой Нотон изложил свои условия, которые он считал необходимыми, для успешной реализации этого замысла: команда должна расположиться вне офиса Sun, чтобы не испытывать никакого сопротивления революционным идеям; проект будет секретным для всех, кроме высшего руководства Sun; аппаратная и программная платформы могут быть не совместимыми с любыми продуктами Sun; на первый год группе необходим миллион долларов.

2.2 Проект Green

5 декабря 1990 года, в тот день, когда Нотон должен был перейти в компанию NeXT, корпорация Sun сделала ему встречное предложение. Руководство согласилось доверить ему разработку устройства на его условиях. Конечный результат - "создать что-нибудь необычайное". 1 февраля 1991 года Патрик Нотон, Джеймс Гослинг и Майк Шеридан (Mike Sheridan) вплотную приступили к проекту, получившему название Green.

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

Выбор предметной области также был весьма прост. Во время очередного ежегодного собрания компании Sun весной 1991 года, Гослинг отметил, что компьютерные микрочипы стали повсеместно применяемы. Они применяются в видеомагнитофонах, тостерах, даже в дверных ручках гостиницы, где они жили! Соответственно, в каждом доме может быть до трех пультов дистанционного управления - для телевизора, видеомагнитофона и музыкального центра, не считая других специализированных устройств с данной функцией. Так появилась идея создать небольшое устройство с ЖК сенсорным экраном, которое бы позволяло управлять всеми устройствами сразу и через дружественный и понятный интерфейс облегчало этот процесс для конечного потребителя, далекого от специальных знаний.


После разработки концепции, Нотон начинает проектировать специализированную графическую систему, Гослинг занимается вычислительным аппаратно-программным обеспечением, а Шеридан отвечает за бизнес-составляющую. Уже в апреле 1991 они выезжают из офиса Sun в новое помещение, не связанное даже внутренней сетью с корпорацией. После этого начинается подробное изучение разнообразных бытовых электронных устройств, таких как игровые приставки Nintendo, телевизионные приставки, пульты дистанционного управления, и в то же время играют в многочисленные игры, чтобы лучше понимать, как сделать пользовательский интерфейс максимально дружелюбным и интуитивно понятным.

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

2.3 Первый шаг к унификации

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

Новый вектор развития проект получил, когда Гослинг побывал на музыкальном концерте. Наблюдая за сложным переплетение проводов, огромным количеством колонок и полуавтоматических прожекторов, которые согласовано «танцуют» в такт музыке, ему стало очевидно, что будущее за объединением сетей, компьютеров, и других электронных устройств в единую согласованную структуру, сеть.

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

Поэтому в июне 1991 года Гослинг, написавший свой первый язык программирования в 14 лет, начал разработку аналога C++. Создавая новую директорию и раздумывая, как ее назвать, он взглянул в окно, и взгляд его остановился на растущем под ним дереве. Так язык получил свое первое рабочее название - Oak (дуб). Основанный на C++, язык был упрощен до минимума для того, чтобы стать совместимым с ограниченными ресурсами чипов в карманных устройствах, но его архитектура позволяла не зависеть от аппаратной части. Всего несколько месяцев потребовалось, чтобы совместить новый язык с графической системой, над которой работал Нотон.