Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Языки Символического Кодирования).pdf
Добавлен: 30.03.2023
Просмотров: 232
Скачиваний: 1
Введение
Современный прогресс компьютерных технологий неумолим – каждый день слышно о новых гаджетах, суперкомпьютерах, их новых возможностях. Вместе с технологиями развиваются и знаковые системы для записи алгоритмов – языки программирования. В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения. Для продуктивной работы важно определить, какой язык более эффективно использовать под конкретную задачу.
Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько "близок к машине", что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько "близок к решаемой задаче", чтобы концепции ее решения можно было выражать прямо и коротко.
На современном этапе развития компьютерных технологий для свободной ориентации в информационных потоках современный специалист любого профиля должен уметь получать, обрабатывать и использовать информацию, прежде всего, с помощью компьютеров, а также новейших средств связи, в том числе и уметь обращаться с языками программирования.
Поэтому тема языков программирования, понимание среды их применения была, есть и будет актуальной.
Объектом курсовой работы были взяты несколько известных языков программирования и история их развития.
Цели курсовой работы:
- Рассмотреть классификацию, дать сравнительную характеристику языков программирования
- Провести сравнительный анализ нескольких языков программирования, историю их развития, дать аналитическую оценку
- Рассмотреть критерии выбора среды программирования
В курсовой работе использовалась информация из различных учебных пособий, официальных сайтов языков программирования, профильных сайтов.
Классификация языков программирования
Язык программирования – искусственный (формальный) язык, предназначенный для записи алгоритмов. Язык программирования реализуется в виде специальной программы: компилятора или интерпретатора.[1]
Разница между интерпретатором и компилятором аналогична разнице между переводчиком устной и письменной речи. Переводчик письменной речи сначала переводит весь текст на другой язык, и потом исходный текст нам уже не нужен, то есть мы пользуемся только переводом. Соответственно компилятор полностью переводит весь исходный текст программы на язык машинных команд, и затем полученный модуль используется без участия компилятора. Интерпретатор переводит на язык машинных команд отдельный оператор и этот оператор сразу выполняется. Затем переводится следующий оператор – выполняется и т.д. То есть сколько раз программа выполняется, столько же раз оно интерпретируется. Очевидно, что при этом и исходный текст программы. и интерпретатор должны находиться в оперативной памяти.[2]
В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и алгоритмический язык, только слова называют лексемами (элементарными конструкциями), словосочетания – выражениями, а предложения – операторами. Лексемы образуются из символов, выражения – из лексем и символов, а операторы – из символов, выражений и лексем.
Языки программирования можно классифицировать по разным параметрам.
Например, языки программирования можно разделять на поколения:
– языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения.
– языки второго поколения: с мнемоническим представлением команд, так называемые автокоды.
– языки третьего поколения: общего назначения, используемые для создания прикладных программ любого типа. Например, Бейсик, Кобол, Си и Паскаль.
– языки четвертого поколения: усовершенствованные, разработанные для создания специальных прикладных программ, для управления базами данных.
– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП (используется для построения программ с использованием методов искусственного интеллекта), С++, Visual Basic, Delphi.[3]
Также существующие языки программирования можно разделить на две группы: процедурные и непроцедурные.
Процедурные (алгоритмические) программы представляют собой систему предписаний для решения конкретной задачи. Роль компьютера сводится к механическому выполнению этих предписаний.
Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу. Так и необходимых для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполненные, прежде чем переходить к какому-либо действию.[4]
По наиболее распространенной классификации все языки программирования, в соответствии с тем, в каких терминах необходимо описать задачу, делят на языки низкого и высокого уровня.
Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам – языком низкого уровня.[5]
Языки программирования низкого уровня
К языкам низкого уровня относятся языки ассемблера (от англ. To assemble – собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначения, а вместо двоичных адресов данных, используемых при выполнении команды, - символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называются мнемокодом или автокодом. [6]
Программу, написанную на ассемблере, переводит специальная программа-транслятор, заменяя каждую ассемблерную команду на соответствующий двоичный код. Набор полученных кодов полностью соответствует исходному набору ассемблерных команд, он может быть непосредственно загружен в память машины и выполнен процессором. Однако, поскольку каждый процессор использует только свой набор кодов, такая программа не может быть непосредственно выполнена на машине с другим типом процессора.[7]
Все языки низкого уровня ориентированы на определенный тип компьютера, т.е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). [8]
Машинно-ориентированные языки позволяют использовать все возможности и особенности Машинно-зависимых языков:
- высокое качество создаваемых программ (компактность и скорость выполнения);
- возможность использования конкретных аппаратных ресурсов;
- предсказуемость объектного кода и заказов памяти;
- для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
- трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;
- низкая скорость программирования;
- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.
Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы:
-
Машинный язык
Машинный код или машинный язык представляет собой набор инструкций, выполняемых непосредственно центральным процессором компьютера. Каждая команда выполняет очень конкретную задачу, например, загрузки, перехода или элементарной арифметической или логической операции для единицы данных в регистре процессора или памяти. Каждая программа выполняется непосредственно процессором и состоит из ряда таких инструкций.
Машинный код можно рассматривать как самое низкоуровневое представление скомпилированной или собранной компьютерной программы или в качестве примитивного и аппаратно-зависимого языка программирования. Писать программы непосредственно в машинном коде возможно, однако это утомительно и подвержено ошибкам, так как необходимо управлять отдельными битами и вычислять числовые адреса и константы вручную. По этой причине машинный код практически не используется для написания программ.[9]
Отдельный компьютер имеет свой определенный Машинный язык, ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому Машинный язык является командным. Однако, некоторые семейства ЭВМ имеют единый Машинный язык для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции.
В новых моделях ЭВМ намечается тенденция к повышению внутренних языков машинно-аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования.[10]
-
Языки Символического Кодирования
Языки Символического Кодирования, так же, как и Машинный язык, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в Языке символического кодирования заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ.
Использование символических адресов - первый шаг к созданию Языка символического кодирования. Команды ЭВМ вместо истинных (физических) адресов содержат символические адреса. По результатам составленной программы определяется требуемое количество ячеек для хранения исходных промежуточных и результирующих значений. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным программистом или специальной программой, что в значительной степени облегчает труд программиста.
-
Автокоды
Есть также языки, включающие в себя все возможности Языка символического кодирования, посредством расширенного введения макрокоманд - они называются Автокоды.[11]
Программировать на машинном языке сложно. Одна из причин этого - цифровая форма записи команд и данных, для людей более привычны символьные обозначения. И уже давно придумали средство, упрощающее составление машинных программ. Это язык ассемблера (другое название – автокод), представляющий собой фактически символьную форму записи машинного языка: в нем вместо цифровых кодов операций выписывают привычные знаки операций или их словесные названия. Вместо адресов – имена, а константы записывают в десятичной системе.[12]
В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями - расстановкой и генерированием. В постановочной системе содержатся "остовы" - серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в "остов" программы, превращая её в реальную машинную программу.
В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию.
Обе указанных системы используют трансляторы с языка символического кодирования и набор макрокоманд, которые также являются операторами автокода. [13]