Языки низкого уровня близки к машинным языкам

 Машинный язык — язык программирования, предназначенный для представления программы в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. Низкоуровневые языки программирования применяются для написания программ, учитывающих специфические свойства конкретной аппаратуры и (или) критичных к используемым ресурсам памяти, например, для микроконтроллеров. Типичным представителем языков низкого уровня является Ассемблер. В соответствии с ГОСТ 19781—90 Ассемблер — язык программирования, который представляет собой символьную форму машинного языка с рядом возможностей, характерных для языка высокого уровня.

 ПримерамивысокоуровневыхязыковпрограммированияявляютсяязыкиFortran, Basic, С, Pascal, HTML, DHTML, XML, Java, JavaScript, JScript, VBScript, PHP, Lisp, Prologидр. Их отличают гибкость и наличие развитых средств построения алгоритмических конструкций. Значительная часть из них позволяет использовать объектно-ориентированный подход к проектированию программного обеспечения.

 Рассмотрим некоторые из наиболее известных языков.

 Язык Fortran — один из первых универсальных языков высокого уровня. Сильной стороной языка является высокая эффективность численных расчетовпри относительно простой структуре кода. Благодаря этим свойствам язык получил большое распространение при разработке прикладных программ для решения научных задач. С момента своего появления в стандарт языка несколько раз вносились дополнения и изменения. Последние версии основаны на стандарте Fortran-90, например MicrosoftFortranPowerStation 4.0.

 До недавнего времени самыми распространенными для ПЭВМ были различные версии языка Basic(GWBasic, TurboBasic, QuickBasic). Появление визуального стиля программирования привело к появлению среды MicrosoftVisualBasic и VisualBasicforApplication (VBA). Несомненные достоинства языка: простота разработки и наглядная структура программ, универсальность. Кроме того, VВА является встроенным языком некоторых программных продуктов. Так, все приложения пакета MicrosoftOffice используют VBA для создания пользователем дополнительных надстроек (макросов),позволяющих реализовать функции, изначально не предусмотренные программой.

 Тем не менее ограниченные возможности языка затрудняют его использование для разработки сложных программных продуктов, поэтому в этих случаях программисты прибегают к использованию других языковых средств, например,С, C++, C# или Pascal, Exspress.

 В языке С объединяются достоинства возможностей низкоуровневых языков и мощных средств языков программирования высокого уровня (например, объектно-ориентированный подход). Язык С является одним из претенденто на роль основного языка программирования в САПР и ориентирован на разработку системных программ. Он, в частности, послужил главным инструментом для создания таких операционных систем для ПЭВМ, как UNIX, MSDOS и Windows. Современные версии языка — C++, C# включены в ряд систем разработки программного обеспечения, например BorlandC++ Builder или MicrosoftVisualStudio.NET.

 Язык Pascal — один из наиболее популярных языков программирования для разработки базового и прикладного программного обеспечения САПР. Так, его объектно-ориентированная модификация ObjectPascal составляет основу интегрированной среды разработки Delphi [25]. К настоящему времени по мощности и гибкости он сравним с языком С и используется для создания таких сложных программных продуктов, как системы управления базами данных, корпоративные информационные системы, управление проектами и др.

 Язык HTML (HyperTextMarkupLanguage — язык разметки гипертекста) предназначен для написания Web-страниц, на которых в Интернете принято размещать информацию. Его расширениями являются языки DHTML (DynamicHTML — динамический HTML) и XML (extensibleMarkupLanguage — расширяемый язык разметки). В состав Web-страницы могут входить текстовая и графическая информация, аудио- и видеоинформация, а также ссылки на другие Web-страницы. Для доступа к Web-страницам используются специальные программы — Web-обозреватели (Web- браузеры), находящиеся на компьютерах пользователей.

 Язык Java дляпрограммирования сетевых приложений разработан на базе языка C++. Его основными достоинствами являются простота в использовании, аппаратная независимость и интеграция с браузерами, поэтому в настоящее время этот язык широко применяется для создания Web-приложений. Технология программирования на Java основана на создании так называемых апплетов (applet — «маленькое приложение»), выполняемых на машинах клиентов и динамически формирующих интерфейс пользователя. Код апплета интерпретируется виртуальной Jаvа-машиной, входящей в состав браузера ПЭВМ. Для включения апплета в Web- страницу применяется специальный тег (tag — метка). На сервере для обработки запросов, передаваемых от клиентских мест, должны выполняться специальные сервлеты.

 Языки JavaScript, JScript или VBScriptпредназначены для написания сценариев (скриптов), использующихся для динамического управления интерфейсными компонентами Web-документа. Эти языки являются интерпретируемыми, т. е. код скрипта выполняется непосредственно в процессе интерпретации. Интерпретацию и выполнение сценариев осуществляет обозреватель или Web-cepвер. Скрипты рассматриваются как расширение языка HTML и могут включаться в тело HTML-документа. Одна часть сценария может исполняться во время загрузки документа, а другая — в ответ на действия пользователя. Использование того или иного языка сценариев определяется типом применяемого обозревателя (MicrosoftInternetExplorer, NetscapeNavigator и др).

 Для разработки интеллектуальных САПРчасто используются специализированные высокоуровневые языки Lisp, Prolog и др. Язык Lisp применяется для решения интеллектуальных задач, таких как общение на естественном языке, доказательство теорем, принятие решений. Модификация языка — AutoLisp является встроенным языком системы AutoCAD.

 Язык Prolog (PROgramminginLOGic — логическое программирование) приобрел большую популярность в Японии и Европе в связи с проектом создания ЭВМ пятого поколения, основная суть которого заключалась в переходе от обработки данных к обработке знаний. Предполагалось, что такие вычислительные системы будут обеспечивать простоту управления за счет возможности общения с пользователями при помощи естественного языка. Эти системы должны были самообучаться, использовать накапливаемые в памяти знания для решения различного рода задач, предоставлять пользователям экспертные консультации. В качестве основной методологии разработки программных средств для проекта ЭВМ пятого поколения было избрано логическое программирование. В 1991 г. предполагалось создать первый прототип компьютеров пятого поколения* Несмотря на то что поставленные цели (* На конференции в Токио в 1992 г. был продемонстрирован образец ЭВМ пятого поколения с машиной логических выводов РІМ и базой знаний «Каппа-Р») в полной мере не были достигнуты, проект стимулировал исследования в области искусственного интеллекта, баз знаний и экспертных систем. Для решения задач в этих областях применяют логическое программирование, ярким представителем которого и является Prolog.

 Основные области применения языка Prolog:

 • реализация экспертных систем и оболочек экспертных систем;

 • доказательства теорем;

 • создание пакетов символьных вычислений для решения уравнений, дифференцирования и интегрирования;

 • перевод с одного естественного языка на другой;

 • разработка прототипов прикладных программ;

 • управление производственными процессами;

 • создание динамических реляционных баз данных;

 • создание естественно-языковых интерфейсов для существующих систем.

 В 1996 г. при участии группы российских программистов датская компания PrologDevelopmentCenter (PDC) выпустила систему VisualProlog 4.0. В состав среды были включены инструментальные средства генерации кода, конструирующие управляющую логику, интерфейс визуального программирования и многие другие средства для ускорения разработки приложений. Интересно отметить, что PDC реализует два варианта поставки VisualProlog — коммерческий (commercialedition) и бесплатный (personaledition), последнюю версию которого можно загрузить с официального сайта http://www.visual-prolog.com/. Независимо от того какой язык программирования был выбран, от момента написания программы до ее реализации на ЭВМ необходимо выполнить ряд этапов.

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

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

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

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

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

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

 Специфика исходного языка, однако, может сказываться на физическом представлении базовых типов данных, способах обращения к процедурам/функциям и т.п. Значительную часть объектного модуля составляют команды и данные машинного языка именно в той форме, в какой они будут существовать во время выполнения программы. Тем не менее, программа в общем случае состоит из нескольких модулей. Поскольку транслятор обрабатывает только один конкретный модуль, он не может должным образом обработать те части этого модуля, в которых запрограммированы обращения к данным или процедурам, определенным в другом модуле. Такие обращения называются внешними ссылками. Те места в объектном модуле, где содержатся внешние ссылки, транслируются в некоторую промежуточную форму, подлежащую дальнейшей обработке. Другими словами, объектный модуль — это программа на машинном языке с неразрешенными внешними ссылками. Разрешение внешних ссылок выполняется на следующем этапе подготовки, который обеспечивается специальным редактором связей, или компоновщиком. Редактор связей объединяет все объектные модули, входящие в программу. Поскольку для компоновщика доступны уже все компоненты программы, он имеет возможность обработать те места в объектных модулях, которые содержат внешние ссылки.