Ответственность программистов

Архитекторы Матрицы: от шаманизма к демократичному кодингу

Очерк об истоках программирования, настоящем и возможном будущем профессионалов IT-сферы   

© Frits Ahlefeldt / CC BY-NC-ND 2.0
Текст: Екатерина Арье, культуролог, блогер

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

Программирование старше Иисуса

Чертеж антикитерского механизма

CrypticImages

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

Уже античные изобретатели были знакомы с одной из основ современного программирования — автоматизацией

Между тем, идея конструирования механизма, управляемого алгоритмом — пусть и материальным, работающим благодаря шестерням — возникла еще в античности. Первый калькулятор, известный как антикитерский механизм, очень стар — датируется примерно 100 до н.э. И поскольку устройство было призвано облегчить выполнение вычислительных операций (для расчета движения небесных тел), его применение можно считать свидетельством знакомства античных изобретателей с одной из самых простых и, тем не менее, важных основ современного программирования — автоматизацией. Дальнейшее применение логики алгоритма можно обнаружить у программируемых андроидов Аль-Джазари, умевших «играть» на музыкальных инструментах (XII-XIII вв. н.э.). Самим своим существованием эти «роботы» (разработанные, заметим, задолго до известных нам автоматов эпохи Возрождения) будто заявляли: механической имитации и автоматизации можно подчинить и более сложные, даже антропоморфные структуры.

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

Эпоха абстракции и станки

Иллюстрация из Le tour de la France par deux enfants. Париж, 1904

University of Toronto

Период зависимости от материальной алгоритмизации длился вплоть до 1804 года, когда Жозеф Жаккар создал легендарный ткацкий станок. Он был уникален: позволял «программировать» способ вплетения одной или нескольких нитей, таким образом, создавая и изменяя будущий облик конечного изделия. При чем же здесь программирование? Все просто. Именно благодаря жаккардовому станку начинает оформляться идея бинарного кода — второй важнейшей основы современного программирования. От того, как расположены просеченные и непросеченные места на бумажных картах, зависел итоговый узор. Наличие или отсутствие отверстия в перфокарте, через которое проходила определенная нить, и отражает принцип бинарного кода. А сама перфокарта стала первым вещным олицетворением алгоритма с простейшими вариантами действий типа «да/нет».

В XIX веке формируется идея бинарного кода — второй важнейшей основы программирования

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

Логичным продолжением этого движения к абстракции можно считать табулятор Холлерита. Кажется, его звездный час наступил тогда, когда им воспользовалось Бюро переписи населения США. В 1887 году специалисты организации еще пытались вручную обрабатывать данные 1880 года, однако уже в 1890, с изобретением табулятора, скорость работы с информацией увеличилась в разы. Перфокарты с зафиксированными «персональными данными» граждан — пример того, как программирование, основанное на простейших операциях, позволило обрабатывать огромные (по тем временам) объемы сведений.

От вычисления к обеспечению

© JuralMin / Pixabay

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

В конце концов, довольно скоро стало очевидно: возможности программирования обеспечивают работу и функциональность многих сфер жизни. К тому же не за горами была цифровая революция, предчувствуя которую, профессионалы столкнулись с необходимостью выработки принципов создания ПО, гарантирующих качество самого процесса разработки. В итоге был разработан этический кодекс программиста (1992 г.), и среди его основных положений с легкостью можно найти классические «не навреди», «уважай приватность», «способствуй развитию» и прочие. Как раз тогда программирование превратилось в универсальную практику настройки и бытования мира, в некий способ создания символической системы, языка, понятного всем вне зависимости от владения каким-то конкретным естественным языком, от вероисповедания и пола. Иначе говоря, как раз в это время программируемая реальность превращается в глобальный феномен.

В конце XX века программирование превратилось в универсальную практику настройки мира

Цифровая революция и расцвет интернета, в результате которых значительное количество людей получило доступ к стремительно дешевеющим онлайн-инструментам, привели к трансформации и программирования как вида деятельности, уподобили ее практически сакральной практике. И чем больше запросов оформлялось потребителями цифровых технологий — компаниями и рядовыми пользователями — тем сложнее оно становилось. Короче, по мере «оцифровки» мира проблемы, решаемые при помощи кода, оказывались все частотнее и масштабнее. И сегодня код — это невидимый слой, пронизывающий все области современной жизни и определяющий качество социального мира человека. Без кодинга все — от банковских систем до самых простых рекреационных практик — прекратит свое, по крайней мере, известное нам, существование.

Шаманы и рыцари в сияющих доспехах

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

© Lifelong Kindergarten at MIT Media Lab / scratch.mit.edu

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

Наравне с упрощением языков программирования в последнее время появляется все больше проектов а-ля «программирование для самых маленьких». Один из наиболее интересных примеров — язык Scratch, разработанный в MIT. Его уникальность заключается в том, что процесс написания кода представлен с помощью интерфейса, комплементарного опыту юного пользователя. Интерфейс оформлен как сбор разноцветного паззла, что позволяет маленькому кодеру выстроить логическую связку между элементами. Кроме того, сама среда разработки устроена так, что он сразу видит результат своей работы благодаря встроенной визуализации кода. Итак, сами современные практики кодинга легитимируют программирование как профессию с вполне понятным функционалом, доступную даже не в полной мере подготовленным субъектам, и провоцируют отказ от восприятия программистов как шаманов, чьи манипуляции похожи на танец с бубном. Хотя, заметим, в эпоху платформ и глобальных информационных системы (типа того же Google, объединяющего самые разные цифровые инструменты и продукты) мало кто видел код своими глазами.

Сегодня программирование — скорее навык, нежели профессия, и этот навык требует постоянной прокачки

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

Кроме работы с проблемами эйджизма (в общем-то, свойственным любой специальной области знания), программирование вносит свою лепту в борьбу с сексизмом, мизогинией и профессиональными предубеждениями. Так, язык Processing, разработанный специально для создания проектов цифрового искусства, по словам создателя, помогает избавиться от гендерных стереотипов. Указывая на то, что в IT индустрии достаточно сильна подобная стигматизация, Кейси Рис подчеркивает доступность Processing и формируемой им модели мышления, которая, в свою очередь, создает комфорт «работы с кодом». И действительно, азы языка можно освоить за час, вне зависимости от того, кодили ли вы когда-либо, или нет.

Кодинг — это новый черный

Шаамн, вызывающий дождь. Передовица Sunday at Home за 1863

Wellcome Library

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

Оформившиеся языки программирования, предназначенные для решения конкретных задач, кристаллизируются и превратятся в новые «вторые и третьи» языки, знакомые нам со школы. Скажем, дети в скором времени смогут по-настоящему изучать не только родной язык, первый и второй иностранные. Зная о его/ее интересе к искусству, учителя смогут предложить ознакомиться с основами, скажем, языка Processing.

Профессия программиста перестанет быть «сакральным танцем с бубном»

Изменения коснутся и самой профессии программиста. По крайней мере, глядя на современные тенденции в среде IT разработок, можно говорить о следующих расширениях профессии. Во-первых, судя по распространению технологий «умной» среды — умных городов, интернета животных, умных домов — очевидно потребуются специалисты вроде архитекторов смешанной реальности, проектировщиков и кибертехников. На их плечи ляжет ответственность по конструированию и обеспечению работы этого наступающего smart-мира. Во-вторых, возможности обучения новым навыкам и знаниям при помощи MOOC’ов поспособствуют тому, что программирование переживет эдакую децентрализацию: обучение программированию, медиаменеджменту, как и воплощение цифровых проектов, перестанет быть привязанным к метрополиям и все чаще будет локальным явлением. А там кто знает, как изменится культура, скажем, регионов и отдаленных областей? С учетом роста спроса на образование вообще и в области IT в частности можно ожидать оформления таких профессий как IT-евангелист (тот, кто продвигает нормы цифровой грамотности и борется с цифровым неравенством), куратор информационной безопасности и консультант по безопасности личного цифрового профиля. В конце концов, трансформируется и само представление о грамотности пользователя. Если сегодня многих по-прежнему интересует, как правильно писать письма и ставить смайлики, то в скором времени каждому подключенному к сети субъекту понадобятся гораздо более глубокие познания об архитектуре сети, алгоритмах, существе баз данных и вселенной приложений.

В итоге профессия программиста перестанет быть «сакральным танцем с бубном» и пением на «тарабарском» языке. Некогда кодинг выглядел действительно как написание — буквально — строк кода, в которых с легкостью можно было ошибиться. Этой каллиграфии современности надо было долго учиться, что приводило к формированию новой — не всегда заметной, не снабженной очевидными признаками власти и преимуществами — элиты. Сегодня среды разработки становятся все проще, а процесс кодинга все приятнее. Конечно, сложно согласиться с мнением Стефена Николса, CEO компании Game Salad, который утверждает, что программирование вовсе может исчезнуть в той форме, в которой мы его знаем. Но с фактом, что эта профессия и навык, за ним стоящий, изменятся, несмотря на все попытки самих экспертов в этой области защитить свой право на специальную автономию, спорить не хочется.

Понимать дотракийский

© parveender / Pixabay

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

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

Скоро функционал программиста будет соотносим с навыками переводчика

Кроме того, код — это не просто способ структурирования и интерпретации мира. Все идет к тому, что процесс программирования в буквальном смысле превратится в способ организации мира, а программисты станут своего рода драматургами. Именно они определяют границы нашего повседневного опыта: благодаря им мы обретаем те или иные инструменты (например, транспортные карты), позволяющие настроить новые привычки к перемещению в пространстве, или сервисы (скажем, онлайн-банкинга), превращающие покупки в сетевых магазинах (кстати, организованных по принципам баз данных) в сплошное удовольствие консьюмериста. Вот и получается: кто пишет код — создает Матрицу, в которой мы все живем. Хочется верить, что создание таких матриц будет прерогативой многих.