КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Компиляция языков программирования
Общие замечания к интерпретаторам Разработка интерпретаторов для интерпретации программ на заданном исходном языке является одной из основных задач информатики. Степень трудности проблемы реализации интерпретатора зависит от сложности исходного языка и степени его отличия от базисного языка, на котором должен быть записан сам интерпретатор. Чтобы обеспечить корректность интерпретатора, при его проектировании мы должны исходить из семантического определения интерпретируемого языка или по меньшей мере верифицировать его на соответствие этому. Обратим внимание на то, что математическое определение семантики ЯП аналогично интерпретирующим программам. Особое положение занимают интерактивные, инкрементальные (пошаговые) интерпретаторы. Для них не обязательно требуется сначала подготовить всю программу целиком, включая вводимые данные, и только потом ее интерпретировать. При интерактивной интерпретации можно программу и входные данные приготовить отдельными частями и полученную часть - насколько это возможно - тут же проинтерпретировать (ЯП ВASIC специально ориентирован на инкрементальную интерпретацию). Сейчас все ближе подходят к созданию интерпретаторов для таких языков, которые выглядят не так, как классические ЯП, ориентированные на вычисления. В частности, в результате длительных исследований стала возможной интерпретация определенных языков, ориентированных скорее на спецификации, а не на вычисления (например, язык ПРОЛОГ, который служит для составления программ в машинно-интерпретируемой логике). Впрочем, для таких языков имеются определенные непреодолимые преграды из-за границ вычислимости и сложности, которые для многих постановок задач делают практически невозможным использование этих языков.
Компилятор берет программу на исходномязыке в качестве своих входных данных и вырабатывает программу на объектном языке, понятном машине. Если программу, написанную на ЯП высокого уровня, мы хотим выполнять многократно, со все новыми исходными данными, то часто бывает эффективнее программу не интерпретировать, а сначала перевести на уже реализованный язык, возможно более близкий к машинному языку, а затем уже выполнять порожденную таким образом программу. Такой способ позволяет лучше приспособить программу к структуре фактически используемой машины и тем самым добиться далеко идущей ее оптимизации. В принципе такой перевод можно осуществить вручную, однако это требует больших затрат времени и при этом могут быть допущены ошибки. Поэтому для этой цели используются специальные переводящие программы, называемые переводчиками или компиляторами (англ. соmputer).
Компилятор и интерпретатор обычно являются довольно сложными программами, которые воспринимают программу на исходном языке в форме текста, устанавливают внутреннюю структуру так заданной программы, проверяя при этом ее синтаксическую корректность (синтаксический анализ), и переводят программу на другой (объектный) язык или выполняют эту программу путем соответствующих действий. ЯП определяется его синтаксисом и семантикой. В процессе компиляции или интерпретации программа, понимаемая как синтаксический объект, берется в качестве входных данных и в соответствии с ее семантикой превращается в программу на другом языке или в последовательность действий (процесс выполнения). Языки программирования бывают высокого и низкого уровней. Языки, ориентированные на конкретный тип процессора и учитывающие его особенности называются языками низкого уровня. Каждая команды языка низкого уровня непосредственно реализует одну команду микропроцессора, и они всегда ориентированны на систему команд конкретного микропроцессора. Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью символьных условных обозначений, называемых мнемониками. Языки высокого уровня позволяют задавать желаемые действия в программе с помощью определенного набора операторов. Они значительно ближе и понятнее человеку, чем компьютеру. Каждая команда такого языка может состоять из десятка и более команд микропроцессора. Писать программы на ЯП ВУ легче.
1 – машинно-зависимые (Ассемблер). Языки низкого уровня. 2 – машинно-ориентированные (Си) 3 – универсальные (Фортран, Паскаль, Basic) 4 - проблемно-ориентированные (GPSS, Лого, объектно-ориентированные (форт, Смолток)) 5,6,7 – (Пролог, Лисп, СНОБОЛ). Си, Си++ - вся машинно-зависимая часть программы достаточно легко локализуется и модифицируется при переносе программы на другую архитектуру. Фортран – первый язык высокого уровня (1958г., фирма IBM), используется и до сих пор, поддерживает модульное программирование, особенно предпочитается математиками. Паскаль – один из наиболее популярных в учебных целях (Н.Вирт), реализует большинство идей структурного программирования. Бейсик – для начинающих программистов, приближен к разговорному английскому языку, поддерживает модульное и структурное программирование. Лого, среди проблемно-ориентированных языков – используется в основном для целей обучения. Это диалоговый процедурный язык (простой синтаксис). GPSS – ориентирован на моделирование систем с помощью событий. Применяется там, где результаты исследований выражаются в терминах времени ожидания, длины очереди, использование ресурсов. Смолток – один из ранних ОО ЯП, основная конструкция – это объект и действия с ним, предназначен для нечисловых задач (при построении систем искусственного интеллекта). Форт – используется при решении задач имитационного моделирования в графических системах. Языки функциональной группы используются в основном в системах искусственного интеллекта. У них мощная инструментальная поддержка, быстрый компилятор, встроенные средства организации многооконного режима, графика высокого разрешения, развитый набор математических функций. Пролог – язык ИИ, даются термины и связи, а с его помощью создаются новые. Лисп – имеет мощные графические конструкции, позволяет создавать программы проектирования (деталей, например). Он ориентирован на конструкторскую деятельность. Имеет библиотеку примитивов. СНОБОЛ – язык ИИ.
Поколения языков программирования Все языки программирования принято делить на 5 поколений. 1. Начало 50-х годов. Появились первые компьютеры и первые языки ассемблера, в которых программирование велось по принципу «Одна инструкция - одна строка». 2. Конец 50-х начало 60-х годов. Разработан символический Ассемблер, в котором появилось понятие переменной. Возросла скорость разработки и надежность программ. 3. 60-е года. Рождение языков высокого уровня. Простота программирования, независимость от конкретного компьютера, новые мощные языковые конструкции. 4. Начало 70-х и по настоящее время. Проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Мощные операторы, для которых на языках младшего поколения потребовались тысячи строк исходного кода. 5. Середина 90-х. Системы автоматического создания прикладных программ с помощью визуальных средств разработки, без знания программирования. Инструкции вводятся в компьютер в наглядном виде с помощью методов, наиболее удобных для человека незнакомого с программированием. В нашем институте на различных курсах вы научитесь программировать на различных языках программирования.
Дата добавления: 2014-01-06; Просмотров: 834; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |