Происхождение Java: предназначение языка и его сильные стороны

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


Оглавление статьи[Показать]


Несмотря на то что язык Java неразрывно связан с Интернетом, важно пом­нить, что это, прежде всего, язык программирования. Разработка и усовершен­ствование языков программирования обусловлены двумя основными причинами:

  • адаптация к изменяющимся средам и областям применения;
  • реализация улучшений и усовершенствований в области программирования.

Как будет показано в этой статье, разработка языка Java почти в равной мере была обусловлена обеими этими причинами.

Язык Java тесно связан с языком C++, который, в свою очередь, является пря­мым наследником языка С. Многие особенности Java унаследованы от обоих этих языков. От С язык Java унаследовал свой синтаксис, а многие его объектно-ориен­тированные свойства были перенесены из C++. Собственно говоря, ряд определяющих характеристик языка Java был перенесен — или разработан в ответ на воз­никшие потребности — из его предшественников. Более того, создание Java свои­ми корнями уходит глубоко в процесс усовершенствования и адаптации, который происходит в языках программирования на протяжении нескольких последних десятилетий. Поэтому в этом разделе рассматривается последовательность со­бытий и факторов, приведших к появлению Java. Как станет ясно в дальнейшем, каждое новшество в архитектуре языка, как правило, было обусловлено необходимостью найти решение той или иной основной проблемы, которую не могли разрешить существовавшие до этого языки. И Java не является исключением из этого правила.

 

Зарождение современного программирования: язык С

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

  • простотой использования и предоставляемыми возможностями;
  • безопасностью и эффективностью;
  • устойчивостью и расширяемостью.

До появления языка С программистам, как правило, приходилось выбирать между языками, которые позволяли оптимизировать тот или иной ряд характе­ристик. Так, на языке FORTRAN можно было писать достаточно эффективные программы для научных вычислений, но он не очень подходил для написания системного кода. Аналогично язык BASIC был очень прост в изучении, но у него было не очень много функциональных возможностей, а недостаточная структу­рированность ставила под сомнение его полезность для написания крупных про­грамм. На языке ассемблера можно писать очень эффективные программы, но его трудно изучать и эффективно использовать. Более того, отладка ассемблерного кода может оказаться весьма сложной задачей.

Еще одна усложнявшая дело проблема состояла в том, что первые языки про­граммирования вроде BASIC, COBOL и FORTRAN были разработаны без учета принципов структурирования. Вместо этого основными средствами управления программой в них были операторы безусловного перехода GOTO. В результате программы, написанные на этих языках, проявляли тенденцию к появлению так называемого “макаронного кода” — множества запутанных переходов и условных ветвей, которые делали программу едва ли доступной для понимания. И хотя язы­ки наподобие Pascal структурированы, они не были предназначены для написания эффективных программ и лишены ряда важных средств, необходимых для напи­сания разнообразных программ. (В частности, применять Pascal для написания системного кода было нецелесообразно, принимая во внимание наличие несколь­ких стандартных диалектов этого языка.)

Таким образом, до изобретения языка С, несмотря на затраченные усилия, ни одному языку не удавалось разрешить существовавшие в то время противоречия в программировании. Вместе с тем потребность в таком языке становилась все бо­лее насущной. В начале 1970-х годов началась компьютерная революция, и потребность в программном обеспечении быстро превысила возможности программи­стов по его созданию. В академических кругах большие усилия были приложены к созданию более совершенного языка программирования. Но в то же время стало все больше ощущаться влияние еще одного, очень важного фактора. Компьютеры, наконец, получили достаточно широкое распространение, чтобы была достигну­та “критическая масса”. Компьютерное оборудование больше не находилось за за­крытыми дверями. Впервые программисты получили буквально неограниченный доступ к своим вычислительным машинам. Это дало свободу для экспериментиро­вания. Программисты смогли также приступить к созданию своих собственных инструментальных средств. Накануне создания С произошел качественный ска­чок в области языков программирования.

Язык С, изобретенный и впервые реализованный Деннисом Ритчи на мини- ЭВМ DEC PDP-11, работавшей под управлением операционной системы UNIX, явился результатом процесса разработки, начавшегося с предшествующего ему языка BCPL, разработанного Мартином Ричардсом. BCPL оказал влияние на язык, получивший название В, который был изобретен Кеном Томпсоном и в начале 1970-х гг. привел к появлению языка С. В течение долгих лет фактическим стандартом языка С была его версия, которая поставлялась вместе с операционной си­стемой UNIX (она описана в книге Язык программирования С Брайана Кернигана и Денниса Ритчи, 2-е издание, И.Д. “Вилямс”, 2007 г.). Язык С был формально стан­дартизован в декабре 1989 г„ когда Национальный институт стандартизации США (American National Standards Institute — ANSI) принял стандарт на С.

Многие считают создание С началом современного этапа развития языков про­граммирования. Этот язык успешно соединил противоречивые свойства, которые доставляли столько неприятностей в предыдущих языках. В итоге появился мощ­ный, эффективный, структурированный язык, изучение которого было сравнительно простым. Кроме того, ему была присуща еще одна, почти непостижимая особенность: он был разработан специально для программистов. До появления С языки программирования проектировались в основном в качестве академических упражнений или бюрократическими организациями. Иное дело — язык С. Он был спроектирован, реализован и разработан практикующими программистами и от­ражал их подход к программированию. Его функции были отлажены, проверены и многократно переработаны людьми, которые действительно пользовались этим языком. Таким образом, получился язык, который сразу же понравился программистам. И действительно, язык С быстро приобрел много приверженцев, кото­рые едва ли не молились на него. Благодаря этому С получил быстрое и широкое признание среди программистов. Короче говоря, С — это язык, разработанный программистами для программистов. Как станет ясно в дальнейшем, эту замечательную особенность унаследовали язык Java.

 

Следующий этап: язык C++

В конце 1970-х-начале 1980-х гг. язык С стал господствующим языком про­граммирования и продолжает широко применяться до сих пор. А если С — удач­ный и удобный язык, то может возникнуть вопрос: чем обусловлена потребность в каком-то другом языке? Ответ состоит в постоянно растущей сложности про­грамм. На протяжении всей истории развития программирования постоянно растущая сложность программ порождала потребность в более совершенных спо­собах преодоления их сложности. Язык C++ явился ответом на эту потребность. Чтобы лучше понять, почему потребность преодоления сложности программ яв­ляется главной побудительной причиной создания языка C++, рассмотрим следу­ющие факторы.

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

Первым языком программирования, который получил широкое распростране­ние, был, конечно же, FORTRAN. Хотя он и стал первым впечатляющим этапом в программировании, его вряд ли можно считать языком, который способствует созданию ясных и простых для понимания программ. 1960-е годы ознаменовались зарождением структурного программирования. Эта методика программирования наи­более ярко проявилась в таких языках, как С. Пользуясь структурированными язы­ками, программисты впервые получили возможность без особых затруднений соз­давать программы средней сложности. Но и методика структурного программиро­вания уже не позволяла программистам справиться со сложными проектами, когда они достигали определенных масштабов. К началу 1980-х. сложность многих про­ектов начала превышать предел, позволявший справиться с ними, применяя струк­турный подход. Для решения этой проблемы была изобретена новая методика про­граммирования, получившая название объектно-ориентированного программирования (ООП). Объектноориентированное программирование подробно рассматривает^ ся в последующих главах, а здесь приводится лишь краткое его определение: ООП — это методика программирования, которая помогает организовывать сложные про­граммы, применяя принципы наследования, инкапсуляции и полиморфизма.

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

Язык C++ был изобретен Бьярне Страуструпом (Bjarne Stroustrup) в 1979 г., когда он работал в компании Bell Laboratories в городе Мюррей-Хилл, шт. Нью-Джерси. Вначале Страуструп назвал новый язык “С with Classes” (С с классами). Но в 1983 г. это название было изменено на C++. Язык C++ расширяет функцио­нальные возможности языка С, добавляя в него объектно-ориентированные свой­ства. А поскольку язык C++ построен на основе С, то в нем поддерживаются все функциональные возможности, свойства и преимущества С. Это обстоятельство явилось главной причиной успешного распространения C++ в качестве языка программирования. Изобретение языка C++ не было попыткой создать совершенно новый язык программирования. Напротив, все усилия были направлены на усовершенствование уже существующего очень удачного языка.

 

Предпосылки к созданию Java

К концу 1980-х и в начале 1990-х гг. объектно-ориентированное программиро­вание на C++ стало основной методикой программирования. И в течение некото­рого, хотя и непродолжительного периода времени казалось, что программисты наконец изобрели идеальный язык. Ведь язык C++ сочетал в себе высокую эффективность и стилистические элементы языка С наряду с объектно-ориентирован­ным подходом, и поэтому его можно было использовать для создания самых раз­ных программ. Но, как и прежде, уже вызревали факторы, которые должны были в очередной раз стимулировать развитие языков программирования. Прошло еще несколько лет, и развитие Всемирной паутины и Интернета достигло “критиче­ской массы”, что и привело к еще одной революции в программировании.

 

Вас заинтересует / Intresting for you:

Распространенные заблуждения о...
Распространенные заблуждения о... 2490 просмотров Ирина Светлова Thu, 21 Jun 2018, 18:35:12
Создание языка Java
Создание языка Java 2321 просмотров Дэн Mon, 05 Nov 2018, 09:36:39
Использование потоков в Java
Использование потоков в Java 1460 просмотров Antoni Wed, 12 May 2021, 09:51:36
Пример написания программы на ...
Пример написания программы на ... 25890 просмотров Светлана Комарова Wed, 07 Nov 2018, 08:24:40
Войдите чтобы комментировать