Реферат: Учебно-методическое пособие Тольятти тгу 2011 удк 004. 3(075) ббк 32. 97



Министерство образования и науки Российской Федерации

Тольяттинский государственный университет

Автомеханический институт

Кафедра «Компьютерные технологии и обработка материалов давлением»


А.П. Тонких


ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Учебно-методическое пособие


Тольятти

ТГУ

2011

УДК 004.3(075)

ББК 32.97


Тонких, А.П. Языки программирования: учебно-методическое пособие / А.П. Тонких. – Тольятти: ТГУ, 2011. – 75 с.


Учебно-методическое пособие по дисциплине «Языки программирования» предназначено для студентов очной формы обучения и содержит конспект лекций по ключевым темам курса и практикум.


Рекомендовано к изданию научно-методическим советом Тольяттинского государственного университета.


© ГОУ ВПО «Тольяттинский государственный университет», 2011

ОГЛАВЛЕНИЕ


^ 1 УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ ПО ДИСЦИПЛИНЕ 6

1.1 Цели и задачи дисциплины 6

1.2 Методические указания по изучению тем 7

1.3 Глоссарий 9

1.4 Библиографический список 13

1.5 Форма контроля 15

1.6 Обзор Интернет-ресурсов по дисциплине 15

^ 2 КУРС ЛЕКЦИЙ 16

2.1 Языки программирования высокого уровня 16

2.1.1 Эволюция языков программирования 16

2.1.2 Классификация языков программирования 18

2.1.3 Структуры и типы данных языка программирования 20

2.1.4 Транслятор, компилятор, интерпретатор 24

2.1.5 Интегрированные среды программирования 27

2.1.6 Вопросы для самоконтроля 28

2.2 Технологии программирования 29

2.2.1 Структурное программирование 29

2.2.2 Объектно-ориентированное программирование 31

2.2.3 Вопросы для самоконтроля 33

2.3 Общая структура программы и элементы алгоритмического языка Си 33

2.3.1 Функции, библиотеки функций, переменные, операторы, операции 35

2.3.2 Пример простой программы 37

2.3.3 Базовые типы данных char, int, long, float, double 42

2.3.4 Модификатор unsigned 44

2.3.5 Массивы: описание, определение, способы формирования и особенности работы 44

2.3.6 Классификация операций: арифметические, сравнения, логические, машинно-ориентированные, адресные, присваивания. Порядок и направление выполнения 48

2.3.7 Классификация операторов – выражения с «;», составной оператор (последовательность), условие, цикл, переход 52

2.3.8 Вопросы для самоконтроля 57

2.4 Массивы как последовательные структуры данных 57

2.4.1 Массивы одномерные. Описание массивов 58

2.4.2 Типовые алгоритмы обработки массивов 60

2.4.3 Вопросы для самоконтроля 64

^ 3 ПРАКТИКУМ ПО ДИСЦИПЛИНЕ 65

3.1 Условные операторы в языке программирования Си++ 65

3.2 Программирование циклов 70


ВВЕДЕНИЕ

Цель данного пособия – помочь вам в изучении дисциплины ^ Языки программирования. Настоящее пособие предназначено для студентов очного отделения. В учебно-методическом пособии приведены начальные сведения об алгоритмических языках. Дисциплина «Языки программирования» относится к вариативной части цикла математических и общих естественнонаучных дисциплин.

Структурно пособие состоит из:

Методических указаний по изучению тем;

Конспекта лекций;

Практикума по дисциплине.

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

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

В разделе Практикум по дисциплине представлены упражнения по темам:

линейные структуры;

структуры с ветвлениями;

циклы с неизвестным числом повторений;

циклы с заданным числом повторений.

Структурно конспект лекций пособия состоит из 4 тем. В каждой теме рассмотрены теоретические вопросы, ориентированные на выполнение практических заданий.

Автор желает вам удачи.


^ 1УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ ПО ДИСЦИПЛИНЕ
Дисциплина «Языки программирования» в соответствии с учебным планом направления подготовки 080100 «Экономика» изучается студентами в течение одного семестра и предусматривает форму итоговой аттестации – зачёт.

^ 1.1Цели и задачи дисциплины
Цель изучения дисциплины «Языки программирования» – введение в проблематику языков программирования.

В результате обучения студент должен

знать:

понятие языка программирования;

эволюцию языков программирования;

иметь представление:

о парадигмах программирования (императивной, функциональной, логической);

о технологиях программирования (структурной, модульной, объектно-ориентированной);

об аспектах формализации синтаксиса и семантики языков программирования;

ознакомиться:

с основными концепциями языков программирования;

с классификацией языков программирования;

демонстрировать способность:

к самостоятельному освоению языков программирования высокого уровня;

к пониманию основных концепций и парадигм программирования.


^ 1.2Методические указания по изучению тем
Тема 1. Языки программирования высокого уровня

Цель: познакомить студентов с эволюцией языков программирования, классификацией языков, интегрированными средами программирования.

Содержание темы

1. Эволюция языков программирования.

2. Классификация языков программирования.

3. Структуры и типы данных языка программирования.

4. Транслятор, компилятор, интерпретатор.

5. Интегрированные среды программирования.

Изучив данную тему, студент должен:

знать

этапы развития языков программирования;

языки обработки данных;

основные структуры и типы данных;

интегрированные среды программирования;

иметь представление

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

При работе с учебным материалом темы необходимо:

изучить раздел 2.1 конспекта лекций;

ответить на контрольные вопросы по теме в конце раздела 2.1 конспекта лекций.


Тема 2. Технологии программирования

Цель: познакомить студентов с основными технологиями программирования.

Содержание темы

1. Структурное программирование.

2. Объектно-ориентированное программирование.

Изучив данную тему, студент должен:

знать

основные понятия технологии структурного программирования;

основные принципы объектно-ориентированного программирования.

При работе с учебным материалом темы необходимо:

изучить раздел 2.2 конспекта лекций;

ответить на контрольные вопросы по теме в конце раздела 2.2 конспекта лекций.

Тема 3. Общая структура программы и элементы алгоритмического языка Си

Цель: усвоить правила записи констант, переменных и арифметических выражений и научиться составлять простейшие линейные программы на Си.

Содержание темы

1. Функции, библиотеки функций, переменные, операторы, операции.

2. Пример простой программы.

3. Базовые типы данных char, int, long, float, double.

4. Модификатор unsigned.

5. Массивы: описание, определение, способы формирования и особенности работы.

6. Классификация операций: арифметические, сравнения, логические, машинно-ориентированные, адресные, присваивания. Порядок и направление выполнения.

7. Классификация операторов – выражения с «;», составной оператор (последовательность), условие, цикл, переход.

Изучив данную тему, студент должен:

знать

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

основные средства языка;

алфавит языка;

служебные слова;

уметь

задавать идентификаторы;

описывать целые и вещественные типы данных;

пользоваться функциями преобразования типов;

записывать арифметические выражения;

определять тип результата арифметического выражения;

решать простые задачи с использованием операторов присваивания, ввода, вывода;

иметь представление

о типах данных;

о множестве допустимых арифметических операций над данными различных типов;

о синтаксисе арифметических выражений;

о синтаксисе операторов ввода-вывода.

При работе с учебным материалом темы необходимо:

изучить раздел 2.3 конспекта лекций;

ответить на контрольные вопросы по теме в конце раздела 2.3 конспекта лекций;

выполнить упражнения из раздела 3.1 практикума по дисциплине.


Тема 4. Массивы как последовательные структуры данных

Цель: ознакомиться со способом хранения однотипной информации в поименованном наборе, массиве.

Содержание темы

1. Массивы одномерные. Описание массивов.

2. Типовые алгоритмы обработки массивов.

Изучив данную тему, студент должен:

знать

простейшие стандартные алгоритмы работы с массивами;

способы определения массивов;

уметь

разрабатывать простые программы на Си с использованием массивов;

иметь представление

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

При работе с учебным материалом темы необходимо:

изучить раздел 2.4 конспекта лекций;

ответить на контрольные вопросы по теме в конце раздела 2.4 конспекта лекций;

выполнить упражнения из раздела 3.2 практикума по дисциплине.
1.3Глоссарий
Ада (Ada) – язык программирования, созданный в 1979-1980 годах в результате проекта, предпринятого Министерством обороны США с целью разработать единый язык программирования для встраиваемых систем.

Алгол (англ. Algol) – название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ.

Алгоритм – это последовательность арифметических, логических и прочих операций, необходимых для выполнения на ЭВМ.

Алгоритмический язык – формальный язык, используемый для записи, реализации и изучения алгоритмов. Всякий язык программирования является алгоритмическим языком, но не всякий алгоритмический язык пригоден для использования в качестве языка программирования.

Бейсик (BASIC) – семейство высокоуровневых языков программирования.

Библиотека (англ. library) – сборник подпрограмм или объектов, используемых для разработки программного обеспечения.

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

Ветвление – алгоритм может пойти по одной из двух возможных ветвей. Происходит выбор одного из путей работы алгоритма.

Вложенные циклы (цикл в цикле) – структура, которая позволяет внутри тела цикла повторять некоторую последовательность операторов, т.е. организовать внутренний цикл.

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

Данные – часть программы, совокупность значений определённых ячеек памяти, преобразование которых осуществляет код.

Декларативное программирование – описание логики алгоритма, но не управления. Программа является теорией, а вычисления представляют собой вывод в этой теории.

Императивное программирование – парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние программы. Императивная программа очень похожа на приказы, то есть это последовательность команд, которые должен выполнить компьютер.

Индексный массив – именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу.

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

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

Интегрированная среда программирования – система программных средств, используемая программистами для разработки программного обеспечения.

Интерпретатор (англ. interpreter – переводчик) – это программа, которая переводит каждую команду и выполняет программу построчно, что позволяет сразу редактировать и исправлять ошибки.

Итерационные циклы – циклы, число повторений тела которых заранее неизвестно. Выход из итерационного цикла осуществляется по выполнению некоторого условия.

Исполнительная часть программы – часть программы, содержащая инструкции (операторы) компьютеру на выполнение.

Исходный код – написанный человеком текст компьютерной программы на каком-либо языке программирования.

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

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

Комментарии – пояснения к исходному тексту программы, находящиеся непосредственно внутри комментируемого кода. Синтаксис комментариев определяется языком программирования.

Компилятор (англ. compiler – составитель) читает всю программу целиком, делает её перевод и создаёт законченный вариант программы на машинном языке, который затем и выполняется.

Линейный алгоритм – последовательное выполнение операций. В этом алгоритме не предусмотрены проверки условий или повторений, т.е. циклы.

Логический тип данных – примитивный тип данных, которые могут принимать два возможных значения, иногда называемых правдой и ложью.

Логическое программирование – парадигма программирования, основанная на автоматическом доказательстве теорем. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

Машинный код – система команд конкретной вычислительной машины, которая интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.

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

Модульность – принцип, согласно которому программное средство разделяется на отдельные именованные сущности, называемые модулями.

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

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

Объект – некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств и операций над ними.

Объектно-ориентированное или объектное программирование – парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

Оператор ветвления (условная инструкция, условный оператор) – оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд в зависимости от значения некоторого выражения.

Описательная часть программы – часть программы, которая используется для описания переменных, констант, пользовательских типов, меток.

Отладчик (англ. debugger) – модуль среды разработки или отдельное приложение, предназначенное для поиска ошибок в программе. Отладчик позволяет выполнять пошаговую трассировку, отслеживать, устанавливать или изменять значение переменных в процессе выполнения программы, устанавливать и удалять контрольные точки или условия остановки и т.д.

Парадигма программирования – совокупность идей и понятий, определяющая стиль написания программ.

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

Переменная – поименованная, либо адресуемая иным способом область памяти, имя или адрес которой можно использовать для осуществления доступа к данным, находящимся в переменной.

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

Полиморфизм – возможность объектов с одинаковой спецификацией иметь различную реализацию.

Присваивание – механизм в программировании, позволяющий динамически изменять связи объектов данных с их значениями.

Пролог (фр. Programmation en Logique) – язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна.

Программа – запись алгоритма на языке программирования, приводящая к конечному результату за конечное число шагов.

Программирование – процесс создания компьютерных программ.

Процедура – любая подпрограмма, которая не является функцией.

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

Семантика – система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка.

Си (англ. C) – стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би.

Синтаксис – сторона языка программирования, которая описывает структуру программ как наборов символов. Синтаксису языка противопоставляется его семантика.

Скриптовый язык (язык сценариев) – язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Сценарии обычно интерпретируются, а не компилируются.

Следование – тип вычислительного процесса, при котором действия выполняются строго в том порядке, в котором записаны.

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

Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.

Тип переменной определяет объём оперативной памяти, выделяемой под хранение переменной.

Транслятор – это программа, которая преобразует исходную программу (написанную на одном из языков высокого уровня) в программу, состоящую из машинных команд.

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

Функциональное программирование объединяет разные подходы к определению процессов вычисления на основе достаточно строгих абстрактных понятий и методов символьной обработки данных.

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

Цикл с параметром – цикл, в котором тело цикла выполняется для всех значений некоторой переменной (параметра цикла) в заданном диапазоне.

Цикл с постусловием – цикл, в котором тело цикла выполняется до тех пор, пока не выполнится условие.

Цикл с предусловием – цикл, в котором тело цикла выполняется до тех пор, пока условие выполняется.

Циклический алгоритм предусматривает многократное повторение одной или нескольких операций в зависимости от условия задачи.

Язык ассемблера – язык программирования низкого уровня, мнемонические команды которого соответствуют инструкциям процессора вычислительной системы.

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

^ 1.4Библиографический список
Аляев, Ю.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: учеб.-справ. пособие /Ю.А. Аляев, О.А. Козлов. – М.: Финансы и статистика, 2002. – 319 с.

Баррон, Д. Введение в языки программирования = An Introduction to the Study of Programming Languages /Д. Барон; пер. с англ. В.А. Серебрякова; под. ред. Ю.М. Баяковского. – М.: Мир, 1980. – 190 с.

Бен-Ари, М. Языки программирования = Understanding Programming Language: практический сравнительный анализ: учебник /М. Бен-Ари; пер. с англ. В.С. Штаркмана[и др.]; под. ред. В.С. Штаркмана. – Мир, 2000. – 266 с.

Голицына, О.Л. Языки программирования: учеб. пособие /О.Л. Голицына, Т.Л. Партыка, И.И. Попов. – М.: ФОРУМ, 2010. – 397 с.

ГОСТ 22558-89 (СТ СЭВ 6184-88; ИСО 1989-85). Язык программирования КОБОЛ. Ч. 1-7. – Введ. 01.01.91, 1991. – 448 с.

ГОСТ 22558-89 (СТ СЭВ 6184-88; ИСО 1989-85). Язык программирования КОБОЛ. Ч. 8-17. – Введ. 01.01.91, 1991. – 359 с.

ГОСТ 23056-78. Языки программирования. Фортран и базисный Фортран: [Сб.]: ГОСТ 23056-78, ГОСТ 23057-78. – 47 с.

ГОСТ 27831-88 (ИСО 8652-87). Язык программирования Ада. – Введ. 01.07.89. – М.: Изд-во стандартов, 1989. – 264 с.

ГОСТ 27974-88, ГОСТ 27975-88. Язык программирования Алгол 68 и Алгол 68 расширенный. – Введ. 01.07.90, 1989. – 320 с.

ГОСТ 28397-89. Языки программирования. Термины и определения. – Введ. 01.01.91, 1990. – 11 с.

Доорс, Д. Пролог – язык программирования будущего /Д. Доорс, А.Р. Рейблейн, С. Вадера; пер. с англ. и предисл. А.Н. Волкова. – М.: Финансы и статистика, 1990. – 142 с.

Липпман, С. Язык программирования C++ = C++Primer: вводный курс /С. Липпман, Ж. Лайоже; пер. с англ. А. Слинкина. – М.: Невский диалект – ДМК Пресс, 2003. – 1104 с.

Маслов, А.Н. Введение в язык программирования C: учеб.-справ. пособие /А.Н. Маслов. – М.: МИП «Память», 1991. – 62 с.

Опалева, Э.А. Языки программирования и методы трансляции: учеб. пособие для вузов /Э.А. Опалева, В.П. Самойленко. – СПб.: БХВ-Петербург, 2005. – 476 с.

Очков, В.Ф. Языки программирования CW Basic и Q Basic: Сравнительное описание /В,Ф. Очков. – М.: Энергоатомиздат. 1992. – 76 с.

Перминов, О.Н. Введение в язык программирования ада /О.Н. Перминов. – М.: Радио и связь, 1991. – 288 с.

Свердлов, С.З. Языки программирования и методы трансляции: учеб. пособие для вузов /С.З. Свердлов. – СПб.: Питер-Пресс, 2007. – 637 с.

Свердлов, С.З. Языки программирования и методы трансляции [Электронный ресурс]: учеб. пособие для вузов /С.З. Свердлов. – СПб.: Питер-Пресс, 2007. – CD; 223 МБ.

Фути, К. Языки программирования и схемотехника СБИС: [учеб. пособие] /К. Фути, Н. Судзуки; пер. с яп. А.С. Чупахина; под ред. А.Б. Фролова. – М.: Мир, 1988. – 224 с.

Языки программирования Ада, Си, Паскаль = Comparing and Assessing Programming Language Ada, C, and Pascal: сравнение и оценка /под. ред. А. Фьюэра [и др.]; пер. с англ. И.А. Леонене; под. ред. В.В. Леонаса. – М., Радио и связь, 1989. – 367 с.



^ 1.5Форма контроля
В ходе подготовки к зачёту необходимо освоить теоретический материал, представленный в учебном пособии «Языки программирования», ответить на все вопросы самоконтроля в конце каждого раздела, а также выполнить практикум.
^ 1.6Обзор Интернет-ресурсов по дисциплине
http://iguania.ru/. Этот сайт может помочь вам сделать первые и уверенные шаги в мир программирования: здесь пользователю предоставлены среды разработки, отобрана специально для начинающих литература, располагаются вспомогательные материалы.

http://kufas.ru/. Это учебник, в котором изложены основы языков Си/Си++. Также рассматриваются основные понятия программирования, даются основные, базовые понятия и принципы построения алгоритмов работы с величинами.

http://lib.ru/CPPHB/cpptut.txt. Книга Б. Страуструпа «Язык программирования C++» даёт описание языка, его ключевых понятий и основных принципов программирования на нём. Эта книга является полным описанием языка С++.

http://progopedia.ru/. Это свободная энциклопедия языков программирования, редактором которой может стать любой желающий. Идея проекта состоит в том, чтобы составить максимально полный перечень языков программирования.

http://softvt.jet-host.ru/. Это сайт для начинающих программистов, а также для тех, пользователей, которые хотят поднять свой уровень знаний об информационных технологиях в целом.

http://www.helloworld.ru/. На этом сайте выложены книги и документация по программированию.

http://www.life-prog.ru/. На данном сайте рассматриваются языки высокого уровня (Паскаль, Си). Также здесь можно найти информацию по объектно-ориентированному программированию.

http://www.uchi-it.ru/. На сайте собрана коллекция учебников по основам программирования на различных языках.
^ 2КУРС ЛЕКЦИЙ 2.1Языки программирования высокого уровня
Развитие вычислительной техники сопровождается созданием новых и совершенствованием существующих средств общения программистов с электронными вычислительными машинами – языков программирования.

Под языком программирования понимают правила представления данных и записи алгоритмов их обработки, которые автоматически выполняются ЭВМ. В более абстрактном виде язык программирования является средством создания программных моделей объектов и явлений внешнего мира.

К настоящему времени созданы тысячи различных языков программирования – от самых примитивных до близких к естественному языку человека. Чтобы разобраться во всём многообразии языков программирования, нужно знать их классификацию, а также историю создания, эволюцию и тенденции развития.
^ 2.1.1Эволюция языков программирования
 Чтобы понимать тенденции развития языков программирования, нужно знать движущие силы их эволюции. Для выяснения этого вопроса будем рассматривать языки программирования с различных точек зрения.

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

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

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

В-четвёртых, совершенствование самих ЭВМ приводит к необходимости создания языков программирования, максимально реализующих новые возможности ЭВМ.

В-пятых, программы являются интеллектуальным продуктом, который нужно накапливать и приумножать. Но программы, как и технические устройства, обладают свойством морального старения, одной из причин которого является их зависимость от типа ЭВМ и операционной среды. С моральным старением программ борются путём их модернизации и выпуска новых версий, однако при высокой динамике смены типов ЭВМ и операционных сред разработчики будут только тем и заниматься, что модернизировать старые программы. Поэтому, язык программирования должен обеспечивать продолжительный жизненный цикл программы, и стремление к этому является пятой движущей силой развития языков программирования.

Известно, что первым программистом была женщина – леди Ада Лавлейс, дочь поэта лорда Байрона. Она разрабатывала программы для одного из первых механических компьютеров, созданного в начале XIX века английским учёным Чарльзом Беббиджом. Однако настоящее программирование в современном понимании началось с момента создания первой ЭВМ. Тем не менее, имя этой замечательной женщины – Ada – присвоено одному из самых мощных современных языков программирования, который является базовым для министерства обороны США.

Первые компьютеры, созданные человеком, имели небольшой набор команд и встроенных типов данных, но позволяли выполнять программы на машинном языке. Машинный язык – единственный язык, понятный ЭВМ. Он реализуется аппаратно: каждую команду выполняет некоторое электронное устройство. Программа на машинном языке представляет собой последовательность команд и данных, заданных в цифровом виде. Например, команда вида 1А12 в 16-ричном виде или 0001101000010010 в двоичном виде означает операцию сложения (1А) содержимого регистров 1 и 2.

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

Стремление программистов оперировать не цифрами, а символами, привело к созданию мнемонического языка программирования, который называют языком ассемблера, мнемокодом, автокодом. Этот язык имеет определенный синтаксис записи программ, в котором, в частности, цифровой код операции заменен мнемоническим кодом. Например, команда сложения записывается в виде AR 1,2 и означает сложение (Addition) типа регистр-регистр (Register) для регистров 1 и 2. Теперь программа имеет более наглядную форму, но её не понимает ЭВМ. Поэтому понадобилось создать специальную программу – транслятор, который преобразует программу с языка ассемблера на машинный язык. Эта проблема потребовала, в свою очередь, глубоких научных исследований и разработки различных теорий, например теорию формальных языков, которые легли в основу создания трансляторов. Практически любой класс ЭВМ имеет свой язык ассемблера. На сегодняшний день язык ассемблера используется для создания системных программ, использующих специфические аппаратные возможности данного класса ЭВМ.

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

Принципиальными отличиями языков высокого уровня от языков низкого уровня являются:

- использование переменных;

- возможность записи сложных выражений;

- расширяемость типов данных за счет конструирования новых типов из базовых;

- расширяемость набора операций за счёт подключения библиотек подпрограмм;

- слабая зависимость от типа ЭВМ.

С усложнением языков программирования усложняются и программы для работы с ними. Теперь в набор инструментов программиста помимо транслятора входит текстовый редактор для ввода текста программ, отладчик для устранения ошибок, библиотекарь для создания библиотек программных модулей и множество других служебных программ. Комплекс этих программ называется системой программирования. Наиболее яркими представителями языков высокого уровня являются FORTRAN, PL/1, Pascal, C, Basic, Ada.

Может возникнуть вопрос: почему создано столько различных языков одного класса? Почему нельзя создать один язык на все случаи жизни? Ответ на этот вопрос может быть таким же, как и на вопрос о различных языках народов мира: так уж получилось. Каждый из разработчиков языков высокого уровня стремился создать лучший и самый универсальный язык, который позволял бы быстро получать самые эффективные, надёжные и безошибочные программы. Однако в процессе этого поиска выяснилось, что дело не в самом языке, а в технологии его использования. Поэтому дальнейшее развитие языков стало определяться новыми технологиями программирования.

Одновременно с развитием универсальных языков высокого уровня стали развиваться проблемно-ориентированные языки программирования, которые решали экономические задачи (COBOL), задачи реального времени (Modula-2, Ada), символьной обработки (Snobol), моделирования (GPSS, Simula, SmallTalk), численно-аналитические задачи (Analitic) и другие. Эти специализированные языки позволяли более адекватно описывать объекты и явления реального мира, приближая язык программирования к языку специалиста в проблемной области.

Другим направлением развития языков программирования является создание языков сверхвысокого уровня. На языке высокого уровня программист задаёт алгоритм (процедуру) получения результата по известным исходным данным, поэтому они называются процедурными языками программирования. На языке сверхвысокого уровня программист задаёт отношения между объектами в программе, например систему линейных уравнений, и определяет, что нужно найти, но не задаёт как получить результат. Такие языки еще называют непроцедурными, так как сама процедура поиска решения встроена в язык. Такие языки используются для решения задач искусственного интеллекта (Lisp, Prolog), позволяя моделировать мыслительную деятельн
еще рефераты
Еще работы по разное