'Технологические языки можно рассматривать как развитие графических. Последние описывают движение графического пера (в случае графопостроителя) или электронного луча (в случае графического дисплея) в процессе оформления проектного решения в виде геометрического образа. Технологические языки САПР описывают, в частности, взаимное перемещение режущего инструмента и заготовки в процессе получения из заготовки проектируемой детали. Для эффективного задания этого перемещения технологические языки содержат средства описания геометрии изготовляемой детали, характеристик технологического оборудования, траектории и режимов обработки (величину, скорость и направление перемещения режущего инструмента).
Основным структурным элементом технологических языков является оператор. Операторы технологических языков обычно подразделяются на описывающие и выполняемые.
Описывающие операторы служат для указания вычислительных, геометрических и технологических условий. Эти операторы могут иметь ссылку, задаваемую в виде идентификатора перед записью оператора.
Выполняемые операторы предписывают движение режущего инструмента по траектории, задаваемой описывающими операторами. [1]
3. Базовое лингвистическое обеспечение
Базовое лингвистическое обеспечение САПР, являясь языковой основой программного обеспечения, содержит иерархию языков программирования, каждый уровень которой позволяет с различной эффективностью реализовывать автоматически исполняемые операции обобщенного алгоритма проектирования. На эффективность реализации проектных операций существенное влияние оказывают свойства выбранного языка программирования: удачный выбор языка позволяет быстро создавать качественный программный продукт. При этом важнейшими характеристиками качества отдельной программы и программного комплекса в целом являются их надежность, эффективная транслируемость в достаточно компактные и быстродействующие машинные программы, модифицируемость и мобильность.
В зависимости от требований, накладываемых на программный продукт, его исходное описание может производиться на языках программирования кодового, низкого и высокого уровня.
Языками программирования кодового уровня (или машинными языками) называются языки системы команд ЭВМ и внутримашинного представления информации. Алфавит таких языков включает только цифры (двоичные, восьмеричные или шестнадцатеричные), с помощью которых кодируются команды машины и данные, над которыми эти команды выполняются. Каждая ЭВМ имеет индивидуальную, свойственную только ей систему команд, но определенные закономерности присущи всем вычислительным системам.
В зависимости от архитектуры ЭВМ синтаксис команды, обычно называемый форматом команды, может изменяться в широких пределах. Команды могут иметь фиксированную длину (например, одно машинное слово) или переменную длину (два, три и более слов). Последнее определяется способом адресации к объекту действия команды – операнду. Машинным словом называется обычно последовательность из восьми двоичных цифр. По формату систему команд можно разделить на дно категории: безадресные команды, т. е. команды, не имеющие ссылки на данные, и адресные команды. В первом случае команда содержит только код операции, указывающий действие, которое должно быть выполнено (останов, возврат, сброс). Команды этого формата обычно образуют одно машинное слово. Во втором случае команда содержит код операции и либо операнд, либо ссылку на операнд в виде адреса машинного слова, в котором располагается операнд. Примерами являются команды засылки в регистр, сложения, умножения и т. п. В зависимости от принятых способов адресации адресные команды могут образовывать два, три и более машинных слова.
Система команд современных ЭВМ содержит несколько сотен элементов, семантика каждого из которых определяется функциональным назначением элемента: перемещения данных, преобразования данных, управления программой, ввода-вывода, специальные.
Команды перемещения данных организуют обмен информации между арифметико-логическим устройством (точнее аккумулятором) и оперативной памятью. Команды преобразования данных используются для выполнения арифметических и логических действий. Данные, над которыми эти действия совершаются, чаще всего находятся в аккумуляторе и регистре. Результат действия обычно остается в аккумуляторе. Команды управления изменяют содержимое регистра адреса следующей выполняемой команды. Команды управления могут быть условными и безусловными. Условная команда сопровождается указанием состояния, которое должно быть предварительно проверено: положительное, значение результата команды, переполнение или отсутствие его и т. д. Безусловная команда управления изменяет содержимое регистра адреса без проверки каких-либо условий. Команды ввода - вывода организуют обмен информации с внешними устройствами ЭВМ: накопителями на магнитных лентах, дисках. Специальные команды позволяют выполнять особые действия, такие, например, как разрешение прерывания выполнения программы, запрещение прерывания и т. п.
Детальное кодирование действий и объектов этих действий в терминах кодов операций, аккумулятора, регистров, машинных слов и т. п. позволяет получать компактные и быстродействующие машинные программы, полностью использующие возможности современных ЭВМ. Кроме того, программы на машинном языке не нуждаются в трансляции; после ввода в ЭВМ их можно сразу же исполнять. Однако машинные языки используются очень редко: для программного управления ЭВМ и оборудования, для которых не созданы или не реализованы языки более высокого уровня, а также для написания особо реактивных и незначительных по объему программ. Это обусловлено высокой трудоемкостью кодирования. Цифровые коды трудно воспринимаются человеком, поэтому велика вероятность указания неверного кода, т. е. надежность программ, составленных на машинных языках низкая. Кроме того, программы машинного языка немобильны: они не могут исполняться на ЭВМ, система команд и кодировка информации которых не содержат средств данного языка.
Языками программирования низкого уровня (или машинно-ориентированными языками) называются языки символического кодирования машинных и служебных команд и данных. В этих языках каждая машинная команда записывается в виде мнемонического обозначения кода операции и операнда. Каждой операции машинного языка ставится во взаимно однозначное соответствие выразительное, как правило, сокращенное наименование, называемое мнемокодом. Например, операция сложения может иметь мнемокод СЛЖ. Мнемоническое обозначение операнда представляет собой произвольную последовательность символов, выражающую либо наименование переменной, либо значение константы, участвующей в операции. Такое символическое изображение операций и операндов позволяет облегчить их запоминание, а значит и использование. Служебные команды машинно-ориентированных языков предназначены для упрощения программирования и отладки программных комплексов: команды управления трансляцией, определения адресов и идентификаторов, резервирования памяти и определения констант, управления печатью текста программы и т. д.
Поскольку система команд ЭВМ является подмножеством соответствующего машинно-ориентированного языка, последний позволяет, подобно машинным языкам, создавать компактные и быстродействующие программы, полностью использующие возможности ЭВМ. Выразительность символического представления команд и данных способствует повышению надежности создаваемых программ, удобству их записи, чтения и изменения. В то же время эти программы немобильны, поэтому на машинно-ориентированных языках в основном кодируют системные компоненты программного обеспечения САПР, к которым предъявляются высокие требования по быстродействию и потребляемой памяти ЭВМ.
Языками программирования высокого уровня (или процедурно-ориентированными языками) называются языки задания алгоритмов решения определенного класса задач в терминах и понятиях, характерных и наиболее эффективных для этого класса. Процедурно-ориентированные языки с четко продуманной системой хорошо взаимодействующих между собой понятий, достаточно общих, но в то же время простых и ясных для человека, позволяют существенно повысить эффективность разработки и развития программного обеспечения САПР, особенно ее прикладных компонентов.
Качественным отличием этих языков от языков кодового и низкого уровней является их машинная независимость: программы процедурно-ориентированных языков могут выполняться на любых ЭВМ, снабженных соответствующими языковыми процессорами. Последние автоматически отображают языковые конструкции, понятные человеку, в семантически эквивалентные конструкции машинного языка. При этом лаконичным и выразительным исходным конструкциям ставятся в соответствие, как правило, значительные по объему совокупности машинных команд и данных. Тем самым существенно повышается производительность разработчиков программного обеспечения САПР. Вместе с тем выдаваемые языковыми процессорами машинные программы являются не экономными по потребляемым ресурсам ЭВМ, так как машинно-ориентированные языки позволяют создавать, как правило, более компактные и быстрые программы.
Представление алгоритма решения задачи на процедурно-ориентированном языке заключается в указании последовательности процедурных шагов, конкретизирующих вычислительный процесс. При этом типичными процедурными шагами являются ввод данных, выборка значений, вычисления по формулам, присваивания значений переменным, проверка логических условий, передача управления определенным шагам, вывод данных. Выражение этих действий производится в терминах допустимых типов данных, типов операций и механизмов управления последовательностью применения операций и данных. Различие в содержании этих понятий обусловливают основные различия языков программирования высокого уровня. Наибольшее распространение в САПР получили языки высокого уровня Фортран, ПЛ/1, Бейсик, Паскаль. [1]