Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций программирование.doc
Скачиваний:
26
Добавлен:
31.08.2019
Размер:
5.03 Mб
Скачать

История и классификация языков программирования

Язык программирования – это способ записи программ решения различных задач на ЭВМ в понятной для компьютере форме. Процессор компьютера непосредственно понимает язык машинных команд (ЯМК). Программы на ЯМК программисты писали лишь для самых первых ламповых машин - ЭВМ первого поколения. Программирование на ПК – дело не простое. Программист должен знать числовые коды всех машинных команд, должен сам распределять память под команды программы и данные.В 1950-х гг. появляются первые средства автоматизации программирования – языки Автокоды. Позднее для языков этого уровня стало применяться название «Ассемблеры». Появление языков типа Автокод-Ассемблер облегчило участь программистов. Переменные величины стали обозначаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд.Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик – транслятор.

Транслятор – это системная программа, переводящая текст программы на Автокоде в текст эквивалентной программы на ЯМК.Компьютер, оснащенный транслятором с Автокода, понимает Автокод. В этом случае можно говорить о псевдо-ЭВМ (аппаратура + транслятор с Автокода), языком которой является Автокод. Языки типа Автокод-Ассемблер являются машинно-ориентированными, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имеют разный Ассемблер. Языки программирования высоко уровня (ЯПВУ) являются машинно-независимыми языками. Одна и та же программа на таком языке может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором. Форма записи программ на ЯПВУ по сравнению с Автокодом еще ближе к традиционной математической форме, к естественному языку. Очень скоро вы увидите, что например, на языке Паскаль она почти такая же, как на школьном Алгоритмическом языке. ЯПВУ легко изучается, хорошо поддерживают структурную методику программирования.Первыми популярными языками высоко уровня, появившимися в 1950-х гг., были Фортран, Кобол (в США) и Алгол (в Европе). Языки Фортран и Алгол были ориентированны на научно-технические расчеты математического характера. Кобол – язык для программирования экономических задач. В Коболе по сравнению с двумя другими названными языками слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа. Для первых ЯПВУ предметная ориентация языков была характерной чертой.

Большое количество языков программирования появилось в 1960-1970-х гг. а за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. В 1965 г. В Дартмутском университете был разработан язык Бейсик. По замыслу авторов это простой язык, легко изучаемый, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил на микроЭВМ и персональных компьютерах. На некоторых моделях школьных компьютеров программировать можно только на Бейсике. Однако Бейсик – неструктурированный язык, и поэтому он плохо подходит для обучения качественному программированию. Справедливости ради следует заметить, что последние версии Бейсика для ПК (например, QBasic) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Паскаль.

В эпоху ЭВМ третьего поколения получил большое распространение язык PL/1 (Program Language One), разработанный фирмой IBM. Это был первый язык, претендовавший на универсальность, т.е. на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако PL/1 оказался слишком сложным языком. Для машин типа IBM 360/370 транслятор с него не мог считаться оптимальным, содержал ряд невыявленных ошибок. На ЭВМ класс мини и макро он вообще не получил распространения. Однако тенденция к универсализации языков оказалась перспективной. Старые языки были модернизированы в универсальные варианты – Алгол-68, Фортран – 77.

Значительным событием в истории языков программирования стало создание в 1971 г. Языка Паскаль. Его автор – швейцарский профессор Н. Вирт – разрабатывал Паскаль как учебный язык структурного программирования.

Наибольший успех в распространении этого языка обеспечили персональные компьютеры. Фирма Borland International, Inc (США) разработала систему программирования Турбо Паскаль для ПК. Турбо Паскаль – это не только язык и транслятор с него, но еще и операционная оболочка, обеспечивающая пользователю удобство работы. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. Транслятор с Турбо Паскаля по оптимальности создаваемых им программ близок наиболее удачному в этом отношении транслятору – транслятору с Фортрана. В силу названных достоинств Паскаль стал основой многих современных языков программирования, например, таких как Ада, Модула-2 и др.

Язык программирования Си (английское называние - С) создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Так же как и Паскаль, Си – это язык структурного программирования, но в отличие от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера. Дальнейшее развитие Си привело к созданию языка объектно-ориентированного программирования Си++.

Модула-2 – это еще один язык, предложенный Н.Виртом, основанный на языке Паскаль и содержащий средства для создания больших программ.

ЭВМ будущего, пятого поколения называют машинами «искусственного интеллекта». Но прототипы языков для этих машин были созданы существенно раньше их физического появления. Это языки ЛИСП и Пролог.

ЛИСП появился в 1965 г. Язык ЛИСП основан на понятии рекурсивно определенных функций. А поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП, по сути, является универсальным языком. С его помощью на ЭВМ можно моделировать достаточно сложные процессы, в частности интеллектуальную деятельность людей.

Язык Пролог разработан во Франции в 1972 г. Также для решения проблемы «искусственно интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ЭВМ давать ответы на заданные вопросы.

Реализовать тот или иной язык программирования на ЭВМ – это значит создавать транслятор с этого языка для данной ЭВМ. Существует два принципиально различных метода трансляции. Они называются соответственно компиляция и интерпретация. Для объяснения их различия можно предложить следующую аналогию: лектор должен выступать перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:

  • Полный предварительный перевод – лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после чего лектор может и не выступать);

  • Синхронный перевод – лектор читает доклад, переводчик одновременно с ним слово в слово переводит выступление.

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

При компиляции в память ЭВМ загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. После завершения компиляции получается программа на языке машинных команд. Затем в памяти остается только программа на ЯМК, которая выполняется, и получаются требуемые результаты.

Интерпретатор в течение всего времени работы программы находится во внутренней памяти. В ОЗУ помещается и программа на ЯПВУ. Интерпретатор в последовательности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одной и той же команды она снова будет транслироваться. При компиляции исполнение программы разбивается на два этапа: трансляцию и выполнение. При интерпретации, поскольку трансляция и выполнение совмещены, программа на ЭВМ проходит в один этап. Однако откомпилированная программа выполняется быстрее, чем интерпретируемая. Поэтому использование компиляторов удобнее для больших программ, требующих быстрого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор.

Некоторые сведения о системе Турбо Паскаль

Систему программирования Турбо Паскаль назовем кратко Турбо-системой. Турбо-система обеспечивает удобную операционную обстановку для работы программиста. Но ее назначение не общее, как, например, у оболочки операционной системы MS-DOS Norton Commander. А специализированное – представлять пользователю необходимые средства работы с Паскаль-программой.

Турбо-система опирается в своей работе на возможности операционной системы. Поэтому каждая конкретная Турбо-система может работать с определенной операционной системой, ее конкретными версиями. Например, Турбо-система на IBM PC работает в среде MS-DOS, причем более развитие версии Турбо- системы требуют и более высокоразвитых версий DOS.

Турбо – Паскаль (как язык программирования и как операционная оболочка) значительно изменился за историю своего существования. Первый вариант Турбо Паскаля фирма Borland выпустила в середине 1980-х гг. к сегодняшнему дню этой фирмой созданы шесть модификаций системы, известных как версии 3.0, 4.0, 5.0, 5.5, 6.0, 7.0. Каждая из них представляет собой усовершенствование предыдущей версии. Все они создавались для семейства машин IBM PC и совершенствовались вместе с компьютерами.

Версия 3.0 ориентирована на ПК малой мощности. Разрабатываемые на ней программы имеют ограничение на длину (не более 64 Кбайт); в этой версии нет средств раздельной компиляции взаимосвязанных программ; операционная среда весьма несовершенна.

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

Версия 5.2. отличается в основном дальнейшими усовершенствованиями среды, к которой добавлен встроенный отладчик. В версию 5.5 были впервые включены средства поддержки объектно-ориентированного программирования – современной технологии создания программ.

Главные отличия версии 6.0: новая среда, ориентированная на работу с устройством ввода – мышью и использующая оконный режим работы; объектно-ориентированная библиотека Turbo-Vision, а также возможность включать в текст программы команды Ассемблера.

Версия 7.0 не содержит каких-то принципиальных новшеств по сравнению с 6.0ю введены некоторые расширения языка программирования, а также дополнительные сервисные возможности системной оболочки.

Программа на Турбо-Паскале проходит три этапа обработки:

1 Создание текста программы;

2 Компиляция;

3 Исполнение откомпилированной программы.

В соответствии с этими функциями Турбо-система включает в себя три главные компоненты:

1 Редактор текстов;

2 Компилятор;

3 Исполнительную систему.

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

<имя файла>.pas

где pas – это стандартное расширение имена файла, созданного системным редактором. Имя файла задается пользователем. Обращение к текстовому редактору происходит по команде Edit. Компилятор переводит программу с языка Паскаль на язык машинных команд. При этом проверяется соответствие программы правилам языка программирования (синтаксический и семантический контроль). При обнаружении ошибки компьютер выдает сообщение о ней пользователю и прекращает работу. Программа, полученная в результате компиляции, может быть сохранена на диске в файле с именем

<имя файла>.exe

Работа компилятора инициируется системной командой Compile. Исполнение откомпилированной программы производиться по команде Run. При этом исполнение программы остается под контролем Турбо-системы. В частности, Турбо-система помогает обнаружить ошибку в программе, если при исполнении произошел сбой. Пользователю сообщается причина сбоя и указывается место, где он случился в Паскаль-программе. Происходит автоматический возврат в режим редактирования.

*Язык программирования – это способ записи программ решения различных задач на ЭВМ в понятной для компьютере форме.

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

Классификация языков программирования (Рисунок 1)

Рисунок 1 –Классификация языков программирования

Языки программирования низкого уровня - это машинно-ориентированные языки (ассемблер), языки программирования высокого уровня- максимально приближены к естественным языкам (чаще всего к английскому), но полностью формализованы. При записи алгоритма на ЯП необходимо четко знать правила написания и использования элементарных языковых единиц. Основа любого языка - алфавит, синтаксические и семантические правила. Известные языки программирования – Бейсик, ЛИСП, Модула, Фортран, Пролог, Паскаль и т.д.

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

Реализовать тот или иной язык программирования на ЭВМ – это значит создавать транслятор с этого языка для данной ЭВМ.

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

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

Основные файлы пакета Турбо Паскаль:

  • Turbo.exe – интегрированная среда программирования;

  • Turbo.hlp – файл, содержащий данные для оперативной подсказки;

  • Turbo.tp – файл конфигурационной системы;

  • Turbo.tpl – библиотека стандартных модулей Турбо Паскаля.

Эти файлы являются основными, без которых система не может функционировать.

Загрузка системы осуществляется запуском файла Turbo.exe. возможна также загрузка и запуск системы из меню ПУСК или значком на рабочем столе Widows, Если значок (ярлык создан).

После загрузки системы на экране появляется рабочий стол системы. Экран разделен на три части: основное (или рабочее) окно, главное меню и строка, в которой указывается назначение основных функциональных клавиш. Переход из основного окна в главное меню и обратно осуществляется посредством клавиши F10.

В рабочем окне осуществляется набор текста программы, запуск же происходит следующим образом: выход в меню, выбор пункта Run – Run.

Для того чтобы сохранить программу, необходимо: выйти в меню, выбрать File – Save (Save as …), в появившемся окне ввести имя файла и нажать клавишу Enter.

Выход из системы программирования: выход в меню, пункт File – Exit.

Функциональные клавиши

F1- обратиться за справкой во встроенную справочную службу

F2- записать редактируемый текст в дисковой файл

F3- прочитать текст из дискового файла в окно редактора

F4- начать или продолжить исполнение программы и остановиться перед исполнением той же строки, на которой стоит курсор

F5- распахнуть активное окно на весь экран

F6- сделать активным следующее окно

F7- выполнить следующую строку программы, если в строке есть обращение к процедуре, войти в эту процедуру и остановиться перед исполнением первого ее оператора

F8- выполнить следующую строку программы, если в строке есть обращение к процедуре, исполнить ее и не прослеживать ее работу

F9- компилировать программу, но не выполнять ее

F10- перейти к диалоговому выбору режима работы с помощью главного меню

Ctrl+F9- выполнить прогон программы

Alt+F5- сменить окно редактора на окно вывода результатов работы программы

ALT+X- выход из Турбо Паскаля