Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О науке информатике.doc
Скачиваний:
258
Добавлен:
02.05.2014
Размер:
14.84 Mб
Скачать

Глава 3. Программирование

    1. Виды языков программирования

Язык программирования — это фиксированная система обозначений и правил, предназначенная для описания алгоритмов и структур данных.

Все языки программирования делятся на два вида — языки низкого и высокого уровня.

Языки низкого уровня (law-level languages) — это средство записи инструкций для компьютера на аппаратном языке, т.е. в машинных кодах (в виде последовательности нулей и единиц). Языки низкого уровня жестко ориентированы на определенный тип аппаратуры (систему команд процессора, у каждого типа процессоров — свой машинный код).

Языки высокого уровня (high-level languages) – это языки программирования, позволяющие записывать программу в удобном для человека виде. Данные языки ориентированы не на систему команд того или иного процессора, а на систему операторов (команд), характерных для записи определенного класса алгоритмов.

Языки высокого уровня проще в обращении, поскольку их задача состоит в обслуживании потребностей программиста, а не в выявлении возможностей компьютера. Написанные на этих языках программы следует перекодировать — перевести на машинный язык (machine code), так, чтобы до запуска программ компьютер мог их понять. Поэтому в системы программирования на ЯВУ входит либо интерпретатор(interpreter) языка, либокомпилятор (compiler).

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

Компилятор работает как литературный переводчик. Это компьютерная программа, переводящая программу, написанную на языке высокого уровня, в подробные команды, которые компьютер может выполнить. Программа должна быть транслирована (переведена) в набор команд до того, как она начнет выполняться; однако, будучи один раз транслирована, она может запускаться неограниченное количество раз.

Низкоуровневые языки, близкие к машинному, позволяют создать программы, которые запускаются быстрее и позволяют эффективнее использовать ресурсы компьютера.

Проведём небольшой исторический экскурс (от машинных кодов до языков программирования высокого уровня).

Программа для машин первого поколения вводилась с перфоленты, а данные — с перфокарт. Нетрудно догадаться, что программированием занимались профессора математики. Необходимо было знать всю систему команд компьютера в непривычных человеку двоичной, восьмеричной и шестнадцатеричной системах счисления, при этом свободно совершая над этими числами сложные математические преобразования. Людей, занимающихся этим, называли не иначе как «шаманами в белых халатах».

Первым шагом вперед был отказ от числового обозначения команд. Каждая команда стала обзначаться мнемоническим буквенным кодом: так появился язык ассемблера. Программы, переводящие язык ассемблера на машинный код называются ассемблерами, а сам процесс — ассемблированием.

mov ah, 9

mov al, 33

mov bl, 1

mov bh,0

int 10h

Пример 1: Отрывок кода на языке ассемблера

Данный пример демонстрирует язык ассемблера. Этот отрывок кода помещает синий символ восклицательного знака в текущую позицию курсора на экран. В регистры процессора заносится номер функции, код символа, цвет и номер видеостраницы, а затем вызывается прерывание BIOS (Basic Input-Output System — Базовая Система Ввода Вывода) отвечающее за вывод изображения на экран. Это, несомненно, гораздо понятнее и проще машинных кодов, но чтобы доказать многословность и сложность, которая все ещё присуща языку ассемблера, достаточно привести пример, выполняющий то же действие, но записанный на языке высокого уровня, например Паскале:

TextColor(1);

Write('!');

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

Языки высокого уровня были следующей ступенью развития средств программирования. Существует огромное количество языков программирования: от 2000 до 4000. Языки высокого уровня подразделяются на группы по типу парадигмы, которую поддерживают. Существуют императивные языки, функциональные языки, логические языки, объектно-ориентированные языки, а также многие другие. Итак, с появлением языков высокого уровня программы стали выглядеть более понятно.

Императивные языки предоставляют собой мощное средство программирования, с помощью которого можно решить большинство задач. Но прогресс не стоит на месте, и на смену императивной пришла новая, объектно-ориентированная концепция программирования. Данная концепция заслуженно пользуется самой большой популярностью на IBM-совместимых микрокомпьютерах. Подобный подход позволяет абстрагироваться от машины и мыслить в терминах задачи, что является наиглавнейшим преимуществом объектно-ориентированного подхода.

В операционной системе Windows фирмы Microsoft на практике реализована концепция объектно-ориентированного программирования. Windows является графической системой. В ней реализован стандартный пользовательский интерфейс, доступный каждой прикладной программе через вызов функций Windows-API, представляющие собой набор классов описывающих объекты системы, например, кнопку, или поле ввода. Данный подход имеет ряд преимуществ. При использовании обычной текстовой операционной системы, например, MS-DOS разработчику приходилось каждый раз программировать пользовательский интерфейс с нуля. Задача значительно усложнялась, если приходилось проектировать графический интерфейс с пользователем. Так как программа MS-DOS работает непосредственно с аппаратурой компьютера (в частности, с видеоконтроллером), она должна учитывать наличие у потребителей большого количества самой разнообразной и несовместимой аппаратуры. Windows дисциплинирует разработчика приложений, предлагая стандарт на диалоговый интерфейс с пользователем. Если приложение будет соответствовать стандарту, на его изучение и освоение со стороны пользователя будет затрачено минимальное время.

Структура программы для Windows существенно отличается от классической программы. Костяк программы представляет собой цикл обработки сообщений. Сообщения — это способ, при помощи которого в Windows организован обмен информацией между отдельными подсистемами, приложениями или между отдельными модулями одного и того же приложения. Windows содержит в себе системную очередь сообщений, куда последние могут поступать от драйверов устройств ввода/вывода, а также или от приложений, а также несколько очередей сообщений для каждого приложения. Окно приложения Windows содержит множество органов управления. Действие, выполненное над любым из них, приводит к генерации соответствующего сообщения. Приложение Windows должно постоянно анализировать содержимое очереди и обрабатывать полученные сообщения. Такой механизм значительно упрощает программирование, так как приложение не занимается отслеживанием устройств ввода, а уже получает сообщение о том, что, например, нажата кнопка на панели или выбран пункт меню.

Несмотря на очевидную простоту и удобство программирование для Windows считается довольно сложным. Одновременно с увеличением возможностей увеличилась сложность и громоздкость кода программы. Значительную часть времени стало занимать проектирование и описание в программе ее интерфейса, внешнего вида. В связи с этим были созданы Системы Быстрого Проектирования Приложений — RAD. Рассмотрим такую систему на примере, пожалуй, самого популярного пакета MS Visual C++.

Visual C++ представляет собой сложный инструмент для создания приложений Windows. Несмотря на то, что сложность программ увеличилась, интегрированная среда MS Developer Studio пакета Visual C++ позволяет в считанные секунды создать вполне работоспособное приложение Windows. Включенная в состав VC++ библиотека классов Microsoft Foudation Classes (MFC) уже стала фактическим стандартом для разработчиков компиляторов на языке С++. Визуальные средства разработки интерфейса превращают это сложное занятие в увлекательную игру. VC++ не просто компилятор программного кода — это генератор программного кода. С его помощью можно в считанные минуты создать приложение Windows из готовых фрагментов программного кода. Генератор приложений формирует прототип вполне работоспособной программы.

Несмотря на то, что концепция объектно-ориентированного программирования появилась довольно давно, системы построенные на ее основе пользуются сейчас наибольшей популярностью. Интеграция этой концепции в операционную систему позволило создать удобный и эффективный программный интерфейс, а сочетание его с RAD системами открыло дорогу потоку мощных, удобных, дружественных пользователю приложений.

Другие виды языков программирования используются для решения более узких задач (например, язык запросов(query language);генератор программ печати отчетов(report program generator)).