Apl что за программа

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

У некоторых революционных языков наблюдалась четкая направленность, дифференцирующая их от большего количества собратьев общего назначения. LISP подходил для обработки списка. SNOBOL использовался для обработки текстовых данных. SIMSCRIPT помогал в моделировании. А язык APL предназначался для математики с акцентом на обработку множества.

APL (от А Programming Language — язык программирования) был разработан в 1957 г. профессором Гарварда Кеннетом Айверсоном (Kenneth Iverson), который в дальнейшем перешел работать в фирму IBM.

Кеннет Айверсон (1920 — 2004) — канадский ученый в области теории вычислительных систем, создатель языка программирования APL

Создание APL

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

APLGO — ВСЯ ПРАВДА О КОМПАНИИ | APL расследование, честно о леденцах! | Сетевая компания APL GO

Айверсон был нанят компанией IBM в 1960 году, чтобы работать с Адином Фалькоффом над его нотациями. Первая модифицированная версия языка с названием System/360 была реализована ими совместно с группой разработчиков IBM в 1966 г. Для этого использовали вычислительную систему IBM/360. Проект принес популярность языку программирования APL. После чего появились разные подмножества языка, как например APL/700.

Ранние разработчики языка APL, слева направо: Дик Лэтвелл, Кеннет Айверсон, Роджер Мур, Адин Фалькофф, Фил Абрамс, Ларри Брид

По этой ссылке можно скачать полную версию исходного кода для версии 1969-1972 «XM6» языка APL для System/360:
http://ift.tt/1Ndbb1j
Текстовый файл содержит 37,567 линий, который включают кодекс, макрос и глобальные определения. Чтобы получить доступ к этому материалу, нужно согласиться на условия лицензии, разрешающие только некоммерческое использование и не дающие право лицензировать его для третьих лиц, публикуя копии в сети.

Символы языка APL отличаются от других языков, они ближе к стандартной математике, чем к программированию. Кроме того, символы имеют два смысла — унарную и бинарную функции, которые могут быть непохожи. Например, символ ÷, не /. Чтобы поддержать нетрадиционные символы, APL360 использовал изготовленную на заказ клавиатуру со специальными символами в верхнем регистре.

Специальная клавиатура языка APL

Несмотря на это, в языке используются особо специфические знаки, которых нет на клавиатуре. Например, grade up изображают знаком ⍋.

Для печати программ Айверсон и Фолкофф убедили IBM спроектировать специальный «шар» для их 1050 и 2741 терминалов, использующих механизм пишущей машинки IBM Selectric.

Образец кода APL:

[6] L←(Lι’:’)↓L←,L ⍝ drop To: [7] L←LJUST VTOM’,’,L ⍝ mat with one entry per row [8] S←¯1++/∧L≠'(‘ ⍝ length of address [9] X←0⌈⌈/S [10] L←S⌽(−(⍴L)+0,X)↑L ⍝ align the (names) [11] A←((1↑⍴L),X)↑L ⍝ address [12] N←0 1↓DLTB(0,X)↓L ⍝ names) [13] N←,’⍺’,N [14] N[(N=’_’)/ι⍴N]←’ ‘ ⍝ change _ to blank [15] N←0 ¯1↓RJUST VTOM N ⍝ names [16] S←+/∧’ ‘≠⌽N ⍝ length of last word in name

После этого программы могли печатать и распечатывать. Пример печатной версии программы из Языкового руководства языка APL, которое вычисляет математический детерминант матрицы:

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

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

Особенности APL

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

Независимо от ОС и архитектуры компьютера, язык APL ориентирован на решение проблемы и описание алгоритма. Он направлен на работу с массивами.

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

Выражения в языке APL подсчитывается справа налево и нет никакой иерархии предшествования функции. Например, печать выражения 2×4+3 заставляет компьютер мгновенно печатать получившееся значение 14.

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

Читайте также:
Groove Windows 10 что это за программа

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

В языке присутствуют скаляры (примитивные типы данных). Логические значения моделируются числами 0 для false и 1 для true. К слову, данный прием был впервые применен именно в APL. Массивы объединяют все структуры данных: одномерные векторы, двухмерные матрицы и многомерные мультитаблицы. Изначальная ориентация функций направлена на работу с массивами, но может применяться к скалярам.

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

В APL используется принцип boxing, который помогает с реализацией разнородных структур данных. По этому принципу любой массив можно «заключить в коробку» и рассматривать как скаляр. В таком виде операции над ним не производятся, но его возможно включать в другие массивы. После извлечения содержимого массива из «коробки», оно становится доступным.

У APL более многомерная структура, которая автоматически производит расчет выражения, скаляры могут быть свободно смешаны. Например ← 2 + 1 2 3 создает вектор 1 2 3, добавляет к нему скалярную величину 2 и создает переменную A, чтобы держать вектор, значение которого 3 4 5.

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

У языка APL есть богатый набор встроенных функций, которые воздействуют на скаляры, векторы, множества, более многомерные объекты и их комбинации. Например, выражение суммирует числа в вектор А +/A где / — оператор “сокращения”, заставляющий функцию слева быть последовательно примененной ко всем элементам операнда справа. Выражение для вычисления среднего числа А также использует примитивную функцию ρ, чтобы определить сколько элементов находятся в A: (+/A) ÷ ρА.

Примеры таблиц с 1970 из “Руководства Пользователя APL360” (таблица 1, 2 и 3)

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

Определение частного выражения

Частное выражение Значение, если R равняется 6
⍳R 1 2 3 4 5 6
T←1↓ 2 3 4 5 6
T∘.×T 4 6 8 10 12
6 9 12 15 18
8 12 16 20 24
10 15 20 25 30
12 18 24 30 36
T∊ 0 0 1 0 1
~ 1 1 0 1 0
( )/T 2 3 5

В программе нет петель. Операторы языка APL могут применять легкие способы ко всем видам вычислений, где обычно потребовались бы петли. Например, выражение, определяющее число элементов вектора X, которые больше 100 будет +/X>100.
Но конечно, условные операторы и петли иногда необходимы.

Похвала и критика языка APL

Как уже упоминалось, APL не был первоначально разработан как язык программирования. Вот, что сказал на эту тему Айверсон:

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

У языка APL есть преданные поклонники. Как например Алан Перлис (первый получатель Премии Тьюринга ACM, в 1966 г.):

Радует глаз изобретательное и красивое взаимодействие операции и контроля, которое в других языках программирования заметных только на некоторых страницах текста. Каждый начинает ценить появление и значение стиля. Многие получают свободу самовыражения в вольностях языка APL. Я раньше описывал Pascal, как «фашистский язык программирования», потому что он властный, четкий и имеющий рамки… Так вот, если Pascal фашистский, то язык APL — анархистский.

Одним из существенных минусах выделяют сложность расшифровки языка APL. Есть популярная шутка о том, что APL — это язык только одного написания, потому что даже его автор с трудом может разобрать и понять код. Ниже представлены примеры двух различных «острот» от APL, которые реализуют версии Игры «Жизнь» — клеточного автомата, придуманного английским математиком Джоном Конвеем (1970 г.).

Шифр не для слабонервных

Голландский ученый и программист Эдсгер Дейкстра сказал:

Язык APL — ошибка, стремящаяся к совершенству. Это язык будущего для программных методов прошлого.

Популярность языка APL начала снижаться с середины 80-х, когда начали активно развиваться другие системы математических вычислений. Они оказались более интуитивными и смогли лучше удовлетворить потребности пользователей. Тем ни менее, язык APL и языки, которые появились на его основе (такие как APL2 и J), все еще используются в программировании.

В наше время APL применяется в финансовых и математических приложениях. Он поддерживается практически на всех аппаратных платформах. По данному языку каждый год проходят конференции в рамках Association for Computer Machinery.

Читайте также:
Программа ипотека и арендное жилье что это такое

По традиции, немного рекламы в подвале, где она никому не помешает. Напоминаем, что в связи с тем, что общая емкость сети нидерландского дата-центра, в котором мы предоставляем услуги, достигла значения 5 Тбит / с (58 точек присутствия, включения в 36 точек обмена, более, чем в 20 странах и 4213 пиринговых включений), мы предлагаем выделенные серверы в аренду по невероятно низким ценам, до конца месяца!

Источник: habrparser.blogspot.com

Формат файла APL — описание, как открыть?

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

Чем открыть файл в формате APL

Тип файла: Monkey’s Audio Track Information File Разработчик: Matthew T. Ashland Категория: Аудио

Файл информации о треке, создаваемый Monkey’s Audio — аудио-скомпрессором без потерь качества. Содержит метаданные для аудио-трека, включая начало и конец трека в исходном файле .APE. Может также включать в себя информацию об исполнителе, альбоме, названии песни, длительности и другую информацию о треке.

Файлы APL применяются для перемещения в нужное место аудио-трека APE. Они также применяются для отображения информации о треке в процессе воспроизведения музыки. Файлы APL могут создаваться из файлов .CUE при помощи программы MakeAPL, которая встроена в Monkey’s Audio.

Чем открыть файл в формате APL (Monkey’s Audio Track Information File)

Monkey’s Audio Nullsoft Winamp Media Player 5.6 with Monkey’s Audio plug-in

Тип файла: ArcPad Layer File Разработчик: ESRI Категория: Геоинформационные данные

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

Файлы уровня ArcPad применяются для анализа данных геоинформационных систем в поле программы ArcPad, которая запускается на платформе мобильных устройств Windows. Файлы APL экспортируются приложением ArcGIS.

Чем открыть файл в формате APL (ArcPad Layer File)

Тип файла: ACDSee Plugin File Разработчик: ACD Systems Категория: Плагины

Плагин, добавляемый в ACDSee Photo Manager — приложение, используемое для структуризации и исправления цифровых фотографий. Содержит функции, расширяющие возможности программы. Часто применяется для чтения форматов RAW изображений с цифровых камер либо просмотра форматов файлов из других программ.

Чем открыть файл в формате APL (ACDSee Plugin File)

Источник: www.azfiles.ru

Язык программирования APL

«В скором будущем стоимость аппаратной части компьютеров, необходимой для запуска и работы программы будет ничтожно мала по сравнению со стоимостью труда программиста, поэтому имеет смысл развивать языки программирования, которые, хоть и более требовательны к ресурсам компьютера, зато позволяют минимизировать количество кода», — примерно так рассуждал доктор Джим Браун, возглавлявший группу APL девелоперов IBM в середине 80х. Что ж, его прогнозы оправдались лишь отчасти. Сейчас APL применяется, и вполне успешно для программирования финансовых и научных расчетов, входит в состав .NET платформы и в TIOBE Index на ноябрь 2010 занимает 33 место (рейтинг 0,366%).

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

Итак, APL, — аббревиатура расшифровывается очень просто: A Programming Language. Идея языка появилась у Кеннета Айверсона (Kenneth E. Iverson) в 1957 году во время его работы в Гарвардском университете, и нашла свою реализацию во время его работы в IBM в 1964. Пик использования APL приходится на середину 80х, когда появилось множество версий языка и диалектов, в том числе и для микроконтроллеров.

В какой-то момент даже Microsoft Corporation планировало релиз своей версии APL, но по неизвестным причинам этот релиз так и не состоялся. В начале 80х появилась новая версия языка — APL2, которую создала группа разработчиков IBM под руководством доктора Джима Брауна (Jim Brown). Эта версия и стала основой современного APL.

Сейчас существует около десятка различных интерпретаторов APL. Основные это Dyalog APL, APL Now и MicroAPL, все три работают с Windows, Unix и Linux, а последняя и с MacOS (дальше я буду приводить примеры, используя Dyalog APL, к тому же студенты могут скачать этот интерпретатор бесплатно с сайта Dyalog: dss.dyalog.com/edu).

Читайте также:
Gta iv что это за программа

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

Итак, для чего же нам всё это нужно? Основными особенностями и преимуществами языка можно выделить следующие:
1. Кроссплатформенные реализации.

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

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

Благодаря этим правилам APL фактически позволяет реализовать любую функцию в одной строке кода. Один знакомый реализовал на APL множество Мандельброта, а здесь можно скачать реализацию знаменитой игры «Жизнь», естественно тоже одной строкой кода.

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

Минусы, конечно, тоже присутствуют. Главный из них, как уже не раз упоминалось, это непривычный синтаксис. Долгое время APL вообще считался «write-only language», потому как достаточно сложно понимать написанный код. Сейчас же в основном используется только небольшая часть возможностей языка, потому возможно обойтись несколькими наиболее важными символами, и вообще инкапсулировать APL-ный код внутри .Net библиотек.

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

Приведу еще несколько примеров, чтобы вы могли прочувствовать язык.
APL предоставляет очень мощные механизмы для работы с массивами и матрицами. Элементы массива могу быть любых типов, массивы могут быть любого уровня вложенности, и вы легко можете добраться до любого элемента массива. Создадим матрицу 10 на 10 и заполним её элементами от 1 до 100. Обращение к строкам матрицы стандартное:

Теперь создадим массив из 3 элементов: числа, строки и нашей матрицы. Мы можем легко добраться до любого элемента массива. Поменяем вторую букву в строке и последний элемент матрицы (изменился только массив, матрица mat не изменилась).

Для создания функции достаточно просто ввести её имя и дважды кликнуть на нём мышкой — функция откроется в отдельном окне. Всё что идёт слева и справа от имени функции – это аргументы, результат это то, что идёт слева от символа присваивания. Результат возвращается в переменную с таким же именем, которое указано в первой строке. В APL сигнатурой функции является только её имя. Создаю функцию, которая принимает один аргумент и возвращает его инкремент.

Отдельно стоит отметить дебаггер APL. Изменять значения переменных, и переходить по стеку можно прямо во время выполнения, что не может не радовать. Надо только переключиться из режима трейса в режим редактирования.
Я изменяю переменную а на 1 перед выполнением последней строки функции, справа окно Watch в котором значение переменной res:

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

Анализатор языка проверяет введённую строку справа налево до того момента пока не встретит первую функцию(символ). Дальше проверяет, есть ли аргументы слева от функции. Если аргументов нет, то символ используется в своём единичном значении (monadic), если же есть аргументы слева, то используется значение dyadic. Пример: данный символ или округляет в сторону увеличения или выбирает максимальный из двух элементов.

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


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

  • язык программирования
  • APL
  • функциональное программирование
  • финансовое программирование

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru