Это последний технологический отчет для английской Википедии, автоматически извлеченный из The Signpost . |
9 октября в Википедии был включен новый гаджет — гаджет калькулятора, который поддерживает новый шаблон: {{ Calculator }} . В отличие от большинства шаблонов, которые просто что-то отображают, этот гаджет позволяет осуществлять динамическое взаимодействие с читателем. Вы можете увидеть пример этого в калькуляторе индекса массы тела (ИМТ) в правой части этой страницы. Читатель может ввести свой вес и рост в таблицу и сразу узнать свой ИМТ.
Этот гаджет изначально был создан и финансируется Wiki Project Med Foundation . Wiki Project Med Foundation управляет вики, которая охватывает медицинские темы (MDWiki), и хотел иметь возможность встраивать медицинские калькуляторы , как вы часто видите на таких сайтах, как MDCalc . После использования в MDWiki гаджет был скопирован в английскую Википедию и теперь используется в небольшом количестве статей с постепенным расширением его сферы применения на другие цели. (Примечание COI: автор этой статьи является разработчиком гаджета калькулятора и получил компенсацию от WikiProject Med Foundation за часть своей работы над ним.)
Для этого проекта мы не хотели просто сделать один виджет калькулятора для расчета ИМТ. Нашей целью было создать систему, которую обычные редакторы могли бы использовать для создания такого типа контента для себя. В конце концов, мы надеялись, что это можно будет использовать в самых разных статьях; требование от программиста писать новую программу JavaScript для каждого типа калькулятора не масштабируется, особенно если учесть бюрократическую волокиту вокруг обеспечения того, чтобы любой новый JavaScript не влиял отрицательно на безопасность или производительность сайта.
Главным вдохновением для этого проекта были электронные таблицы . Электронные таблицы являются одним из самых распространенных примеров пользовательского программирования. Непрограммисты (в традиционном смысле этого слова) постоянно создают очень сложные «программы», используя электронные таблицы. Это проверенная модель, которая является одновременно мощной и относительно простой для понимания.
Парадигма программирования электронных таблиц заключается в том, что у вас есть страницы строк и столбцов, чтобы составить (почти) бесконечную таблицу ячеек. Некоторые ячейки являются ячейками ввода, куда пользователь может вводить числа или другие данные. В других ячейках есть формула, так что их значение может быть рассчитано на основе содержимого других ячеек.
Полная страница строк и столбцов, конечно, не поместилась бы в вики, но мы взяли идею иметь ячейки, которые могли бы быть либо ячейками ввода, либо ячейками формул. Ячейки ввода принимают пользовательский ввод, в то время как ячейки формул выдают вывод.
Таким образом, мы ввели новый шаблон, {{ Calculator }} , для добавления "ячейки" (поля ввода текста) на страницу. Ячейка может иметь идентификатор и, опционально, формулу, которая ссылается на другие идентификаторы. Если читатель корректирует значение одной из ячеек, все ячейки с формулами, которые ссылаются на измененную ячейку, немедленно обновляются.
Например, рассмотрим следующий викитекст:
Ввод: {{ калькулятор | идентификатор = ввод }} Вывод: {{ калькулятор | формула = ввод*3 }}
Что создает следующий вывод:
Вход:Выход:
Создаются две ячейки. В одной ячейке есть входной идентификатор и нет формулы. В другой нет идентификатора, но есть формула, определяющая ее значение как утроенное значение входной ячейки. Если вы поместите число в первую ячейку, вторая ячейка автоматически обновится с этим значением, умноженным на три.
Вы можете добавить больше ячеек, если ваша формула зависит от более чем одной переменной, чтобы создать довольно сложные системы. Существует множество опций для настройки внешнего вида и типа поля в зависимости от того, что необходимо.
Одной из первых проблем, с которой пришлось столкнуться, было желание поддерживать как имперские, так и метрические единицы.
Первоначальное решение состояло в том, чтобы иметь переключатели для выбора предпочитаемых единиц измерения, используя TemplateStyles и псевдокласс :checked для скрытия полей, относящихся к другой системе измерения.
Это сработало, но было некрасиво и негибко.
Вместо этого мы решили предоставить большую часть калькулятора CSS. Мы сделали это двумя способами. Во-первых, мы создали новый тип виджета калькулятора, который назначает класс CSS некоторому контенту на основе того, равно ли значение формулы нулю или нет. Это позволило легко скрывать или показывать контент на основе некоторого условия. Например:
{{ calculator | size = 2 | id = hideinput | default = 4 }} {{ calculator-hideifzero | formula = ifgreater(hideinput,7) | text = Этот текст отображается только в том случае, если ввод > 7. | starthidden = true }}
Что производит:
4 This text is only shown if the input is > 7.
Если увеличить число в поле ввода до 8, появится дополнительный текст.
Во-вторых, мы также выставили значения ячеек калькулятора как переменные CSS. Это позволило реализовать более сложные эффекты, например, динамическое изменение цветов или положения на основе формулы калькулятора. Это значительно увеличило мощность системы {{ Calculator }} способами, которые мы изначально не ожидали. Это позволило реализовать множество интерактивных демонстраций, некоторые из которых находятся в правой части этой страницы.
Гибкая интерактивность объединения CSS и {{ Calculator }} позволяет системе эмулировать другие, более старые интерактивные шаблоны, такие как {{ hidden }} , {{ Switcher }} или даже расширение quiz.
Быстро стало очевидно, что это можно использовать не только для расчета медицинских показателей. Все виды мелкомасштабной интерактивности доступны этой системе.
Первая немедицинская вещь, которую мы попробовали, была вдохновлена Dimitris131 . Они экспериментировали с интерактивными математическими доказательствами, где пользователь мог пройти доказательство шаг за шагом с разными иллюстрациями для каждого шага ( пример ). У них был прототип вне вики, который мы смогли перенести в вики через шаблон калькулятора .
Вдохновленный этим, я создал интерактивный калькулятор для алгоритма Евклида . Алгоритм Евклида — это относительно простой алгоритм, который позволяет кому-то вычислить наибольший общий делитель двух чисел. В статье уже есть «рабочий пример», показывающий все шаги с некоторыми примерами чисел. Я сделал версию этого, в которой вы можете ввести свои собственные числа и шаг за шагом пройти пример. Это позволяет читателю выполнять вычисления в своем собственном темпе.
Другим алгоритмическим примером является эта иллюстрация сортировки пузырьком . Сортировка пузырьком — это метод сортировки, используемый компьютерами, хотя чаще всего он используется как способ продемонстрировать принципы алгоритмов студентам, изучающим информатику. На странице уже был анимированный GIF , показывающий, как сортировка пузырьком сортирует вещи. К сожалению, анимированные GIF не позволяют читателю контролировать скорость демонстрации и не могут настраивать начальные входные данные. С помощью шаблона калькулятора можно создать демонстрацию, в которой читатель может выбрать собственные числа для сортировки и пройти демонстрацию с собственной скоростью.
Интерактивный контент давно стал темой для обсуждения среди викимедианцев. Почти десять лет назад Юрик , автор Kartographer и (ныне отключенного) расширения Graphs, написал действительно интересное эссе, продвигающее интерактивный контент. В этом эссе есть цитата, которая всегда меня вдохновляла:
« | Интерактивные музеи интересны тем, что они превращают наблюдателей в участников... Чтобы по-настоящему заинтересовать наших читателей, нам нужно позволить им взаимодействовать со знаниями. | ” |
— Юрик, Я мечтаю о контенте |
Однако интерактивный контент может быть спорным. Могут быть опасения, что он не «энциклопедический». Я думаю, что это обоснованные опасения. Вполне возможно увлечься возможностями и сделать что-то, что само по себе может быть крутым, но не подходящим для Википедии. Возьмем, к примеру, эту иллюстрацию сопротивления в проводе из проекта PhET . Во многих контекстах это могло бы быть отличной образовательной иллюстрацией. Однако это не было бы уместно для статьи в Википедии. Тон не энциклопедический.
Подобно написанию текста, создание интерактивных иллюстраций может быть сделано уместными и неуместными способами. Это на самом деле ничем не отличается от любого другого типа контента. Как и в письме, важно всегда помнить о целях того, что вы делаете. Интерактивные иллюстрации предназначены для иллюстрации и должны разъяснять текст статьи; они не являются самоцелью.
Когда говорят об интерактивном контенте, часто "данные" не сильно отстают. Иногда может возникнуть идея, что мы должны собрать все данные, которые можем, и пока есть какой-то способ их визуализировать, использование данных представится само собой. Крайняя версия этой идеи — просто иметь некий интерфейс для визуализации всех доступных данных и надеяться, что пользователь сможет понять их с помощью какого-то общего интерфейса детализации.
Я называю это подходом «Большие данные», так как он напоминает мне шумиху вокруг Больших данных , которая была отраслевой тенденцией, когда компании часто сосредотачивались на сборе как можно большего количества данных, независимо от качества или потребностей. Идея заключается в том, что чем больше данных будет собрано, тем больше информации будет раскрыто. Сторонники этого подхода иногда утверждают, что недостающий элемент головоломки для Википедии — это иметь какой-то способ загружать большие наборы данных, которые автоматически обновляются и затем могут использоваться в статьях.
Я не согласен. Чтобы внести ясность, я думаю, что графики и диаграммы — очень полезные вещи. Они являются отличным способом визуализации тенденций. Однако каждый график должен рассказывать какую-то историю; он должен иметь какую-то точку зрения. Мы не можем просто собрать все данные по теме и предоставить их пользователю в надежде, что они откроют какую-то информацию. Каждый график должен быть подобран под рассматриваемую статью. Наличие огромного конвейера приема данных не поможет.
Я бы даже сказал, что в нашем движении графики переоценены по сравнению с их важностью, когда речь идет об «интерактивности». Конечно, в некоторых статьях они играют решающую роль. Трудно представить статью об изменении климата без графика температуры. С другой стороны, во многих статьях они лишь в некоторой степени релевантны.
В частности, я считаю, что интерактивность нужна только в редких случаях, когда речь идет о графиках в Википедии. Статических графиков часто бывает достаточно. Интерактивность в графиках за пределами Википедии обычно используется для того, чтобы позволить читателю «исследовать» данные. Однако статьи Википедии не являются исследованием. Графики в статьях Википедии должны иллюстрировать какую-то точку зрения. Просмотр данных под другим «углом» может помочь читателям прийти к собственному выводу, но это не поможет продемонстрировать конкретную точку зрения.
Я считаю, что наиболее интересными вариантами использования интерактивности являются случаи, не связанные с графами.
Основным вариантом использования интерактивного контента является демонстрация контента, который просто невозможно отобразить в 2D.
Большинство вещей прекрасно выглядят в 2D. Никого не волнует, как выглядит затылок политика. Однако, некоторые вещи мы хотим видеть с разных углов или с разных точек зрения.
Это область, в которой MediaWiki достигла прогресса. У нас есть расширение 3D для показа 3D-файлов «sla». Например, статья о торе Де Брейна использует расширение 3D для визуализации рассматриваемой формы, которую можно перемещать, чтобы рассмотреть ее под любым углом. Аналогично, некоторые статьи, которые по своей сути посвящены движению, иллюстрируются видео, например, Breakdancing. Шаблон {{ Calculator }} все еще может помочь в случаях, когда нам нужен интерфейс для перемещения между различными изображениями, как, например, маска Анубиса, показанная справа.
Интерактивность может быть отличной для иллюстрации вещей с временным измерением. Самый очевидный случай, который приходит на ум, — это карты, которые показывают, как границы меняются со временем.
Другим случаем могут быть алгоритмы и процессы, в которых есть ряд шагов, разворачивающихся с течением времени, как в ранее упомянутой демонстрации алгоритма Евклида.
Иногда статья на самом деле не о физическом объекте, а о том, как он себя ведет.
Одна из моих любимых иллюстраций вне вики — это иллюстрация машины Enigma. Машина Enigma была устройством, использовавшимся для шифрования сообщений во время Второй мировой войны. Конечно, есть смысл в демонстрации изображений настоящих машин Enigma, но есть также ощущение, что настоящая машина Enigma — это не сам объект, а то, что он делает. Демонстрация того, как работает машина Enigma, с помощью виртуальной симуляции, возможно, иллюстрирует то, чем на самом деле является машина Enigma, так, как статическое изображение «настоящей» машины Enigma никогда не сможет этого сделать.
Более простым примером может быть карманный калькулятор (как показано слева). Изображение калькулятора никогда не сможет проиллюстрировать, как работают кнопки или что они делают, так, как это может сделать интерактивный калькулятор.
Это изначальный вариант использования калькулятора. Часто формула может быть трудной для понимания неспециалистами. Графики функций также могут быть трудными для усвоения. Позволяя пользователю вводить число на одном конце и получать другое число на другом, он может воспринимать формулу так, как не может уравнение или график.
Интерактивные диаграммы могут быть здесь действительно полезны. Что может быть лучше для иллюстрации радиан, чем диаграмма угла, которая корректируется в зависимости от ввода пользователя?
Часто мы говорим о добавлении интерактивности в Википедию с помощью крупных проектов — видео, 3D-моделей, карт, расширения Graph/Chart и т. д. Эти проекты действительно захватывающие. Однако я думаю, что {{ Calculator }} нахожу еще более захватывающим, потому что он решает проблему с другой стороны: он обеспечивает интерактивность в миниатюре. {{ Calculator }} не соответствует сложности этих крупных проектов, но он компенсирует это гибкостью. Крупные проекты, как правило, делают что-то одно и делают это очень хорошо, но они ограничены только этим одним. {{ Calculator }} может не соответствовать им по масштабу, но он позволяет редакторам настраивать его под себя. Есть сила в том, чтобы дать волю воображению людей. Когда Scribunto был впервые представлен, никто не мог представить себе всех вещей, для которых он в конечном итоге будет использоваться. Это потому, что он не просто решал проблему; он позволял людям решать свои собственные проблемы. Я надеюсь, что {{ Calculator }} сможет сделать то же самое.
Этот шаблон очень новый для Википедии. Пока еще неизвестно, примет ли его сообщество Википедии более широко. Они могут решить, что он им не нравится или что он не вписывается в представление Википедии о том, какой должна быть энциклопедия. С другой стороны, возможно, он станет широко принятым и будет использоваться во многих статьях. На данный момент он использовался в 12 статьях в английской Википедии: Waist-to-height ratio , Body roundness index , Length , Inch , Highest averages method , Santimeter , Bubble sort , Body mass index , Calculator , Color picker , RGB color model , and Euclidean algorithm , а также в 2 статьях в корейской Википедии. Мне не терпится узнать, что ждет этот шаблон в будущем.
Если вы хотите узнать больше, ознакомьтесь с документацией на Template:Calculator или посмотрите исходный код примеров, включенных в эту статью.