Файл: Классификация языков программирования высокого уровня (Классификация языков программирования).pdf
Добавлен: 25.04.2023
Просмотров: 350
Скачиваний: 2
ВВЕДЕНИЕ
Прогресс компьютерных технологий определил процесс появления и создания языков программирования. На заре появления компьютерных технологий все программы, алгоритмы писались на языке машинного кода и занимали большое количество времени. Компьютерная программа, записанная на машинном языке, состоит из машинных инструкций, каждая из которых представлена в виде двоичного кода. Машинный код - это примитивный язык программирования, который сейчас редко используется из за его громоздкости кода и трудоемкости ручного управления ресурсами процессора, за исключением моментов, когда требуется экстремальная оптимизация. Для ускорения, упрощения работы и разработки, человеком были созданы разные языки программирования и библиотеки к ним, каждый из которых хорошо справляется с рядом конкретных задач. Которые в последствии компилятором переводятся в машинный код. Сам машинный код называют нативным или же родным. Можно сказать что человек еще до начала создания первых ЭВМ создавал устройства, которые с долей условности можно назвать программируемыми и это стало одним из основных двигателей мирового прогресса. Выбирая источники для курсовой работы я старался выделить самых опытных специалистов в IT-сфере из своих знакомых, которые активно следят за происходящим в IT-технологиях и работают в этой сфере ,в дальнейшем выбирал статьи под их руководством.
1.Классификация языков программирования
1.1 Машинно-ориентированные языки
Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно – ориентированные языки позволяют использовать все возможности и особенности Машинно – зависимых языков:
высокое качество создаваемых программ (компактность и скорость выполнения);
возможность использования определенных аппаратных возможностей;
очевидность объектного кода и заказов памяти;
для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
трудоемкость процесса составления программ ( особенно на машинных языках и языках символического кодирования), плохо защищенного от появления ошибок;
низкая скорость программирования;
невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов в связи с различной архитектурой.
- Разработан целый ряд языков, которые по степени близости к машинному языку принято делить на две группы: низкого и высокого уровня. К языкам низкого уровня относятся мнемокоды и макроязыки. Мнемокоды отличаются от машинного языка тем, что цифровые коды заменены мнемоническими (буквы и цифры) обозначениями. Макроязык, кроме того, содержит макрокоманды, которые соответствуют группе машинных команд. При этом программист может эффективно реализовать потенциальные возможности ЭВМ.
- https://infourok.ru/assembler-kak-mashinnoorientirovanniy-yazik-programmirovaniya-1622020.html)
Возможности машинно-ориентированного языка определяются свойствами соответствующей ЭВМ и структурой команд ее центрального процессора. Программа, записанная на каком-либо языке программирования, называется исходным модулем, который должен быть преобразован в машинный код. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка.
Простейшими Машинно-ориентированными языками являются ассемблер, который является символическим представлением машинного языка. Когда-то ассемблер был языком, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Постепенно ситуация менялась. Ассемблеры, полностью сохраняя структуру машинной программы, позволяют использовать символические обозначения для команд и адресов памяти, а также собирать программы из нескольких отдельно написанных кусков.
Дополнительные возможности по текстовым подстановкам и другим простым преобразованиям при сборке программного текста предоставляются макроассемблерами. Машинно-ориентированными языкам высокого уровня, аналогично универсальным языкам, имеют фразовую структуру, допуская составные объекты и определяемые операции, однако содержат дополнительно средства описания элементарных объектов и базовых операций в терминах машинных конструкций. Так что об ассемблере можно сказать, что он позволяет разрабатывать наиболее эффективные программы с минимальным временем счета и наиболее полно использовать технические возможности ПК, но при этом процесс составления программы является трудоемким и требует определенных знаний аппаратной части ЭВМ.
- https://dic.academic.ru/dic.nsf/enc_mathematics/3066/%D0%9C%D0%90%D0%A8%D0%98%D0%9D%D0%9D%D0%9E)
Так что судя из этого мы можем сказать что машинно-ориентированные языки низкого уровня имеют большое количество как плюсов так и минусов, основной их минус по моему мнению это то что одну и ту же программу написанную на ЭВМ с одной архитектурой ,не представляется возможным легко и без изменений перенести на другую ЭВМ, в отличие от языков программирования высокого уровня ,имеют большую точность и простоту инструкций к используемому оборудованию.
К машинно-ориентированным языкам высокого уровня можно отнести такие языки как С++, Java, Pascal, Delphi и др. Высокоуровневые языки разработаны для быстроты и удобства использования программистами, использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием. Но эта особенность не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков.
Так же каждый из языков программирования высокого уровня лучше всего справляется с разным списком задач, С++ как считают многие очень сложный в усвоении язык, но и после обучения отдача у него тоже высокая ,высокая скорость программирования, более широкий спектр применений, это язык который можно сказать даёт полный контроль над железом. Язык Java второй по популярности язык программирования в мире, который применяется так же широко, как C++, но не имеет большинства его недостатков. Java – это и разработка больших высоконагруженных продуктов для больших транснациональных компании, и небольшие приложения и игры для Android. Правда, и цена за эти преимущества достаточно высока: для изучения Java вам потребуется гораздо больше времени и усилий, чем для изучения того же PHP. Но и отдача будет высокой.
(3. https://studopedia.org/6-8939.html)
1.2 Машинные языки
Машинный язык, язык программирования, содержание и правила которого реализованы аппаратными средствами цифровых вычислительных машин. Машинный язык состоит из системы команд цифровых вычислительных машин и метода кодирования информации (исходных данных, результатов вычислений), принятого в цифровых вычислительных машин. Символами машинного языка являются двоичные цифры; как правило, символы группируются в конструкции (морфемы) — адреса в командах, коды операций и признаки команд; из команд составляются программы, реализующие алгоритмы задач. Эффективность решения различных задач на цифровых вычислительных машинах в значительной степени зависит от того, насколько машинный язык приспособлен для реализации заданных алгоритмов. В программе, составленной на машинном языке, или, как иногда говорят, в машинном коде, должны быть заданы вполне определённые инструкции для выполнения каждого действия. При этом точно указывается, где должны храниться числа (ячейка запоминающего устройства), как отправлять и обрабатывать числа и где хранить результаты вычислений. Программирование на машинном языке ведётся в системе команд цифровых вычислительных машин, поэтому машинный язык рекомендуется использовать для создания программ (операционные системы, трансляторы алгоритмических языков, библиотеки стандартных программ), расширяющих логические возможности цифровых вычислительных машин, и для создания программ, на которые наложены ограничения по времени выполнения и объёму памяти цифровых вычислительных машин. Недостатки программирования на машинном языке:
-программы, написанные для машин одного типа, не годятся для использования машин другого типа;
-длительное время обучения программистов;
-программист, научившийся кодить на одной машине, должен с нуля переучиваться при переходе к кодированию на другой машине.
Однако, некоторые семейства электронно-вычислительных машин имеют единый машинный код для электронно-вычислительных машин различной мощности. В инструкции любого из них сообщается информация о местонахождении данных и типе выполняемой операции. В новых моделях ЭВМ намечается стремление к повышению внутренних языков машинно – аппаратным путем выполнять более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования. Машинный язык является командным языком программирования.
Один из путей машинного развития — приближение машинного языка к языкам высшего уровня тем самым упрощая перевод команд в инструкции понятные машине.
Машинный код можно рассматривать как самое низкоуровневое представление скомпилированной или собранной компьютерной программы или в качестве простейшего и аппаратно-зависимого языка программирования. Писать программы естественно в самом машинном коде возможно, однако это утомительно и склонно к ошибкам. Практически все компьютерные программы сегодня написаны на языках более высокого уровня или ассемблере. Изначальный код после этого переводится в исполняемый машинный код с помощью таких утилит, как интерпретаторы, компиляторы, ассемблеры, и/или линкеры.
- https://www.booksite.ru/fulltext/1/001/008/074/635.htm)
1.3. Языки символического кодирования
Продолжим рассказ о командных языках, языки символического кодирования , так же, как и машинный язык , являются командными. Как бы то ни было коды операций и адреса в машинных командах, демонстрирующие собой набор из двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в языках символического кодирования заменены на символы (идентификаторы). Форма написания, которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ.
Использование символических адресов – первый шаг к созданию ЯСК . Команды ЭВМ вместо истинных (физических) адресов содержат символические адреса. По результатам составленной программы определяется требуемое количество ячеек для хранения исходных промежуточных и результирующих значений. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным программистом или специальной программой, что в значительной степени облегчает труд программиста. Обозначения отдельных элементов программы представляют собой наборы знаков, определяющих наименования элементов. Целесообразно выбирать наименования так, чтобы они мнемонически отображали представляемый элемент. Обозначения могут быть простыми и составными в виде суммы или разности нескольких составляющих. В качестве операндов можно указывать не только обозначения элементов, но и сами значения этих элементов, представляющих собой числа или текстовые константы.
Операнд, указанный таким образом, называется “литералом”.
- Костюк В.И. Основы построения автоматизированных систем управления Стр. 215)
Программа на языке символического кодирования представляет собой последовательность операторов. К основным относятся операторы:
- описания элементов программы;
- распределения памяти;
- соответствующие команды ЭВМ;
- управления последовательностью;
- обмена с внешними устройствами;
- специального назначения, в частности,для выдачи указаний транслятору;
Программирование на языке символического кодирования соответствует программированию в условных адресах в системе команд машины. Однако символическое кодирование имеет следующие преимущества по сравнению с программированием в машинных командах:
- автоматическое распределение памяти и формирование адресов;
- выражение кодов операций и операндов в мнемонической форме;
- возможность внесения изменений в программу добавлением, изъятием или заменой некоторых операторов без изменения других частей программы;
Для облегчения программирования создаются системы более крупных программных элементов – блоков, дополняющих и расширяющих традиционные системы команд. Стандартные программы как раз и представляют собой форму организации таких элементов.
При необходимости программист использует стандартную программу исходя из инструкции обращения к ней. Один из наиболее совершенных способов обращения – это представление стандартных программ в виде макрокоманд, служащих естественным расширением системы машинных команд. При этом каждая программа получает свое имя, как это делается при введении мнемонических обозначений для обычных машинных операций.
Язык символического кодирования расширяется введением в него символов новых операций – имен соответствующих стандартных программ, называемых макрокомандами.
- Бородин А.И. Основы алгоритмизации и программирования на ЭВМ стр. 55)
1.4. Автокоды
Языки, включающие в себя все возможности ЯСК , посредством расширенного введения макрокоманд - они называются Автокоды .
В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования , доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием . В постановочной системе содержатся «остовы» - серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу.В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию.