Файл: История возникновения и развития языка программирования С++ и java.pdf

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

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

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

Добавлен: 01.04.2023

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

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

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

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

К концу 80-х-началу 90-х гг. объектно-ориентированное программирование с применением языка C++ стало основным методом программирования. Действительно, в течение некоторого непродолжительного времени казалось, что программисты, наконец, изобрели идеальный язык. Поскольку язык C++ сочетал в себе высокую эффективность и стилистические элементы языка С с объектно- ориентированным подходом, этот язык можно было использовать для создания самого широкого круга программ. Однако, как и в прошлом, уже вызревали факторы, которые должны были, в который раз, стимулировать развитие компьютерных языков. Пройдет еще несколько лет, и World Wide Web и Интернет достигнут критической массы. Это приведет к еще одной революции в программировании.

Язык Java был задуман в 1991 году сотрудниками компании Sun Microsystems Джеймсом Гослингом (James Gosling), Патриком Нотоном (Patrick Naughton), Крисом Вартом (Chris Warth), Эдом Франком (Ed Frank) и Майком Шериданом (Mike Sheridan). Первоначально он назывался Oak, но в 1995 году, когда за его продвижение на рынке взялись маркетологи, он был переименован в Java. Как это ни удивительно, на первых порах сами разработчики языка не ставили перед собой задач разработки интернет-приложений. Их целью было создание платформенно-независимого языка, на котором можно было бы писать встраиваемое программное обеспечение для различной бытовой аппаратуры с микропроцессорным управлением, в том числе тостеров, микроволновых печей и пультов дистанционного управления. Как правило, в устройствах подобного типа применялись контроллеры на базе микропроцессоров различной архитектуры, а исполняемый код, генерируемый компиляторами большинства существовавших в то время языков программирования, был ориентирован на определенные типы процессоров. Характерным тому примером может служить язык C++.[11, c.27]


Между первой реализацией языка Oak в конце 1992 г. и публичным объявлением о создании Java весной 1995 г. множество других людей приняли участие в проектировании и развитии этого языка. Билл Джой (Bill Joy), Артур ван Хофф (Arthur van Hoff), Джонатан Пэйн (Jonathan Payne), Франк Иеллин (Frank Yellin) и Тим Линдхольм (Tim Lindholm) внесли основной вклад в развитие исходного прототипа. 

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

Примерно в то же время, когда определялись основные характеристики языка Java, на сцену выступил второй, несомненно, более важный фактор, который должен был сыграть решающую роль в судьбе этого языка. Конечно же, этим вторым фактором была World Wide Web. Если бы формирование веб не происходило почти одновременно с реализацией Java, этот язык мог бы остаться полезным, но незамеченным языком программирования бытовых электронных устройств. Но с появлением World Wide Web язык Java вышел на передний рубеж проектирования компьютерных языков, поскольку веб также нуждался в переносимых программах.

Технология Java развивается очень быстро. Со времени выхода первого издания Java прочно утвердилась на Web-серверах , проникла в сотовые телефоны и другие мобильные устройства. Теперь Java – обязательная часть Web – программирования. [9, c.18] 

Еще на заре своей карьеры большинство программистов твердо усвоили, что переносимые программы столь же недостижимы, сколь и желанны. В то время как потребность в средстве создания эффективных, переносимых (не зависящих от платформы) программ была почти столь же стара, как и сама отрасль программирования, она отодвигалась на задний план другими, более насущными, проблемами. Более того, поскольку большая часть самого мира компьютеров была разделена на три конкурирующих лагеря Intel, Microsoft и UNIX, большинство программистов оставались запертыми в своих аппаратно-программных “твердынях”, что несколько снижало потребность в переносимом коде. Тем не менее с появлением Интернета и веб старая проблема переносимости снова возникла с еще большей актуальностью. В конце концов, Интернет представляет собой разнообразную и распределенную вселенную, заполненную множеством различных типов компьютеров, операционных систем и процессоров. Несмотря на то что к Интернету подключено множество типов платформ, пользователям желательно, чтобы все они могли выполнять одинаковые программы. То, что в начале было неприятной, но не слишком насущной проблемой, превратилось в потребность первостепенной важности. 


К 1993 г. членам группы проектирования Java стало очевидно, что проблемы переносимости, часто возникающие при создании кода, предназначенного для встраивания в контроллеры, возникают также и при попытках создания кода для Интернета. Фактически та же проблема, для решения которой в малом масштабе предназначался язык Java, в большем масштабе была актуальна и в среде Интернета. Понимание этого обстоятельства вынудило разработчиков языка Java перенести свое внимание с бытовой электроники на программирование для Интернета.

Хотя язык Java пригодится и при построении автономных приложений, самым важным его применением было и остается программирование для сети World Wide Web. [12, c.62]

Таким образом, хотя потребность в архитектурно нейтральном языке программирования послужила своего рода “начальной искрой”, Интернет обеспечил крупномасштабный успех Java.

Главный девиз Java –«Написано раз, работает везде». Это делает Java языком, идеальным для распространения кода через интернет. [2, c.26] 

Как уже упоминалось, язык Java наследует многие из своих характеристик от языков С и C++. Это сделано намеренно. Разработчики Java знали, что использование знакомого синтаксиса С и повторение объектно-ориентированных свойств C++ должно было сделать их язык привлекательным для миллионов опытных программистов на С /C++. Помимо внешнего сходства, язык Java использует ряд других атрибутов, которые способствовали успеху языков С и C++. Во-первых, язык Java был спроектирован, проверен и усовершенствован настоящими работающими программистами. Этот язык построен с учетом потребностей и опыта людей, которые его создали. Таким образом, Java — это язык программистов. Во-вторых, Java целостен и логически непротиворечив. В-третьих, если не учитывать ограничения, накладываемые средой Интернета, Java предоставляет программисту полный контроль над программой. Если программирование выполняется правильно, это непосредственно отражается в программах. В равной степени справедливо и обратное. Иначе говоря, Java не является языком тренажера. Это язык профессиональных программистов. 

Из-за сходства языков Java и С++, в особенности из-за подобия предоставляемых ими средств для объектно – ориентированного программирования, возникает соблазн рассматривать Java как своего рода версию C++ для Интернета. Но это было бы ошибкой. У Java имеется целый ряд существенных отличий от C++ как в концептуальном, так и в прикладном плане. Несмотря на то что С++ оказал очень сильное влияние на язык Java, последний вовсе не является расширенной версией первого. В частности, эти языки не совместимы ни сверху вниз, ни снизу вверх.[10, c.28]


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

1.2 Эволюция языка программирования Java

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

Вероятно, наиболее наглядным примером влияния языка Java на программирование служит язык С#.

2002 год: компания Microsoft объявила о создании языка C#. Многие средства С# взяты из Java, в результате чего внешне они почти не отличаются один от другого. Однако дальнейшее развитие этих двух конкурентов пошло разными путями. Microsoft добавила и продолжает добавлять в C# огромное количество новых модных средств, утверждая, что их наличие является преимуществом по сравнению с Java.Но в результате этого поднять со стола учебник по С# теперь может только студент атлетического телосложения. [2, c.27]

Интернет способствовал выдвижению языка Java на передовые рубежи программирования, а язык Java, в свою очередь, оказал сильнейшее влияние на Интернет. Кроме того, что язык Java упростил создание программ для Интернета в целом, он привел к появлению нового типа предназначенных для работы в сетях программ, получивших название аплетов, которые изменили понятие содержимого для сетевой среды. Кроме того, язык Java позволил решить две наиболее острые проблемы программирования, связанные с Интернетом, — переносимость и безопасность. Рассмотрим каждую из этих проблем.


Аплет — это особый вид программы Java, предназначенный для передачи по Интернету и автоматического выполнения совместимым с Java веб-браузером. Более того, аплет загружается по требованию, без необходимости дальнейшего взаимодействия с пользователем.

В виртуальной машине Java поддерживаются все типы программ Java, в том числе и аплеты, что дает возможность обеспечить достаточный уровень безопасности при динамической загрузке аплетов и последующем их выполнении в браузере. [11, c.538]

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

Добиться безопасности и переносимости программ по сети позволяет генерируемый компилятором Java код, не являющийся исполняемым. Такой код называется байт-кодом. Это оптимизированный набор команд, предназначенных для выполнения в исполняющей системе Java, называемой виртуальной машиной Java (Java Virtual Machine - JVM). Виртуальная машина Java, по существу, представляет собой интерпретатор байт-кода. Такой подход может показаться не совсем обычным, поскольку для повышения производительности компиляторы большинства современных языков генерируют исполняемый код. Но выполнение программы под управлением виртуальной машины позволяет разрешить многие затруднения, возникающие в работе веб-приложений. [11, с.30]

Трансляция программы Java в код виртуальной машины значительно упрощает ее выполнение в широком множестве сред, поскольку на каждой платформе необходимо реализовать только JVM. Как только в данной системе появляется пакет времени выполнения, в ней можно исполнять любую программу Java. Нужно запомнить, что хотя на разных платформах особенности реализации машины JVM могут быть различными, все они могут выполнять обработку одного и того же кода виртуальной машины. Если бы программа Java компилировалась в машинозависимый код, для каждого типа процессоров, подключенных к Интернету, должны были бы существовать отдельные версии одной и той же программы. Очевидно, что такое решение неприемлемо. Таким образом, выполнение кода виртуальной машины машиной JVM — простейший способ создания действительно переносимых программ. 

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