Автор работы: Пользователь скрыл имя, 30 Ноября 2010 в 19:09, Не определен
реферат
2.5. Рефал
Несомненно надо рассказать и о некоторых языках программирования созданных у нас на родине. Один из таких языков является Рефал, разработанный у нас в России (СССР), в 1966г. ИПМ АН СССР. Этот язык прост и удобен для описания манипуляций над произвольными текстовыми объектами.
Рефал широко применяется при разработке трансляторов с алгоритмических языков как универсальных и проблемно – ориентированных, так и автокодов. Кроме использования в задачах трансляции, Рефал имеет такие важные сферы применения, как машинное выполнение громоздких аналитических выкладок в теоретической физике и прикладной математике; проектирование «умных» информационных систем, осуществляющих нетривиальную логическую обработку информации; машинное доказательство теорем; моделирование целенаправленного поведения; разработка диалоговых обучающих систем; исследования в области искусственного интеллекта и т.п.
Программирование на Рефале имеет специфику, связанную, прежде всего, с тем, что Рефал является языком функционального типа в отличие от обычных операторных языков типа Алгол, Фортран и т.д.. Если программа на операторных языках – ни что иное, как совокупность приказов-операторов, то программа на Рефале представляет собой по существу описание связей и отношений между определенными понятиями.
Вследствие того, что в Рефале программист сам определяет структуру обрабатываемой информации, эффективность программы существенно зависит от удачного или неудачного выбора этой структуры. Для задания структур в Рефале используются скобки, а специфика всех реализаций языка такова, что использование скобок резко повышает эффективность выполнения программы. Это достигается с помощью адресного соединения скобок.
Определенной спецификой обладают и переменные типа «выражения» – имеется в виду их способность удлиняться при отождествлении. Правильное использование переменных этого типа также позволяет значительно повысить эффективность Рефал – программы.
2.6. Пролог и Пролог ++
Пролог - это язык, предназначенный для поиска решений. Это декларативный язык, то есть формальная постановка задачи может быть использована для ее решения. Пролог определяет логические отношения в задаче, как отличные от пошагового решения этой задачи.
Центральной частью Пролога являются средства логического вывода, которые решают запросы, используя заданное множество фактов и правил, к которым обращаются как к утверждениям. Пролог также не имеет деления переменных на типы и может динамически добавлять правила и факты к средствам вывода. Таким образом, это гибкий язык, и он более пригоден для объектно-ориентированного расширения, чем язык со строго заданными типами, например, Паскаль. Пролог ++ представляет собой дополнение к стандартному Прологу.
Все свойства языка по-прежнему доступны программистам. Следовательно, Пролог ++ можно отнести к группе гибридных языков, представителями которой считаются Object Pascal и C++. Расширение Пролог ++ поддерживает все свойства, присущие обычно объектно-ориентированным языкам: концепции объектов и классов, единичное и многократное наследование, разбиение на подклассы и передачу сообщений. Поддерживаются также некоторые усовершенствованные свойства, существующие в таких языках, как C++ и Smalltalk, включая общие и частные методы.
Интересным свойством является поддержка в языке программирования с управлением данными. Эта техника, которая может быть еще названа программированием, «управляемым событиями», используется в большинстве языков объектно-ориентированного программирования, особенно в тех, которые разработаны для машин с интерфейсом, управляемым «мышью».
Объектно-ориентированная программа реагирует на события, которые определяют поток управления. В Прологе ++ программирование с управлением данными достигается при помощи концепции демонов. Демон представляет собой объект, методы которого вызываются в случае определенных событий и могут быть таким образом использованы для поддержки программирования с управлением данными.
Сам язык основан на концепции передачи сообщений. Программа на Прологе ++ строится вокруг множества объектов Пролога ++, которые обмениваются сообщениями. В этом смысле Пролог ++ ближе к чистому объектно-ориентированному языку, такому, как Smalltalk, чем C++ или Object Pascal. Определения объектов строятся исходя из вызовов
Open_Object
[имя_объекта] и Close_Object [имя_объекта],
а методы определяются
2.7. Лекс
Лекс – генератор программ лексического анализа. Лексический анализ – это распознавание лексем во входном потоке символов. Предположим, что задано некоторое конечное множество слов (лексем) в некотором языке и некоторое входное слово. Необходимо установить, какой элемент множества (если он существует) совпадает с данным входным словом. Обычно лексический анализ выполняется так называемым лексическим анализатором. Лексический анализатор – это программа. Лексический анализ применяется во многих случаях, например, для построения пакетного редактора или в качестве распознавателя директив в диалоговой программе и т.д. Однако, наиболее важное применение лексического анализатора – это использование его в компиляторе. Здесь лексический анализатор выполняет функцию программы ввода данных.
Лексический анализатор выполняет первую стадию компиляции – читает строки компилируемой программы, выделяет лексемы и передает их на дальнейшие стадии компиляции (грамматический разбор, кодогенерацию и т.д.).
Лексический
анализатор распознает тип каждой лексемы
и соответствующим образом
Лексический анализатор должен не только выделить лексему, но и выполнить некоторые преобразования. Например, если лексема – число, то его необходимо перевести во внутреннюю (двоичную) форму записи как число с плавающей или фиксированной запятой. А если лексема – идентификатор, то его необходимо разместить в таблице, чтобы в дальнейшем обращаться к нему не по имени, а по адресу в таблице.
Хотя лексический анализ по своей идее прост, тем не менее, эта фаза работы компилятора часто занимает больше времени, чем любая другая. Частично это происходит из-за необходимости просматривать и анализировать исходный текст символ за символом. Иногда даже бывает необходимо вернуть прочитанный символ во входной поток с тем, чтобы повторить просмотр и анализ.
2.8. Cи
Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.
Си – это замечательный язык, и хотя некоторым он не нравится, но все же большинство программистов его любят. На Си вы можете создавать программы, которые делают все, что вы пожелаете. Нет другого такого языка, который бы так же стимулировал к программированию. Создается впечатление, что остальные языки программирования воздвигают искусственные препятствия для творчества, а Си – нет. Использование этого языка позволяет сократить затраты времени на создание работающих программ. Си позволяет программировать быстро, эффективно и предсказуемо. Еще одно преимущество Си заключается в том, что он позволяет использовать все возможности вашей ЭВМ. Этот язык создан программистом для использования другими программистами, чего о других языках программирования сказать нельзя.
2.8.1. Особенности языка Си
Язык Си имеет свои существенные особенности, давайте перечислим некоторые из них:
Си обеспечивает полный набор операторов структурного программирования. Си предлагает необычно большой набор операций. Многие операции Си соответствуют машинным командам, и поэтому допускают прямую трансляцию в машинный код. Разнообразие операций позволяет выбирать их различные наборы для минимизации результирующего кода.
Си поддерживает указатели на переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта. Посредством разумного использования указателей можно создавать эффективно-выполняемые программы, так как указатели позволяют ссылаться на объекты тем же самым путем, как это делает машина. Си поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти.
В своем составе Си содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией. Среди его наиболее полезных приложений при написании программ на Си являются: определение программных констант, замена вызовов функций аналогичными, но более быстрыми макросами, условная компиляция. Препроцессор не ограничен процессированием только исходных текстовых файлов Си, он может быть использован для любого текстового файла.
Си-гибкий язык, позволяющий принимать в конкретных ситуациях самые разные решения. Тем не менее, Си налагает незначительные ограничения в таких, например, действиях, как преобразование типов. Во многих случаях это является достоинством, однако программисты должны хорошо знать язык, чтобы понимать, как будут выполняться их программы.
2.8.2. Недостатки языка Си:
Также, как и особенностей, в языке Си присутствует куча недостатков. Ведь от них не защищен не один проект, в том числе проект разработки и выполнения программ, на языке Си:
Язык Си предъявляет достаточно высокие требования к квалификации использующего его программиста. При изучении Си желательно иметь представление о структуре и работе компьютера. Большую помощь и более глубокое понимание идей Си, как языка системного программирования, обеспечат хотя бы минимальное знание языка ассемблер. Уровень старшинства некоторых операторов не является общепринятым, некоторые синтаксические конструкции могли бы быть лучше. Тем не менее, как оказалось Си – чрезвычайно эффективный и выразительный язык, пригодный для широкого класса задач.
2.9. Си++
Безусловно, Си++ восходит, главным образом, к Cи. Cи сохранен как подмножество, поэтому сделанного в Cи акцента на средствах низкого уровня достаточно, чтобы справляться с самыми насущными задачами системного программирования. Cи, в свою очередь, многим обязан своему предшественнику BCPL.
Название Си++ - изобретение лета 1983-его. Более ранние версии языка использовались начиная с 1980-ого и были известны как "Cи с Классами". Первоначально язык был придуман потому, что автор хотел написать событийно управляемые модели для чего был бы идеален Simula67, если не принимать во внимание эффективность. "Cи с Классами" использовался для крупных проектов моделирования, в которых строго тестировались возможности написания программ, требующих (только) минимального пространства памяти и времени на выполнение. В "Cи с Классами" не хватало перегрузки операций, ссылок, виртуальных функций и многих деталей. Си++ был впервые введен за пределами исследовательской группы автора в июле 1983-го. Однако тогда многие особенности Си++ были еще не придуманы.
Название Си++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от Cи. "++" - это операция приращения в Cи. Чуть более короткое имя Cи+ является синтаксической ошибкой, кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики Cи находят, что Си++ хуже, чем Cи ++. Названия D язык не получил, поскольку он является расширением Cи и в нем не делается попыток исцелиться от проблем путем выбрасывания различных особенностей.
Информация о работе Информационные технологии: языки программирования