Pull to refresh

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

Reading time 5 min
Views 20K
Programming *
Sandbox
«В скором будущем стоимость аппаратной части компьютеров, необходимой для запуска и работы программы будет ничтожно мала по сравнению со стоимостью труда программиста, поэтому имеет смысл развивать языки программирования, которые, хоть и более требовательны к ресурсам компьютера, зато позволяют минимизировать количество кода», — примерно так рассуждал доктор Джим Браун, возглавлявший группу APL девелоперов IBM в середине 80х. Что ж, его прогнозы оправдались лишь отчасти. Сейчас APL применяется, и вполне успешно для программирования финансовых и научных расчетов, входит в состав .NET платформы и в TIOBE Index на ноябрь 2010 занимает 33 место (рейтинг 0,366%).
Читать дальше →
Total votes 27: ↑26 and ↓1 +25
Comments 25

Создаем простое GUI приложение на APL

Reading time 4 min
Views 1.7K
Programming *
Sandbox
Всем привет! Появившаяся недавно на Хабре статья, посвященная языку APL, на мой взгляд, не столько описала, сколько усложнила этот довольно простой и логичный язык. Я решил попытаться доказать что APL — это просто! Для этого я покажу вам, как написать на APL небольшое GUI приложение с использованием интерпретатора компании Dyalog, так как собственно сам язык APL состоит из пары десятков примитивов (те самые «закорючки») и всё. Параллельно постараюсь объяснить значение используемых примитивов и особенности разработки в Dyalog APL (много картинок!).
Итак, «Угадай Число» на APL!
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 3

Игра Жизнь на языке программирования Mercury

Reading time 7 min
Views 4.3K
Programming *
В рамках экспериментов с языком программирования Mercury а также под впечатлением уже неоднократно поднимавшейся в последнее время здесь темы игры Жизнь (1, 2, 3) захотелось написать свою реализацию на этом интересном языке программирования.

В двух словах о Mercury. Этот язык функционально-логического программирования замышлялся как усовершенствование prolog'а. Усовершенствование заключается в введении в пролог статической типизации (а так же декларирование режима детерминизма). Как результат — больше возможностей у компилятора создать эффективный исполнимый код, больший контроль на этапе компиляции. Любителям пролога, наверняка знаком анекдот:
Q: How many Prolog programmers does it take to change a light bulb?
A: False.

В царстве прологов нишу типизированных прочно занимает Visual Prolog. Но, стоит отметить, что подходы Visual Prolog и Mercury весьма отличны.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 12

Работа с файлами в Dyalog APL

Reading time 5 min
Views 1.7K
Programming *
Всем привет. Сегодня я расскажу (и покажу) вам, как организована работа с файлами в Dyalog APL. Экспериментировать будем с «родной» файловой системой Dyalog – DCF, остальные файлы в данной статье не рассматриваются. Также будет затронута тема обработки исключений. Все опыты будут проводится на материале из прошлого топика. К сожалению, некоторые изображения хренового качества, прошу меня извинить, ибо не знаю хорошего хостинга картинок. Итак, поехали.
Читать дальше →
Rating 0
Comments 2

Двурукая подвижная роботизированная платформа

Reading time 2 min
Views 22K
Gadgets Computer hardware Robotics


Двурукая подвижная роботизированная платформа (BDRP, так же известная как Робо-Салли) разработана лабораторией прикладной физики (APL) университета Джона Хопкинса в Лауреле, Мэриленд, эта роботизированная система спроектирована для воспроизведения человеческих возможностей для безопасного отстранения исполнителя от опасных для жизни операций. Платформа имеет два модульных протеза, разработанных в APL (http://www.jhuapl.edu/prosthetics) по программе революционных протезов DARPA, которая была представлена на 60 Minutes (CBS News), National Geographic и Popular Mechanics. BDRP имеет 42 степени свободы (17 в каждой конечности, три в торсе, три в шее, и две в передвижной платформе).
Смотреть видео
Total votes 24: ↑23 and ↓1 +22
Comments 24

Язык программирования и база данных Q: в энтерпрайсе синтаксис роли не играет

Reading time 7 min
Views 8K
Abnormal programming *Programming *
Tutorial
Sandbox
Возникла необходимость выбрать новый тарифный план для сотового. Провозившить минут 30 с excel и google-docs стало понятно, что ничего толкового из этого не выйдет и без db тут не обойтись.

Чуть подумав рука сама набрала «q», так как это было единственное доступное на компьютере здесь и сейчас. Что про него знал: что первый и последний раз запускал год назад, минут на 30, для простой задачки по разбору и поиску по файлу.

Дальше будет много q, а именно ascii последователя подмножества языков APL'а и языка Scheme, а именно k и его расширения k-sql, переродившихся в продукт с именем Q — тесной связке языка и встроенной в него базы данных.

C:\Users\unknown\Dropbox\j>q
KDB+ 3.0 2013.02.06 Copyright (C) 1993-2013 Kx Systems
w32/ 2()core 2972MB unknown win-d2om7les24v 192.168.1.2 PLAY 2013.05.07


Я не боюсь увидеть очеловеченный APL
Total votes 16: ↑14 and ↓2 +12
Comments 10

Высокоуровневое программирование в 1975м году

Reading time 1 min
Views 11K
Abnormal programming *Programming *
Tutorial
В 1975м году, ПК IBM 5100 выпускалась в вариантах с языками программирования BASIC или APL. Как можно догадаться, что в итоге основной упор был сделан на интерпретатор BASIC'а по причине того, что при принятии решения о том, что покупать, пользователям данного ПК он казался более понятным, а APL требовал какого-то минимального уровня вхождения. Говорят, что что APL потерял популярность из-за не ascii-символов, может это отчасти и так, но произошло это не в 75м.

Возможно, история программирования языков повернулась бы чуть иначе, если бы развитие пошло с упором на интерпретатор APL'а, но об этом остаётся только фантазировать, так что предлагаю просто понаблюдать за тем, как писали программы в далёком 1975м.

до 5й минуты простая математика.

чуть описания символов
Total votes 25: ↑22 and ↓3 +19
Comments 6

Язык K: Отображение графического интерфейса из данных

Reading time 4 min
Views 8.5K
Abnormal programming *Programming *
Tutorial
Я как всегда об APL, а точнее о старой версии языка K, которая содержала в себе GUI, с весьма необычным подходом к нему.

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

Начнём. Краткое описание API, которое нам доступно:
`show$`v        show variable v
`hide$`v        hide variable v

Это всё, больше нет ничего. Т.е. основная особенность — что GUI в K это прямое отображение данных в памяти. А теперь как с этим можно удобно работать.
Ну ладно, посмотрю на ваш K
Total votes 36: ↑33 and ↓3 +30
Comments 6

J: программирование на смайликах

Reading time 2 min
Views 10K
Abnormal programming *Functional Programming *
Язык J многими, в том числе и на хабре, считается write-only language (что, в общем-то, неправда) или программированием через регэкспы. Важно помнить, что J — это ASCII-версия математической нотации Айверсона, лежащей в основе APL. Точно так же, как невозможно прочесть Хиндли-Милнера, не зная математической нотации, код вроде value =: [:(]`{.@.([:1&=#))[:,[:>[((([:<[)=[:{.])#[:{:])[:>] не может быть понятен человеку, незнакомому хотя бы со словарём языка.

Под катом небольшая подборка учебников и туториалов по теме для заинтересовавшихся. (Внимание: все ресурсы на английском языке)
Читать дальше →
Total votes 30: ↑19 and ↓11 +8
Comments 8

J может быть читаемым

Reading time 3 min
Views 18K
Abnormal programming *Functional Programming *
Tutorial
Жесть! Это как программирование через регулярные выражения…
Нет, вы меня не заставите! Больше никогда!
Смотрю на код и чувствую себя идиотом. Это правда не эзотерический язык типа brainfuck? Им кто-то реально пользуется? И эти программы потом читают?
quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
Perl нервно курит в сторонке.
Хабрахабр о J

imageJ — корейский среди языков программирования. Взрыв на фабрике спецсимволов. Куча скобочек, точек, слэшей, и всё это ещё и работает. Не иначе как по велению чёрной магии, а то и самого Сатаны.

Некоторые из тех, кто пишет на J, забывают простые правила написания любого кода в погоне за краткостью или просто увлекшись. Эти правила не новые, но они приобретают критическое значение применительно к APL-подобным языкам, потому как при чтении конструкций вроде ((]i.~[:{.[){([:{:[),]`([:<[$:[:>])@.([:32&=[:3!:0[:>]))"2 0 даже тренированный мозг сворачивается в трубочку.

Итак, простые правила написания читаемого кода на J под катом.

Без словарика под кат лучше не соваться. Вас предупреждали.
И напомню, список полезных ссылок здесь.
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 24

Примеры классического кода, ставшего Open Source

Reading time 9 min
Views 33K
ua-hosting.company corporate blog Website development *Open source *Programming *System Programming *


В прошлом году NASA опубликовала список программного обеспечения, код которого они разрабатывали в течении долгих лет. NASA уже давно стала знаменита тем, что делится с общественностью своим кодом. Другие же разработчики не всегда готовы пойти на такое. По крайней мере не сразу. Давайте ознакомимся с некоторыми примерами классического кода, который теперь можно и посмотреть, и пощупать.
Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Comments 17

Считаем комбинации мозаик при помощи APL

Reading time 6 min
Views 1.1K
Entertaining tasks Algorithms *Mathematics *
Translation
Это короткая статья о том, как я воспользовался APL для проверки своих комбинаторных вычислений.


Преамбула


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

«Есть сетка 3 на 3 из квадратов, образующая мозаику. Сколькими способами мы можем раскрасить эту мозаику, если у нас есть 3 цвета и соседние квадраты не могут быть одного цвета?»

Под «соседними» понимаются соседние по вертикали или горизонтали. Авторы задачи дали подсказку (если не хотите спойлеров, то сразу переходите к следующему разделу!):

Подсказка
«Пронумеруйте квадраты от 1 до 9, а затем поработайте с цветами чётных квадратов. Это позволит определить цвета нечётных квадратов».

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

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

Это статья о том, как я за 30 секунд проверил на APL своё решение задачи.

  1. Я начну с демонстрации моего ошибочного доказательства (в том виде, в котором я его записал);
  2. Затем я расскажу, что сделал на APL, чтобы проверить своё решение;
  3. Далее я покажу свою исходную ошибку, и наконец
  4. Я ещё немного поработаю с кодом на APL, чтобы сделать его чище.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 3

Excel очень крут

Reading time 4 min
Views 19K
Дата-центр «Миран» corporate blog Programming *INFOLUST *Functional Programming *Software
Translation
Статья Хилла Уейна, автора почтовой рассылки «Компьютерные штучки», которая посвящена формальным методам и применению математики в программировании, истории и культуре программного обеспечения, философии и теории программирования, а также всяким экзотическим штукам и нишевым темам. В общем, рекомендуем.

В прошлом выпуске рассылки Уейн игрался с языком программирования J, который работает как арифметический калькулятор в консоли, и пошутил по ходу дела:

Я столько времени трачу на интерактивные вычисления, что даже не мог оторваться от этих функций… Может, мне просто хорошенько освоить Excel?

Пошутив про офисную программу, Хилл Уейн решил действительно посмотреть на неё поближе… и был поражён увиденным: «Это как найти сундук с сокровищами у себя на чердаке», — пишет он. И перечисляет некоторые новые функции современного Excel, о которых мало кто знает.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 36

Вам нужен чистый код? Используйте правило шести

Reading time 3 min
Views 32K
Цифровой СИБУР corporate blog Python *Programming *Perfect code *Brain
Translation

Все хотят писать чистый код. Этому посвящены целые книги.

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

Решение таково:

Каждая строка делает только одно действие


Одна строка, одна задача.

Но не стоит слишком перебарщивать.
Читать дальше →
Total votes 64: ↑53 and ↓11 +42
Comments 87