Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

Сейчас, наверно, невозможно найти в мире специалиста в 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.

Стандарт С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++, язык был упрощен до минимума для того, чтобы стать совместимым с ограниченными ресурсами чипов в карманных устройствах, но его архитектура позволяла не зависеть от аппаратной части. Всего несколько месяцев потребовалось, чтобы совместить новый язык с графической системой, над которой работал Нотон.

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

Чтобы построить этот уникальный прибор, находчивые разработчики применили "технологию молотка". Они просто находили аппарат, в котором были подходящие детали или микросхемы, разбивали его молотком, распаивали, и таким образом добывали все необходимые детали. Так были получены основной жидкокристаллический экран, сенсорный экран и миниатюрные встроенные колонки. В свою очередь, Центральный процессор и материнская плата были специально разработаны на основе высокопроизводительной рабочей станции Sun, размеры которой были максимально уменьшены. Было придумано и оригинальное название проекту - *7, или Star7 (с помощью этой комбинации кнопок можно было ответить с любого аппарата в офисе на звонок любого другого телефона, а поскольку редко кого из них можно было застать на рабочем месте, эти слова очень часто громко кричались на весь офис). И этот проект *7 (Star Seven) был всего лишь частью большего проекта The Green Project.

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

Предмет разработок был совершенно новым, не на что было опереться, не было никакого опыта, никаких предварительных наработок. Команда трудилась, не прерываясь ни на один день. В августе 1991 года произошла первая демонстрация для Билла Джоя и Скотта МакНили. В ноябре группа снова подключились к сети Sun по модемной линии. С дальнейшим развитием проекта, все больше новых членов присоединялось к команде разработчиков. Тогда же было придумано название для идеологии, которую они создавали, - "1st Person" (условно можно перевести как "первое лицо").

И вот, 4 сентября 1992 года Star7 был завершен и продемонстрирован МакНили. Это было компактное устройство с 5" цветным (16 бит) сенсорным экраном без единой кнопки. Чтобы включить его, надо было прикоснуться к экрану. Весь интерфейс был построен на анимации- никаких меню! Дьюк перемещался по комнатам забавно нарисованного, "мультяшного" дома, следуя указаниям пальца пользователя. Например, берешь виртуальную телепрограмму с нарисованного дивана, выбираешь передачу и "перетаскиваешь" ее на изображение видеомагнитофона, таким образом включается запись передачи на видеомагнитофон. Результат превзошел все ожидания!

Для понимания революционности разработки, следует напомнить, что устройства типа карманных компьютеров (PDA), начиная с Newton, появились намного позже, не говоря уже о повлении для них цветного экрана. Это была эпоха 286i и 386i процессоров Intel (486i уже появились, но были очень дороги для пользователя) и MS DOS, даже мышь еще не стала обязательным атрибутом персонального компьютера, за отсутствием графического интерфейса на последнем.

Руководство Sun пришло в восторг, ведь у них появилось отличное оружие против таких могучих конкурентов, как HP, IBM и Microsoft. Созданная ими технология не только демонстрировала мультики. Объектно-ориентированный язык Oak стал достаточно мощным инструментом для написания программ, которые могли работать в сетевом окружении. Его объекты, свободно распространяющиеся по сети, работали бы на любом устройстве, начиная с персонального компьютера и заканчивая обычными бытовыми видеомагнитофонами и тостерами.

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

2.4 Компания First Person

Крупные компании-производители, такие как Mitsubishi Electric, France Telecom, Dolby Labs, заинтересовались новой технологией и начали переговоры с корпорацией для возможностей применения и распространения этого нового продукта. Шеридан подготавливает бизнес-план с оригинальным названием "Beyond the Green Door" ("За зеленой дверью"), в котором Sun должна учредить дочернюю компанию, которая поспособствует продвижению платформы Oak на рынок. И 1 ноября 1992 года создается компания FirstPerson, возглавляемая Вэйн Роузинг (Wayne Rosing), перешедшей из Sun Labs.

Арендуется роскошный офис, число сотрудников возрастает с 14 до 60 человек. По факту же, Sun просто переименовало группу Green в компанию First Person, полностью находящейся в ее владении, но с получением полного независимого контроля над проектами и результатами работы группы Green, над ее так называемой интеллектуальной собственностью, которой стало возможным распоряжаться отдельно от активов самой корпорации.

Новая компания имела интересную концепцию, и устройство, однако к этому предложению не хватало конкурентоспособной, рыночной идеи. Команда провела весь 1993 год в поисках бизнес-приложения для новой технологии, ведь просто реализация Star7 (процессор, память, экран) составляет не менее $50. Производители же бытовой техники привыкли платить ничтожные суммы за дополнительную функциональность, облегчающую использование их продуктов.

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

В это время внимание компьютерной индустрии захватывает идея интерактивного телевидения, создается ощущение, что именно эта среда станет следующим революционным прорывом в мире информационных технологий. Поэтому, когда в марте 1993 года Time Warner объявляет конкурс для производителей компьютерных приставок к телевизору, посвященный развертывания пробной сети интерактивного телевидения, FirstPerson в полном составе начинает заниматься разработкой данной сети. Но победителем оказывается Джеймс Кларк (James Clark), основатель Silicon Graphics Inc., несмотря на то, что технологически его предложение уступает по возможности Oak, имеет лишь одно преимущество, а именно большую прибыль при реализации этого продукта (дешевизну производства). Впрочем, через год этот проект Time Warner и SGI закрывается за неактуальностью, а Джеймс Кларк создает компанию Netscape, которая еще сыграет важную роль в успехе Java.

Другим потенциальным клиентом для FirstPerson мог стать производитель игровых приставок 3DO. Понадобилось всего 10 дней, чтобы портировать Oak на эту платформу, однако после трехмесячных переговоров, директор 3DO потребовал полные права на новый продукт, и сделка не состоялась.

Наконец, в начале 1994 года стало понятно, что интерактивное телевидение не несет в себе ничего прорывного и не является подходящей областью для применения технологий компании FirstPerson. У молодой компании были большие амбиции, приправленные большими ожиданиями от Sun, но им не суждено стать реальностью. А дела в FirstPerson были таковы, что компания не имеет ни одного клиента или партнера, несет для Sun убытки, и ее дальнейшие перспективы довольно туманны. Руководство Sun требует немедленного составления нового бизнес-плана, позволяющего компании начать приносить прибыль.

Oak и WWW

Развивая идеи интерактивного телевидения, многие участники компьютерного рынка полностью упустили поистине важное событие. В апреле 1993 года Марк Андриссен (Marc Andreessen) и Эрик Бина (Eric Bina), работающие в Национальном Центре Суперкомпьютерных Приложений (National Center for Supercomputing Applications, NCSA) при университете Иллинойс, выпустили первую версию графического браузера ("обозревателя") Mosaic 1.0 для WWW.

Хотя Internet существовал на тот момент уже около 20 лет, пользоваться им было очень неудобно. На тот момент использовались лишь прямые протоколы связи (FTP, telnet и т.п.), не позволявшие пользоваться WWW простому обывателю в том виде в котором мы все привыкли. Поэтому Глобальная Сеть интенсивно использовалась лишь в академической и государственной среде.

Mosaic же основывался на новом языке разметки гипертекстовых документов (HyperText Markup Language, HTML), который был разработан в 1991 в Европейском Институте Физики Частиц (CERN) специально для принципиально другого представления информации в Интернете. Этот формат позволял просматривать текст и изображения, а главное – поддерживал ссылки, с помощью которых можно было одним лишь нажатием клавиши перейти как на другую часть той же страницы, так и на страницу, расположенную совсем в другой части сети и географического мира.

Именно такие перекрестные обращения, с помощью которых пользователь мог совершенно незаметно для себя посетить множество узлов Интернета, и позволили считать все HTML документы связанными частями единого целого - Всемирной Паутины (World Wide Web, WWW). И самое главное – все эти новые достижения были совершенно бесплатно доступны для всех желающих.

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

Вернемся к тому, что совершенно необъяснимым способом Sun не заметила начало новой эпохи. Технический директор Sun впервые увидел Mosaic лишь три месяца спустя! И это притом, что примерно 50% серверов и рабочих станций в сети Интернет были произведены именно Sun.

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

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

По многим объективным причинам этот план не устроил руководство Sun (он плохо соответствовал главному ожиданию – новая разработка должна была привести к увеличению спроса на продукты Sun). Из-за отсутствия перспектив почти половина сотрудников FirstPerson была переведена в новую команду Sun Interactive, которая продолжит заниматься мультимедиа-сервисами уже без Oak.

Все предприятие оказалось под угрозой бесславной кончины, и в этот самый момент Билл Джой снова оказал поддержку проекту, который вскоре дал миру платформу Java.

Когда компания FirstPerson все же обратила внимание на Интернет, то стало ясно, что функциональность тех сетевых приложений, для которых они создавали Oak, очень близка к концепции и архитектуре WWW. И в дополнении ко всему, Билл Джой вспомнил, как он двадцать лет назад принимал участие в разработке UNIX в Беркли, которая получила широчайшее распространение потому, что ее можно было загрузить по сети совершенно бесплатно.

Данный принцип бесплатного распространения коммерческих продуктов создал и саму WWW, тем же образом компания Netscape вскоре стала лидером рынка браузеров. Они пришли к выводу что именно бесплатные технологии дают возможность захватить максимальную долю рынка в кратчайшие сроки. Эти новые идеи при поддержке Джоя смогли убедить руководство Sun, что Интернет может стать воскрешением платформы Oak (новый проект сначала называли "Liveoak").

Джой создает очередной бизнес-план и отправляет Гослинга и Нотона адаптировать Oak для Интернета. Гослинг адаптирует программный код платформы, а Нотон берется за разработку "убойного" приложения, которое бы стало очевидной демонстрацией всей мощи Oak для Интернета.

В самом деле, эти технологии как бы идеально подошли друг другу. Получилась цельная концепция, благодаря которой обе технологии при взаимной поддержке друг друга получили просто экспоненциальное развитие и еще большую популярность. Именно тогда произошел поистине исторический момент, когда разработка компании двухлетней давности наконец нашла свое истинное назначение. Как уже бывало ранее. Например: Мейнфреймы не были особенно полезны, пока не появился Cobol. Благодаря языку Fortran от IBM, компьютеры стали широко применяться для научных вычислений и исследований. Basic – самый первый продукт от Microsoft - позволил всем программистам-любителям легко создавать программы для своих персональных компьютеров. Язык С++ стал основой для развития графических пользовательских интерфейсов, таких как Mac OS и Windows.

Создатели Oak сделали все, чтобы их технология сыграла такую же важную роль в программировании для Интернет. Несмотря на то, что к середине 1994 года WWW достиг поистине огромных размеров (конечно, по меркам того времени), веб-страницы оставались похожими на обычные бумажные издания, что-то сродни журналам или газетам. И вся работа сети заключалась в отправке запроса на веб-сервер и в получении ответа, который содержал статический HTML-файл, отображаемый браузером на компьютере клиента.

Стоит все же отметить что функциональность веб-серверов пытались расширить с помощью CGI (Common Gateway Interface). Эта технология позволяла по запросу клиента запускать программу на сервере и ее результат отсылать обратно в качестве ответа. Поскольку в то время скорость каналов связи была невысокой (но как мне кажется, пользователи никогда не будут удовлетворены возможностями аппаратуры), то клиент ждал порой несколько минут, чтобы получить сообщение об ошибке в одной букве запроса. Динамическое же построение изображений и графики при таком способе реализации означало бы генерацию GIF-файлов в реальном времени и передачу итога все с той же пресловутой задержкой в несколько минут. А ведь зачастую клиентские машины являются полноценными персональными компьютерами, которые могли бы выполнять значительную часть работы взаимодействия с пользователем на себя, разгружая как сервера, так и каналы связи.

Но не стоит забывать, что даже клиент-серверная архитектура, используемая большинством сложных корпоративных (enterprise) приложений внутри одной корпорации, обладает рядом технических сложностей. Основная идея – разместить общие данные на сервере, для создания единого информационного пространства для работы нескольких пользователей, а программы, отображающие и позволяющие удобно работать с этими данными, должны выполняться на клиентских машинах. К тому же очень часто используется несколько аппаратных платформ (это может быть, как "историческое наследие", так и следствие того, что различные подразделения, решая разные задачи, нуждаются в различных компьютерах). И в конечном итоге, мало того, что приложение необходимо развивать сразу в нескольких вариантах, что существенно удорожает поддержку. Но даже самое простое обновление клиентской части означает, что нужно перенастроить все компьютеры компании в кратчайший срок, то есть придется обновлять каждую аппаратную среду отдельно и вручную. А ведь часто обновлениями могут заниматься несколько групп разработчиков.

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

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

Возрождение Oak

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

Нотон и Джонатан Пейн вместе написали браузер со встроенным в него интерпретатором Java и назвали его WebRunner. Нотону потребовался всего один выходной, чтобы написать основную часть программы, а в сентябре 1994 года WebRunner уже был продемонстрирован руководству Sun. Небольшие программы, написанные на Oak для распространения через Интернет, назвали апплетами (applets), и на первом примере такого апплета Дьюк махал рукой своим создателям, как аналог «Hello World» для всем известного компилятора.

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

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

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

Одновременно с этим, в начале 1995 года, когда стало ясно, что официальное объявление уже близко, за дело взялись маркетологи компании Sun. Результатом их работы стало то что Oak был переименован в Java, а WebRunner соответственно в HotJava. Основная легенда гласит, что Java – это был сорт кофе (такой кофе действительно есть), который очень любили их программисты. Видимо, поэтому появилось и название HotJava (горячая Java).

С тех пор тема кофе навсегда закрепилась за названиями программных продуктов компании (технология создания компонент названа Java Beans – зерна кофе, специальный формат для архивирования файлов с Java программами JAR - банка с кофе и т.д.) и в логотипах, а сам язык критики стали называть "для кофеварок". Впрочем, сейчас все уже привыкли и не задумываются над названием, возможно, это и было целью (а тем, кто продолжает высказывать недовольство, приводят альтернативные, объективно менее удачные варианты, которые рассматривались - Neon, Lyric, Pepper или Silk).

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

Однако в конце 1994 года пока лишь считанные копии были распространены за пределы Sun. В феврале 1995 года выходит первый пресс-релиз, сообщающий, что вскоре альфа-версии пока еще Oak и WebRunner будут доступны для всеобщего обозрения. Когда это случилось, команда стала считать каждый случай загрузки продуктов для просмотра. Вскоре им пришлось считать уже сотнями. Кто-то высказался, что если удастся достигнуть 10.000 загрузок, то это будет означать "просто ошеломляющий успех". Но, как оказалось, эта цифра легко осталась позади. Интерес нарастал лавинообразно, и мощности интернет-канала стало не хватать для стабильной загрузки.

После просмотров же приходило большое количество писем с идеями и подсказками и первое время на письма отвечали все сотрудники, не отрываясь от работы. Затем, по очереди, стали назначать одного разработчика, чтобы он неделю писал только ответы на письма, не занимаясь программированием. В итоге, потребовался специальный человек, так как письма приходили уже по 2-3 тысячи в день.

Это и был настоящий успех в понимании руководства Sun. Ведь проект Java до этого момента даже не имел бюджета или плана для рекламы и других акций продвижения на рынок. Первым таким событием становится публикация от 23 марта 1995 года в газете Sun Jose Mercury News статьи с описанием новой технологии, в которой приводился адрес официального сайта http://java.sun.com/, который и сейчас является основным источником информации по Java.

Рождение Java

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

Однако все произошло совсем не так, как планировалось. В 4 часа утра в день конференции, после длинных и сложных переговоров, Sun подписывает важнейшее соглашение с компанией Netscape, основанной в апреле 1994 года Джеймсом Кларком (бывшим основателем SGI, перехватившей у FirstPerson сотрудничество с Time Warner во время работы над интерактивным ТВ) и Марком Андриссеном (создателем NCSA Mosaic).

Эта компания на тот момент являлась лидером рынка браузеров после того, как в декабре 1994 года вышла первая версия Netscape Navigator, которая была открыта для бесплатного некоммерческого использования и занявшая на тот момент 75% рынка. И на презентации 23 мая 1995 года технология Java и HotJava были официально объявлены Sun, и тут же было сообщено, что новая версия самого популярного браузера Netscape Navigator 2.0 будет поддерживать новую технологию. По сути, это означало, что отныне Java становится такой же неотъемлемой составляющей WWW, как и HTML. Во второй раз презентация закончилась бурными аплодисментами всех присутствующих. Победное шествие Java началось в тот момент и продолжается по сей день.

Заключение

В настоящее время все работы, связанные со средой Java, ведет дочерняя фирма Java Soft. Ее информационный сервер расположен по адресу www.javasoft.com. Начиная с 1995 года компания Sun Microsystems выпустила в свет шесть основных версий набора инструментальных средств Java Software Development Kit. Наиболее серьезные изменения претерпела пятая версия, в которой были изменены, расширены и добавлены фундаментальные понятия. На протяжении последних лет объем интерфейса прикладных программ возрос с 200 до 3000 классов. Теперь он охватывает самые разные области программирования – создание пользовательского интерфейса, управление базами данных, интернационализацию, обеспечение безопасности и обработку данных с помощью языка XML.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. Могилев А. В. Информатика: учеб. пособие для студ. пед. вузов / А. В. Могилев, Н. И. Пак, Е. К. Хеннер; под ред. Е. К. Хеннера. — 8-е изд., стер. — М. : Издательский центр «Академия», 2012.— 848 с.
  2. Столяров А. В. Язык Си и начальное обучение программированию // Сборник статей молодых учёных факультета ВМК МГУ. — Издательский отдел факультета ВМК МГУ, 2010. — № 7. — С. 78—90.
  3. Языки программирования. Обзор-ликбез. Хакер №4,с.36-40.
  4. Шилдт Г. C: полное руководство, классическое издание = C: The Complete Reference, 4th Edition. — М.: Вильямс, 2010. — С. 704. — ISBN 978-5-8459-1709-6.
  5. Страуструп Б. Язык программирования C++. Специальное издание = The C++ programming language. Special edition. – М.: Бином-Пресс, 2007. – 1104 с. – ISBN 5-7989-0223-4
  6. Кей С. Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала, том 1. Основы = Core Java 2, Volume I – Fundamentals. – 8-е изд. – М.: Вильямс, 2008. – 816 с. – ISBN 978-5-8459-1378-4, ISBN 978-0-1323-5476-9
  7. Кей С. Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала, том 2. Тонкости программирования = Core Java 2, Volume II – Advanced Features. – 8-е изд. – М.: Вильямс, 2008, 4 кв. – 992 с. – ISBN 978-5-8459-1482-8, ISBN 978-01-3235479-0
  8. Монахов Вадим. Язык программирования Java и среда NetBeans. – 2-е изд. – СПб.: БХВ-Петербург, 2009. – 720 с. – ISBN 978-5-9775-0424-9
  9. Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. – 5-е изд. – М.: Вильямс, 2001. – 672 с. – 5000 экз. – ISBN 5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)
  10. Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. – М.: Центр ЮрИнфо Р, 2001. – 276 с. – ISBN 5-89158-079-9
  11. CIT форум [Электронный ресурс]. – Режим доступа: http://citforum.ru– Заглавие с экрана. – (Дата обращения: 10.08.2018).
  12. Википедия [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org – Заглавие с экрана. – (Дата обращения: 11.08.2018).
  13. The Development of the C Language [Электронный ресурс]. – Режим доступа: https://www.bell-labs.com/usr/dmr/www/chist.html – Заглавие с экрана. – (Дата обращения: 11.08.2018).
  14. http://tiobe.com
  15. Cybern.ru. Java. Уроки для начинающих [Электронный ресурс]. – Режим доступа: http://cybern.ru/category/java/begin-java – Заглавие с экрана. – (Дата обращения: 09.08.2018).