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

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

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

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

Добавлен: 30.03.2023

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

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

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

2 СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

2.1 Языки программирования

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

  • машинные языки (языки программирования низкого уровня);
  • машинно-ориентированные языки (языки ассемблера);
  • машинно-независимые языки (языки программирования высокого уровня).

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

Типичная система команд процессора состоит из следующих типов инструкций:

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

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

Пример программы в машинных кодах представлен на рисунке 6.

Рисунок 6 – Программа в машинных кодах


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

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

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

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

Фрагмент программы на ассемблере представлен на рисунке 7.

Рисунок 7 – Пример программы на ассемблере

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


По заказу фирмы IBM под руководством Джона Бэкуса был разработан алгоритмический язык программирования FORTRAN (FORmula TRANslator). Появление языка FORTRAN, давшего программистам возможность записи вычислительных алгоритма с использованием условных операторов и операторов ввода - вывода, стало началом отсчета эры алгоритмических языков программирования.

Пример программы, записанной на языке программирования высокого уровня, представлен на рисунке 8.

Рисунок 8 – Программа на языке программирования высокого уровня Pascal

Языки программирования высокого уровня выполняют задачу налаживания связи между программистом и компьютером, а также между программистами.

К языкам программирования высокого уровня установлены следующие требования:

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

Условно соотношение уровней языков программирования представлено на рисунке 9.

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

2.2 Языки программирования высокого уровня

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

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

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


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

Есть два основных способа реализации языка:

  • компиляторы;
  • интерпретаторы.

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

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

Разницу между компилятором и интерпретатором можно сравнить с разницей между письменным переводом текста и синхронным переводом устной речи.

Любой язык программирования высокого уровня может иметь как компилятор, так и интерпретатор, но у большинства языков выделяют предпочтительный способ трансляции. Например, для языков программирования высокого уровня Fortran, Pascal, Modula-2 практически всегда используют компилятор. Logo почти всегда интерпретируется. Для Basic и Lisp широко используют обе формы трансляции.

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

Специализация некоторых языков программирования высокого уровня представлена в таблице 1.

Таблица 1 – Специализация языков программирования высокого уровня

3 ИСТОРИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ C(C++) И Java

3.1 Рейтинг популярности языков программирования

Для определения популярности языка программирования многие специалисты обращаются к рейтингу TIOBE. Индекс TIOBE – programming community index – индекс, оценивающий популярность языков программирования, на основе подсчета результатов поисковых запросов, содержащих название языка. Логика этого индекса очень проста: «Если язык ищут в поисковых системах, то он популярен». С таким подходом можно спорить, но многие профессионалы считают, что он довольно точно отражает картину на рынке языков программирования и чувствителен к часто появляющимся новинкам.


Рейтинг печатается ежемесячно и включает позиционирование языков программирования, вошедших в первую двадцатку на текущий месяц и на тот же период прошлого года. Рейтинг TIOBE за июля 2020 года представлен на рисунке 10.

Анализ рейтинга показывает, что в течение последнего года языки программирования C и Java делили две первые позиции, попеременно уступая один другому первую строку популярности, в целом показывая и количественный рост процента востребованности.

Также можно отметить и то, что производные языка программирования C++ и C# по-прежнему популярны и прочно занимают в рейтинге TIOBE 4 - 5 строки.

Ретроспектива рейтинга популярности с пятилетним шагом (рисунок 11) демонстрирует незыблемые позиции языка программирования C, популярность его производных C++ и C#.

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

Рисунок 10 – Индекс TIOBE на июль 2020 года

Рисунок 11 – Ретроспектива популярности языков программирования

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

3.2 История появления и развития языка программирования C(C++)

Язык программирования C – компилируемый статически типизированный язык программирования общего назначения.

Язык программирования C берет свое начало в одном из первых языков программирования высокого уровня ALGOL ( от англ. ALGOrithmic Language – алгоритмический язык). Алгол был разработан в 1958 году комитетом Европейских и Американских ученых в сфере компьютерных наук и явился попыткой исправления отдельных недостатков языка программирования FORTRAN.

Язык программирования С был разработан в стенах AT&T Bell Telephone Laboratories в период с 1969 по 1973 годы. Создателем языка программирования C считают сотрудника лаборатории Денниса Ритчи (рисунок 12). Целью создания языка, по словам разработчика, было удовлетворение потребности программистов, которые «хотят заниматься системным программированием, но не хотят учить ассемблер».

Рисунок 12 – Разработчик языка C Деннис Ритчи

В 1983 году утвержден стандарт языка программирования, получивший название ANSI C.