Язык программирования
– набор ключевых слов и система грамматических и синтаксических правил для
конструирования операторов с помощью которых человек сообщает компьютеру
последовательность команд.
История
развития: 1. В машинных кодах; 2. Язык ASSEMBLER; 3. Язык FORTRUN 1954;
4. Язык COBOL
1960; 5. BASIC
1963; 6. PASCAL
1970 (Николас Вирт); 7. С 1972 (Ритчи, Кернеган).
Язык С хорошо зарекомендовал себя эффективностью,
лаконичностью записи алгоритмов, логической стройностью программ. Во многих
случаях программы, написанные на языке С,
сравнимы по скорости с программами, написанными на языке ассемблера; при этом
они более наглядны и просты в сопровождении. Одним из основных достоинств языка Си считается высокая
переносимость написанных на нем программ между компьютерами с различной
архитектурой, между различными операционными средами. Язык С имеет ряд
существенных особенностей, которые выделяют его среди других языков программирования. Это язык программирования высокого уровня,
обеспечивающий необычайно легкий доступ к аппаратным средствам компьютера.
Иногда С называют языком программирования "среднего" уровня. С одной
стороны, как и другие современные языки
высокого уровня, язык С поддерживает полный набор конструкций структурного
программирования, модульность, блочную структуру
программ, раздельную компиляцию. С другой стороны, в С реализованы некоторые
операции низкого уровня (в частности, операции над битами). Некоторые из таких
операций напрямую соответствуют машинным командам. Базовые типы данных языка С
отражают те же объекты, с которыми приходится иметь дело в программе на языке
ассемблера, — байты, машинные слова, символы, строки. Несмотря на наличие в
языке С развитых средств построения составных объектов (массивов и структур), в
нем практически отсутствуют средства для работы с ними как с единым целым
(нельзя, например, сложить две структуры). Язык С поддерживает механизм
указателей на переменные и функции. Поддерживается арифметика указателей, что позволяет осуществлять непосредственный доступ и работу с адресами памяти практически
так же легко, как на языке ассемблера.
Несмотря на
эффективность и мощность конструкций языка С, он относительно мал по объему. В
нем отсутствуют встроенные операторы для выполнения ввода-вывода, динамического
распределения памяти, управления процессами и т.п., однако в системное
окружение языка С входит библиотека стандартных функций, в которой реализованы
подобные действия. Вынос этих функций в библиотеку позволяет отделить
особенности архитектуры конкретного компьютера и соглашений операционной
системы от реализации языка, сделать программу
максимально независимой от деталей реализации операционной среды. В то же время
программисты могут пользоваться системными библиотечными программами, чтобы более эффективно использовать особенности конкретных
операционных сред.
Классификация
языков программирования:
Процедурно-ориентированный
язык – яп, в котором есть
возможность описания программ как совокупности процедур. Процедуры имеют
возможность вызова других процедур и самих себя (рекурсия). Программа может
быть представлена одной процедурой, считающейся главной.
Процедура
– Часть программы выполняющая некоторые операции над данными в соответствии с
задаваемыми параметрами. К процедурным языкам программирования относятся
фортран, си, паскаль, Алгол.
Логическое
программирование – класс языков, который основывается
на символической логике. Пример: пролог. Логические языки программирования наиболее приспособлены для реализации в
рамках вычислительных архитектур с высокой степенью параллелизма. Логические
языки программирования являются основными при проектировании систем
искусственного интеллекта, систем управления базами знаний и экспертных систем.
Логические языки программирования позволяют хранить информацию в базах фактов и
знаний, которые представляются в них в виде решающих правил. Вычисления
сводятся к определению фактов и продуцированию выводов на основе логики вида
«если существует факт 1, то сущ. факт 2» или «если истина А, то выполнить В».
Функциональный язык
программирования – класс языков программирования,
основанных на идеях лямбда-исчисления и теории рекурсивных функций. Программы
представляют собой неупорядоченный набор уравнений, определяющих функции и их значения рекурсивно через функцию и значения,
которые задаются функцией от других значений. В конечном итоге полный набор
уравнений достаточен для определения всех функций и значений через элементарные
функции и значения, имеющиеся в языке. Среди задаваемых значений содержатся
требуемые результаты, которые вычисляются в ходе выполнения программы. Пример:
Лисп - предназначен для обработки нецифровых данных. Основной структурой данных
этого языка является список, элементами которого служат атомы. Собственно
программы также представляют собой список, т.о. и программы и данные имеют одинаковую
структуру. Лисп используется при программировании в области искусственного
интеллекта.
Объектно-ориентированные
языки программирования. В данном подходе проектирования программ
понятия процедуры и данных, которые используются в других подходах программирования
заменены на понятие объекта и сообщения. Объект – это пакет информации в
совокупности с описанием порядка манипулирования этой информацией. Сообщения –
спецификация условий выполнения одной из
операций обработки объекта. В отличие от процедуры, которая описывает, как
должна проходить обработка, сообщения определяют, что желает отправитель, а
получатель – что должно произойти. В этом подходе к проектированию программ
используются следующие основные понятия: инкапсуляция, полиморфизм, наследование.
Инкапсуляция
– хранение в объекте данных и методов их обработки. Этот принцип позволяет
жестко ограничить набор способов модифицирования данных. Наследование
позволяет создавать объекты с использованием средств ранее использованных
объектов. Полиморфизм позволяет автоматизировать процесс обработки
данных за счет автоматического выбора способов обработки в зависимости от вида
данных. Все это значительно повышает производительность.
Классификация языков
программирования: 1.
Неструктурный (преобразование машинных кодов на языке Assembler); 2. Модульные (задачи→подзадачи →алгоритмы→функции); 3. Логический
подход; 4. Объектно-ориентированный подход; 5. Функциональный подход; 6.
Смешанный подход; 7.
Компонентно-ориентированный подход;
|