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

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

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

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

Добавлен: 01.04.2023

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

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

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

Введение

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

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

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

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

Цель работы: Изучить историю возникновения и развития языка программирования С++ и Java. Для того, чтобы достигнуть эту цель необходимо было решить такие задачи:

  1. Изучить источники информации по теме;
  2. Узнать историю языков Си и Java;
  3. Рассмотреть развитие языков Си и Java;

Объект исследования: Языки программирования Си и Java.

Предмет исследования: История, структура, польза, потенциал таких языков программирования, как Си и Java.

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

История возникновения и развития языка программирования С++

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

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


Несомненно , обязан языку , который сохраняется, являясь его подмножеством. Сохраняются и все свойственные средства низкого уровня, которые предназначены для того, чтобы решить самые насущные задачи в системном программировании. , в свою очередь, обязан многим своему предшественнику языку . Комментарий языка восстановлен в . Еще один из источников вдохновения является язык , так как именно из него заимствуется концепция классов (совместно c производными классами и виртуальными функциями). Возможность в выполнять перегрузки операций и свобода размещения описаний всюду, где встречается оператор, при этом напоминает язык Алгол-68 [4].

Наиболее ранние версии языка, которые носят название « с классами», были использованы, начиная с 1980 г. Данный язык смог возникнуть потому, что автору необходимо было написать программы моделирования, которые управляются прерываниями. Язык является идеально подходящим для этого, если не учитывать эффективность. Язык « с классами» был использован для решения больших задач в моделировании. Строгая проверка была в возможности написания на нем программ, для которых являются критичными ресурсы памяти и времени. В этом языке не хватало перегрузки ссылок, операций, виртуальных функций и множества других возможностей. Впервые выходит за пределы исследовательской группы, в которой работал автор, в июле 1983 г., но тогда множество из возможностей не были еще разработаны.

Название (си плюс плюс) придумал Рик Маскитти летом в 1983 г. Данное название смогло отразить эволюционный характер в изменениях языка . Обозначение означает операцию наращивания . Если использовать немного короче имя , то это является синтаксической ошибкой. К тому же оно уже было использовано, как название совершенно другого языка. Знатоками семантики находят, что хуже, чем . Языком не получено названия , так как он является не чем иным как расширение , и при этом в нем нет попыток для того, чтобы решать какие-либо из проблем за счет того, что происходит отказ от возможностей .

Изначально задумывался, чтобы автор и его друзья не программировали на ассемблере, или других современных языках высокого уровня. Его основным предназначением является упрощение и сделать процесс программирования для отдельного взятого программиста наиболее приятным. До недавнего времени не было в планах разработки на бумаге. Проектирование, реализация и документация шли параллельно. Не существовало никогда «проекта » или «Комитета по разработке ». Соответственно язык развивался и развивается сейчас для того, чтобы было возможно преодолеть все проблемы, с которыми пользователи сталкиваются. Толчками к развитию являются и обсуждения автором с его друзьями и коллегами всех проблем языка [6].


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

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

За этот период расширения, которые были сделаны прежде всего направлялись на то, чтобы повысить выразительность , как язык абстракции данных и объектно-ориентированного программирования в общем, также как средства для того, чтобы создать высококачественные библиотеки с пользовательскими типами данных в частности [8].

Около 1987 г. стало понятно, что работа по стандартизации является неизбежной, и необходимо срочно создать основы для неё.

Фирмой AT&T Bell Laboratories был внесен в эту работу основной вклад. Порядка ста представителей из около 20 организаций изучали и комментировали то, что явилось современной версией в справочном руководстве и исходными материалами для ANSI по стандартизации . Таким образом, по инициативе фирмы Hewlett-Packard в декабре 1989 г. в составе ANSI образовался комитет X3J16.

Во время разработки языка один из важных критериев являлся простота. Когда возникал вопрос, а что возможно упростить: руководство по языку и какую-либо другую документацию или транслятор, то выбрали первое. Совместимости с языком придавалось огромное значение, что затруднило удалить его синтаксис.

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

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


Язык был спроектирован для того, чтобы можно было использовать его в довольно традиционной среде, а именно: в системе программирования операционной системы . Но существуют вполне обоснованные доводы для того, чтобы использовать в более богатой программной среде. Такие возможности, как развитые системы трансляции, динамическая загрузка и базы данных для того, чтобы хранить определения типов, возможно успешно использовать не причиняя ущерб языку [9].

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

Структура и эффективность

Язык программирования был задуман как язык, который будет:

  • Лучше языка ;
  • Поддерживать абстракцию данных;
  • Поддерживать объектно-ориентированное программирование.

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

Ключевое понятие – это класс. Классом называется тип, определяемый пользователем. Посредством классов происходит упрятывание данных, их инициализацию, динамическое задание типов, неявное преобразование пользовательских типов, контролируемое пользователем управление памятью и средства для того, чтобы перегрузить операции. В языке концепции контроля типов и модульного построения программ реализуются более полноценно нежели в . Помимо этого содержит усовершенствования, которые напрямую с классами не связаны: функции-подстановки, перегрузка имен функций, символические константы, стандартные значения параметров функций, операции управления свободной памятью и ссылочный тип. В сохраняются все возможности , которые обеспечивают эффективную работу с основными объектами и при этом отражают аппаратную «реальность» (байты, слова, разряды, адреса и т.д.). Что помогает очень эффективно реализовать пользовательские типы.


Объектно-ориентированным программированием является метод программирования, способ написания «хороших» программ для многих задач. Данный термин носит какой-то смысл, то он должен подразумевать: такой язык программирования, предоставляющий хорошие возможности для того, чтобы был возможен объектно-ориентированный стиль в программировании.

Нет понятия, что один из языков лучше, чем другой лишь потому, что в нем присутствуют возможности, которые отсутствуют в другом. Порой бывает всё наоборот. Наиболее важным является не то, какие возможности присущи языку, а то, насколько возможности, которые имеются в нем, поддерживают выбранный стиль программирования для определённых задач [5].

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

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

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

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

Если не вводится в язык возможность низкого уровня, то поэтому придется для основных задач из большинства областей приложения использовать некоторые языки низкого уровня, к примеру или ассемблер. Но был спроектирован на расчет, что в нём возможно все сделать, что допустимо на , при этом не увеличивая время на его выполнения. Вообще, был спроектирован, исходя из принципа, что не должны возникать никакие дополнительные затраты памяти и времени.