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

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

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

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

Добавлен: 06.04.2023

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

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

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

Введение

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

Постоянный прогресс в развитии компьютерных технологий определяет необходимость появления разных новых знаковых систем для записи алгоритмов, то есть языков программирования. Смысл появления такого языка заключается в оснащенном наборе вычислительных формул дополнительной информации, который превращает в алгоритм данный набор. Языкам программирования свойственны перекликающиеся между собой две цели: во-первых, они дают программисту аппарат для установки действий, которые должны быть выполнены, а во-вторых, формируются концепции, которые используются программистом, в размышлениях о том, что делать. Ответ на первую цель - язык, столь «близкий к машине», что все ключевые машинные аспекты могут быть легко и просто использованы для программиста очевидным образом. Ответ по второй цели - идеальным можно считать язык, который так «близок к решаемой задаче», чтобы концепция её решения могла быть выражена коротко и прямо. Это обуславливает актуальность выбранной темы.

В наше время C++ считается господствующим языком, его применяют для разработки коммерческих программных продуктов. Однако, в последние годы это господство начало колебаться, так как аналогичные претензии были заявлены таким языком как Java, в то же время общественное мнение резонировало, и многие программисты, бросившие C++ ради Jаvа, все чаще возвращаются к прежней своей привязанности. При этом названные языки похожи.

Цель работы состоит в изучении истории возникновения и развития языков программирования Си (C++) и Java.

Для достижения установленной цели необходимо решить следующие задачи:

  • изучить литературу по заданной теме;
  • привести историю языков Си (C++) и Java;
  • рассмотреть развитие языков Си (C++) и Java;

Объектом исследования выступают языки программирования Си (C++) и Java.

Предметом исследования - история, структура, польза, потенциал таких языков программирования, как Си (C++) и Java.

Выполненная работа состоит из введения, двух глав, содержащих по два параграфа, заключения и списка литературы.


Глава 1. История возникновения и развития языка программирования C++

1.1. Возникновение и эволюция языка C++

Бьерн Страуструп разработчик языка С++ и создатель первого транслятора сотрудник AT&T Bell Laboratories в Мюррей Хилл (Нью-Джерси, США) научно-исследовательского вычислительного центра. Он получил звание магистра математики и вычислительной техники в университете г. Аарус (Дания), а в кэмбриджском университете (Англия) докторское звание по вычислительной технике. Его специализация - распределенные системы, операционные системы, моделирование и программирование. Он стал автором полного руководства по языку С++ - "Руководство по С++ с примечаниями" вместе с М. А. Эллис.

Определенно С++ многим обязан языку С, который сохраняется в качестве его подмножества. Также сохранены и все присущие С средства низкого уровня, которые предназначены для решения самых насущных задач системного программирования. С, также, многим обязан предшествующему языку BCPL. Комментарий языка BCPL был восстановлен в С++. Еще один источник вдохновения - это язык SIMULA-67; как раз из него заимствована концепция классов (c производными классами и виртуальными функциями). Возможности перегрузки операций и свободы размещения описаний всюду, где может встречаться оператор в С++, напоминают язык Алгол-68.

Предыдущие версии языка, которые назывались "С с классами", применялись с 1980 г. Данный язык возник, так как автору было необходимо написать программы моделирования, управляемые прерываниями. Язык SIMULA-67 для этого идеально подходит, если не рассматривать эффективность. Язык "С с классами" применялся для больших задач моделирования. Тогда подверглись строгой проверке возможности написания на нем программ, для которых ресурсы памяти и времени критичны. В данном языке недоставало перегрузки операций, ссылок, виртуальных функций и многих иных возможностей. В июле 1983 г. С++ впервые покинул пределы исследовательской группы, где работал автор, однако многие возможности С++ тогда еще не были разработаны.

Само название С++ (си плюс плюс), придумал Рик Маскитти летом 1983 г. Данное название как бы выделяет эволюционный прорыв в изменении языка С. Так как обозначение ++ описывает операцию наращивания С. Имя просто С+ представляет синтаксическую ошибку. Помимо этого, оно уже используется как название совершенно другого языка. Знатоки семантики С считают, что С++ слабее, чем ++С. Язык не назван D, так как он представляет расширение С, и в нем не предпринимается попыток решить какие-либо проблемы посредством отказа от возможностей С.


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

С дня выхода в свет первого издания данной книги язык С++ неоднократно был подвержен серьезным уточнениям и изменениям. Преимущественно это затрагивает разрешение неоднозначности при перегрузке, связывание и управление памятью. Также, были внесены несущественные изменения для увеличения совместимости с языком С. Также были введены некоторые обобщения и существенные расширения, как то: множественное наследование, функции-члены со спецификациями static и const, защищенные члены (protected), шаблоны типа и обработка особых ситуаций. Все названные расширения и доработки были нацелены на то, чтобы С++ стал языком, на котором можно создавать и использовать библиотеки.

Иные расширения, которые были введены в период 1985-1991 г.г. (такие как множественное наследование, статические функции-члены и чистые виртуальные функции), вероятнее появились как результат обобщения опыта программирования на С++, нежели были почерпнуты из иных языков.

Сделанные расширения языка за указанные шесть лет, прежде всего, были нацелены на рост выразительности С++ в качестве языка абстракции данных и объектно-ориентированного программирования вообще, и как средства для создания высококачественных библиотек в частности с пользовательскими типами данных.

Примерно в 1987 г. стало понятно, что работа по стандартизации С++ необходима и что нужно незамедлительно создавать основу для нее.

Основной вклад в эту работу внесла компания AT&T Bell Laboratories. Около сотни представителей из порядка двух десятков организаций изучали и комментировали то, что стало современной версией справочного руководства и исходными материалами для ANSI по стандартизации. С++. Как следствие, по инициативе компании Hewlett-Packard в декабре 1989 г. в составе ANSI был сформирован комитет X3J16. Прогнозируется, что работы по стандартизации С++ в ANSI (американский стандарт) станут составной частью работ по стандартизации силами ISO (Международной организации по стандартизации).


С++ развивался одновременно со становлением некоторых фундаментальных классов.

1.2. Структура и эффективность C++

С++ был развит на базе языка программирования C и сохраняет C как подмножество за очень немногими исключениями. Базовый язык, C подмножество С++, спроектирован таким образом, что сохраняется очень близкое соответствие между его типами, операторами и операциями, и компьютерными объектами, с которыми приходится иметь дело: символами, числами и адресами. Исключением выступают операции свободной памяти new и delete, отдельные операторы и выражения С++ как правило не нуждаются в скрытой поддержке во время выполнения или подпрограммах.

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

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

Особенное внимание, уделенное структуре в ходе разработки С++, отражается на росте масштаба программ, которые были написаны со времени разработки C. Небольшую программу (меньше 1000 строк) можно заставить работать при помощи грубой силы, даже обходя все правила хорошего стиля. Но это не совсем так для программ больших размеров. Если программа в 10 000 строк обладает плохой структурой, то можно заметить, что новые ошибки возникают так же быстро, как старые удаляются. С++ был разработан так, чтобы позволить структурировать большие программы разумным образом так, чтобы для одного человека не было невозможным справляться с программами в 25 000 строк. Существуют и программы куда больших размеров, однако работающие, в общем, как правило, состоят из большого количества практически независимых частей, размер каждой из них намного ниже определенных пределов. Как правило, сложность написания и поддержки программы также зависит и от сложности разработки, а не только от количества строк текста программы.


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

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

Глава 2. История возникновения и развития языка программирования Java

2.1. Возникновение и эволюция языка Java

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

Появлению языка Java предшествовала достаточно интересная история. В 1990 году разработчик ПО компании Sun Microsystems Патрик Нотон понял, что его тяготит необходимость осуществления поддержки сотни разных интерфейсов программ, применяемых в фирме, и уведомил исполнительного директора Sun Microsystems и своего друга Скотта МакНили о своем решении перейти работать в фирму NeXT. МакНили, попросил Нотона сформировать список причин такого недовольства и попробовать выдвинуть такое решение проблем, как если бы он мог исполнить все, что угодно.

Нотон, хоть и не особо рассчитывал, что кто-то в серьез обратит внимание на его письмо, все же выдвинул свои претензии, прямо раскритиковав недостатки Sun Microsystems, в том числе, разрабатываемую как раз в тот момент архитектуру ПО NeWS. К удивлению Нотона, его письмо имело оглушительный успех: его разослали всем ведущим инженерам Sun Microsystems, которые, в свою очередь, незамедлительно откликнулись и выказали одобрение и поддержку своему коллеге. Обращение также вызвало одобрение и у высшего руководства фирмы, а именно, у Билла Джоя, основателя Sun Microsystems, и Джеймса Гослинга (James Gosling), начальника Нотона.