Файл: История возникновения и развития языка С (С++) и Java.pdf
Добавлен: 22.04.2023
Просмотров: 170
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1. История возникновения и развития языка программирования C++
1.1. Возникновение и эволюция языка C++
1.2. Структура и эффективность C++
Глава 2. История возникновения и развития языка программирования Java
2.1. Возникновение и эволюция языка Java
Введение
На сегодняшний день в жизни и деятельности людей очень важную роль играют информационные технологии. В настоящее время уже практически невозможно представить жизнь обыкновенного человека без компьютера и Интернета. Но для создания различных программ необходимы языки программирования.
Постоянный прогресс в развитии компьютерных технологий определяет необходимость появления разных новых способов описания алгоритмов, которые принято называть языками программирования. Задача создания этого языка заключается в оснащенном наборе вычислений и обработки дополнительной информации, который превращает в алгоритм данный набор. Языкам программирования свойственны перекликающиеся между собой цели: во-первых, они дают программисту аппарат для установки операций, которые необходимо выполнить, а во-вторых, формируются концепции, которые используются программистом, в размышлениях о том, что делать. Ответ на первую цель - язык, столь «близкий к машине», что все ключевые машинные аспекты могут быть легко и просто использованы для программиста очевидным образом. Ответ по второй цели - идеальным можно считать язык, который так «близок к решаемой задаче», чтобы концепция её решения могла быть выражена коротко и прямо. Это обуславливает актуальность выбранной темы.
В наше время наиболее распространенным языком является C++, его часто применяют для создания коммерческих приложений. Но в последнее время это положение начало колебаться, так как аналогичные претензии были заявлены таким языком как Java. В то же время общественное мнение резонировало, и многие программисты, бросившие C++ ради Jаvа, все чаще возвращаются к прежней своей привязанности. При этом названные языки похожи [11].
Цель работы состоит в изучении истории возникновения и развития языков программирования Си (C++) и Java.
Для достижения установленной цели необходимо решить ряд задач:
- изучить литературу по заданной теме;
- привести историю языков Си (C++) и Java;
- рассмотреть развитие языков Си (C++) и Java;
Объектом исследования выступают языки программирования Си (C++) и Java.
Предметом исследования - история, структура, польза, потенциал таких языков программирования, как Си (C++) и Java.
Структурно работа состоит из введения, двух глав основной части, заключения и списка использованных источников.
Глава 1. История возникновения и развития языка программирования C++
1.1. Возникновение и эволюция языка C++
Бьерн Страуструп - разработчик языка С++ и создатель первого транслятора, также известен как сотрудник AT&T Bell Laboratories. Он является магистром вычислительной техники и математики, закончив Кембридж по специальности «распределенные системы, операционные системы, моделирование и программирование». Именно Страуструп является автором полного руководства по языку С++ [4].
Определенно С++ вобрал в себя все основные возможности языка С, который является его подмножеством. Также сохранены и все присущие С средства низкого уровня, которые предназначены для решения всевозможных проблем системного программирования. С, также, многим обязан предшествующему языку BCPL – в C++ был восстановлен комментарий языка. Еще один источник - это язык SIMULA-67, из которого была взята концепция классов (в том числе возможность создания производных классов и виртуальных функций). Также стоит упомянуть язык Алгол-68, в котором уже существовали возможности перегрузки операций и свобода размещения описаний [5].
Предыдущие версии языка, которые назывались «С с классами», применялись с 1980 г. Данный язык возник, так как автору было необходимо создавать приложения для моделирования, которые управлялись бы прерываниями. Язык программирования SIMULA-67 для этого идеально подходит, если не рассматривать эффективность. Язык «С с классами» применялся для больших задач моделирования. Тогда подверглись строгой проверке возможности создания с его помощью приложений, для которых ресурсы памяти и времени критичны. В данном языке недоставало перегрузки операций, использования виртуальных функций, ссылок и многих иных возможностей. В июле 1983 г. С++ впервые покинул пределы исследовательской группы, где работал автор, однако многие возможности С++ тогда еще не были разработаны [9].
Само название С++ придумал Рик Маскитти в 1983 г. Данное название как бы выделяет эволюционный прорыв в изменении языка С. Так как обозначение ++ описывает операцию инкремента С. Имя просто С+ представляет синтаксическую ошибку. Помимо этого, оно уже используется как название совершенно другого языка программирования. Многие ученые-семантики в сфере языка С считают, что С++ слабее, чем ++С. Язык не назван D, так как он представляет расширение С, и в нем отсутствуют попытки решения каких-либо проблем посредством отказа от возможностей С.
Сначала С++ был задуман для того, чтобы избежать программирования на ассемблере, С либо иных языках программирования того времени. Его главное предназначение заключается в упрощении и оптимизации процесса программирования для отдельного программиста. Еще не так давно не было на бумаге плана разработки С++. Все этапы создания программного продукта выполнялись параллельно. Не формировалось отдельного «проекта С++», вследствие чего язык развивается так, чтобы решить все проблемы, с которыми сталкиваются пользователи. Также толчками к развитию выступает обсуждение автором проблем языка с его коллегами и друзьями [8].
С момента первого издания книги Страуструпа язык С++ неоднократно был подвержен серьезным уточнениям и изменениям. Преимущественно это затрагивает разрешение неоднозначности при перегрузке, связывание и управление памятью. Также, были внесены несущественные изменения для увеличения совместимости с языком С. Кроме того, были созданы некоторые обобщения, а также ряд расширений, например: возможность множественного наследования, реализация функций-членов со спецификаторами const и static, наличие защищенных членов класса (protected), возможность обработки исключительных ситуаций и т.п. Все названные нововведения были сделаны для того, чтобы С++ стал языком, позволяющим разрабатывать и использовать библиотеки.
Иные расширения, которые были введены в период 1985-1991 г.г. (например, чистые виртуальные функции или статические функции-члены), вероятнее появились как результат обобщения опыта программирования на С++, нежели были почерпнуты из иных языков.
Сделанные расширения языка за указанные шесть лет, прежде всего, были нацелены на рост выразительности С++ в качестве объектно-ориентированного языка программирования, и как средства создания качественных и универсальных библиотек в том числе и с типами данных, определяемыми пользователями.
В середине 1987 г. стало понятно, что работа по стандартизации С++ необходима и что нужно незамедлительно создавать основу для нее.
Основной вклад в эту работу внесла компания AT&T Bell Laboratories. Около сотни представителей из порядка двух десятков различных компаний занимались изучением и комментированием того, что является современной версией справочного руководства и исходными материалами для ANSI по стандартизации. С++. Как следствие, в 1989 г. по инициативе компании Hewlett-Packard в составе ANSI был сформирован комитет X3J16. Прогнозируется, что работы по стандартизации С++ в ANSI будут составным элементом работ по международной стандартизации ISO [10].
1.2. Структура и эффективность C++
С++ был развит на базе языка программирования C и сохраняет C как подмножество за очень немногими исключениями. Первоначальный язык C был спроектирован таким образом, что в С++ сохраняется близкое соответствие между типами данных, операторами и операциями, и компьютерными объектами, с которыми приходится иметь дело: символами, числами и адресами. В качестве исключения можно назвать операции работы с памятью new и delete, а также отдельные операторы и выражения С++, которые не нуждаются в скрытой поддержке в процессе исполнения программного кода.
В С++ применяются такие же последовательности возврата и вызова из функций, как и в C. В случаях, когда даже приведенный достаточно эффективный механизм становится слишком затратным, С++ функции могут подставляться inline, таким образом, удовлетворяя соглашение о записи функций без дополнительных расходов времени исполнения.
Одно из начальных предназначений C – это использование его вместо программирования на ассемблере в задачах системного программирования. При проектировании С++, принимались меры, чтобы не подставлять данную область под угрозу. Отличие между C и С++ в первую очередь состоит в степени внимания, которое уделяется типам и структурам. C снисходителен и выразителен. С++ еще более выразителен, но, чтобы добиться этой выразительности, программисту необходимо уделить особое внимание типам объектов. Когда типы объектов известны, компилятор может верно обрабатывать выражения, однако в противном случае программисту нужно было бы задавать действия с подробнейшим описанием. Наличие знаний типов объектов также дает возможность компилятору выявить ошибки, которые могли остаться до тестирования в противном случае. Нужно отметить, что применение системы типов для получения проверки параметров функций, реализации защиты данных от случайного искажения, задания новых функций и т.д. не вызывает рост расходов памяти и времени исполнения кода.
Особенное внимание, уделенное структуре в ходе разработки С++, отражается на росте масштаба программ, которые были написаны со времени разработки C. Небольшие программы могут работать при помощи грубой силы, даже обходя все условия хорошего стиля программирования. Но это не совсем так для больших программных кодов. Если программа в десятки тысяч строк обладает плохой структурой, то можно заметить, что новые ошибки возникают так же быстро, как старые удаляются. С++ был разработан так, чтобы позволить структурировать большие программы разумным образом так, чтобы для одного человека не было невозможным справляться с программами в сотни тысяч строк. В настоящее время используются программы куда больших размеров, однако работающие, в общем, как правило, состоят из большого количества практически независимых частей, размер каждой из них намного ниже определенных пределов. Как правило, сложность разработки и последующей поддержки программного кода также определяется сложностью алгоритма, а не только количеством строк текста программы.
Однако, не каждый элемент программы может быть верно структурирован, независим от используемого аппаратного обеспечения, легко читаем и т.п. С++ имеет возможности, предназначенные для непосредственной и эффективной работы с аппаратными средствами, не уделяя внимания вопросоам безопасности и простоте понимания. Также он обладает возможностями, позволяющими скрывать такие программы за надежными, но элегантными интерфейсами.
Может сложится мнение, что спецификация программы при помощи более подробной системы типов станет причиной увеличения объема исходного кода программы, но это не так. Программа на C++, которая описывает типы параметров функций, использует классы и т.д., как правило, немного короче той же программы на C, где данные средства не применяются [3].
Глава 2. История возникновения и развития языка программирования Java
2.1. Возникновение и эволюция языка Java
Язык Java зародился в качестве элемента в проекте разработки передовых приложений для разных бытовых приборов. Проект начали реализовать на языке С++, но вскоре обнаружился ряд проблем, лучшее средство борьбы с которыми - это изменение непосредственно инструмента, а именно языка программирования. Было очевидно, что нужен платформенно-независимый язык, позволяющий создавать программы, не нуждающиеся в компиляции отдельно для каждой архитектуры и так же возможно было бы использование на разных процессорах под разными операционными системами [12].
Появлению языка Java предшествовала достаточно богатая история. В 1990 году Патрик Нотон - инженер компании Sun Microsystems, осознал, что его тяготит необходимость осуществления поддержки сотни разных интерфейсов программ, применяемых в фирме, и уведомил исполнительного директора Sun Microsystems и своего друга Скотта МакНили о своем решении перейти работать в фирму NeXT. МакНили, попросил Нотона сформировать список причин такого недовольства и попробовать прелдожить такое решение проблем, словно он мог бы осуществить все, что угодно.
Нотон, хоть и не особо рассчитывал, что кто-то в серьез обратит внимание на его письмо, все же выдвинул свои претензии, прямо раскритиковав минусы компании, в том числе, разрабатываемую как раз в то время архитектуру программного обеспечения NeWS. На удивление Нотона, письмо имело оглушительный успех: его разослали всем ведущим инженерам компании, которые, в свою очередь, незамедлительно откликнулись и выказали одобрение и поддержку своему коллеге. Кроме того, высшее руководство, а именно Билл Джой – основатель компании и Джеймс Гослинг 0 непосредственный руководитель Нотона, также одобрили инициативу.