Перейти к содержимому

17

Русское название языка БЕЙСИК является транскрипцией английской аббревиатуры BASIС: Beginner, All-purpose Symbolic Instruction Code -- универсальный код (язык) символических инструкций для начинающих.

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

3

Язык программирования ПРОЛОГ (PROLOG) создан во Франции в Марсельском университете в 1971 году. Его разработал Ален Кольмеро (Colmerauer - его фамилию по-разному переводят на русский язык).
...читать далее "Язык программирования Пролог"

14

В октябре 1963 г. представители фирм IBM и SHARP образовали Комитет под представительством Б. Розенблата и Дж. Радина по созданию совершенного языка программирования. Предполагалось создать такой язык, который сможет удовлетворить различные классы пользователей, решающих как научные, так и коммерческие (экономические), а также специальные задачи. В результате разработки эффективного "единственного" языка программирования ожидалось, что отпадет необходимость в таких языках, как ФОРТРАН, КОБОЛ и др.
...читать далее "Язык программирования PL/1"

32

Модула-2 -- потомок Паскаля и экспериментального языка Н.Вирта, разработанного примерно в 1975 г. и названного Модула. Здесь сказалось влияние опыта работы Вирта с языком Меза в Исследовательском центре фирмы Xerox в Пало-Альто (США) в 1976 г. Разработка Модулы-2 началась в 1977 г., и язык был впервые реализован на мини-ЭВМ PDP-11 в 1979 г.

Основные части языка, в которых Модула-2 усовершенствован по сравнению с Паскалем, следующие:

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

В общем, Модула-2 - богатый и выразительный язык. Он позволяет представлять отношения и понятия программирования, недоступные во многих других языках.

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

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

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

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

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

3

В 1956 г. на Дартмундской конференции (США) Дж.Маккарти впервые предложил термин "искусственный интеллект" (ИИ). И хотя до сих пор не утихают страсти вокруг этого термина и развившегося научного направления в его рамках, исследователи единодушны в использовании языков программирования для данной области. Значительное число работ по ИИ (особенно американских ученых) реализовано на одном из старых языков программирования ЛИСПе. Этот вновь проявленный интерес к нему объясняется его эффективностью при решении задач искусственного интеллекта.

Название язык получил от английских слов LISt Processing (LISP), что означает "обработка списков". Своими корнями ЛИСП уходит в математическую логику. В 20-30-х годах такие математики, как Т.Сколем, К.Гедель и А.Черч, привнесли новые идеи в логику, которые позже воплотились в ЛИСПе. Вообще первым языком для обработки списков был не ЛИСП, а IPL (аббревиатура от английских слов "Information Processing Language" - язык для обработки информации), разработанный Г.Сайманом, А.Ньюэллом и Дж.Шоу в середине 50-х годов.

В 1956-1959 гг. Дж.Маккарти вместе со студентами Массачуссетского технологического института (МТИ) разработал новый изящный язык для работы со списками, которому и дал имя ЛИСП. Причем многие студенты внесли существенный вклад в эту разработку. В частности, Д.Эдвардс запрограммировал процесс очистки памяти от ненужных массивов, так называемой сборки мусора (garbage collection), являющийся фундаментальным понятием в ЛИСПе да и в других языках.

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

Впервые ЛИСП, также как и ФОРТРАН, был реализован на вычислительной машине IBM704.

Программы и данные ЛИСПа существуют в форме символьных выражений, которые характеризуются в виде списковых структур. ЛИСП имеет дело с двумя видами объектов: атомами и списками. Атомы - это символы, используемые для идентификации объектов, которые могут быть числовыми или символьными (понятия, материалы, люди и т.д.). Список - это последовательность из нуля или более символов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. ЛИСП манипулирует списками путем использования трех примитивных функций: CAR, CDR, CONS, из которых получаются все другие функции обработки списков. В функции CAR в качестве значения аргумента используется первый элемент списка; значением аргумента в функции CDR является оставшаяся часть списка после удаления первого элемента, а функция CONS собирает вновь то, что CAR и CDR разбили на части. Интересно отметить, что слова "CAR" и "CDR" остались в ЛИСПе на память от первой реализации языка на ламповом компьютере IBM704. Они являются сокращением английских слов, означающих "содержимое адресной части регистра" и "содержимое уменьшаемой части регистра", соответственно терминами, характерными для машин первого поколения.

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

Хотя языку уже под 30 лет и он имеет некоторые недостатки, включая бесконечные скобки (любимый акроним разработчиков ИИ - "масса идиотских скобок"), он остается популярным на всех этапах создания систем ИИ, в частности экспертных систем. Одна из причин этого заключается в его общности и концептуальной простоте, другая - в часто упоминаемой щедрой среде поддержки. Но его зрелость и завершенность находятся в противоречии с его стандартизацией. в настоящее время существует несколько диалектов языка, каждому из которых присущи своя степень возможностей и свои характеристики. Такими диалектами являются COMMONLISP, ZETALISP, INTERLISP, INTERLISP-D, MACLISP и др.

В 60-е годы предпринимались попытки аппаратной реализации ЛИСПа, но на уровне техники того времени эти попытки оказались безуспешными, и только в начале 70-х годов с бурным развитием техники интегральных схем появилась возможность решения этой задачи. В 1974 г. в МТИ была начата разработка ЛИСП-компьютера, в котором аппаратно реализовывался язык лисп. Этапами создания ЛИСП-компьютера явились разработки CONS-компьютера и CADR-компьютера. Появлению ЛИСП-компьютера в немалой степени в конце 70-х годов способствовали разработки экспертных систем в рамках решения проблем ИИ, когда ЛИСП-компьютеры применялись в качестве рабочих станций для конструирования и развития экспертных систем.

С 1982 г. ЛИСП-компьютеры выпускаются серийно многими фирмами: Tektronix, LISP Machines Inc., Symbolics, Texas Instruments, Xerox. В этих машинах реализованы различные версии ЛИСПа. В настоящее время ведутся работы по созданию ЛИСП-компьютера с параллельной обработкой.

В нашей стране впервые интерпретатор ЛИСПа был создан для вычислительной машины БЭСМ-6 в конце 60-х годов, затем появилась система LISP-1204 для ЭВМ ODRA-1204, разработанная на основе трех диалектов: LISP-1.5, ЛИСП для БЭСМ-6 и INTERLISP. В 1975 г. интерпретатор ЛИСПа (в основу положен интерпретатор для БЭСМ-6) разработан для ЕС ЭВМ, а в начале 80-х годов язык ЛИСП (на основе INTERLISP) реализован на много процессорном вычислительном комплексе "Эльбрус". В последние годы среди отечественных реализаций языка нужно отметить реализации FRL/ЛИСПа.

//Вычислительная техника и ее применение, N3'89

2

Имя языка программирования АПТ (APT) происходит от начальных букв полного названия "Automatically Prodrammed Tools", что в переводе означает "Автоматические программируемые станки".

Язык АПТ ровесник ФОРТРАНа и так же, как последний, используется поныне. АПТ - первый язык программирования для применения в специализированной области, первый язык программирования операций обработки деталей на станках с числовым программным управлением (ЧПУ). Он разрабатывался в Массачусетском технологическом институте (МТИ) по контракту с ВВС США. Группу разработчиков возглавлял математик Дуглас Т. Росс.

Работа по созданию языка началась в июле 1956 г.; в мае следующего года разработаны основы синтаксиса и семантики языка, близкие к английскому языку. В 1959 г. о языке АПТ было впервые сообщено на конференции в МТИ и в этом году, по-видимому, он впервые был применен в производственных условиях. В 1960 г. на машине IBM 704 был реализован улучшенный вариант языка - АПТ 2, а в последующие годы получила распространение версия языка - АПТ 5.

АПТ это не только язык станков с ЧПУ, но также и программа, которая выполняет расчеты по определению положений режущего инструмента в соответствии с операторами языка.

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

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

Геометрические операторы (их часто называют операторами определения) определяют геометрические элементы, которые составляют деталь.

Операторы движения применяются для описания траектории перемещения режущего инструмента.

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

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

Мощным средством языка АПТ является возможность использования макрооператоров, которые аналогичны заданию подпрограмм в ФОРТРАНе и других языках программирования. Они применяются в тех случаях, когда определенная последовательность движений повторяется многократно в процессе выполнения конкретной программы.

Цель использования "макроподпрограмм" заключается в уменьшении числа операторов в записи всей АПТ-программы. Что в конечном счете упрощает работу технолога-программиста и снижает затраты на программирования.

В 70-е и 80-е годы появились новые подходы к составлению управляющих программ для обработки деталей на станках с ЧПУ: применение в процессе программирования интерактивной машинной графики; речевое (голосовое) программирование (ввод операторов программы ЧПУ в компьютер производится технологом устно) и др.

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

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

Создатель языка Д. Росс в дальнейшем стал инициатором использования ЭВМ в проектных работах. Под его руководством начиная с 1959 г. разрабатывался язык AED (ALGOL Extended for Design - АЛГОЛ, расширенный для проектирования), предназначенный для создания программ компьютерного проектирования деталей, сборка которых затем производилась на программно управляемых станках. Написанные им работы "Принципы AED для универсального компьютерного проектирования" и "Теоретические основы систем компьютерного проектирования" (в соавторстве с Дж. Родригесом) получили признание многих разработчиков САПР/АПП.

Символичным является присуждение в 1975 г. Д. Россу Обществом цифрового управления награды Жозефа Мари Жаккарда (французского изобретателя 19 века, который первый использовал перфорированную ленту для управления ткацкими станками).

В число версий языка АПТ, специально предназначенных для конкретных приложений, входят языки APTURN (для операций токарной обработки), APTMIL (для фрезеровальных и сверлильных операций), APTPOINT (для операций, выполняемых "от точки к точке").

Язык АПТ послужил основой для создания подобных языков во многих странах. В 1970 г. в США фирмой IBM по контракту с ВВС был разработан язык ADAPT (Adaptation of APT - Адаптация АПТ). Язык не такой мощный как АПТ, но зато может применяться для программирования как позиционных, так и контурных задач.

Язык UNIAPT - его имя происходит от названия фирмы-разработчика - United Computing Corp. of Carson (США, шт.Калифорния), - представляет собой попытку приспособить язык АПТ для использования на мини-ЭВМ. Эта попытка увенчалась разработкой усеченной версии АПТ, реализуемой на мини-ЭВМ серии PDP, что позволило многим мелким предприятиям обзавестись системой автоматизированного программирования.

Язык SPLIT (Sundstrand Processing Language Internally Tranlated) был создан фирмой Sundstrand. Этот язык, приспособленный для работы со станками данной фирмы, может применяться для программирования станков, имеющих до пяти управляемых осей.

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

Система COMPACT-II, разработанная в 1969 г. фирмой MDSI (Manufacturing Data Systems Inc.) (США, шт.Мичиган) по многим своим параметрам подобен языку SPLIT. Эта универсальная система, работающая в режиме разделения времени на компьютерах серий IBM и PDP.

Технолог-программист дистанционно со своего терминала вводит программу в ЭВМ, которая, в свою очередь, выдает перфоленту для ЧПУ. Язык COMPACT-II - один из распространенных языков программирования станков с ЧПУ. Еще один АПТ-подобный язык - PROMPT (интерактивный язык программирования операций обработки деталей) был разработан фирмой Weber N/C Systems Inc. (США, шт.Висконсин). Он используется с разнообразными типами станков: токарные станки, обрабатывающие центры, штамповочные прессы, установки для газовой резки.

В ФРГ были созданы АПТ подобные системы такие как EXAPT, MINIAPT, TELEAPT. Разработка одного из распространенных языков EXAPT (Extended Subset of APT - расширенное подмножество языка АПТ) началась в 1964 г. и была закончена в 1967 г. Одним из важных свойств языка является способность автоматически вычислять оптимальные скорости подачи и резания.

Язык EXAPT, реализованный на ЭВМ серии IBM, имеет три версии: EXAPT I - для позиционных задач типа сверления, а также для фрезерования по прямым линиям; EXAPT II - для токарной обработки и EXAPT III - для контурных операций.

На базе АПТ были разработаны модификации языка и в других странах: во Франции - IFAPT в 1970 г. и SUPFAPT в 1977 г., в Англии - NELAPT в 1973 г., в Италии - MODAPT в 1977 г., в Японии - FAPT, MAZAPT, MICROAPT в 1973 - 1978 гг.

В нашей стране на основе языка АПТ и языка АЛГОЛ-60 в конце 60-х годов были построены системы САПС, реализованные на ЭВМ серии "Минск" и предназначенные для 2,5 координатной обработки.

В конце 70-х годов САПС получили свое развитие в системах АПТ ЕС и АПТ СМ, реализованных на ЭВМ серии ЕС ЭВМ и СМ-4 соответственно.

//Вычислительная техника и ее применение №11'91.

21

Название свое "АЛГОЛ" (ALGOL) получил от сокращения слов ALGOritmic Language, что в переводе означает "алгоритмический язык", хотя в начале он назывался ИАЛ (IAL - The International Algebraic Language).

Работы по созданию алгоритмического языка были начаты в 1955 -- 1956 гг. в США Ассоциацией по вычислительной техники (АСМ) и в Европе немецким Обществом прикладной математики и механики (GAMM). В 1958 г. ACM и GAMM подготовили совместный предварительный отчет о языке, который получил название АЛГОЛ-58.

На конференции в Париже в январе 1960 г. после широкого обсуждения представители семи стран - США, ФРГ, Англии, Франции, Дании, Нидерландов и Швейцарии утвердили улучшенную версию языка, названную АЛГОЛ-60. Двумя годами позже на конференции в Риме были сформулированы поправки и дополнения к описанию языка, но свое название (АЛГОЛ-60) он не изменил. Большие заслуги в создании и пропаганде АЛГОЛа принадлежат Д. Бэкусу, П. Науру и другим ученым.

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

Какие же отличительные черты характеризуют АЛГОЛ?

  1. АЛГОЛ во многих отношениях рассматривается как улучшение такого языка, как ФОРТРАН.
  2. Как язык программирования он был определен независимо от какой-либо машинной реализации.
  3. Ученые получили удобное средство для описания алгоритмов и обмена ими между пользователями.
  4. При создании АЛГОЛа был продемонстрирован новый стиль языкового описания, это первый язык, имеющий строго определенный синтаксис. Идея формально-синтаксической системы записей для языков программирования была введена Бэкусом в 1959 г. (систему стали называть БНФ - Бэкуса нормальная форма).
  5. Появление АЛГОЛа привнесло новые идеи в разработку языков программирования, наиболее существенные из них относятся к блокам и процедурам. АЛГОЛ стал первым языком программирования с блочной структурой. АЛГОЛьные программы представляют собой независимые друг от друга блоки операторов. Имена переменных, процедуры, выполняемые и невыполняемые операторы относятся только к конкретному блоку. Блоки могут быть вложенными друг в друга.

АЛГОЛ оказал значительное влияние на последующие развитие языков высокого уровня, причем выделяют три направления этого влияния. Первое характеризуется расширением языка в области структур и операций (пример -- язык СИМУЛА), второе -- большей степенью формализации и обобщения языка и его описания (пример -- язык АЛГОЛ-68). В третьем -- сохранились стиль и размеры описания АЛГОЛа, но введены новые концепции, которые еще в большей степени сочетают простоту и всеобщность (пример -- язык ПАСКАЛЬ ). На основе АЛГОЛа были разработаны многие диалекты, причем некоторые из них (МАД и ДЖОВИАЛ) в развитии отклонились от своего истока и стали независимыми языками.

В СССР в 1965 г. на базе АЛГОЛ-60 и средств языка КОБОЛ был создан язык АЛГЭК, ориентированный преимущественно для программирования экономических задач. Компилятор с этого языка в первые реализован на ЭВМ "Минск-22". В 1964 -- 1966 гг. также на базе АЛГОЛа был разработан язык АЛГЭМ, предусматривающий собой сокращенный вариант АЛГОЛа-60 с введением величин типа "строчный", строчными выражениями и функциями, составными переменными и массивами. Компилятор с языка реализован также на ЭВМ "Минск-22".

В 1967 г. группой ГАМС (Группа по Автоматизации программирования для Машин Среднего типа), Созданной комиссией многостороннего сотрудничества академий наук социалистических стран, на базе АЛГОЛа-60 была разработана версия АЛГАМС. В дальнейшем эта версия была реализована на ЕС ЭВМ, а в 1976 г. был принят стандарт на язык АЛГАМС (ГОСТ 21551-76).

АЛГОЛ оказал влияние на проектирование архитектуры многих вычислительных систем, в частности, серии компьютеров В5000. К сожалению, АЛГОЛ имеет несколько слабых мест, и главное из них - бедные средства ввода-вывода.

Язык АЛГОЛ-68 разработан в 1968 г. (в переработанном виде - в 1975 г.) с развитыми средствами ввода-вывода, но из-за конкуренции с другими языками он не получил широкого применения.

Анализируя пройденный АЛГОЛом путь, необходимо заметить, что, не смотря на повсеместное использование языка в европейских странах, в США он не нашел широкого распространения. Объясняется это прежде всего коммерческими соображениями: пользователи, затратив значительные средства на ФОРТРАНовское программное обеспечение (незадолго до появление АЛГОЛа), стали противниками каких-либо изменений в своей программистской практике. Этому в немалой степени также "способствовали" успехи и признание компьютеров фирмы IBM, взрастившей ФОРТРАН.