Программирование формул в excel

Возможно, это самая старая часть программного обеспечения. Все еще широко используемая. Это было 34 года назад. Всего через три года после того. Как Apple представила свои самые первые компьютеры Mac. Microsoft выпустила первую версию своего знакомого приложения для электронных таблиц Excel. Первоначально грубую копию VisiCalc Дэна Бриклина. Перенесемся в будущее. И в 2017 году The Irish Times отметила . Что генеральный директор Microsoft Сатья Наделла назвал Excel самым важным потребительским продуктом Microsoft, указав. Что у него более 750 миллионов пользователей.

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

Исследователи Microsoft считают. Что теперь они, наконец. Превратили Excel в полноценный язык программирования. Благодаря введению новой функции под названием LAMBDA. “С помощью ЛЯМБДЫ Excel стал полным по Тьюрингу. Теперь вы можете, в принципе. Написать любое вычисление на языке формул Excel”. — говорится в блоге Microsoft.

“Быть завершенным по Тьюрингу-это лакмусовая бумажка полноценного языка программирования”. — объясняла новая статья в журнале Visual Studio. И он добавляет. Что “ранняя реакция сообщества была обнадеживающей”, отмечая. Что исследователи Microsoft с энтузиазмом представляют себе опытных пользователей Excel. Создающих функции. “которые кажутся органичной частью Excel их коллегам. Которые просто называют их.”

Эй, офисные инсайдеры— ЛЯМБДА для #Excel теперь доступна!

✔ Определите пользовательские функции на языке формул Excel.

✔ Преобразуйте пользовательские функции и оберните их в ЛЯМБДА-функцию.

Подробнее читайте: https://t.co/ao5Fw2VznP pic.twitter.com/p2db45zeWu

— Microsoft Excel (@msexcel) 3 февраля 2021 г.

Вот посмотрите на эти изменения и на то. Что они предвещают для будущего Excel как языка программирования.

Программирование с помощью Excel

Пользователи Excel выполняют большую часть своей работы с помощью формул — когда ввод в ячейку начинается со знака равенства. За которым следует какое-то вычисление (“=A2 + B2”). В блоге Microsoft формулы называют самым широко используемым языком программирования в мире. Но он всегда был ограничен заранее определенным набором опций. Чтобы запустить собственные пользовательские функции, пользователи должны были использовать другой язык программирования Microsoft на основе макросов-Visual Basic for Applications. (Или, начиная с 2018 года, JavaScript — и, конечно же. Microsoft JavaScript-superset TypeScript.)

В своем видео-выступлении на POPL 2021 давний исследователь Microsoft Саймон Пейтон Джонс отметил. Что конечные пользователи Excel действительно реализуют функции с помощью JavaScript. И этот момент был подтвержден в блоге Microsoft Research старшим главным исследователем и старшим главным менеджером по исследованиям. “Формулы Excel пишутся на порядок большим количеством пользователей. Чем все программисты C, C++. C# и Python в мире вместе взятые.”

Но теперь все эти пользователи могут писать реальные программы. Не покидая мир формул Excel. Более конкретно, формулы. Написанные в Excel. Теперь могут быть “обернуты” внутри именованной ЛЯМБДА — функции-и тогда она может быть вызвана из любого другого места в электронной таблице. И да, он поддерживает рекурсивное программирование. Так что вы даже можете вызвать свою именованную функцию из своей именованной функции.

Имена предоставляются в разделе “Менеджер имен”. Спрятанном на панели инструментов Формул Excel.

И точно так же, как git. Пользователи могут вводить комментарий при создании своей функции.

Создание именованной ЛЯМБДА-функции в Excel (скриншот из блога Excel)

Как описал это старший научный сотрудник Microsoft Джек Уильямс на конференции POPL 2021, “В Excel теперь можно создавать реальные. Полноценные программы программирования… Теперь мы можем начать создавать вещи. Которые выглядят как настоящие программы.”

В блоге приведен пример: ячейка. Значение которой включает имя функции.

Скриншот из блога Microsoft Excel - ЛЯМБДА-функция, использующая адрес ячейки Excel в качестве аргумента

Значение, в конечном счете отображаемое в этой ячейке. Является выходом указанной функции. А аргументом этой функции является…адрес другой ячейки.

С другой стороны. Функция также может

принимать массив (содержащий несколько значений) в качестве аргумента — с тех пор как Excel начал добавлять возможность определения массивов в Excel в сентябре 2018 года.

Скриншот из блога Microsoft Excel - Массив Excel в качестве аргумента в ЛЯМБДА-функции

Функция также может отправить обратно массив в качестве возвращаемого значения. При этом его значения “выливаются” в несколько ячеек. В своей видеопрезентации в POPL Уильямс пишет функцию. Которая мгновенно генерирует календарь.)

И сообщение в блоге Excel обещает. Что в будущем появится больше функций манипуляции массивами. Исследовательский блог Microsoft даже обещает. Что компания работает над “эффективными реализациями комбинаторов обработки массивов. Таких как MAP и REDUCE”. Которые будут использоваться на выходе именованных функций.

А менеджер программ Excel Крис Гросс намекнул на еще большие надежды на будущее. “Я хотел бы. Чтобы мы добавили столь необходимые инструменты для отладки и создания формул”,-написал он в комментарии. “Сродни тому. Что вы получаете с великими идами.”

Мечта 2004 Года

Для Саймона Пейтона Джонса это воплощение давней мечты. Выступая на POPL 2021, давний исследователь Microsoft и защитник функционального программирования рассказал историю посещения команды Microsoft Excel еще в 2004 году.

“Я узнал, что Excel похож на супертанкер. Он имеет очень высокую ценность. Он имеет очень большую массу. И он управляется удивительно маленьким и сильно перегруженным экипажем. Так что изменить курс непросто!”

Но 10 лет спустя он обнаружил. Что один из менеджеров программ среднего уровня. “те дружелюбные. Восприимчивые люди. О которых я упоминал. С тех пор были повышены до великого босса Excel… Внезапно мы начинаем получать бай-ин на уровне высшего руководства для некоторых из этих идей.” И. Что еще более важно. Инженерное обеспечение. Чтобы это произошло.

Скриншот Саймона Пейтона Джонса, выступающего на POPL 2021 о ЛЯМБДА-функциях Excel.png

Исследовательский блог Microsoft называет эту новую функцию LAMBDA “качественным сдвигом. А не просто постепенным изменением.”

Названные лямбда-функции предлагают программистам высококачественные языковые атрибуты “композиционности” и “повторного использования”. Соблюдая один из давних принципов хорошего кодирования. А именно: не повторять работу.

Именованная функция может даже стать частью другой именованной функции в другом месте электронной таблицы. Но это только начало того. Что может быть еще более сложными конструкциями. Согласно сообщению в исследовательском блоге. В конечном счете он предполагает “листовые функции”. Где несколько различных функций. Каждая из которых определена в разных ячейках. Совместно используются для определения более крупной функции.

И что интересно. Концепция листовых функций была впервые описана в исследовательской работе 2003 года в соавторстве с Джонсом. “Наше тематическое исследование необычно тем. Что оно подчеркивает. Как понимание языка программирования может быть применено к продукту. Который обычно не рассматривается как язык программирования”, — писал Джонс.

Также выступая на POPL 2021, Адвайт Саркар, старший научный сотрудник Microsoft Research Cambridge. Предположил. Что дополнительные ячейки будут использоваться для комментирования кода и добавления цветков форматирования. “Мы рассматриваем дизайн языка программирования как исследовательскую дисциплину. Целью которой является создание более удобных человеко-компьютерных интерфейсов”. — говорит Саркар в какой-то момент.

В прошлом году Саркар в соавторстве с автором статьи. Представляющей новую концепцию Excel под названием Gridlets — в которой выбор ячеек может быть скопирован и вставлен. Что позволяет повторно использовать группу формул. В конечном итоге предлагая своего рода объектно-ориентированный аналог определяемых листом функций. Gridlets можно создавать снова и снова. Каждый со своими уникальными параметрами или “свойствами”. В то время как изменения в исходной родительской gridlet будут распространяться на ее дочерние элементы.

creenshot Брайана Джонса, выступающего на Excel LAMBDA в POPL 2021Это работа команды “Calc Intelligence” в Microsoft Research Cambridge. Которая поставила перед собой цель улучшить Excel как язык программирования. Сейчас он доступен только участникам бета — канала программы “Office Insider” . Хотя даже в рамках этой программы нетерпеливые пользователи жаловались. Что они не выкатывают его достаточно быстро. Вспоминает руководитель продукта Excel Брайан Джонс в своем внешнем виде POPL 2021. Уильямс сказал. Что эта функция вызвала большой интерес. “Даже в течение первых нескольких недель после выхода LAMBDAs на YouTube появились видеоролики с сотнями тысяч просмотров. Есть действительно большое пространство для изучения того. Как электронные таблицы и функциональное программирование более высокого порядка могут сосуществовать и производить уникальный опыт.”

Сообщение в блоге Microsoft Excel заканчивается обещанием. Что названные ЛЯМБДА-функции-это только начало. Добавив: “присоединяйтесь к нам в этом путешествии.”