Какие характеристики присущи для алгоритмических языков

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

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

Немного истории

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

алгоритмический язык

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

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

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

Что представляет собой алгоритм

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

  1. Поставить чайник на плиту.
  2. Дождаться его закипания.
  3. Налить кипяток в воду.
  4. Опустить чайный пакет в чашку.
  5. Добавить необходимое количество сахара, молока или мёда.

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

алгоритмический язык программирования

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

Свойства и особенности алгоритмического языка

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

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

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

Различия между машинными и алгоритмическими языками

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

формальный язык

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

Ключевые слова

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

  • Алг. С этого ключевого слова начинается любой алгоритм. В нем описывается название и в скобках указывается, какие аргументы он принимает для вычисления, и что должно получиться в результате.
  • Арг. Обозначает аргументы алгоритма. Отражает тип и название значения, которое будет использован в коде.
  • Рез. Данное ключевое слово служит для обозначения типа и имени переменной, в которую будет необходимо поместить результат вычисления.
  • Нач. Означает непосредственное начало выполнения алгоритма. Длится до ключевого слова кон. Весь промежуток от "нач" до "кон" называется телом текущего алгоритма.
  • Кон. Сообщает о том, что выполнение алгоритма окончено.
  • Дано. Говорит о некоторых особенностях и нюансах использования алгоритма или об ограничениях. Например, здесь можно указать, что длины сравниваемых строк должны быть одинаковыми. Использование ключевого слова "дано" необязательно.
  • Надо. Более подробное описание того, что должно получиться в результате выполнения алгоритма. Так же, как и "дано", может опускаться, но для построения более понятного и подробного кода его использование рекомендуется.

Список данных ключевых слов относится к заголовку и обозначению тела алгоритма. А вот так выглядят лексемы для переменных:

  • Цел. Тип переменной целых чисел. Диапазон их должен варьироваться от -32768 до 32767.
  • Вещ. Вещественные числа. Например, с экспонентой или дробной частью.
  • Лог. Это ключевое слово означает, что будет использована переменная логического типа, способная принимать только "да" или "нет".
  • Сим. Сюда входят значения с одиночными символами, например, «а», «3».
  • Лит. Строковые переменные, которые могут содержать целые текстовые строки.
  • Таб. Обозначает таблицу с данными определённого типа. Представляет собой аналог массива из других языков программирования.

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

Дополнительные служебные слова

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

  • Для. Применяется для перебора всех значений определённого диапазона. Используется для циклов, т. е. непрерывного выполнения каких-либо процедур с данными.
  • От и до. Указывает, какой именно диапазон значений нужно перебрать в цикле типа "для".
  • Пока. Также служит для перебора нескольких значений. Используется для работы до тех пор, пока не выполнится определённое условие.
  • Нц и кц. "Нц" в алгоритмическом языке означает начало тела цикла, а "кц" — конец. Между этими двумя ключевыми словами встраиваются необходимые для вычисления процедуры.
  • Если. С помощью этого слова реализуется структура ветвления. Таким образом можно определить ход программы в нужном направлении, учитывая условия.
  • То, иначе. Два слова, работающих в паре с "если". Также выстраивают механизм ветвления.
  • Выбор. Удобный инструмент для осуществления ветвления из нескольких значений одного типа. Работает в паре с ключевым словом "при" и "иначе".
  • Все. Означает окончание механизма ветвления.
  • Ввод. Данное ключевое слово позволяет пользователю вводить значения переменных в ходе работы программы для их последующей обработки.
  • Вывод. Производит вывод данных на экран.

Основные структуры языка

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

составляющие алгоритмического языка

Структура следования

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

алг Сумма двух чисел (арг цел a, b, рез цел S)

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

нц в алгоритмическом языке

В теле алгоритма ключевое слово "ввод" принимает от пользователя данные и записывает их в переменные. Затем они складываются, и их сумма присваивается S. Перед концом алгоритма результат работы программы выводится на экран посредством ключевого слова "вывод". Данная запись на алгоритмическом языке типична и для многих других сред программирования.

Структура ветвления

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

Алгоритмический язык программирования для этого использует несколько вариантов конструкций и ключевые слова "если", "то", "иначе" или "выбор". После "если" устанавливается условие, по которому будет определяться критерий перехода в другую ветвь. Например, так:

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

То есть в случае, когда х будет не равен нулю, у также обнулится вне зависимости от значения, которое он имел до этого.

Более удобным средством для осуществления множественного выбора является конструкция "выбор". Она позволяет перебрать несколько условий. При срабатывании одного из них будет выполнено указанное для него действие.

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

Циклы

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

Ключевое слово "пока" позволяет организовать цикл, в котором определённое действие будет повторяться до тех пор, пока не удовлетворится некое условие. Например:

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

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

Синтаксис его выглядит так:

нц для х от 1 до 3

Служебные слова "от" и "до" показывают диапазон значений, которые необходимо перебрать. Таким образом в первой итерации х = 1, в результате прохода у приобретёт также значение 1. Дальше управление опять перейдёт в начало, и х теперь будет равен 2, соответственно, у станет 3.

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

Стандартные функции

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

  • абсолютный модуль — abs(x);
  • корень квадратный — sqrt(x);
  • натуральный и десятичный логарифмы — ln(x) и lg(x);
  • минимум и максимум двух чисел — min(x,y), max (x,y);
  • синус, косинус, тангенс, котангенс — sin(x), cos(x), tg(x), ctg(x).

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

Логические выражения

Логические выражения отражают, удовлетворяет ли некая операция условию. Например, х > 0 будет иметь значение "истина" при х, равном 1, 2, 25 или любом другом числе больше нуля. Алгоритмический язык содержит логические выражения, которые помимо стандартных математических операций могут использовать следующие ключевые слова и операторы:

  • И. Означает, что выражения, между которыми находится ключевое слово, должны удовлетворять определённому условию: (х>0) и (у>0);
  • Или. Одно из выражений может не удовлетворять условию, например, (х>0) или (у>0);
  • Не. «Переворачивает» логическое значение выражения. Например, такая конструкция не (х>0), означает, что х все же должен быть не больше нуля.

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

Небольшая программа для алгоритмического языка

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

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

Составляющие алгоритмического языка имеют в своем составе множество ключевых слов. Первое, с чего начинается программа, это объявление об алгоритме — алг.

алг Возведение числа в квадрат ()

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

алг Возведение числа в квадрат (арг цел х, рез цел S)

Теперь машина будет знать, что взаимодействовать ей придется с переменной типа целое число, а результатом ее работы будет S.

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

Первое, что нужно сделать, осуществить ввод данных. Это производится с помощью ключевого слова "ввод".

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

Алгоритмический язык, команды которого позволяют реализовать присвоение, записываются в виде :=. Тем самым в переменную S попадает значение произведения х на самого себя. Строка с выводом показывает результат на экране. Ну и завершается все это ключевым словом "кон". Полный код теперь будет выглядеть так:

алг Возведение числа в квадрат (арг цел х, рез цел S)

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

алг Возведение числа в квадрат и расчёт их суммы (арг цел х, рез цел S)

надо | S = 1*1 + 2*2+ … + x*x

нц для а от 1 до х

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

Использование и развитие алгоритмических языков

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

программа для алгоритмического языка

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

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

Характеристика алгоритмических языков

История развития языков программирования, их особенности и назначение. Универсальный язык программирования COBOL. Развитие средств программирования. Универсальный код символических инструкций BASIC и сущность алгоритмического языка программирования.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 11.01.2010
Размер файла 46,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Содержание

1. История развития языков программирования

1.1 Универсальный язык программирования COBOL

1.2 Алгоритмический язык программирования Алгол

1.3 Универсальный код символических инструкций BASIC"а

1.4 Алгоритмический язык Паскаль

2. Развитие средств программирования

Введение

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

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

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

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

Машинный язык — это такой язык, который компьютер воспринимает непосредственно, то есть это язык машинных команд данной модели компьютера. А мы уже знаем, что ЭВМ "понимают" только язык двоичных знаков: нулей и единиц.

1. История развития языков программирования

С 1954 годов группа инженеров всем известной (теперь) компании IBM под руководством Джона Бекуса занималась созданием компилятора для Fortran. Эти работы велись более 2-х лет и, в конце концов, привели к созданию нового языка. Fortran — это сокращение от двух английских слов FORmula TRANslator — что переводится как "транслятор формул". Как видно из названия, первоначально язык создавался с целью использования при математических расчетах. Он предназначался для написания программ, используемых при решении прикладных технических задач. Основу языка составляли арифметические операторы, соответствующие по своему синтаксису традиционной записи математических выражений. В дополнение к этому в языке имелись средства разбиения сложных алгоритмов на более простые за счет явного определения подпрограмм (SUBROUTINE) и функций (FUNCTION). Описания данных в Fortran были ориентированы на представление главным образом числовой информации, поэтому и типы данных были просты: это целые и действительные числа, а также массивы из таких чисел. Однако программирование на Фортране представляло собой задачу непростую. К примеру, оператор DO 150 I=1,10 определяет начало цикла выполнения команд, идущих непосредственно за ним вплоть до строки с отметкой 150, причем параметр I при каждом новом начале цикла увеличивается на 1, и так до 10. А если вместо запятой между 1 и 10 поставить точку, то вместо цикла мы получим присвоение переменной DO150I значения 1.10. Но поскольку Fortran обладает хорошо развитым математическим аппаратом, и под него за время его существования было написано множество удобных и полезных библиотек, он до сих пор иногда используется при программировании сложных вычислений. Первая версия была предназначена специально для компьютера IBM-704, который работал на лампах (!). Позднее появились более проработанные версии: Фортран II позволял присоединять куски кода на ассемблере, Фортран III и Фортран IV, который вышел в свет в 1962 году, а также Фортран V, который умел работать с комплексными числами. Большим неудобством было то, что на разных машинах стояли Fortran"ы разных версий и между ними не было никакой совместимости, поэтому в 1966 году решено было принять единый стандарт. Следующая стандартизация была проведена в 1977, и версия стандарта Fortran77 стала особенно популярна. Стоит заметить, что это был первый пример коммерчески успешного языка. Fortran не умер и сегодня, как думают многие, хотя область его применения остается достаточно специфической. Появились даже пакеты Visual Fortran, позволяющие писать программы с графическим интерфейсом пользователя под среду Windows. К тому же Fortran до сих пор продолжают изучать при подготовке по некоторым физико-математическим специальностям во многих университетах, где он остается профилирующим языком программирования. Но Fortran приносил радость и утешение лишь ученым, которые решали с его помощью свои специфические научные и инженерные задачи.

1.1 Универсальный язык программирования COBOL

ЭВМ между тем развивались, и становилось понятным, что с их помощью можно решать самые разнообразные проблемы, зачастую не связанные с научными приложениями. Поэтому постепенно разрабатывались и компиляторы других языков программирования. Так в конце 1959 года в США группа разработчиков представила совершенно новый универсальный язык программирования COBOL — это аббревиатура от Common Business-Oriented Language — универсальный язык, ориентированный на задачи бизнеса. В Коболе, в отличие от большинства других языков, все данные описываются в отдельной секции, которая не совпадает с секцией команд. Это позволяет использовать одни и те же описания данных в различных программах. COBOL был аппаратно независим, и это также способствовало его потрясающей популярности в 60-х — 70-х годах, особенно после выхода в 1962 году его новой версии. Особенно эффективно программы, написанные на COBOL"е, производят простые арифметические операции с большими массивами данных, что довольно часто приходится делать в бухгалтерских расчетах. В нашей стране этот язык тоже достаточно широко использовался, причем он, один из немногих, был переведен на русский язык.

1.2 Алгоритмический язык программирования Алгол

Языков программирования было все еще мало, да и те, что были, не всегда устраивали привередливых разработчиков. Поэтому ряд ведущих программистов в Цюрихе представили в 1958 году свое новое детище — Алгол (сокращение от ALGOrithmic Language — алгоритмический язык программирования). Первая версия языка так и называлась — Алгол 58, а позднее, в 60 году, уже в Париже, был принят стандарт Алгол 60, который и стал основным на долгие годы, и хотя несколько раз вносились новые поправки и дополнения, это название оставалось неизменным до 1968 года. Язык приняли неоднозначно, как удачно заметила Грейс Хоппер — один из крупнейших специалистов по языкам высокого уровня (если не сказать "крестная мать" языков программирования) — "Алгол похож на большую поэму: простой и ясный с точки зрения математики, но отнюдь не практичный". В США Алгол не получил широкого распространения, зато европейцы сразу приняли Алгол. Он дал возможность европейской компьютерной индустрии обрести независимость от американской технологии и распространился от Великобритании до Советского Союза. В начале 80-х множество советских программистов работали на Алголе-60. Но основная заслуга этого языка в другом — он заложил базу для дальнейшего развития программистской мысли, и многие языки программирования, разработанные впоследствии и получившие широкое распространение как в кругу профессионалов, так и среди любителей, содержат многие идеи и решения, взятые из Алгола. В первую очередь, это создание специальной нотации для определения синтаксиса алгоритмических языков (нотация Бэкуса-Наура). Во-вторых, доведение до логического завершения самой концепции операторных алгоритмических языков с заранее фиксированными типами данных и блочной структурой. Из дополнительных нововведений можно выделить возможность разработки отдельных модулей проекта независимо друг от друга, а также реализацию вызовов фрагментов кода программы, способов передачи параметров между процедурами и функциями. Достаточно сказать, что именно в Алголе появились понятия блока и рекурсивного вызова функции.

1.3 Универсальный код символических инструкций BASIC

На заре развития вычислительной техники программисты были чем-то вроде обособленной секты, неохотно пускающей в свои ряды новичков. В основном этому способствовали техническое несовершенство компьютеров и малое их количество. Но среди программистов были и те, которые считали необходимым сделать программирование такой же простой и обыденной учебной дисциплиной, как математика. Отцы-основатели BASIC"а (расшифровывается как Basic Beginner"s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих) — два ярких представителя программистов старшего поколения, сотрудники математического факультета Дармутского колледжа Томас Курц и Джон Кемени. Курц имел степень доктора по математической статистике. Впервые с компьютерами он познакомился в 1951 году в Калифорнийском университете. Кемени был на два года младше Курца. С компьютерами он был, что называется, "на ты". Еще во время учебы в Принстоне, он ездил в 1945 году в Лос-Аламос, где принимал участие в работе над особо секретным "Манхэттенским проектом" по созданию атомной бомбы. Наставником Кемени был сам Джон фон Нейман, чьи идеи в области компьютерных вычислений оказали серьезное влияние на все дальнейшие разработки в этом направлении. После войны Кемени работал ассистентом у Альберта Эйнштейна в Принстонском институте перспективных исследований, одновременно заканчивая докторантуру. Так как получить место преподавателя математики не удалось, он преподавал логику. В 1953 году ему предложили возглавить математический факультет в Дартмутском колледже. В то время ему было всего 27 лет. Когда Кемени и Курц только начинали совместное сотрудничество, Дармутский колледж представлял собой лишь небольшое учебное заведение гуманитарного профиля, которое не имело своего компьютера. Однако уже через десять лет колледж не только получил великолепный вычислительный центр, но и право называться родиной языка Бейсик, оказавшего огромное влияние на программирование. В первое время Кемени и Курц были вынуждены работать со своими математическими программами за 215 км от Дармутского колледжа. Ближайший доступный им вычислительный центр находился в Массачусетском технологическом институте. Это был новейший компьютер IBM-704, который имел феноменальный по тем временам объем памяти 8192 слова по 365 разрядов каждое. Но, даже проделав долгий путь, Курц и Кемени не могли самостоятельно работать на машине, из-за существовавшей тогда системы пакетной обработки (batch processing). Так как компьютеры были немногочисленны и страшно дороги, доступ к ним имели только избранные. Программисту требовалось подготовить задание на перфокартах и передать его в вычислительный центр оператору. Он вводил карты в машину в большом пакете, который содержал сотни программ, принадлежащих различным пользователям. Потом происходило ожидание, в течение нескольких дней. Причем не всегда данные, выданные машиной, оправдывали эти ожидания. Малейшей описки было достаточно, чтобы машина прекратила выполнение программы. Исправив ошибку, программист должен был заново отправить программу оператору и опять ждать результатов. Даже хорошие программисты тратили много времени на исправления ошибок в своей программе. Для Курца, а именно он отвозил программы в МТИ, это оборачивалось бесконечными поездками из Дартмута в Бостон и обратно. Но проблемы не ограничивались лишь неудобствами пакетной обработки. Помимо этого первые программы для машины IBM-704 приходилось писать на языке ассемблера. И если программа начинала вести себя "странно", то единственным способом исправления ошибки было изучение дампа памяти — длинной бумажной ленты, содержащей числовые коды. Свое программистское мастерство Кемени и Курц оттачивали, изучая язык ассемблера и разбираясь с бесконечными дампами, лелея надежду об установке компьютера в Дартмуте. Не представляли они себе лишь того, как научить программированию коллег и студентов, ведь сам процесс программирования был чрезвычайно сложным. К началу 60-х годов Кемени и Курц добились некоторых успехов. Вначале Дармутский колледж получил собственный маленький компьютер LGP-30 с объемом памяти вдвое меньше, чем у IBM-704. Курц возглавил новоиспеченный вычислительный центр, и на протяжении нескольких лет два молодых профессора занимались разработкой простых языков, предназначенных для работы на машине LGP-30. Один студент, не занимавшийся до этого программированием, разработал язык "ДАРТ". Успехи студента подтвердили убеждение Курца и Кемени — работа с компьютером вполне по силам студентам. Наконец настала пора выдвинуть идею, которую они вынашивали многие годы. Их предложение было очень смелым: обучать азам программирования всех студентов, независимо от специальностей, будь то гуманитарные или естественные науки. Поставленная цель уже сама по себе была весьма необычной, но намерения Кемени и Курца этим не ограничивались. В отличие от своих коллег, которых вполне устраивала методика обучения студентов программированию путем чтения лекций, Кемени хотел, чтобы студенты работали с машиной "вживую", создавая для нее реальные программы. Но студентов много, а компьютер только один, и, хотя студентам не приходилось путешествовать в другой город, утомительность работы с пакетной обработкой несла с собой разочарования. Будущих инженеров и математиков необходимо было заставить смириться с многочасовым и даже многодневным ожиданием результатов. Перспектива пакетной обработки создавала определенные трудности, но они были не такими пугающими, как сам процесс обучения студентов языкам программирования. Но никакими препятствиями невозможно было остановить пытливые умы "дармутской команды". Для начала они попытались устранить неудобства пакетного режима, и решили использовать систему разделения времени (time sharing), предложенную МТИ в конце 50-х годов. Система разделения времени предполагала подключение к главному процессору (mainframe) нескольких терминалов с алфавитно-цифровой клавиатурой. Специальные инструкции позволяли процессору по очереди подключаться к каждому терминалу, выполняя некоторую часть операций в течение определенного временного отрезка — несколько миллисекунд. Так как используемый процессор предполагался достаточно мощным, у каждого программиста создавалось впечатление, что машина работает только с ним. Следующая их идея была в создании языка программирования, который бы подходил для обучения азам программирования, то есть был бы легок для освоения студентами. Воображение легко рисовало язык, состоящий из английских слов, понятных и программисту, и компьютеру. Операторы нового языка должны были обладать сходством с операторами языка Фортран для возможности легкого перехода на новый уровень программирования. Некоторые идеи Кемени и Курца отличались от существовавших тогда "принципов". Например, введение в язык оператора INPUT, позволяющего вести некое интерактивное взаимодействие. Это позволяло изменять программу в процессе ее работы. Кроме того, язык, разработанный Кемени и Курцом, не предусматривал разделения чисел на целые и вещественные, как в языке Фортран. Бейсик оказался универсальным языком в отличие от, например, COBOL"а. А его простота позволяла использовать преимущества ЭВМ как математикам и инженерам, так и филологам и социологам. Летом 1963 года Кемени начал разрабатывать первую версию компилятора для языка Бейсик. Осенью того же года студенты приступили к проектированию и кодированию операционной системы для машин, на которых Кемени и Курц планировали реализовать свои идеи. Это были машины General Electric-225 и Datanet-30. В феврале 1964 года оборудование было доставлено в колледж, и работа закипела с удвоенной силой. Наконец, 1 мая 1964 года в 4 часа утра в полуподвале здания колледжа Кемени и его коллеги начали набирать программы, каждый на своем терминале. Наконец-то все заработало! Одновременно родились язык Бейсик и система разделения времени. Но это было только начало. Долгое время BASIC не имел компилятора или интерпретатора, который бы позволял создавать полноценные исполняемые exe-файлы. И лишь в конце 1975 году был создан первый его интерпретатор. Он был создан двумя программистами-любителями — Диком Уипплом и Джоном Арнольдом. В том же 1975 году фирма Micro Instrumentation and Telemetry Systems выпустила свою версию языка BASIC. Ее создатели — кто бы вы думали? — никому не известные программист фирмы "Хониуэл" (Honeywell) и студент младших курсов Гарвардского университета Пол Аллен, а также его нерадивый приятель Билл Гейтс. Одно время популярность BASIC"а была столь велика, что PC выпускались с его интерпретатором, прошитым прямо в ПЗУ компьютера. Самым популярным стал М-Бейсик, первый коммерческий успех молодой компании Microsoft Corporation. Но, несмотря на все свои достоинства, и он скоро стал сдавать свои позиции, уступая их объектно-ориентированным языкам программирования. Не помогли даже пересмотры стандарта языка и исключение вечного камня преткновения — оператора безусловного перехода GOTO, который запутывал программу, делая из нее нечто похожее на блюдо спагетти. К слову сказать, Microsoft до сих пор продвигает своего первенца — теперь это уже хорошо разросшийся Visual Basic — целый пакет визуального программирования, который вряд ли кто-нибудь обвинит в "объектной неориентированности", и его аналог для программирования в Internet — VBScript. Несмотря на практически полностью измененный интерфейс, этот язык и сейчас остается простым в изучении и отлично подходит для написания небольших, нетребовательных к ресурсам программ. Еще один очень интересный пример языка, сошедшего с пути исторического развития, о котором сегодня помнят разве что специалисты, — PL/1. Все началось с того, что уже упоминавшаяся ранее фирма IBM в 1961 году решила начать разработку новой ЭВМ. Это должна была быть совершенно новая машина, одинаково хорошо обрабатывающая большие массивы данных и обсчитывающая сложные математические задачи; проект получил название "Система-360". Вместе с новой машиной разрабатывался и язык: он совмещал особенности трех лидеров данного сектора рынка — Фортрана, Кобола и Алгола. Главой проекта стал Джорж Рэдин. Менее чем за год все необходимые работы были проведены, и появился первый компилятор. Свое название язык получил как аббревиатуру от Programming Language One PL/1. Возникает резонный вопрос: почему же мы сегодня ничего не знаем об PL/1, раз он такой хороший и так много всего в себе совмещает? Оказалось, что разработчики далеко не всегда брали от его "родителей" все самое лучшее, как следствие, язык получился перегруженным возможностями и концепциями. Но вернемся к началу 60-х годов. Все основные языки программирования все еще можно было пересчитать по пальцам, но вскоре их число начало резко возрастать. Поэтому были предприняты попытки создать универсальный язык программирования, но ни одна из этих попыток не увенчалась успехом. Среди десятка наиболее распространенных на тот период времени языков программирования каждый был ориентирован на решение определенных задач. Бейсик употреблялся для написания простых программ. Фортран — с его четко определенными правилами выполнения арифметических операций — являлся классическим языком программирования для решения математических и физических задач. Язык программирования COBOL был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса. Другие языки программирования были также специализированы. Еще один заслуживающий внимания язык программирования — Алгол — предназначался для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленной задачи. Программисты далеко неоднозначно приняли Алгол, широкого одобрения он не получил. Но все же влияние Алгола на развитие других языков программирования оказалось значительным. Среди языков, целью создания которых было улучшение Алгола, следует особо отметить.

1.4 Алгоритмический язык Паскаль

Паскаль, разработанный в конце 60-х годов швейцарским ученым Никлаусом Виртом. Pascal был назван в честь французского философа и математика XVII века Блеза Паскаля. Как известно, история повторяется, и вся новизна лишь в том, что на каждом новом витке — она делает это на более высоком уровне. Мы уже отмечали, что BASIC появился как побочный продукт преподавательской деятельности у Кемени и Курца, когда они пытались обучать студентов программированию. Нечто похожее произошло и с Паскалем. Некоторое время Никлаус Вирт был профессором информатики в Федеральном техническом университете в Швейцарии и нуждался в языке, с помощью которого относительно легко можно было бы обучать студентов навыкам программирования на хорошем уровне. Базовая концепция Паскаля была разработана Виртом примерно в 1970 году, и Паскаль очень быстро начал повсеместно распространяться, прежде всего, благодаря легкости в изучении и наглядности написанных на нем программ. Язык Паскаль требовал от программиста определения всех переменных в отдельной секции в начале программы. Так как эти определения задавались явным образом, то в программах появлялось сравнительно немного ошибок, и их было проще понять и исправить разработчику. Это сделало Паскаль популярным при создании больших программ. В 1962 году он был объявлен официальным языком программирования для учащихся средних школ, которые намерены специализироваться в области вычислительной техники и программирования в американских университетах. В то же время, стандартный Паскаль обладал рядом существенных недостатков. Поэтому Вирт продолжил развивать свое детище, так через девять лет, в 1979 году, появилась Модула-2, прежде всего от Паскаля она отличалась тем, что давала возможность использовать модульное программирование, а значит, с ее помощью уже можно было создавать достаточно большие проекты. К середине 70-х годов назрела необходимость разработать международный стандарт на Паскаль. В результате, в 1982 году появился стандарт ИСО 7185. Но Вирт не останавливался на достигнутом, и немного позднее появились Ада и Оберон, которые позволяли использовать типы и объекты, что уже давало кардинально новые возможности для разработчиков. Язык Ада был создан фактически по заказу Министерства обороны США и, соответственно, при его активной поддержке. Был проведен конкурс среди разработчиков, и его выиграла некая фирма Honeywell в лице ее подразделения Cii-Bull с руководителем Ж. Ишбиа. Язык был назван в честь Августы Ады Лайвейс — дочери английского поэта Дж. Байрона, которая считается первой программисткой. Окончательная версия спецификаций языка Ада появилась в феврале 1983 году, она и стала основной. Ада до сих пор считается современным языком с традиционной структурой управления, возможностями определения типов и подпрограмм. Удовлетворяет язык и требованиям модульности. В дополнение к классическим свойствам язык обеспечивает программирование задач реального времени, а также возможности моделирования параллельного решения задач и обработку прерываний. Поскольку Ада морфологически произошла от Pascal, у них есть очень много общего, хотя наблюдаются и некоторые аналогии с Модулой. С самого начала Ада предназначалась для разработки больших программных пакетов. Учитывая то, какую серьезную (моральную и не только) поддержку предоставляли правительство и Министерство обороны США, неудивительно, что язык очень быстро развивался и без особых проблем распространялся. Здесь нужно заметить, что стандартный Паскаль был действительно очень простым языком. В то же время в сознании большинства людей (особенно молодого поколения, тех, кому еще нет 30), Паскаль обычно ассоциируется с Turbo Pascal от фирмы Borland — это не верно! Ведь Turbo Pascal включает в себя многие положительные качества как Модулы, так и Oberon"a, и является гораздо более сложным и мощным языком, чем Паскаль Вирта. Судите сами: он позволяет использовать и модули, и типы, и даже объекты, давая всю мощь объектно-ориентированного программирования в руки разработчика. Как же он возник? Никлаус Вирт здесь совсем не при чем, а при чем — Андерс Хейлсберг, которого и следует считать отцом-создателем Турбо Паскаля, вскоре вытеснившего с рынка все другие спецификации. Это победоносное шествие началось в 1984 году с появлением версии Turbo Pascal 2.0, ее распространение шло стремительными темпами. Версии 3.0, 4.0 и 5.0 выходили соответственно в 1985 и 1988 годах (последние две). В них появилось несколько революционных нововведений: возможность разбивать программу на несколько файлов (модулей), интерфейс взаимодействия с MS-DOS и встроенный отладчик. Отладчик (debugger) — это очень полезное средство, позволяющее в период выполнения программы просматривать содержимое регистров процессора, текущие значения переменных и последовательность выполнения программы. От версии к версии оптимизировалась работа компилятора, который генерировал исполняемый код на основе текста программы. Даже достаточно простые программы, перенесенные с других языков программирования, не использующие всех возможностей, которые давал Паскаль, после компиляции начинали работать существенно быстрее. Так, основной из причин, по которой автор этих строк еще очень давно решил отказаться от Бейсика и использовать Паскаль, — явилась наглядная демонстрация скорости работы компилятора Turbo Pascal 2.0. Компиляция происходила в полтора раза быстрее, ехе`шник получался во много раз меньше (несколько килобайт для простенького приложения против 40-50 у Бейсика), а скорость выполнения полученного кода просто впечатляла. Сейчас, когда машины оснащаются сотнями мегабайт оперативной памяти и быстродействующими процессорами, мало кто обращает внимание на такие, казалось бы, мелочи, а тогда, при работе на 8088 процессоре со всего 640 кб оперативной памяти, это было очень важно. Последующее развитие Pascal привело к появлению таких библиотек, как Turbo Vision, с использованием которой написан, наверное, всем известный, Dos Navigator, а также языка Object Pascal, который впоследствии стал основой для создания Delphi. Delphi — компилятор языка Object Pascal. Delphi 1 был первым инструментарием разработки Windows-приложений, объединившим в себе оптимизирующий компилятор, визуальную среду программирования и мощные возможности работы с базами данных. Годом позже Delphi 2 предложил все то же, но на новом уровне современной 32-битной операционной системы Windows 95 и Windows NT. Кроме того, Delphi 2 предоставил программисту 32-битовый компилятор, создававший более быстрые и эффективные приложения, мощные библиотеки объектов. Продолжительная работа команды разработчиков Delphi привела к появлению в третьей версии продукта расширенного набора инструментов для создания приложений, возможности использования технологий COM для разработки приложений WWW и многих других современных технологий программирования. Современный Delphi 6 является очередным шагом в эволюции компиляторов Паскаля, первый, как вы помните, был сделан более 16 лет назад Андерсом Хейлсбергом. Пожалуй, мало найдется языков, которые бы жили так долго, при этом оставаясь актуальными. Действительно, Delphi позволяет даже самому неискушенному в программировании человеку после сравнительно небольшого времени, потраченного на его изучение, создавать профессионально выглядящие программные продукты с графическим интерфейсом пользователя в стиле Windows. Особенно удобно на Delphi работать с базами данных. Естественно, эта легкость работы с Delphi оборачивается некоторыми минусами языка. Основной недостаток Delphi — скорость работы, она очень и очень невысока. Да и генерируемый компилятором код получается увесистым и неуклюжим. Так, создание пустого окна даст ехе-файл размером почти в полмегабайта, на С++ — такое же займет 15-30 килобайт, в зависимости от ваших стараний (или 1 Кб при совсем творческом подходе к проблеме). Тем не менее, для некоторых сфер применения Delphi является идеальным решением, поэтому сейчас он достаточно популярен.

Существуют два способа трансляции:

1. ИНТЕРПРЕТАЦИЯ (Interpretation) — метод выполнения в ЭВМ программы, заданной на языке программирования, при котором инструкция исходной программы переводится и сразу выполняется.

2. КОМПИЛЯЦИЯ (Compile — собирать) — метод выполнения в ЭВМ программы, но не сразу, а лишь тогда, когда собран перевод всего текста программы.

Разницу между компиляцией и интерпретацией можно выяснить с помощью аналогии. Фармацевты в аптеке приготовляют микстуру по старинному рецепту, написанному на латыни. Есть два пути: можно сначала перевести (скомпилировать) рецепт на родной язык и лишь затем готовить лекарство на родном языке. А можно, по мере чтения перевода рецепта, сразу готовить лекарство, но не записывать сам текст перевода (т.е. только интерпретировать). В последнем случае мы не получим текста рецепта на родном языке. А можно, по мере чтения перевода рецепта, сразу готовить лекарство, но не записывать сам текст перевода (т.е. только интерпретировать). В последнем случае мы не получим текста рецепта на родном языке, а сразу получим микстуру, правда, если лекарство нужно готовить несколько раз, рецепт придется переводить многократно. Интерпретация используется в простых языках, где требуется несложная трансляция (Бейсик), или там, где компиляция слишком сложна или даже невозможна (язык ЛИСП). Часто используют оба эти способа совместно: интерпретатор — для отладки и компилятор — для трансляции отлаженной программы. Работа с программой, написанной на алгоритмическом языке, очень упрощается за счет относительной простоты написания программы, удобной читаемости, возможности ее подкорректировать. Однако при этом всплывают и недостатки: требуется дополнительное время на трансляцию и дополнительная память для размещения транслятора.

Итак, в 1955 году увидел свет первый алгоритмический язык Фортран. Он использовался для решения научно-технических и инженерных задач. Слово "Фортран" образовано от начальных слогов английских слов — formula translator (переводчик формул). Он был разработан сотрудниками фирмы IBM под руководством Джона Бэкуса. Основным назначением этого языка является программирование численных расчетов на ЭВМ.

Как и многие естественные языки (украинский, русский, английский и т.д.), Фортан (и другие языки) имеет много "диалектов" (их называют версиями), различающихся правилами записи некоторых команд, но по сути одинаковых. За прошедшие годы было много новых версий языка Фортан. Он все время менялся и развивался. Одна из последних версий — Фортран-77. Благодаря простоте и тому, что этим языком написаны большие библиотеки программ, Фортран и в наши дни является одним из самых распространенных в мире языков программирования.

Затем в 1960 г. появился Алгол (Algoritmic language — алгоритмический язык), также ориентированный на научное применение, в него было введено множество новых понятий, подхваченных позднейшими языками, например, понятие блочной структуры. Также при поддержке фирмы IBM появился язык Кобол (Cobol — сокращенное от английских слов Comnon business oriented language — общепринятый деловой ориентированный язык). Он был ориентирован на решение экономических задач, а точнее — на обработку информации.

Язык Бейсик (Basic — beginners all-parpouse sumbolic instraction code, что в переводе с английского означает "многоцелевой язык символических инструкций для начинающих") был разработан профессорами Дартмутского колледжа (СИГА) Т.Куртцем и Дж. Кемени в 1965 году для обучения студентов, незнакомых с вычислительной техникой. Этот язык, напоминающий Фортран, но более простой, быстро стал очень популярным. Особенно его популярность повысилась благодаря "взрыву микроинформатики" — появлению персональных микрокомпьютеров, где Бейсик стал основным языком программирования. Достоинствами Бейсика являются удобные средства ввода, отладки и испытания программ, а также возможность доступа ко всем основным ресурсам компьютера. Его отличает простота конструкций и возможность осуществления диалогового режима работы с ЭВМ. Вместе с тем Бейсик имеет и ряд недостатков. Это прежде всего отсутствие явных ограничений на составление запутанных программ (этот недостаток присущ и Фортрану). Его оператор Goto при бездумном применении сильно запутывает программу и порой делает ее совсем непонятной с точки зрения логики выполнения. Кроме того, программы на языке Бейсик обычно выполняются относительно медленно, поскольку ЭВМ применяют, как правило, не компиляторы, а интерпретаторы языка. Но последние диалекты языка Бейсик все больше устраняют перечисленные недостатки и приближают его к языку Паскаль и другим процедурным языкам (т.е. основанным па понятиях алгоритмов, программ, инструкции). С его помощью можно решать достаточно сложные задачи. Например, так называемая версия расширенного Бейсика, имеющая матричные операции, позволяет с помощью одного оператора преобразовывать большие таблицы (матрицы). Есть версии Бейсика, работающие в режиме компиляции, что значительно ускоряет прогон программ, написанных на этом языке.

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

В 1967-1968 гг. появился язык PL/1 (Programming language — универсальный программно-ориентированный). Он также был создан на фирме IBM, но уже в качестве универсального языка программирования. Этот язык, как языки программирования СИ, Ада и Паскаль, может использоваться как для научных задач, так и для задач управления. Он очень мощный, но и очень сложный, используется лишь в высших учебных заведениях и научно-исследовательских центрах.

В 1970 г. профессор Никлаус Вирт создал в Цюрихском политехническом университете язык Паскаль (Pascal). Создатель языка назвал его в честь Блеза Паскаля первого конструктора устройства, которое теперь относится к классу цифровых вычислительных машин. Он создавался как язык, который, с одной стороны, был бы хорошо приспособлен для обучения программированию, а с другой — давал бы возможность эффективно решать самые разнообразные задачи на современных ЭВМ. При создании этого языка Вирт большое внимание уделял хорошему стилю программирования (так называемое структурное программирование), благодаря которому конструкции Паскаля позволяют писать надежные, легко проверяемые программы с ясной и четкой структурой. Работая в среде данных языков, компьютер решает задачу, а программист лишь ее формулирует. ЭВМ пробегает все рабочее пространство в поисках решения специальным способом, но зато полностью исчерпывающим (возможен обратный ход). Существует огромное множество специализированных языков, позволяющих эффективно решать задачи в некоторых областях: моделирования (языки Симула, Симкрит и GPSS), управления аппаратурой (ФОРТ), для написания системных программ (СИ), написания баз данных (Кодасил), обучения программированию (Лого, Робик, алгоритмический язык А.П.Ершова) и другие. Но в целом эволюция машинных языков происходит в направлении естественного языка — идеальное решение, состоящее в том, что пользователю надо будет только сформулировать задачу на естественном языке, а все остальное сделает компьютер. Конечно, в настоящее время это всего лишь мечта, но тем не менее языки последних поколений более близки к языку человеческих рассуждений.

2. Развитие средств программирования

Основные особенности развития программирования в период машин второго поколения обусловлены расширением областей применения ЦВМ и усложнением их структуры. Расширение областей применения — одна из важнейших причин разработки большого количества алгоритмических языков. По состоянию на 1967г. во всем мире использовалось около 1000 алгоритмических языков, включая специализированные языки и языки, ориентированные на запись широкого класса алгоритмов, т. е. универсальные применительно к данной достаточно широкой области применения (вычислительные задачи, обработка экономической информации, информационно-логические задачи, управление в реальном масштабе времени). В то же время, начиная с середины 50-х годов, предпринимались попытки создания единого универсального алгоритмического языка. Широкий международный характер приняли работы по созданию и совершенствованию языка АЛГОЛ, ориентированного на применение в научно-технических расчетах. Первый вариант языка АЛГОЛ был разработан группой ученых из ФРГ и Швейцарии и в 1957 г. одобрен Германским техническим обществом. Цель разработки заключалась в создании универсального международного языка, который был бы пригоден для всех выпускаемых моделей универсальных ЦВМ. В переработке первого варианта АЛГОЛА участвовали ученые ряда стран, собравшиеся в январе 1960 г. на Объединенную конференцию в Париже. Представители США, Великобритании, Франции, ФРГ, Швейцарии и Дании одобрили переработанный вариант АЛГОЛА (АЛГОЛ-60) и рекомендовали его для применения в качестве универсального языка. «Не будет преувеличением утверждать,— писал в 1965 г. М. Р. Шура-Бура,— что появление пять лет назад сообщения об АЛГОЛ-60 стало важной вехой в развитии языков программирования… АЛГОЛ-60, как язык для описания алгоритмов численного анализа, сконцентрировал в себе значительную часть наиболее удачных сторон ранее известных языков программирования, предназначенных для тех же целей».Недостатком АЛГОЛА-60 явилось отсутствие в языке каких-либо канонизированных средств для задания ввода и вывода информации, что существенно затрудняло разработку трансляторов. Поэтому ряд зарубежных фирм, выпускающих универсальные ЦВМ, предпочли ориентироваться на собственные разработки. В 1957 г. группа специалистов фирмы «ИБМ» под руководством Дж. Бакуса закончила разработку языка ФОРТРАН. Целью работ, проводившихся в течение трех лет (1954—1957 гг.), было создание алгоритмического языка, ориентированного на задачи численного анализа и транслятора с этого языка на язык команд машины ИБМ-704. По сравнению с АЛГОЛОМ язык ФОРТРАН более ориентирован на машину и конкретные способы трансляции, что и послужило одной из причин его широкого распространения в США и других странах.Очень широкое распространение получил также язык «КОБОЛ», разработанный в США в 1958—1960 гг. и ориентированный на описание алгоритмов экономических задач. Поскольку научно-технические и экономико-статистические задачи составляют значительное большинство всех задач, решаемых с помощьюЦВМ, языки КОБОЛ, АЛГОЛ и ФОРТРАН получили весьма широкое распространение в 60-х годах. Трансляторы с этих трех языков, как правило, входят в набор средств математического обеспечения, которыми оснащаются выпускаемые за рубежом универсальные ЦВМ. В СССР сравнительно широкое применение получил язык АЛГОЛ, который «положен в основу различных систем автоматизации программирования, содержащих в своем составе трансляторы для конкретных машин». Наряду с языками АЛГОЛ, КОБОЛ и ФОРТРАН в СССР и за рубежом в первой половине 60-х годов были разработаны и получили практическое применение другие специализированные и обобщенные алгоритмические языки, среди которых необходимо отметить языки, созданные для описания алгоритмов решения неарифметических задач (ИПЛ, ЛИСП, КОМИТ и др.) и языки для управления в реальном масштабе времени.В 1963 г. в США была начата работа по созданию алгоритмического языка, сочетающего наиболее ценные свойства языков для записи алгоритмов численного анализа (ФОРТРАН и АЛГОЛ), обработки экономической информации (КОБОЛ) и информационно-логических задач (ИПЛ). Результатом исследований, проведенных комитетом из специалистов фирмы «ИБМ» и ассоциации «ШЕАР», явилась разработка языка ПЛ-1. В настоящее время ПЛ-1 является одним из наиболее мощных средств программирования.Рассмотрение обстоятельств создания алгоритмических языков позволяет наметить некоторую общую схему их развития. В целом развитие языков связано с расширением областей применения ЦВМ. Тенденция к созданию единого универсального языка приводит к разработке одного или нескольких языков, пригодных для описания значительного большинства задач, решаемых в данный момент времени средствами цифровой вычислительной техники. Именно такими соображениями руководствовались создатели АЛГОЛА и ФОРТРАНА, начавшие разработку данных языков в то время, когда научно-технические задачи составляли абсолютное большинство задач, решаемых на ЦВМ.В последующие годы область применения электронных ЦВМ существенно расширилась, прежде всего за счет задач, связанных с обработкой больших объемов информации. Наряду с этим произошло существенное усложнение структуры ЦВМ, прежде всего в результате применения различных форм мультипрограммной работы. Новым шагом на пути создания универсального языка явилась разработка ПЛ-1, приспособленного для описания алгоритмов решения подавляющего большинства задач (по состоянию на середину 60-х годов) и учитывающего архитектурные особенности наиболее распространенной серии вычислительных машин (ИБМ-360). Однако процесс расширения областей применения ЦВМ, естественно, не закончился в середине 60-х годов. В настоящее время, например, интенсивно развиваются такие направления, как обработка графоаналитической информации и машинное проектирование. Новые области применения неизбежно вызывают появление новых алгоритмических языков и соответственно тенденции к их обобщению на более высоком уровне. Поэтому в дальнейшем можно ожидать новых разработок в области универсального алгоритмического языка, например за счет усовершенствования ПЛ-1.Разработка алгоритмических языков имела существенное значение для формирования в 60-х годах нового подхода к разработке универсальных ЦВМ. Как отмечает А. Оплер, в первой половине 60-х годов «произошла техническая революция, в результате которой средства математического обеспечения превратились из полезного вспомогательного средства при программировании и эксплуатации вычислительных машин в равноправного партнера аппаратуры с точки зрения их значения для вычислительной техники». При этом подход к разработке вычислительных машин претерпел существенную эволюцию: вместо независимой разработки аппаратуры и некоторых средств математического обеспечения стала разрабатываться система, состоящая из совокупности аппаратурных средств и средств программирования. На протяжении 60-х годов сложилась современная система средств математического обеспечения, которой, как правило, оснащаются выпускаемые универсальные ЦВМ и от которой в решающей степени зависят возможности их практического применения. В состав системы средств математического обеспечения, как правило, входят:а) одна или несколько операционных систем, обеспечивающих работу машины в том или ином режиме и содержащих такие программные средства, как управляющие программы (управление потоком заданий, управление процессом решения задач, управление обменом данными между запоминающими устройствами и т. п.), трансляторы с наиболее распространенных алгоритмических языков и сервисные программы (текущая модификация данных: сортировка, объединение, редактирование и т. п.);б) набор программ технического обслуживания машины (наладочные, проверочные, диагностические тесты);в) пакеты прикладных программ (для решения типовых научных, экономических, инженерных, информационно-поисковых и других задач).При этом сравнительно часто для записи программ, входящих в состав операционной системы, используется символический вариант языка данной машины, расширенный за счет введения в него некоторых команд и операторов (автокод). Таким образом создается двухступенчатая структура трансляции: с обобщенного алгоритмического языка на автокод и с автокода на язык машины. Применение автокодов обусловлено как неудобством (громоздкостью) машинных языков для описания операционных систем, так и непригодностью для данной цели таких языков, какАЛГОЛ. КОБОЛ и ФОРТРАН. Попытка упростить трансляцию была предпринята при создании языка ПЛ-1, который может быть использован как для описания алгоритмов решаемых задач, так и для описания операционных систем.

Заключение

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

Именно такие языки и ориентированы на описание алгоритмов. Поэтому их еще называют алгоритмическими языками.

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

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

Литература

1. “Язык программирования Си.” Б.В. Керниган, Д. Ритчи, А. Фьюэр. Русский перевод: Москва: Финансы и Статистика. 1985 г.;

2. “Основы автоматизации” ч.1, Золотарев В.В., 1978 г.;

3. “Языки программирования” кн.5, Ваулин А.С., 1993 г.;

4. “Языки программирования: разработка и реализация”, П. Терренс, 1979 г.

5. “Алгоритмические языки реального времени”, Янг С., 1985 г.

6. Можаров Р.В., Можарова Н.Р., Евтеев В.В., Кузьменко О.А., Шевченко М.О. Программное обеспечение персональных компьютеров//Учебное пособие для вузов. — М.: Финстатинформ, 1999.

7. В.И. Пономарёва. Практикум по программированию в среде Turbo Pascal. Симферополь, Таврида, 1998, 256

8. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++. Харьков, Фолио, 2002, 500.

1)Что относится к особенностям алгоритмического языка? (несколько в-ов ответа) а)Семантика
б)Дискретность
в)Массовость
г)Оригинальность
д)Синтаксис
е)Алфавит
2)Для чего нужен индекс в таблице? *
а)он определяет, какие данные нужно вносить в таблицу
б)он определяет, что дальше нужно делать с таблицей
в)он определяет положение элемента в таблице
3)Какие из перечисленных величин относятся к постоянным? (несколько в-ов ответа)
а)температура тела человека
б)количество месяцев в году
в)среднегодовая температура воздуха в регионе
г)количество дней в неделе
д)скорость автомобиля
е)скорость часовой стрелки

LRSM

1) Алгоритмический язык (как и любой другой язык) образуют три его составляющие: алфавит, синтаксис и семантика.

2) Индекс в таблице определяет положение элемента в таблице.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *