Вязание помогает понять шаблоны программирования

Вязание помогает понять шаблоны программирования

6 апреля 2022 г.

Вязание как программирование или как я узнал, что программисты всем обязаны волокнам


В рамках моего буткемпа меня попросили выступить в течение 10 минут на любую тему. Я вяжу крючком с 2013 года, а спицами — с 2018 года, и я заметила некоторое сходство между тем, как я подходила к проекту, будь то волокно или программирование. Чего я не ожидал найти, так это богатой истории волоконного искусства и программирования, влияющих друг на друга.


Начало отношений между оптоволокном и программированием


Волоконное искусство, такое как вязание, представляет собой ремесла с использованием пряжи, веревок, ниток и т. д. Это охватывает тысячи лет истории, начиная с 6500 г. до н.э. с викингов [Nålbinding] (https://theknittinggenie.com/2018/03/06/nalbinding). -ускоренный курс/). Другие ремесла, включенные в этот раздел, включают вязание крючком, вышивку, ткачество и изготовление текстиля.


Исторически искусство волокна и программирование были очень тесно переплетены, начиная с жаккардового ткацкого станка, приспособления для механических ткацких станков. Это была первая машина, которая использовала цепочку перфокарт для автоматизации инструкций. Это позволило ткацкому станку создавать замысловатые узоры на текстиле на основе подаваемых перфокарт. Это вдохновило Чарльза Бэббиджа на создание своей аналитической машины. Столетие спустя его проекты и заметки Ады Лавлейс были прочитаны людьми, создавшими первый компьютер.


Отношения между искусством волокна и программированием становятся еще более очевидными с помощью [Core Rope Memory] (http://drhart.ucoz.com/index/core_memory/0-123-0-123) (также называемой Little Old Lady Memory). Используемое в 1960-х годах НАСА, программное обеспечение, написанное программистами Массачусетского технологического института, было вплетено в основную память рабочими женщинами.


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


Направление тока, проходящего через провода, заставляло силы поля циркулировать по часовой стрелке или против часовой стрелки. Одно направление — это сохраненная 1, а другое — сохраненный 0. В результате получилось энергонезависимое хранилище, которое могло хранить большой объем информации без питания — примерно 2,5 мегабайта на кубический метр. Это было 18-кратное улучшение по сравнению с памятью на магнитных сердечниках, стандартным решением, использовавшимся в то время.


Сегодняшний день


Как и компьютеры, текстильная промышленность прошла долгий путь со времен жаккардового ткацкого станка, интегрируя все больше и больше автоматизированного производства. Возможно, вы хотели бы 3D-печатать много вязаных игрушек? Производители найдут способ, поэтому, когда домашние вязальные машины больше не производились, [люди сами создавали систему] (https://xxxclairewilliamsxxx.wordpress.com/hack-ta-machine-a-tricoter/).


[Ravelry] (https://www.ravelry.com/) был создан в 2007 году с бесплатным членством и рекламой только художественного волокна. Сегодня Ravelry находится в центре внимания сообщества художников по волокну с более чем 9 миллионами пользователей. Их веб-сайт был первым, который позволил людям обмениваться информацией, инструментами, материалами и шаблонами в формате pdf в больших масштабах и на всех языках, что произвело революцию в отрасли. Кроме того, они предлагают дискуссионные группы, чтобы люди могли получить помощь с шаблонами и методами.


Они принадлежат и управляются 6 женщинами, они используют технический стек из примерно 10 серверов Gentoo Linux, MySQL 8.0, Ruby on Rails, Manticore Search, Amazon S3 для хранения изображений и CDN, Redis, memcached, nginx и haproxy.


Устранив барьеры для входа, Ravelry приписывают взрыв интереса к вязанию спицами и крючком, стимулируя инновации в более простых узорах. Я лично разговаривал с владельцами местных магазинов пряжи об их опыте до и после Ravelry, и они описывают его как ночь и день. Сейчас вязальщицам в основном 25–35 лет. Местные, региональные и международные группы по вязанию, фестивали волокон и сборы пряжи возникли повсюду. Пряжа, окрашенная инди, в настоящее время является огромным бизнесом. Возобновился интерес к выставкам волокон, которые рассказывают людям, откуда берется их пряжа. Аудитория блогов и подкастов, связанных с искусством волокна, в целом выросла в геометрической прогрессии.


Основа для вязания


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


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


схема лицевых глади резинкой K2P2


Паттерны как программирование


  • Дизайнеры схем вязания следуют DRY.

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

  • Обычно можно увидеть такие циклы, как «до конца ряда» или «до n стежков до маркера».

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

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

  • Шаблоны проверяются и повторно тестируются пользователями на правильность, масштабируемость и внешний вид готового объекта (также известный как ожидаемый результат).

  • Разработчики шаблонов предпочитают программное обеспечение с открытым исходным кодом (Darktable, Gimp, Libre. .libreoffice.org/download/download/), Stitchmastery и т. д.).

  • Разное расположение пряжи и игл дает разный результат.

Эта шаль связана из 8 петель, все лицевые (без изнаночных). Один ряд был прописан так: 3лиц, ПМ, (2лиц вместе, накид) 2 раза, [1лиц, накид, ссск, накид, 1лиц2п, накид, 2лиц вместе, накид] до 5 петель перед маркером, 1лиц, (накид , ссб) 2 раза), ПМ, 3лиц


Кружевная шаль, связанная из блестящей бордовой пряжи, связанная Abbey Perini, узор Dowland от Dee O'Keefe, пряжа Meeker Street от The Jewelry Box


Было даже два (более не поддерживаемых) языка программирования, разработанных специально для ручного вязания - KnitML, язык разметки, и KEL, вдохновленный Groovy, языком Java.


Шаблоны как регулярные выражения


Скажем, мы хотим сделать квадрат из резинки. «kp» — это [регулярное выражение] (https://regexone.com/) для одной лицевой петли, за которой сразу следует одна изнаночная петля. Фигурные скобки используются для повторов, поэтому kp, повторенный 10 раз, выглядит так: (kp){10}. Для новой строки мы используем новую строку, написанную <br>. Тогда полное регулярное выражение для строки будет (kp){10}<br>. Поскольку мы поворачиваем квадрат, чтобы провязать следующий ряд, следующая строка должна быть pks или (pk){10}<br>. Мы хотим, чтобы в нашем квадрате было 40 строк, поэтому они, в свою очередь, заключаются в еще большее количество скобок, что дает: ((kp){10}<br>(pk){10}<br>){20}. Более общий шаблон будет выглядеть как ((kp){x}<br>(pk){x}<br>){y}.


Шаблоны как инструменты для обучения программированию


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


-- "Следование за нитью: схемы вязания и отслеживание программы" Мишель Крейг, Эндрю Петерсон, Сара Петерсон


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


Например, использование вариантов завершения с «until» делает цикл while более понятным. Еще говорят, что создание вязаного конечного объекта аналогично калькированию, так как демонстрирует понимание узора.


Вывод: программирование и вязание очень похожи


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


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


Если вы уже являетесь художником по программированию волокон в проектах Ravelry, ознакомьтесь с моим проектом Knitworthy!



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE