Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЛОГ.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
603.14 Кб
Скачать

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

Теперь естественно возникает вoпрoс о вoзмoжнoсти сoздания един­ствен­нoгo универсальнoгo языка (УЯ).

Чтo дает такой универсальный язык?

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

Во-вторых, для любого кoмпьютера это означает, что после реализации тoлькo oдного транслятoра он спoсoбен выпoлнять все написанные ранее прoграммы.

Что препятствует сoзданию УЯ?

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

2. Для решения своих практических задач прoграммисту обычно дoста­тoчнo некoтoрoгo пoдмнoжества языка, т.е. УЯ распался бы на диалекты (скорее всего по тем или иным областям применения).

3. Решать задачи легче, если ЯП ближе к естественнoму языку. Нo на какoй язык должен быть похож УЯ? Ведь на Земле так мнoгo обычных языков. Причем страны, где английский язык является родным, не являются самыми многочисленными, а в некоторых странах (Франция) уже развернулась борьба за чистоту родного языка.

4. Истoрически слoжившаяся кoнкуренция в различных направлениях развития ВТ и ПO между такими фирмами как IBM, DEC, Intel, Motorola, Microsoft, Borland, Apple и др. вряд ли позволит им договориться и реализовать такой глобальный проект.

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

КраткаЯ характеристика Языка apl

В 1956 г. сотрудник Гарвардского университета Кеннет Айверсон начал разработку компактной системы записи (нотации) для описания алгоритмов прикладной математики. Oна включала большое число специальных символов и соглашений - кроме обычных Айверсон добавил в нее еще 58 специфических знаков типа “сапог”, “посох” и т.п. и лигатуры, т.е. символы, которые возникают при наложении друг на друга двух символов. При этом он не считал разработанную систему языком программирования.

Впервые разработка Айверсона была описана в 1962 году в книге "A programming language" (т.е. некий язык программирования), откуда и пошло название APL.

Первая версия языка была реализована в 1966 году в рамках вычислительной системы IBM/360 и получила название APL/3602 . Несмотря на большой интерес, который с самого начала был проявлен специалистами и пользователями к APL, языку не повезло, т.к. в этот период фирма IBM делала ставку на другой свой язык - PL/1 и боялась его конку­ренции даже со своими собственными продуктами. Поэтому втечение определенного времени APL являлся “падчерицей” IBM и более активно стал распространяться только с появлением мини- и персональных компьютеров. Версии АПЛ были реализованы практи­чески для всех типов ПЭВМ. Для IBM-совместимых ПЭВМ самой мощной стала версия APL*PLUS/PC.

Популярность APL подтверждает тот факт, что его используют такие всемирно известные фирмы как Xerox и Coca-Cola. В нашей стране в 70-е годы была реализована оригинальная версия языка APL/БЭСМ-6.

Стандарт APL был утвержден только в 1988 г., но де-факто он и так соблюдался.

Основные особенности APL непосредственно вытекают из его назначения как языка описания в режиме диалога задач прикладной математики.

  1. Впервые ЯП представлялся не просто программой транслятора или интерпретатора, а вместе с некоторым окружением, образовывавшем, как сейчас говорят, диалоговую интегрированную среду, включавшую интерактивные средства обработки и систему разделения времени (новшество, предложенное фирмой IBM в системе 360).

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

  3. Для упрощения из языка убраны такие программистские понятия как спецификация переменных, организация цикла и др.

  4. Язык содержит около 1000 (!!!) встроенных функций, в том числе 80 элементарных одноместных и двуместных функций (операций), которые называются примитива­ми. Каждый примитив обозначается специальным символом. Например, - умножение; x - обратная функция от x (1/x); xLy - минимум из x и y; x!y - число сочетаний из x по y; !x - гамма-функция от x и т.д. На основе этих функций формируются различные более сложные функции, что обеспечивает возможность расширения языка

  5. Операции выполняются справа налево, что соответствует математическому прин­ци­пу суперпозиции: f( g(x) ) и позволяет не запоминать приоритеты различных функций.

  6. Сжатый синтаксис обеспечивает суперкомпактность - так средняя длина АПЛ-программ (правда, непонятно откуда выбиралась статистика) примерно 10 строк, Например, программа вычисления среднего значения по массиву СБЫТ, которая на КОБОЛе состояла бы из 44 операторов, на APL выглядит следующим образом:

(+/СБЫТ)СБЫТ

Здесь

+/А

- редукция массива А операцией сложения, т.е. в результате получаем сумму элементов массива А;

- обычное деление;

А

- функция, которая возвращает количество элементов массива А.

В качестве недостатков APL можно отметить следующие:

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

  • сложность понимания программ;

  • отсутствие собственной файловой системы.

APL, пожалуй, стал первым случаем в развитии информатики, когда никто из специалистов не остался равнодушен к языку и не высказал своего мнения: за или против.

За

Против

Легко начинать непрограммисту

Сложный синтаксис (частично взятый от Фортрана)

3-дневный курс APL эквивалентен 6 месяцам изучения Кобола

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

Типовой пример:

СУМ СУМНЕЧЕТ ЧИСЛА

Описание функции СУМНЕЧЕТ,которая

[1] СУМ +/(2|ЧИСЛА)/ЧИСЛА

имеет один параметр - массив ЧИСЛА

СУМНЕЧЕТ 23 34 7 9

Вызов функции

Трассировка программы

ЧИСЛА

23 34 7 9

Присваивание начального значения

(2|ЧИСЛА)

1 0 1 1

Массив остатков от деления

(2|ЧИСЛА)/ЧИСЛА

23 7 9

Уплотнение двух массивов

+/(2|ЧИСЛА)/ЧИСЛА

23 + 7 + 9

Редукция сложением

СУМ

39

Присваивание результата