Язык программирования – набор
ключевых слов и система грамматических и синтаксических правил для
конструирования операторов с помощью которых человек сообщает компьютеру
последовательность команд.
История
развития: 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. Компонентно-ориентированный подход;
|