Когда появились языки программирования высокого уровня фортран и кобол

Механические средства вычислений и разработки алгоритмов

6. Упрощение вычислений: Языки программирования

6.1. Введение

В начале 1950-х годов. Даже если у кого-то был доступ к компьютеру. На самом деле использовать его для выполнения конкретных вычислений часто было бы крайне неприятным занятием. Для этого было две причины: технология; и проблемы в описании задачи. Которая должна быть выполнена таким образом. Чтобы компьютерная система могла действовать. Технологическая проблема возникла из-за того. Что машины были построены с использованием нескольких тысяч клапанов.

Клапаны требуют значительного количества электроэнергии. Когда они работают. Они генерируют тепло. Когда они становятся слишком горячими. Они выгорают и должны быть заменены (так же. Как электрическая лампочка делает. Когда подается слишком сильный ток). Учитывая размеры и дороговизну современных систем. А также тот факт. Что одновременно может выполняться только одна серия вычислений. Для выполнения некоторых вычислений необходимо было зарезервировать временной интервал. В котором один имел единственный доступ к объекту. Однако часто случалось так. Что после установки

Этот технологический недостаток был преодолеть в течение нескольких лет открытие транзистора. TRADIC, построенный в 1954 году. Был первым компьютером. Который использовал транзисторы в качестве замены клапанов. Хотя перегрев все еще представлял (и действительно продолжает представлять) проблему. Транзисторы были гораздо более надежными. Они также привели к появлению гораздо более быстрых машин. Почти все последующее развитие более надежного середина 1950-х годов. Вплоть до машин. Использующих компоненты LSI (один из которых логический элемент И может быть помещен) в 1960-х годах. Вплоть до устройств СБИС сегодняшнего дня.

Последние настолько сложны. Что компьютерный процессор. Гораздо более мощный. Чем любая из машин 1950-х годов. Может быть построен на кремниевом чипе размером не больше ногтя (в отличие от пространства нескольких спортивных залов. Занимаемого машинами типа

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

Джон фон Нейман. Формулируя структурную организацию хранимых программных компьютеров, показал. Как строка двоичных цифр может быть использована для кодирования обеих инструкций и данные. Следуя этому подходу, машина, которая работала, скажем, на 16 битах слова В ячейках памяти , в которых хранилась программа, инструкции интерпретировались бы следующим образом: первые несколько битов (например, 4) указывали бы на конкретную операцию (ДОБАВЛЕНИЕ, ХРАНЕНИЕ. ЗАГРУЗКА и т. Д.), А остальные биты (в данном случае 12) указывали бы. Где хранятся данные для этой операции в памяти.

Однако для того. Чтобы такая программа была выполнена компьютером. В память должен быть введен двоичный шаблон. Соответствующий каждой отдельной инструкции. Типичная прикладная программа для сложных научных расчетов может разбиться на 200 или более таких инструкций и поэтому для выполнения расчета 3200 0s и 1s пришлось бы производить и загружать в память. Одна ошибка сделает программу бесполезной. Хотя ввод может быть облегчен бумажной лентой или перфокартами. Задача генерация правильного кода создает огромный потенциал для ошибок. Когда это делается вручную.

Изобретение Уилкса кодирования на ассемблере. Как описано в конце предыдущей главы. Устранило некоторую возможность последней главы. Устранило некоторую возможность ошибки транскрипции. Даже если это было на таком низком уровне. То кодирование сложных приложений было сложной и трудоемкой задачей. Именно в этом контексте появился первый высокоуровневый язык программирования. были разработаны. Разница между языками уровня сборки и высокого уровня состояла в том. Что в первом случае одна строка программы обычно переводилась в одну машинную инструкцию. В то время как для одного оператора на языке высокого уровня могло потребоваться несколько машинных инструкций.

Конечно, такие программы должны быть преобразованы (скомпилированы) в представление. Которое может быть выполнено компьютером. Таким образом. Основной проблемой. С которой столкнулись разработчики первых таких языков. Было построение компиляторов чтобы выполнить эту задачу автоматически. В заключительной части курса мы кратко рассмотрим основные вклады. Сделанные в области развития языка высокого уровня.

6.2. Научные вычислительные приложения em FORTRAN

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

Язык FORTRAN (аббревиатура для перевода формул) является одним из лучших примеров этого явления. Разработанный в середине 1950-х годов. FORTRAN был предназначен для использования в научных и численных вычислительных приложениях. Таким образом. Анализ экспериментальных данных на компьютерных системах в принципе мог быть выполнен с помощью программ. Разработанных учеными и инженерами. Которые собирали эти данные. Разработчики FORTRAN были одними из первых. Кто серьезно отнесся к принципиальному возражению против языков высокого уровня. Которое было поднято: хотя создание программ. Которые были менее подвержены ошибкам. Стало проще. Этот факт был уравновешен

неэффективность ранних компиляторов. Таким образом. Опытный программист на уровне ассемблера мог создать код для приложения. Который был бы более компактным и быстрым, чем код. Генерируемый компилятором. Был принят ряд технических решений по обеспечению возможностей ФОРТРАНА. Которые позволили бы создавать компиляторы ФОРТРАНА. Производящие машинный исполняемый код. Сравнимый с кодом лучших программистов-людей. Наиболее важным из них было то. Что объем памяти. Который будет использоваться во время выполнения программы. Можно было точно определить заранее. Используя только описание программы

^1.

1) Эта особенность фортранского языка продолжалась почти 25 лет. Через последовательные изменения языка.

В результате этого в код. Созданный для улучшения работы программы. Могут быть внесены различные оптимизации.

FORTRAN был продвинут компанией I. B. M. и продолжает широко использоваться сегодня. Первоначальная версия языка претерпела несколько изменений (в среднем новая версия появляется примерно раз в семь лет). Ключевой критерий. Который должен быть удовлетворен пересмотренными версиями языка. Частично объясняет. Почему FORTRAN продолжает выживать как язык сегодня: никакие изменения в языке не принимаются. Если в результате старые программы FORTRAN перестанут компилироваться.

КАК следствие этой политики. В принципе. Программы FORTRAN с 1955 г. все еще может быть скомпилировано с использованием последней версии языка. Концепция восходящая совместимость, как называется эта политика. (коммерчески) важна для обеспечения того. Чтобы пользователи системы все еще могли продолжать запускать старые программы. Когда будут выпущены новые версии языка.

6.3. Коммерческая обработка данных em COBOL

Во вступительной лекции мы увидели. Что одной из областей. В которой компьютерные системы стали преобладать. Является ведение записей. Область обработки записей. Хранящихся в компьютерных системах, например. Вычисление статистики заработной платы и цифр для корпораций. Использующих большое количество людей. Известна как (коммерческая) обработка данных Лионский электронный офис (LEO). Упомянутый в конце предыдущей главы. И различные рассмотренные устройства для сопоставления данных переписи являются примерами приложений для обработки данных. ФОРТРАН пошел в некотором роде навстречу требованиям научных и инженерных приложений.

Хотя он мог бы быть использован в качестве метода написания типичных прикладных программ обработки данных. Он на самом деле не подходил для таких задач. Различные примитивы. Желательные для задач обработки данных. Отсутствовали (так как они не были нужны в числовых приложениях). А стиль программы FORTRAN (которые читаются как серия математических формул) были чужды тем. Кто работал в области ведения и обработки записей.

COBOL (Общий Или Бизнес-Ориентированный Язык) был разработан в конце 1950-х годов адмиралом Грейсом Хоппером по заказу Адмиралтейства США.

Как и FORTRAN. Он оказался чрезвычайно долговечным. И большинство крупномасштабных систем обработки данных сегодня все еще реализуются в COBOL. Одна из целей дизайна. Лежащая в основе COBOL. Заключается в том. Что программы. Написанные на нем. Должны быть читаемы даже для специалистов. Не связанных с компьютерами. Таким образом. В то время как FORTRAN при описании программных инструкций использует стандартные математические символы и операторы. В отличие от COBOL программы пытаются имитировать описания на естественном языке. В самых ранних версиях в языке не использовались математические символы. А арифметические операторы указывались с использованием эквивалентного английского слова.

Это, наряду с другими особенностями языка. Делало программы COBOL чрезвычайно многословными^2.

2) Существует апокрифическая история о том. Что COBOL был разработан таким образом. Чтобы директора и председатели компаний могли понимать и изменять программы расчета заработной платы. Проводимые их корпорациями. И что английский язык был необходим. Поскольку такие люди были бы неспособны понять сложные математические символы. Такие как +.

Таким образом. Простое утверждение A = C + D в ФОРТРАНЕ становится ADD C TO D. ДАЮЩИМ A в КОБОЛ. Однако вера в то, что. Заменив математические символы английским языком. Программы станут более понятными и. Следовательно. Более удобными для написания. Оказалась ошибочной.

Причина этого. Которая очевидна задним числом. Но не была очевидна в то время. Заключается в том. Что то. Что делает проектирование компьютерной программы для конкретной задачи трудным для выполнения. — это процесс определения. Структурирования и упорядочения действий. Которые должны выполняться на достаточно тонком уровне описания. Т. е. процесс. Как только это сделано. Обычно относительно легко перевести шаги алгоритма в любой формализм программирования.

Как только этот факт был признан. Важным следствием стало то. Что больше исследовательских усилий было сосредоточено на методологиях разработки программ и алгоритмов. А не на поверхностных попытках сделать такие программы Изучение методологии программирования в конечном итоге привело к теоретическим дисциплинам семантики языка программирования. Формальной спецификации и формальной Верификация. О которой упоминалось вкратце во вступительной лекции.

Как и в случае с FORTRAN. COBOL претерпел несколько изменений с момента его первоначального проектирования.

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

6.4. Приложения искусственного интеллекта em LISP

LISP (Обработка списка) был разработан Джоном Маккарти и группой студентов-исследователей в M. I. T. в 1960 году. Впоследствии он стал чрезвычайно популярным и широко используемым (в академической среде) в качестве языка программирования систем искусственного интеллекта.

Хотя он все еще используется сегодня для таких задач. В некоторых конкретных областях этой области он был заменен последующими разработками в теории языков программирования: в первую очередь логическим языком программирования PROLOG. Если читабельность программ играла значительную роль в разработке COBOL, то и была. По крайней мере. При поверхностном рассмотрении проектировщиков FORTRAN любой. Кто имеет опыт программирования на лиспе. Будет знать. Что никакие такие соображения не беспокоили Маккарти и его команду при проектировании Лиспа. В основе LISP лежит алгебраический формализм для описания эффективных алгоритмов. Разработанный великим американским логиком Алонсо Черчем (1903-) и названный

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

3) Все широко используемые реализации этого языка значительно расширяют функциональность языка. Определенного Маккарти. Который теперь известен как

будучи одним из первых языков. Широко использующих структуру управления алгоритмами. Которая (намеренно) не была предусмотрена в FORTRAN или COBOL:

рекурсия. Проще говоря. Это действие описания алгоритма в терминах самого себя, например. Математическая функция n факториалn!) определяется как результат умножения первых n натуральных чисел. Которые могут быть определены рекурсивно как n! =1 (если n=1) n = n раз (n-1)! (если Это средство полезно при описании подходов к различным задачам в приложениях искусственного интеллекта. Таких как автоматизированное доказательство теорем и игровые системы. Ряд ранних, по-видимому успешных систем АИ были построены в 1960-х и 1970-х годах с использованием LISP, включая

SHRDLU, построенную Виноградом в 1972 году. ЛИСП также использовался в робототехнике и системах компьютерного зрения.

6.5. Алгоритмические языки em ALGOL60 и ALGOL68

Все три языка. Которые мы рассмотрели выше. Были разработаны в США и до сих пор широко используются. Причины этого различны: ФОРТРАН и КОБОЛ были первыми доступными языками своего рода и. Таким образом. Были быстро освоены, так что. Даже когда появились технически более совершенные методы. Было нежелание отходить от того. Что стало привычной идиомой. Вторая очень важная причина. По которой эти две компании продолжают существовать. Заключается в том. Что они активно продвигались американскими компьютерными компаниями.

В частности. И. Б. М. сыграла значительную роль не только в разработке новых версий FORTRAN. А также в продвижении его для запуска в своих системах^4.

4) Следует отметить, что компиляторы I. B. M. FORTRAN до самой кончины крупномасштабных Компилятор FORTRAN `H’, разработанный компанией I. B. M. для своих компьютеров серии 370, до сих пор считается одним из лучших оптимизирующих компиляторов. Когда-либо созданных.

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

Нет особого смысла продвигать или создавать . 5) Это, конечно. Будет проблемой. Когда старая компьютерная система будет заменена. Одной из основных причин доминирующего положения I. B. M в вычислительной промышленности до недавнего времени было то, что. Когда концерн приобрел оборудование I. B. M. Было проще всего заменить его новой машиной I. B. M. Переход в конкурирующую компанию повлек бы за собой обширную переписку системных программ. Широкое промышленное использование COBOL и FORTRAN также означало. Что по крайней мере один (часто оба) из этих языков будет охватываться программами бакалавриата компьютерных наук.

LISP, хотя в значительной степени ограничивался академической и исследовательской средой. Продолжал использоваться частично из-за его теоретического интереса. Но в значительной степени из-за приложений в A. I.. Которые были разработаны на его основе. В последней области у него не было серьезного конкурента в качестве языка прикладных программ общего назначения до разработки ПРОЛОГА.

ALGOL60 и его преемник ALGOL68 теперь (фактически) вымершие языки. Тем не менее ALGOL60 стал вехой в развитии теории языков программирования. Его исчезновение можно целиком отнести на счет неспособности промышленных концернов принять его. Несмотря на то. Что он широко преподавался в европейских и американских университетах в 1960-х годах. Его главное значение в настоящее время заключается в инновациях. Которые продолжают влиять на дизайн языков программирования. Эти эффекты очевидны в таких языках как ПАСКАЛЬ Никлауса Вирта (который в настоящее время занимает позицию. Ранее занимаемую ALGOL60 в качестве языка. Используемого в дипломных программах); последующие редакции FORTRAN; и язык Министерства обороны США ADA.

ALGOL60 был разработан международным комитетом. Работавшим с 1958 по 1963 год. Предполагалось. Что это будет язык общего назначения. Но с особым акцентом на научные и численные приложения. В этом отношении он улучшил FORTRAN двумя способами: во-первых. ALGOL60 предоставил средства для представления и управления сложными структурами внутри программы; и, во-вторых. Как и LISP. Он обеспечил рекурсию в качестве механизма управления. До появления PASCAL нотационный стиль ALGOL60 был принят в качестве стандартного способа описания сложных алгоритмов и ряда учебники по предмету проектирования алгоритмов использовали производную от АЛГОЛЯ нотацию для иллюстрации программ. Важным теоретическим новшеством был способ описания действительных утверждений в программе ALGOL: система под названием Backus-Naur Form (или BNF) после двух членов комитета. Которые работали над проектом. В простых терминах это описывало как синтаксически правильные высказывания можно распознать. Установив Этот формализм был впоследствии принят при описании новых языков программирования. А также при пересмотре существующих.

ALGOL68, преемник ALGOL60, также был разработан международным комитетом и должен был устранить некоторые недостатки, которые были выявлены в оригинальном языке ALGOL60, и расширить его функциональность. Конечный язык создавал значительные проблемы: хотя строить программы на нем было не сложнее. Разработка и внедрение компиляторов для перевода таких программ в машинно понятную форму была серьезной задачей. Первые две реализации таких компиляторов были осуществлены в Великобритании: одна — в США. R. S. R. E (Royal Signals and Radar Establishment); и второй-в Ливерпульском университете. АЛГОЛ68 продолжал преподаваться в Ливерпуле вплоть до 1987 года. Затраченные усилия. Необходимые для создания компиляторов. Были одним из факторов того. Что АЛГОЛ68 не смог утвердиться. Несмотря на его значительные достоинства как языка.

6.6. Заключение

Начиная с 1954 года перед пользователями компьютерных систем стояла серьезная трудность. Связанная не с ненадежностью электрических устройств. А с задачей реального описания того. Какие операции должны быть выполнены с помощью машины. В то время как ассемблер и низкоуровневые языки в какой-то мере решали эту проблему. Такие методы были в основном в руках специалистов по компьютерам. А не людей. Которые хотели использовать компьютеры для решения прикладных задач. В результате ряд `высокоуровневыхязыки начали появляться с 1956 года. Некоторые из них. Такие как FORTRAN. Были специально разработаны для применения в науке и технике; другие. Такие как COBOL. Предназначались для нужд систем обработки данных и ведения записей. Результатом использования таких языков стало то. Что компьютеры стали доступны людям. Не обладающим подробными техническими знаниями о действительной работе компьютера.

Предыдущий Раздел

Домашняя страница педиатра