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

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

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

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

Добавлен: 28.03.2023

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

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

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

Введение

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

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

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

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

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

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

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

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

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


Глава 1. Эволюция программирования

В настоящее время этап развития общества можно охарактеризовать как «информационный». Этот факт объясняется с информационным взрывом, характеризующимся следующими чертами [4]:

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

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

  • надежность;
  • безопасность;
  • удобство в использовании;
  • проверяемость.

Технологией программирования принято называть комплекс методов и средств, используемых в процессе разработки программного обеспечения. Развитие данной технологии будет рассматриваться в историческом контексте на базе основных этапов развития программирования, как самостоятельной науки [18].

1.1. Стихийное программирование

Начальный этап развития программирования по традиции принято называть стихийным. Продолжительность данного периода ограничивается моментом создания первых вычислительных машин и серединой 60-ых годов прошлого века. Первые компьютерные программы обладали простейшей структурой, представленной на рисунке 1 [6].

Программа

Рисунок 1 – Структура программы первого этапа развития программирования

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


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

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

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

Также не слишком обнадеживающие результаты показывали и аналитические обзоры и исследования, проводимые в последующие годы по всему миру ведущими аналитиками. Так, результаты исследований компаниеи Standish Group, которая проанализировала работу более трехсот американских корпораций и итоги выполнения более двадцати тысяч проектов, показали, что только 16,2% проектов были выполнены в срок, не выйдя за рамки установленного бюджета и воплотив все функции, оговоренные с заказчиком. Существенно нарушив сроки завершилось 52,7% проектов, при этом расходы на их разработку превысили рамки запланированного бюджета, а оговоренные функции не были реализованы в полном объеме. Полностью аннулированными до завершения оказались 31,1% проектов. Разработчики объяснили данные показатели следующими причинами:

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

Все это можно свести к несовершенству используемой технологии программирования. Разработка программ в то время велась по принципу «снизу-вверх» - сперва разрабатывались простейшие программы, а затем уже предпринимались попытки создать из них более сложную программу. Так большое количество ошибок согласования выявлялось уже на этапе сборки. В конечном счете на процессы отладки и тестирования программ уходило более 80% всего времени разработки. Таким образом, после анализа причин возникновения ошибок, был сформулирован новый подход к программированию, названный структурным [17].


1.2. Структурное программирование

Следующий этап развития технологии программирования приходится на период 60-70-ых гг. прошлого века и опирается на структурный подход. Главной идеей данного подхода является принцип декомпозиции сложных систем с целью последующей реализации в виде отдельных подпрограмм (см. рисунок 2).

Основная программа

1

2

N

Подпрограммы

Рисунок 2 – Структура программы второго этапа развития программирования

Поставленная задача представляется в виде иерархии подзадач простейшей структуры. Проектирование реализуется по принципу «сверху-вниз», который является базовым для процедурных языков программирования, примерами которых являются PL/1, Pascal, C.

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

Так получил свое развите комплекс инженерных средств и методов создания программного обеспечения, в дальнейшем получивших название «программной инженерии» (software engineering). Впервые данный термин был использован в качестве темы конференции, проводимой НАТО в 1968 г. В Вашингтоне состоялась первая международная конференция, посвященная программной инженерии в 1975 году. Данный период является первым этапом развития программной инженерии как самостоятельной науки. К ней принято относить стандартизацию и систематизацию процессов создания программного обеспечения.

Развитие структурирования данных потребовало дальнейшее увеличение сложности и размеров разрабатываемых программ. Так появилась и стала развиваться технология модульного программирования, связанная с созданием библиотек подпрограмм (см. рисунок 3).

Основная программа

Модуль 1

Подпрограммы с локальными данными

Модуль k

Подпрограммы с локальными данными

Модули с локальными данными и подпрограммами


Рисунок 3 – Структура программы, реализующей технологию модульного программирования

Данная технология подразумевает выделение групп подпрограмм, оперирующих одними и теми же глобальными переменными, в отдельно компилируемые модули. Эти модули принято называть библиотеками подпрограмм.

Подобный подход реализован в разных языках программирования, в качестве примеров могут быть названы новые версии языков C (C++), Pascal, Ada, Modula. С помощью модульного программирования могут разрабатываться надежные программы, размер которых не будет превышать сотни тысяч операторов.

Пропорционально росту объемов программных кодов увеличивалась и сложность межмодульных интерфейсов. Все сложнее становилось обеспечить взаимное влияние отдельных частей программы. Для разработки программ большого объема был предложен объектный подход [10].

1.3. Объектно-ориентированное программирование

Объектный подход к программированию – это третий этап (с середины 80‑х до конца 90‑х годов прошлого столетия). Этот этап стал вторым этапом развития программной инженерии, что стало предпосылкой к началу перехода к индустриальному (сборочному) способу разработки программ на базе объектно-ориентированного подхода. Объектно-ориентированным программированием принято называть технологию создания сложных программ, в основе которой лежит представление программы в виде комплекса некоторых объектов, каждый из которых является экземпляром определенного класса, а классы, выстраиваются в некоторую иерархию с наследованием свойств. Взаимодействие программных объектов между собой в такой системе реализуется посредством передачи сообщений (см. рисунок 4).

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

Сообщения

Объект 1

Подпрограммы с локальными данными

Объект 2

Подпрограммы с локальными данными