Цель вычислений — понимание, а не цифры — Ричард Хэмминг

Представьте себе мир, в котором просто и интуитивно понятно разобраться в числах перед вами. Это мир, который мы хотим построить в Деципаде.

Сегодня принимать решения и общаться с числами по-прежнему очень сложно. Как команда инженеров, мы изучали технические проблемы современных языков программирования и их влияние на доступность в моделировании данных.

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

Машины говорят на коде, люди нет.

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

Однако давать инструкции компьютерам (программировать) — непростая задача: вам нужно быть знакомым со многими деталями их аппаратного и программного обеспечения, а также с тем, как давать инструкции таким образом, чтобы компьютер их понял. Чаще всего эта задача неестественна для человека и требует многолетней самоотверженности и определенного уровня знаний.

Помните первые языки высокого уровня, такие как COBOL? Эти программы было легче понять, чем языки ассемблера, но они по-прежнему требовали узкоспециализированных навыков. С тех пор появилось много других языков высокого уровня. Некоторые более доступные, такие как Python или Ruby, и другие, более мощные и производительные, такие как C (но менее щадящие).

Тем не менее, ‹1% населения умеет кодировать. И менее половины программистов в мире знают Python, что является обязательным требованием для большинства инструментов обработки данных.

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

Хорошо… но как насчет электронных таблиц?

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

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

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

Если кто-то может ввести формулу, зачем нам что-то новое?

Несмотря на то, что многие приложения для работы с электронными таблицами начали демократизировать доступ к информации и персонализацию, они не обошлись без недостатков. Этот тип программного обеспечения заставлял пользователей решать проблемы, думая «внутри коробки», что приводило к разрозненности информации, ошибкам и большому количеству ненужной ручной работы. Причины, по которым люди обычно создают программное обеспечение, обычно укладываются в три группы:

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

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

Общение.Людям необходимо общаться друг с другом во многих и различных формах. В эту категорию попадают приложения для обмена сообщениями, социальные сети и электронная почта, а также такие инструменты, как Word или Powerpoint.

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

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

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

Электронные таблицы не дают контекста числам.

С традиционными языками программирования и электронными таблицами люди используют числа. Но числа имеют значение. Они представляют определенное количество предмета (например, количество сахара в напитке, площадь офиса или процент комиссии за транзакцию). Это означает, что у чисел есть неявная единица измерения (квадратные метры, доллары, килограммы и т. д.) и неявный субъект (зерно пшеницы, лекарство, зарплата, офисное помещение, транзакция и т. д. ).

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

Нам нужен способ, чтобы компьютеры понимали значение и контекст обрабатываемых ими чисел. Например. 2 кг или мука против 300 г сахара.

Электронная таблица негибкая в отношениях.

Если вы используете электронные таблицы, вы, вероятно, можете относиться к этому:

Часто проще построить новую модель, чем расширять существующую модель для новых обстоятельств.

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

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

Стоимость офисных помещений = (общая площадь) x (ежемесячная стоимость единицы площади)

Допустим, дела идут хорошо. Вы наняли команду. Теперь вам нужна модель для учета площади в зависимости от количества сотрудников.

Стоимость офисных помещений теперь зависит от удельной стоимости офисных помещений и количества сотрудников.

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

И так далее. По мере усложнения модели числа превращаются в отношения различных величин.

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

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

Электронная таблица не имеет естественного потока.

По мере того, как мы усложняем модели в наших электронных таблицах, мы быстро становимся жертвами этой электронной таблицы. Оно уже не понятно никому, кроме его автора. И, часто автор теряет след!

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

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

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

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

Электронная таблица требует дополнительного шага для представления.

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

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

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

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

Лучший, более современный подход.

В Decipad мы считаем, что возможен лучший и более доступный способ создания, сотрудничества и обмена знаниями, связанными с числами.

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

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