Можешь не программировать? Не программируй!

Писатель и программист. Это две творческие профессии. Искусство писателя и искусство программиста, выраженное для людей через написание текстов на разных языках, русский, китайский, английский, python, assembler, C#, C++, 1С и другие предназначены для читателей и пользователей приложений. Писатель исследует души своих героев через описание их мыслей, поступков, погружая их то в хаос, то в жестокую конкурентную среду и давая им возможность, иногда быть счастливыми.
   Перед программистом стоит еще более амбициозная задача. Ему надо сделать все, то же самое, что и писатели, но на языке программирования, текст которого робот – гаджет превратит в картинку на экране для пользователя.
   Программы, преобразуются компьютером в ставший уже привычным нам контент: игровой, видео, звуковой, цифровой, табличный в гаджетах, которые стремительно развиваются, становятся помощником человека. Затем смартфоны и планшеты незаметно станут его учителем, наставником, любимой игрушкой, наконец, с которой человек чувствует себя более защищенным и спокойным. Такая возможность, быть частью сообщества, оставаться всегда на связи со своими родными и друзьями предоставляется через приложения и облачные сервисы. Программисты постоянно пишут миллионы строк кода, которые записываются или в память микросхем, процессоров и производят контент для устройств хранения информации пользователей. Вся информация в памяти компьютеров хранится в виде нулей и единиц, но мы видим их в виде привычного нам уже контента.
   Романы и повести пишут писатели. Они пишут их на родном или другом языке, который изучили в школе. Затем, возможно, некоторые из этих произведений будут переведены на другие языки, чтобы круг читателей расширился. Во время чтения, например романа, читатель в своей голове генерирует специфический контент, например пейзаж, описываемый в тексте, звуки животных и шум механизмов, голоса людей. Представляется, что такой контекст каждого читателя совершенно уникален, как уникален каждый человек на нашей планете. Поэтому, после прочтения книги, особенно хочется обменяться с другими читателями этого произведения.
   У приложения много авторов: сценаристы, архитекторы, дизайнеры, специалисты по данным, кодировщики, тестировщики. Это, как правило, увлеченная и сплоченная команда, каждый участник которой делает свое дело, но, при этом, следует правилам командной работы. Программист, как часть такой команды, описывает объекты приложения, разрабатывает алгоритмы, пишет код программ. Он является последним в этой цепочке, а точнее замкнутого круга, в котором крутится вся команда на протяжении жизненного цикла приложения. Вы спросите, как можно отразить душевные переживания в виде алгоритма и соответствующего ему программного кода? Пока этого сделать никому не удавалось. Писатель и режиссер, в случае экранизации, оставляет процесс генерации эмоций читателю, а программист – пользователю приложения опосредовано через интеллектуальное устройство.
   Дизайнеры и программисты, как и сценаристы и режиссеры в кино, предоставляют зрителю свое видение произведения.
У романа есть, как правило, только один автор. Автор романа пишет план произведения, продумывает персонажей, характеры, сюжетные линии. Набор его умений может быть гораздо меньше, чем у команды разработчиков приложения. Писателю достаточно знать один язык, иметь бумагу и перо. Можно приступать, погрузившись в мир своих героев. При этом читателю остается гораздо больше свободы в представлении героев и окружающей их действительности, чем, например, в случае экранизации.
   Разница в том, что на экране гаджетов в приложениях практически нет текстов. Видео и аудио контент были разработаны дизайнерами путем переноса текстов сценария в сцены, уровни, трассы на экране смартфона или планшета. При этом, у пользователя приложения, как ему представляется, есть возможность изменить ход событий в игре или ввести свои данные для обработки в деловом приложении. Но, как вы надеюсь понимаете, только в рамках тех возможностей, которые предоставлены разработчиками приложения. Алгоритмы, на основании которых разрабатываются приложения, обладают вполне определенными свойствами, не соблюдение которых может сделать приложение не работоспособным. С точки зрения творческого подхода – это весьма существенные ограничения.
   Свойства алгоритмов. Дискретность – последовательность вполне определенных действий. Детерминированность – при одних и тех же действиях будет получен один и тот же результат. Понятность - для исполнителя, которым может являться только устройство. Результативность – получение результата или сообщения о невозможности его получения.
   Представьте себе, что эти свойства алгоритмов, на основании которых работают приложения, были бы правилами для творчества писателя. Какими скучными и странными были бы их произведения! Ведь герой романа почему-то не может вдруг уйти в никуда, не оставив сообщения о том, что продолжение следует. Читатель, наделен интеллектом, эмоциями, способностью к сопереживанию, и во время чтения или просмотра экранизированной версии может и рассмеяться, и расплакаться. Человек – биохимический робот, и в результате химических реакций наши эмоции превращаются либо в слезы горя, либо слезы радости. Но, с точки зрения химии, это все равно слезы, соленые, но не сладкие в зависимости от эмоции.
   Писатель взаимодействует непосредственно с читателем через текст произведения. У программиста более длинный путь к эмоциям пользователя. Между программистом и пользователем стоит робот. С одной стороны — это бездушная машина, состоящая из процессоров, контроллеров, микросхем памяти. С другой стороны – это, возможно, самое гениальное изобретение человека. Мировые знания и опыт миллионов инженеров воплощены в «железные» алгоритмы этого фундамента, на котором и строится дом с «мягкими» алгоритмами - приложениями для пользователей.
   Каждый человек живет по своему собственному, уникальному алгоритму. Этот алгоритм полностью не знает ни сам человек, ни, тем более, кто-то из его окружения. Этот алгоритм знает пока только Вселенная. Чем больше общения с другими людьми, другими алгоритмами, тем больше вероятность создать более или менее публичный алгоритм (традиции, культура), которого будут придерживаться участники некоторого сообщества.
   Но, видели ли вы плачущего пользователя приложения? Может быть только, если программист допустил ошибку и приложение виснет или не сохраняет результаты ночных бдений, не разделив с пользователем одно или несколько свойств алгоритма, например понятность или результативность.
   Герой приложения, как правило ассоциируется и с пользователем приложения, который играет от своего имени, и всегда есть возможность, получив новую жизнь, пройти путь сначала и до конца. Читатель романа отделят себя от героя произведения, потому что не может от его имени совершать геройские или любовные поступки, и, как правило у него не возникает желания еще раз прочитать роман. Исчерпана новизна, понятность и результативность. То же самое чувствуют и пользователи игрового приложения, если разработчики не выпустили новый релиз, где новые возможности и новое окружение продолжают приключения героя. Писатели, если читатели ждут продолжения романа, поступают аналогично, держа в неведении своих читателей до момента выхода продолжения романа или экранизации. Поэтому некоторые зритель после просмотра кино говорят, что на экране совсем не так как в книге. Текст один, а контекст и эмоции будут разными.
   Представьте себе программу, которая слушает текст произведения и генерирует по этому тексту видео со звуком. Программа для искусственного интеллекта разберет текст на слова, обратится к базе больших данных, где собраны фото и видео в огромном количестве из социальных сетей и облачных хранилищ, снятых жителями Земли, и сгенерирует объекты: людей, животных, машин, поместит их в определенную обстановку. Если сделать такую генерацию несколько раз, то одинаковых кино, конечно, не получится. Да, все так, как и со зрителями, просмотревшими экранизацию после прочтения книги.
   У читателя нет возможностей изменить текст, сценарий, пойти по другому пути. Каждый раз, открывая книгу на одной и тоже странице, он видит один и тот же текст, один и тот же пролог, эпилог. Однако, контекст, который открывает для читателя страница, может быть разным в зависимости от изменившегося жизненного опыта, места для чтения и других обстоятельств. Читали ли вы «Войну и мир» Л. Н. Толстого в юношестве и в зрелости? «Преступление и наказание» Ф. М. Достоевского в юности и зрелости? У меня даже главные герои поменялись. Например, главным героем стала Сонечка Мармеладова, вместо «твари дрожащей» Родиона Раскольникова.
   Что же получается? Роман, написанный писателем (сценарий) и приложение (алгоритм), реализованный программистом, обладают одними и теми же свойствами? И романы, и программы отражают наш мир, только немного по-разному, оставляя в большей или меньшей мере пространство для воображения. И жизнь наша, возможно тоже является алгоритмом, со всеми присущими ему свойствами.
   Как и было сказано в начале, писатели и программисты, читатели и пользователи приложений – это творческие люди, живущие по определенным алгоритмам с присущими им свойствами. Писателей и программистов, по разным оценкам, не более 5 % от населения Земли.
   Все чаще писатели и читатели становятся программистами, чтобы попытаться добавить еще одно свойство алгоритмов – эмоцию. В этом случае программа станет программой искусственного интеллекта. Это свойство недоступно животным и механизмам, это то, что отличает людей от всего остального, что есть на планете.
   Создание искусственного интеллекта, в том виде, как это понимается сейчас, не решит эту проблему. Для этого человек должен создать самого себя как алгоритм, программный код. Это рекурсия, создание и вызов программное клона самого себя. Рекурсивные алгоритмы описаны и широко используются в программировании. Иногда и писатели обращаются к этой возможности, когда личность их героев раздваивается и надо принимать непростое решение об их судьбе. Физики говорят о том, что в параллельном мире существует несколько моих Я, каждое из которых стало клоном на определенном распутье жизненного пути и можно будет узнать, что стало, если бы пошло не так. Оказывается, что история любит сослагательное наклонение.
   Рассмотрим фрагмент текста писателя и программиста.
   «Время было позднее. На улице было тихо и темно. Человек подошел к перекрестку и, не смотря по сторонам, медленно перешел на другую сторону улицы»
   Фрагмент алгоритма для кодирования программистом.
1. Подойти к дороге, остановиться,
2. посмотреть налево. Если посмотрел налево уже в сотый раз, но не смог перейти, то вызвать такси. Если такси не приехало попробовать обратить на себя внимание, чтобы дали вам возможность перейти дорогу. Через 24 часа, если не перешли дорогу, обратитесь к разработчику.
3. если движущихся машин нет перейти половину дороги, если есть, то выполнить п 2
4. посмотреть направо. Если посмотрел направо уже в сотый раз, но не смог перейти, вызвать МЧС. Если МЧС не приехало пробуйте обратить на себя внимание, чтобы вам помогли перейти дорогу. Через 24 часа, если не перешли дорогу, обратитесь к разработчику.
5. Если движущихся машин нет, перейти вторую половину дороги, если есть, то выполнить, п.4
   Алгоритм не претендует на полноту и выполнение всех свойств. Как видно вариантов может быть очень много и достичь результативности очень сложно. Как правило составить алгоритм, учитывающий все возможные ситуации невозможно. Поэтому и появился пункт: «Если прошло 24 часа, а дорогу перейти не удалось, обратитесь к разработчику приложения».
   Так же как писатель создает персонажи, раскладывает по полочкам их личность и поведение в сюжетных закоулках, так и программист для каждого персонажа – объекта в терминах объектно-ориентированного программирования, разрабатывает сотни и тысячи алгоритмов для событийной модели героя приложения. Каждый такой алгоритм должен соответствовать требованиям к ним, должен быть функциональным, но не настолько большим, чтобы усложнить всю модель и сделать ее необозримой, противоречивой. В этом и состоит искусство программиста, сначала декомпозировать задачу на объекты, описать свойства каждого из них, определить события, которые будут им управлять, определить взаимосвязи с другими объектами и событиями. Что же такое свойства объекта? Это, например, его наименование, описывающие характеристики, тип (текст, число, рисунок, видео) и размерность (фиксированная, переменная, неограниченная), формат отображения, события и реакции на них, взаимосвязи с другими объектами и другие.
   В отличие от писателя, который может оставить читателю своего героя в неопределенном состоянии, программист не имеет на это права в связи со свойствами алгоритма: детерминированность и понятность. Не для вас, а для вашего гаджета, конечно!  Ведь он будет выполнять строка за строкой (дискретность) программный код и взаимодействовать с пользователем.
   Создание искусственно интеллекта как программного клона человека - очень непростое и дорогостоящее мероприятие. Возможно, для его создания и использования не хватит источников энергии на Земле. Но, не забывайте, чтобы создать новую жизнь и новый искусственный интеллект, достаточно воспользоваться присущими нам инстинктами и эмоциями, любовью. Я предпочел найти и крепко обнять свою подружку и, всего, через 9 месяцев, испытать совершенно новые, радостные эмоции и стать творцом новой жизни. В каком-то смысле, мои дети, плоть от плоти, моя рекурсия.
   А программирование? Да, я уже 45 лет пишу программы и тексты для вас.
   Когда я программирую, я изучаю накопленные за прожитые годы знания, нейроны в моей голове, создавая модель окружающей действительности. Затем описываю свойства моих нейронов, присущие им события и нейронные связи. Эту модель я записываю в программный код на моем компьютере. Далее происходит самое интересное – это тестирование модели. На сколько она соответствует действительности? И здесь, без вас, уважаемые пользователи не обойтись. Ваша реакция, обратная связь совершенствует мою модель, и, в случае успеха, кода она овладевает сотнями и тысячами ваших гаджетов, доставляет мне настоящее удовлетворение, которое бывает от того, что мое творчество вызвало реакцию, положительную или отрицательную эмоцию. Все это происходит непрерывно, день за днем разработки и доработки приложения, пока не наступает выгорание. Новые нейроны не рождаются, нейронные связи закостеневают, нет новых программ и текстов.
   Но, как известно, постоянно лишь изменение. А, значит рекурсия возможна, и мой клон имеет шансы появится в сети интернет (среда обитания искусственного интеллекта) , в соответствии с алгоритмом Вселенной. Надо лишь, чтобы детерминированность (фатальность) заложенного в жизнь алгоритма стала рекурсивной, как в игре на компьютере. При наступлении фатального события оно вызовет к исполнению мой программный код, мой искусственный интеллект. В прошлой жизни надо сформировать параметры для вызова меня, рекурсивного и уже не совершать тех ошибок, не тащить с собой тонны сожалений из предыдущего уровня. Это и есть моя вечная жизнь! Где она будет жить? Конечно, в облачном сервисе.
   Кто за вечную жизнь будет платить? Полагаю, что надо использовать возобновляемые источники энергии во Вселенной, там и жить. Какая-нибудь «черная дыра» да и приютит меня. А, в «черных дырах», как полагают ученые не исчезает только информация. То, что мне и надо. Теперь, когда алгоритм вечной жизни разработан, можно приступать к программированию)))
   Рукописи и программы не горят.
 


Рецензии