Файл: Классификация языков программирования высокого уровня (Предпосылки развития современных средств программирования).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

ВВЕДЕНИЕ

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

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

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

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

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

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

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


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

Предмет исследования: особенности практического использования языков программирования высокого уровня.

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

Задачи исследования:

1. Анализ специфики исторического развития языков программирования высокого уровня.

2. Анализ языков написания программного кода.

3. Анализ особенностей классификации высокоуровневых языков программирования.

4. Разработка программного обеспечения с помощью языка C#.

5. Описание структуры проекта и интерфейса пользователя разработанного программного продукта.

ГЛАВА 1. ИСТОРИЧЕСКОЕ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

1.1. Предпосылки развития современных средств программирования

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

Принято полагать, что начало развития информатики положено В. Шикардом в 1623 году, когда он создал машину, позволяющую осуществлять сложение и вычитание чисел. Однако, первым полноценным арифмометром, стала модель знаменитого француза Б.Паскаля. Основным элементом в нем было зубчатое колесо [13].

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


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

Аналитическая машина, проект которой разработал Бебидж, послужила механическим прототипом первых электронно-вычислительных машин (ЭВМ). В ней закладывался принцип совместной работы пяти основных модулей: арифметического, запоминающего, управляющего, ввода и вывода. Программа записывалась на листка - перфокартах, исходные данные и результаты полученных вычислений также располагались на данном носителе информации. Ключевой особенностью данной машины является программный принцип работы. Он состоит в том, что программа вычислений размещается в памяти ЭВМ и хранится, а исполняемые команды программы также выражены в числовом коде [19].

Идеи Ч.Бэббиджа развивались и использовались рядом других ученых. В частности, в 1890 году Г. Холлерит разработал машину, которая могла работать с данными, представленными в виде таблиц. Данная разработка также управлялась программой, располагаемой на перфокартах и широко применялась для автоматизации проведения переписи населения в 1890 году. Уже в 1896 году ученый основал компанию, ставшую в последствии родителем корпорации IBM.

Не смотря на то, что использованная Бэббиджем реализация данной мысли на базе перфокарт, которые в свое время были придуманы изобретателем из Франции Мари-Жаккаром, технически давно устарела и имеет мало общего с современными методами обеспечения хранения данных в электронных вычислительных машинах (ЭВМ), концептуальный принцип остался прежним. Можно утверждать, что с данного момента ведет свой отсчет эра программирования [11].

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

Принципиальным этапом в развитии языков программирования явилось создание системы кодирования команд ЭВМ посредством использования специальных символов.

Данная схема была предложена сотрудником Пенсильванского университета – Моучли.

В процессе работы на ЭВМ «Марк-1» последовательница Моучли - Хоппер столкнулась с многими техническими проблемами управления данными, однако, эксперименты Хоппер и ее команды способствовали развитию методов решения существующих проблем (например, были разработаны концепции использования подпрограмм).


Также, Хоппер, совместно с коллегами впервые ввела такое понятие осуществления техники программирования как программная отладка. Необходимость в разработке такого механизма возникла еще в 1945 году, когда произошла аварийная остановка работы ЭВМ «Марк-1».

В процессе диагностики была выявлена неисправность одного из управляющих реле, работа которого была заблокирована бабочкой-мотыльком (bug) [7].

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

В конце 40-х годов 20 века машинный код являлся, фактически, единственным способом организации взаимодействия человека-пользователя с ЭВМ. Важнейшим достижением разработчиков языков программирования тех времен являлась реализация алгоритмов и механизмов использования ЭВМ для автоматической интерпретации языка программирования в машинный код.

В 1949 году, некий Моучли разработал информационную систему, которую назвал «Short Code». Фактически, данная система представляла собой один из первых высокоуровневых языков программирования. Данная система предоставляла возможности описания задачи в виде перечня различных математических формул, после чего, на базе использования специальной таблицы соответствия, производился перевод символов формул в необходимые двухлитерные коды [11].

После этого специальный программный модуль конвертировал полученные коды непосредственно в машинный двоичный код. Фактически, данная система являлась первым примитивным интерпретатором программного кода.

В середине 1951 года, широко известной в научных кругах Хоппер был разработан первый компилятор, который позволял осуществлять функции по объединению заданных команд и поддерживал организацию подпрограмм в процессе трансляции кода [19].

На базе этих возможностей обеспечивалось выделение отдельных фрагментов памяти ЭВМ и осуществлялось преобразование программных команд (тогда их называли псевдокодом) непосредственно в машинный код. Общая структура ЭВМ приведена на рис.1.

Рисунок 1 – Общая структура ЭВМ

1.2. Обзор этапа создания первых языков программирования


Уже в 1954 году команда Хоппер реализовала систему, которая одновременно интегрировала компилятор и язык программирования, которую назвали MATH-MATIC. Затем была поставлена задача реализовать подобную систему, которая поддерживала бы написание программ на близком к родному, английскому, языку исследователей команды Хоппер. Таким образов в 1958 году появился язык программирования и компилятор, который поддерживал написание программ в таком виде, его назвали FLOW-MATIC.

Данный язык программирования стал первым языком, который получил применение в решении задач обработки различных коммерческих данных. Развитие данного языка привело к разработке популярного в свое время бизнес-ориентированного зыка COBOL - Common Business Oriented Language. Существенный вклад в разработку данного языка сделала также команда Хоппер [2].

Пример структуры проекта на языке COBOL в консольном окне приведена на рис.2.

Рисунок 2 Пример структуры проекта на языке COBOL

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

Разрабатываются и выводятся на коммерческий и научный рынок языки программирования более совершенного типа, которые используются в качестве своеобразного посредника между ЭВМ и программистом [1].

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

Рисунок 3 – Пример кода на FORTRAN

По степени детализации алгоритма языки программирования в настоящее время делятся на [16]:

  • Низкоуровневые - языки программирования, близкие к программированию в машинных кодах, на базе использования виртуального или реального вычислительного процессора. При обозначении низкоуровневых команд часто используется мнемонические методы и механизмы. Это делает возможным оперировать командами не в виде последовательностей единиц и нулей, а в форме смысловых сокращений слов, используемых в естественных языках. Примером языка такого типа является ассемблер, представляющий собой целый спектр групп языков, реализованных для разных архитектур, т.к. для одного процессора может существовать несколько видов ассемблера. Они могут быть идентичными в машинных командах, однако, часто различаются макросами и директивами.
  • Высокоуровневые (C#, Java)– языки, которые разработаны для обеспечения платформенной независимости создаваемых алгоритмов. В данном случае имеется в вижу, что различные платформенные зависимости перекладываются на программы-трансляторы, которые осуществляют компиляцию текста, который создан на высокоуровневом языке, к виду машинных инструкции (команд). С этим связана необходимость разработки уникальных трансляторов высокоуровневого языка для каждой платформы.
  • Сверх высокоуровневые (Алгол-68) — языки, обладающие еще большим уровнем абстракции, чем высокоуровневые языки программирования, в связи с чем их используют для разработки и решения специфических предметно-ориентированных приложений и задач. В таких языках программирования часто реализован синтаксис, не используемый в других языках. В сверх высокоуровневых языках не описывают детали реализации («как делать»), реализуется концепция (принцип «что делать»).