Негосударственное образовательное учреждение Южно-Уральский институт управления и экономики Кафедра естественно – научных технологий Реферат по дисциплине: «Информатика» Системы программирования. Интерпретация и компиляция. Выполнил: студент гр. ЭЗб 101 -ФК Гасан С.В. Проверил: Зубарев В. М. Карталы 2008 Содержания: 2 1. История программирования. 3 1.1 Основы программирования. 4 1.2 Turbo Assembler. 5-6 1.3 Система CLIPPER. 7-10 1.4 Интерпретация. 11 1.5 Компиляция. 12 1.6 Используемая литература. 13 2 1. История программирования: Людям разной национальность нелегко понять друг друга, требуется понимать иностранный язык. Но это люди: хотя слово «пить» звучит на разных языках по-разному, но сам процесс мы все понимаем одинаково. А вот компьютеру надо было бы расписать процесс питья подробно: протянуть руку к стакану, взять его, поднести ко рту, открыть рот, сделать глоток… Создание таких инструкций называется программированием. Программирование старше, чем электронно-вычислительные машины. Первая программа была написана для аналитической машины Ч. Бэббиджа, и создательницей её была Ада Байрон-Лавлес. В эпоху начала компьютеризации были разработаны основные принципы «перевода» языка человека на язык машин. Ещё в 1960 – 1970-е гг. общение с компьютером требовало специальной подготовки, а профессия программиста считалось чем-то вроде профессии космонавта. Программа MS-DOS (1980) была практически первой, с которой смогли работать непрофессионалы, хотя для «чайников» и эта программа была сложной. Выход системы Windows (начиная с Windows 3.0) совершил революцию. Но написание программ никуда не ушло, просто теперь обычному пользователю оно не требуется. Потому что вместо него работают команды профессиональных программистов крупных компаний, выпускающие операционные системы – комплекс программ, постоянно находящихся в памяти компьютера; организует управление устройствами машины и её взаимодействие с пользователем. 3 1.1 Основы программирование: Раздел информатики, цель которого – разработать средства для подготовки задач к решению на ЭВМ и создать средства программного обеспечения, с помощью которых реализуется вычислительный процесс на ЭВМ и обмен ЭВМ информацией с внешним миром. Соответственно этим двум целям программирования выделяют два направления: прикладное программирования и системное программирования. Основная задача прикладного программирования – создание методологического перехода от задач, возникающих в различных предметных областях, к программам реализуемых на ЭВМ. На начальном этапе развитию программирования, прикладное программирование было скорее искусство, чем видом научной обоснованной деятельности, но с массовым внедрением ЭВМ программирование постепенно превращалось в промышленное изготовление программ. Для этой цели создаются разнообразные технологии программирования. Примерами таких технологий могут служить две, весьма распространенных. 1) 2) Нисходящие программирование (программирование “сверху – вниз”) базируется на постепенной декомпозиции исходной задачи на ряд подзадач. Сначала начинается программирование основной задачи и постепенно переносится к подзадачам и так до последней. Восходящее программирование (“снизу – вверх”) основано на обратном принципе. Сначала пишутся программы для самого нижнего уровня, затем переходит на выше стоящий уровень и так до тех пор пока вся программа не будет собрана и отлажена. Ещё одна технология – технология пакетов прикладной программы, когда новая задача решается путём комбинации пакетов программ, представляющие собой отлаженные автономные блоки. Единственной трудностью является стыковка автономных блоков между собой. Основные задачи системного программирования – разработка и совершенствования языков программирования, а также трансляторов для перевода программ с этих языков на машинный уровень; Создание оперативных систем для новых типов ЭВМ, разработка сервисных программ. Особые направления в системном программирование стали исследования в области создания программных обеспечений для систем искусственного интеллекта. 4 1.2 Turbo Assembler. Turbo Assembler В жизни каждого программиста наступает момент, когда он решает заняться изучением ассемблера. И это, без сомнения, правильное решение! Настоящий профессионал должен уметь создавать программы, используя ресурсы компьютера с максимальной эффективностью, а всё это невозможно без применения ассемблера. «Максимальная скорость выполнения при минимальных размерах программы» - девиз, под которым работают почти все программисты, пишущие на ассемблере. Однако ассемблер имеет одну особенность, которая отпугивает многих начинающих программистов, - ассемблер является машинноориентированным языком. Это означает, что пишущий на ассемблере работает непосредственно с ресурсами компьютера, что требует хорошего знания его архитектуры, логики работы операционной системы, а также большой аккуратности при написании программы. Несмотря на то, что ассемблер является машинно-ориентированным языком, то есть языком низкого уровня, программист может применять его для работы, как на высоком, так и на среднем уровне. Низкий уровень программирования на ассемблере подразумевает прямое обращение к каналам ввода-вывода устройств, называемых портами ввода-вывода, и прямой доступ в оперативную память. Turbo Assembler, помимо полной поддержки транслятора фирмы Microsoft имеет дополнительные возможности, объединённые в режиме, названном разработчиками Ideal. Использование этого режима даёт возможность начинающему программисту применять более наглядный и простой стиль разработки программ. Более опытные программисты, пишущие на ассемблере, могут использовать такие возможности режима Ideal, как вложенные структуры, объединения. Важной особенностью режима Ideal является применение проверки типов данных, подобно языкам высокого уровня, что позволяет выявить многие ошибки ещё на этапе трансляции. Среди многих других важных преимуществ режима Ideal можно выделить следующие: возможность использования одинаковых имён для обозначения членов различных структур. ·применение операторов HIGH и LOW. предварительное вычисление выражений EQU. корректное управление сегментами данных объединённых в группы. усовершенствованное использование директив. 5 разумное использование скобок в выражениях. Turbo Assembler передаёт аргументы в процедуры на языках высокого уровня в кадре стека, помещая аргументы перед вызовом процедуры в стек. Процедуры, написанные на языках высокого уровня, считывают аргументы из стека по мере необходимости. При выходе процедура может удалять аргументы из стека или оставлять эту операцию для вызывающей процедуры. Традиционным способом, с помощью которого объединяются программы, написанные на С++ и ассемблере, является разделительная компиляция с последующей компоновкой в один исполняемый файл. При этом можно использовать компилятор Borland C++, который вызывает Turbo Assembler для трансляции ассемблерной программы. Ассемблер предоставляет программисту полную свободу действий при разработке программы, что одновременно является и его достоинством, и недостатком, так как требует от разработчика знания системы команд данного компьютера и его операционной системы. Кроме того, несмотря на минимальный размер выполняемого файла при максимальной скорости работы, время, необходимое для создания программы, резко возрастает с увеличением объёма разрабатываемого проекта. Поэтому ассемблер был и остаётся языком программирования для профессионалов. В тоже время программисты, работающие на языках высокого уровня, столкнувшись с ограничениями, которые неизбежны при использовании этих языков, не должны полностью переписывать свои программы на ассемблере. Чаще всего бывает достаточно перевода нескольких фрагментов кода, критичных по времени выполнения, чтобы все проблемы исчезли. Кроме того, существует много библиотек, которые написаны на языках высокого уровня, но с успехом могут применяться и в ассемблерных программах. 6 1.3 Система CLIPPER. CLIPPER - это созданная фирмой Nantucket Corp. система программирования приложений в среде БД, включающая в себя быстрый компилятор программ, написанных на языке, близком к языку СУБД dBaseIII PLUS, редактор связей, развитый интерактивный символический отладчик, обладающий пользовательским интерфейсом в стиле меню, который можно связать с разрабатываемой программой для облегчения ее отладки, большую библиотеку объектных модулей системных функций, а также ряд служебных программ (утилит) . Система Clipper представляет собой, по существу, СУБД компилирующего типа с автономным (self-contained) языком, в значительной мере совместимую по входному языку программирования и организации базы данных с СУБД dBaseIII PLUS. Основная цель разработки этого программного продукта достижение более высокой производительности прикладных систем по сравнению с созданными с помощью средств dBaseIII PLUS. Эта задача решается благодаря использованию на стадии исполнения заранее скомпилированного кода вместо интерпретации исходных программ, а также за счет более эффективных механизмов индексирования файлов БД. Clipper работает в среде операционной системы MS DOS версии 2.0 и выше. В результате компиляции текстов программ на исходном языке он порождает загрузочные программные модули, не требующие каких-либо системных средств на стадии исполнения. Тем самым разработанная п/п полностью "отчуждается" от инструментальных средств его разработки, может распространяться независимо от них, и пользователь такой п/п избавляется от необходимости изучать этот инструментарий. Допускается декомпозиция программных модулей на составные части, из которых на стадии редактирования можно сформировать модули оверлейной структуры. Разработка крупных приложений значительно облегчается благодаря технологии сепаратной компиляции их компонентов. Clipper обеспечивает высокую скорость не только при исполнении программ, но и на стадии их компиляции. Система полностью совместима с системой dBaseIII PLUS по организации файлов БД. Однако индексные файлы в системе Clipper имеют иную более эффективную организацию, что наряду с компиляцией способствует существенному повышению производительности программ на стадии исполнения. Индексные файлы dBaseIII PLUS подменяются файлами системы Clipper аналогичного 7 назначения автоматически на стадии исполнения либо заблаговременно с помощью специальной утилиты. В языке программирования системы Clipper отсутствуют такие полноэкранные команды языка dBase, как ASSIST, BROWSE, EDIT, имеются ограничения на использование функции макроподстановки (&) . Значением сторковой переменной, к которой применяется эта функция, не может быть, в частности, полная команда или фраза команды с ключевым словом, а также список имен полей записи файла БД или других объектов языка с разделителями-запятыми. Вместе с тем в язык введены многие расширения. К их числу (в летней версии 1987 г.) относятся возможности работы с массивами переменных, которые могут объявляться при необходимости глобальными величинами, спецификации функций, определяемых пользователем, возможности обращения к функциям на языках Си и ассемблере с передачей им параметров, средства программирования пользовательских интерфейсов, построенных в стиле меню, сохранения и восстановления изображений, показанных на экране, большое количество новых функций различного назначения, в частности, для операций над строками. В языке Clipper предусматриваются средства блокирования файлов и записей файлов БД, необходимые для использования программ на этом языке в мультипользовательской среде сетевых систем БД. Введены новые синтаксические конструкции, например циклы FOR... NEXT, новая фраза VALID для верификации данных, вводимых с помощью команды GET, и ряд других. К пользовательской программе можно легко подключить процедуру HELP, обеспечивающую глобальную и контекстно-зависимую помощь. Эта процедура вызывается на стадии исполнения традиционным нажатием функциональной клавиши F1. При этом ей автоматически передаются необходимые параметры. Clipper включает, как уже указывалось, весьма богатые системные библиотеки функций различного характера, существенно обогащающих язык, позволяющих значительно сокращать затраты времени на прикладное программирование и уменьшать объем исходного кода. В летней версии 1987 г. предусмотрено около ста различных функций для анализа состояния системы, операций с массивами, для вычисления элементарных математических функций, операций над строками, редактирования данных, для создания файлов DOS и выполнения операций над ними, работы со значениями полей типа Memo в записях файлов БД и для других целей. Кроме того, пользователь имеет возможность создавать и использовать собственные библиотеки функций. 8 Что касается системных библиотек, то Nantucket Corp. постоянно расширяет их состав. В 1988 г. был дополнительно включен ряд новых функций, кроме того, фирма начала поставлять пакет Clipper предназначенного для использования совместно с системой Clipper. Пакет содержит большую новую структуризованную библиотеку функций и расширенный драйвер экранов и клавиатуры, призванный заменить имеющийся в системе Clipper драйвер. Эти функции и драйвер могут включаться в приложение на стадии редактирования. Все функции библиотеки обладают высокой производительностью и предъявляют минимальные требования к оперативной памяти. Они реализованы на языке ассемблера и оптимизированы. Библиотека пакета включает ряд функций для конструирования многооконных пользовательских интерфейсов, для непосредственной работы с оборудованием, подключенным к последовательному интерфейсу ПЭВМ, минуя BIOS и обращения к DOS. Предусмотрена большая группа строковых функций, функций для преобразования числовых значений и битовых операций, операций над датами и временем, установки системных переключателей и получения информации об их состоянии, а также о характеристиках и состоянии операционной обстановки, видео-функций, функций для работы с дисками, файлами БД и принтером. Всего библиотека пакета включает более 270 различных функций. Важным достоинством системы Clipper является возможность использования дополнительной (свыше 640 Кбайт) памяти персонального компьютера при исполнении разработанных его средствами п/п. Вместе с тем система Clipper обладает и существенным недостатком порождаемые ею загрузочные модули довольно велики по объему. Один из способов преодоления этого изъяна - предоставляемые пакетом возможности конструирования программных модулей с оверлейной структурой. Однако как "цельнотянутый" загрузочный модуль, так и корневой сегмент модуля с оверлейной структурой не могут быть размером менее 110Кбайт, поскольку в них включаются все необходимые элементы системной среды и функции стадии исполнения. К числу недостатков этого продукта следует, вероятно, отнести также отсутствие комфортной среды для эффективной разработки и отладки Clipper-программ. Имеется в виду среда подобная той, которой обладают, например, Турбосистемы программирования фирмы Borland Int. Входящий в состав системы Clipper символический отладчик является лишь одной из составных частей такой среды. 9 Проблему сокращения объема требуемой оперативной памяти и уменьшения размеров загрузочных модулей фирма Nantucket Corp. решила в новой версии системы - Clipper 5.0. Для этой цели в состав нового программного продукта включается динамический редактор связей загрузчик, основанный на механизмах виртуальной памяти и тем самым вообще исключающий необходимость использования оверлейной структуры при создании больших программных модулей. Версия Clipper 5.0 обладает и другими важными достоинствами. Пользователь (программист-разработчик прикладных систем) может расширять язык новыми командами и благодаря этому формировать множества команд, удобные для программирования специфических классов задач. Предусматриваются новые типы переменных, а также многомерные массивы. Разработана машинно-ориентированная документация, к которой возможен доступ в режиме on-line с помощью Guide to Clipper или Norton Guide. 10 1.4 Интерпретация. Интерпретатор – это транслятор языков программирования, которые работают на отличающемся от компиляторов принципе. Интерпретаторы не производят исполняемого Машиного кода. Они берут исходный текст программы на каком-либо языке программирования и выполняют его сами строка за строкой. При этом процесс выглядит так: интерпретатор извлекает из файла с исходным текстом одну команду, распознаёт её и вызывает те или иные функции операционной системы. Интерпретатор, как переводчик с иностранного языка, определяет команду и переводит (интерпретирует) её так, чтобы операционная система поняла, что от неё хотят. Само собой, скорость выполнения программы в режиме интерпретации намного ниже, чем у компилированного кода, за счёт того, что работа программы идёт не на прямую с центрального процессора на языке Машиных команд, а через программу-посредника, которая и тратит большое количество времени на распознание исходного текста. В отличии от интерпретаторов, компиляторы «знакомятся» с исходными текстами программы всего один раз, когда делают из текста на языке программирования машинный код. Как хороший пример классического интерпретатора можно рассматривать QBasic входящий в состав DOS. 11 1.5 Компиляция. В 1951 году Грейс Хоппер со своей группой (компания «Ремингтон Рэнд») занялась разработкой системы, которая могла бы быстро выполнять работу, выделением памяти компьютера, преобразование команд высокого уровня в машинные. Хоппер назвала эту транслирующею программу компилятором (compiler – компоновщик). Первый компилятор, А-0, вначале преобразовывал всю программу, записанную на языке высокого уровня, в машинный код. По желанию преобразованная программа могла либо выполнятся сразу, либо сохранятся для последующего использования. Компилирующею программу можно было удалить из памяти компьютера перед выполнением компилированной программы. По мере улучшения и расширения компилятора на протяжение ряда лет А-0 превратился в А-1, затем в А-2, А-3, «Мэт-мэтик» (MATH-MATIC). 12