Прежде чем идти дальше, нужно разобраться, как же программный код написанный на разных языках понимают компьютеры или мобильные устройства.
Действительно, процессоры этих устройств не понимают компьютерные языки, так как работают с специальными командами, называемыми машинный код или машинный язык.
Машинный код (платформенно-ориентированный код), машинный язык — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины.
Пример машинного кода, с которым работает процессор
В зависимости от того, насколько языки программирования близки к машинному коду, их разделяют на:
Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального процессора.
Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка.
Общие сведения о языке программирования Паскаль | Информатика 8 класс #21 | Инфоурок
Assembly — единственный современный низкоуровневый язык программирования, который широко используется.
Программа на Assembly «собирается» на специальной программе — Assembler. Язык своеобразный и очень сложный.
Пример машинного кода, с которым работает процессор
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания. Высокоуровневые языки программирования были разработаны для платформенной независимости сути алгоритмов.
Чтобы перевести язык программирования в машинный код требуются специальные инструментальные программы трансляторы.
В зависимости от этих трансляторов языки программирования разделяются на компилируемые и интерпретируемые.
Компилируемый язык программирования — язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл с особым заголовком и/или расширением для последующей идентификации этого файла, как исполняемого операционной системой (в отличие от интерпретируемых языков программирования, чьи программы выполняются программой-интерпретатором). Выполнение преобразованного кода происходит на уровне центрального процессора.
Компилятор (compiler) — это инструментальная программа, которая производит перевод из исходного кода в машинный. Компиляторы, как правило, написаны или на языке Assembler, или на языке C.
Следующие языки принято считать компилируемыми: C, C++, Objective-C, Delphi, Go, Pascal, Swift
Языки компилируемые в байт-код: Java, Scala, Kotlin, Groovy, Clojure, C#, Visual Basic, Python, Erlang
Что такое формальные языки? Душкин объяснит
Интерпретируемый язык программирования — язык программирования, исходный код на котором выполняется методом интерпретации. Классифицируя языки программирования по способу исполнения, к группе интерпретируемых относят языки, в которых операторы программы друг за другом отдельно транслируются и сразу выполняются (интерпретируются) с помощью специальной программы-интерпретатора (что противопоставляется компилируемым языкам, в которых все операторы программы заранее оттранслированы в объектный код). Такой язык может реализовывать конструкции, позволяющие динамические изменения на этапе времени выполнения (модификация существовавших или создание новых подпрограмм). Эти конструкции затрудняют компиляцию и трансляцию на компилируемый язык.
Следующие языки принято считать интерпретируемыми: MATLAB, JavaScript, Lisp, Perl, PHP, R, Ruby
Классификация языков программирования на компилируемые и интерпретируемые является неточной и весьма условной, поскольку для любого языка программирования может быть создан как компилятор, так и интерпретатор.
И, в действительности, существует множество языков, инструментарий которых включает в себя и компилятор, и интерпретатор (напр. Ch и CINT для C или Lisp). Кроме того, существуют реализации языков, которые компилируют исходный текст программы в байт-код, который затем либо интерпретируется, либо выполняется т. н. JIT-компилятором (или виртуальной машиной). Это привносит ещё больше неясности в вопрос о том, где именно должна быть проведена граница между компилируемым языком и языком интерпретируемым.
Поэтому, для каждой платформы разрабатывается платформенно-уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на Java в элементарные команды микропроцессоров семейства x86.
Обычно, мы ассоциируем языки программирования с компьютерными языками , но это не однозначное соответствие. Понятие компьютерный язык (калька с англ. computer language), как правило, относится к языкам, ассоциируемым с компьютерной техникой.
К компьютерным языкам также относят:
Язык программирования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Со времени создания первых программируемых машин человечество придумало более восьми тысяч языков программирования (включая эзотерические, визуальные и игрушечные). Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты могут владеть десятком и более разных языков программирования.
Язык программирования предназначен для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и т. п. Язык программирования отличается от естественных языков тем, что предназначен для управления ЭВМ, в то время как естественные языки используются, прежде всего, для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Сценарный язык (язык сценариев, жарг. скриптовый язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами.
Согласно Джону Устерхауту, автору языка Tcl, высокоуровневые языки можно разделить на языки системного программирования (англ. system programming languages) и сценарные языки (англ. scripting languages). Последние он также назвал склеивающими языками (англ. glue languages) или языками системной интеграции (англ. system integration languages). Сценарии обычно интерпретируются, а не компилируются, хотя сценарные языки программирования один за другим обзаводятся JIT-компиляторами.
В более узком смысле под скриптовым языком может пониматься специализированный язык для расширения возможностей командной оболочки или текстового редактора и средств администрирования операционных систем.
Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — язык программирования, специализированный для конкретной области применения (в противоположность языку общего назначения[en], применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфику решаемых с его помощью задач. Является ключевым понятием языково-ориентированного программирования.
Строго говоря, деление языков программирования на языки общего назначения и предметно-ориентированные весьма условно, особенно, если учесть, что формально любой протокол или формат файлов является языком. Существует масса языков общего назначения, применяемых в качестве предметно-ориентированных для определённых задач, и наоборот, предметно-ориентированных языков, применяемых в качестве языков общего назначения. Так, язык ML, породивший целое семейство языков общего назначения (включая Haskell), — изначально разрабатывался в качестве DSL для системы автоматического доказательства теорем LCF[en]. Примером, показывающим условность классификации, служит язык БНФ (и компилятор с него Lex/Yacc): с одной стороны, это яркий пример метаязыка, с другой — он предназначен для одной конкретной задачи.
Псевдоестественный язык — компьютерный язык, конструкции которого намеренно сделаны похожими на конструкции естественного языка (английского, русского и т. д.)
Псевдоестестенные языки рассчитаны на неопытного пользователя. У некоторых псевдоестественных языков (например, SQL) лишь простейшие конструкции похожи на естественный язык; сложные запросы имеют явно «компьютерный» вид.
Синтаксис большинства псевдоестественных языков очень прост, что позволяет легко писать программу разбора языка.
Информационный язык — специализированный искусственный язык, используемый в различных системах обработки информации. От информационных языков следует отличать языки программирования, машинные языки и формализованные языки науки. Обычно различают:
· информационно-логический язык — язык для информационно-логических систем, в первую очередь — языки представления знаний (например SC, SCP, SCL) и языки баз данных (например SQL);
информационно-поисковый язык — знаковая система, предназначенная для описания (путём индексирования) основного смыслового содержания текстов (документов) или их частей, а также для выражения смыслового содержания информационных запросов с целью реализации информационного поиска. Примером информационно-поискового языка является язык библиографического описания, который служит средством идентификации текстов и используется в алфавитных каталогах, картотеках и библиографических указателях. В его составе — библиографические элементы (фамилии авторов, заглавия, названия учреждений, периодических изданий и им подобные). Другим примером информационно-поискового языка являются языки обращений к поисковым системам Yandex или Google.
Язык описания данных — Язык разметки
Следует отметить, что язык разметки неполон по Тьюрингу и обычно не считается языком программирования.
Языки разметки используются везде, где требуется получение форматированного текста на основании одного лишь текста: в типографии (SGML, TeX, PostScript, RTF), пользовательских интерфейсах компьютеров (Microsoft Word, OpenOffice, troff), Всемирной Сети (HTML, XHTML, XML, WML, VML, PGML, SVG, XBRL).
Для написания исходных текстов Википедии, её участники используют особый язык разметки (см. Википедия:Как править статьи), а для отображения сложных математических формул — язык TeX.
Язык спецификаций — формальный язык, предназначенный для декларативного описания структуры, связей, свойств данных и способов их преобразований, (в отличие от активных языков) без явного упоминания порядка выполняемых действий и использования конкретных значений данных.
В отличие от языков программирования, используемых при реализации компьютерных программ, языки спецификаций применяются для проведения системного анализа, анализа требований, разработке архитектуры создаваемых программных систем и формальной верификации программного обеспечения.
Различные языки спецификаций используются для описания структуры информационной системы, моделей предметной области и других задач, связанных с разработкой ПО и БД (UML, ERD, DFD) и могут иметь как текстовый, так и бинарный формат, а также графическое представление конструкций языка. Применяются они также для описания интерфейсов пользователя (XUL, XAML), шаблонов отчётов, преобразования документов, а также в качестве форматов передачи данных между приложениями в распределённых информационных системах (XML, JSON, CLEAR). Ещё одно применение языков спецификации — описание структур баз данных, а именно — декларативная часть SQL обычно называется Data Definition Language (DDL). При синтаксическом анализе и разборе (парсинге) применяются языки спецификаций, например, форма Бэкуса — Наура и ABNF (англ. augmented Backus-Naur form — расширенная форма Бэкуса — Наура) являются общепринятыми формальными языками спецификации сетевых протоколов и даже синтаксиса активных языков программирования; регулярные выражения аналогичны выше упомянутым нотациям, однако форма записи регулярных выражений в десятки раз компактнее, и хорошо разработаны алгоритмы парсинга с их помощью, а поддержка регулярных выражений осуществлена в подавляющем большинстве современных языков программирования.
Язык описания аппаратуры (HDL от англ. hardware description language) — специализированный компьютерный язык, используемый для описания структуры и поведения электронных схем, чаще всего цифровых логических схем.
Языки описания аппаратуры внешне похожи на такие языки программирования, как Си или Паскаль, написанные на них программы также состоят из выражений, операторов, управляющих структур. Важнейшим отличием между обычными языками программирования и языками HDL является явное включение концепции времени в языки описания аппаратуры.
Языки описания аппаратуры являются неотъемлемой частью САПР, особенно для таких сложных схем, как специализированные интегральные схемы, микропроцессоры и программируемые логические устройства.
Основные практически используемые языки описания аппаратуры — Verilog и VHDL; также существует несколько десятков альтернативных языков.
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.
· Стандартизированный протокол передачи данных также позволяет разрабатывать интерфейсы (уже на физическом уровне), не привязанные к конкретной аппаратной платформе и производителю (например, USB, Bluetooth).
Сигнальный протокол используется для управления соединением — например, установки, переадресации, разрыва связи. Примеры протоколов: RTSP, SIP. Для передачи данных используются такие протоколы как RTP.
Сетевой протокол — набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.
Разные протоколы зачастую описывают лишь разные стороны одного типа связи. Названия «протокол» и «стек протоколов» также указывают на программное обеспечение, которым реализуется протокол.
Новые протоколы для Интернета определяются IETF, а прочие протоколы — IEEE или ISO. ITU-T занимается телекоммуникационными протоколами и форматами.
Примеры сетевых протоколов
TCP/IP — набор протоколов передачи данных, получивший название от двух принадлежащих ему протоколов: TCP (англ. Transmission Control Protocol) и IP (англ. Internet Protocol)
Наиболее известные протоколы, используемые в сети Интернет:
HTTP (Hyper Text Transfer Protocol) — это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц между компьютерами, подключенными к одной сети.
FTP (File Transfer Protocol) — это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.
POP3 (Post Office Protocol) — это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.
SMTP (Simple Mail Transfer Protocol) — протокол, который задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.
TELNET — это протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ находящейся с ним в одной сети, как на своей собственной, то есть запускать программы, менять режим работы и так далее. На практике возможности ограничиваются тем уровнем доступа, который задан администратором удаленной машины.
Поддержите канал
Предлагается оценить степень твоей удовлетворённости каналом, по шкале от 1 до 5 . Где 5 – будет соответствовать вариант «полностью удовлетворён», а 1 – «не удовлетворён».
Источник: dzen.ru
21. Назначение и виды языков программирования. Составные компоненты системы программирования.
Язык программи́рования — формальный язык, предназначенный для записи компьютерных программ.
Языки программирования разделяются на две основные категории языки высокого уровня и языки низкого уровня :
§ Язык высокого уровня — Язык программирования, средства которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа, поэтому программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора либо интерпретатора. К языкам высокого уровня относят Фортран , ПЛ/1 , Бейсик , Паскаль , Си , Ада и др. Примеры: Python, Ruby, JavaScript, Common Lisp.
§ Язык низкого уровня — Язык программирования, предназначенный для определенного типа ЭВМ и отражающий его внутренний машинный код (“машинный язык “, “ машинно-ориентированный язык “ и “ язык ассемблера “). Примеры: C, C++, Assembler.
Системы программирования — это комплекс инструментальных программных средств, предназначенный для работы с программами на одном из языков программирования. Системы программирования предоставляют сервисные возможности программистам для разработки их собственных компьютерных программ.
В настоящее время разработка любого системного и прикладного программного обеспечения осуществляется с помощью систем программирования, в состав которых входят:
• трансляторы с языков высокого уровня;
• средства редактирования, компоновки и загрузки программ;
• макроассемблеры (машинно-ориентированные языки);
• отладчики машинных программ.
Системы программирования, как правило, включают в себя
• текстовый редактор (Edit), осуществляющий функции записи и редактирования исходного текста программы;
•загрузчик программ (Load), позволяющий выбрать из директория нужный текстовый файл программы;
• запускатель программ (Run), осуществляющий процесс выполнения программы;
• компилятор (Compile), предназначенный для компиляции или интерпретации исходного текста программы в машинный код с диагностикой синтаксических и семантических (логических) ошибок;
• отладчик (Debug), выполняющий сервисные функции по отладке и тестированию программы;
• диспетчер файлов (File), предоставляющий возможность выполнять операции с файлами: сохранение, поиск, уничтожение и т.п.
22. Назначение и классификация служебных программных средств.
- Диспетчеры файлов (файловые менеджеры). С их помощью выполняется большинство операций согласно обслуживанию файловой структуры копирования, перемещения, переименования файлов, создания каталогов (папок), уничтожения объектов, поиск файлов и навигация в файловой структуре. Базовые программные средства содержатся в составе программ системного уровня и устанавливаются вместе с операционной системой.
- Средства сжатие данное (архиваторы). Предназначенные для создания архивов. Архивные файлы имеют повышенную плотность записи информации и соответственно, эффективнее используются носители информации.
- Средства диагностики. Предназначенные для автоматизации процессов диагностирования программного и аппаратного обеспечения. Их используют для исправления ошибок и для оптимизации работы компьютерной системы.
- Программы инсталляции (установление). Предназначенные для контроля за добавлением в текущую программную конфигурацию нового программного обеспечения. Они следят за состоянием и изменением программной среды, фиксируют и протоколируют образования новых связей. Простые средства управления установлением и уничтожением программ содержатся в составе операционной системы, могут использоваться и дополнительные служебные программы.
- Средства коммуникации. Позволяют устанавливать комбинации с отдаленными компьютерами, передают известие электронной почтой, пересылают файловые сообщения и тому подобное.
- Средства пересмотра и воссоздания. Преимущественно для работы с файлами, их должны загрузить в «родную» прикладную систему и внести необходимые исправления.
- Средства компьютерной безопасности. К ним относятся виды пассивной и активной защиты данных их повреждения, несанкционированного доступа, пересмотра и изменения данных. Средства пассивной защиты — это служебные программы, предназначенные для резервного копирования. Средства активной защиты — антивирусное программное обеспечение. Для защиты данных от несанкционированного доступа, их пересмотра и изменения используют специальные системы.
Источник: studfile.net
Классификация языков программирования. Критерии выборы среды и языка разработки программ
Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования.
Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько «близок к машине», что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько «близок к решаемой задаче», чтобы концепции ее решения можно было выражать прямо и коротко.
На заре компьютеризации (в начале пятидесятых годов двадцатого века), машинный язык был единственным языком программирования, большего человек к тому времени не придумал. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (то есть немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят «исходный код» (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке.
Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Для правильного выбора языки программирования нужно классифицировать.
Цель написания данной курсовой работы – рассмотреть классификацию языков программирования и критерии выбора среды разработки программ.
Задачи написания курсовой работы
– раскрыть понятие языка программирования;
– рассмотреть способы классификации языков программирования;
– рассмотреть критерии выбора языка программирования.
Объект исследования курсовой работы – языки программирования.
Предмет исследования – способы классификации языков программирования.
Структура данной курсовой работы обусловлена целью и задачами. Курсовая работа состоит из введения, трех глав, заключения и списка использованной литературы.
1. Понятие языка программирования
Язык программирования – формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно – ЭВМ) под её управлением.
Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространённым утверждениям, признаваемым большинством разработчиков, относятся следующие:
1. Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
2. Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» – это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
3. Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Языки программирования являются искусственными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.
Основные компоненты языка программирования:
- алфавит,
- синтаксис,
- семантика.
Алфавит – это фиксированный для данного языка набор основных символов, то есть «букв алфавита», из которых должен состоять любой текст на этом языке – никакие другие символы в тексте не допускаются.
Синтаксис – это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза. Точнее говоря, синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке.
Семантика определяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
Взаимодействие синтаксических и семантических правил определяет основные понятия языка, такие как операторы, идентификаторы, константы, переменные, функции, процедуры и т.д. В отличие от естественных, язык программирования имеет ограниченный запас слов (операторов) и строгие правила их написания, а правила грамматики и семантики, как и для любого формального языка, явно однозначно и четко сформулированы.
Основные требования, предъявляемые к языкам программирования:
- наглядность — использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;
- единство — использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;
- гибкость — возможность относительно удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;
- модульность — возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;
- однозначность – недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач.
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования. В следующей главе будут рассмотрены основные классификации языков программирования.
2. Классификация языков программирования
2.1. Классификация языков программирования по уровню
Языки программирования можно классифицировать в зависимости от уровня на:
– языки низкого уровня (машинно-ориентированные языки);
– языки высокого уровня (машинно-независимые языки).
1. Языки низкого уровня (машинно-ориентированные языки) – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные языки позволяют использовать все возможности и особенности машинно-зависимых языков:
- высокое качество создаваемых программ (компактность и скорость выполнения);
- возможность использования конкретных аппаратных ресурсов;
- предсказуемость объектного кода и заказов памяти;
- для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
- трудоемкость процесса составления программ, плохо защищенного от появления ошибок;
- низкая скорость программирования;
- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.
Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы:
а) машинный язык. Отдельный компьютер имеет свой определенный машинный язык, ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому машинный язык является командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/ и другие) имеют единый машинный язык для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции. В новых моделях ЭВМ намечается тенденция к повышению внутренних языков машинно-аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования;
в) автокоды. Есть также языки, включающие в себя все возможности языков символического кодирования посредством расширенного введения макрокоманд — они называются автокоды. В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации.
Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием.
В постановочной системе содержатся «остовы» — серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу. В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию. Обе указанных системы используют трансляторы с языками символического кодирования и набор макрокоманд, которые также являются операторами автокода. Развитые автокоды получили название Ассемблеры;
г) язык Ассемблера – это символическое представление машинного языка. Он облегчает процесс программирования по сравнению с программированием в машинных кодах. Сервисные программы и прочее, как правило, составлены на языках типа Ассемблер.
Программисту не обязательно употреблять настоящие адреса ячеек памяти с размещенными в них данными, участвующими в операции, и вычисляемые результаты, а также адреса тех команд, к которым программа не обращается. Некоторые задачи, например, обмен с нестандартными устройствами обработки данных сложных структур невозможно решить с помощью языков программирования высокого уровня. Это под силу ассемблеру. В принципе, язык Ассемблер является машинным языком. И программист реализующий какую-либо задачу на языках высокого уровня, с помощью Ассемблера может определить осмыслено ли решение данной задачи, с точки зрения использования ЭВМ. Умея разобраться в распечатке языка ассемблера, дает возможность облегчить поиск ошибок в программах, так как некоторые языки являются компиляторами
д) макросы. Язык, являющийся средством для замены последовательности символов, описывающих выполнение требуемых действий ЭВМ на более сжатую форму – называется макрос (средство замены). В основном, макрос предназначен для того, чтобы сократить запись исходной программы.
Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макроопределяющий и исходный текст. Реакция макропроцессора на вызов-выдача выходного текста. Макрос одинаково может работать, как с программами, так и с данными.
2. Языки высокого уровня (машинно-независимые языки) – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и вычислительных систем.
Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на машинный язык.
Таким образом, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
Языки высокого уровня делятся на проблемно-ориентированные и универсальные.
а) проблемно-ориентированные языки. С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно – ориентированные языки. Эти языки, ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме.
Проблемных языков очень много, например:
– Фортран, Алгол – языки, созданные для решения математических задач;
– Simula, Слэнг — для моделирования;
– Лисп, Снобол – для работы со списочными структурами.
б) универсальные языки. Такие языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков PL/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой.
PL/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ.
Программы в PL/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.
2.2. Классификация языков программирования по поколению
Следующая классификация, которую необходимо рассмотреть, – классификация языков программирования по поколению. В развитии инструментального программного обеспечения рассматривают пять поколений языков программирования. Языки программирования как средство общения человека с ЭВМ от поколения к поколению улучшали свои характеристики, становясь все более доступными в освоении непрофессионалам.
Первые три поколения языков программирования характеризовались более сложным набором зарезервированных слов и синтаксисом. Языки четвертого поколения все еще требуют соблюдения определенного синтаксиса при написании программ, но он значительно легче для освоения. Естественные языки программирования, разрабатываемые в настоящее время, составят пятое поколение и позволят определять необходимые процедуры обработки информации, используя предложения языка, весьма близкого к естественному и не требующего соблюдения особого синтаксиса.
В таблице 1 дана краткая характеристика поколений языков программирования.
Таблица 1 – Краткая характеристика поколений языков программирования
Источник: www.evkova.org