скачать книгу бесплатно
Ограничения архитектуры фон Неймана стали заметны, практически сразу же после появления построенных на её основе промышленных версий компьютеров и языков программирования. Джон Бэкус, был один из первых, кто проанализировав узкие места машин Тьюринга и фон Неймана, предложил принципиально новую модель – функциональное программирование, или, если применить более современную терминологию – распределенную систему функциональных объектов с динамическими связями. И хотя в его работе используется сложный математико-логический способ анализа проблемы и описания решения, если настойчивый программист с базовым математическим образованием уделит немного времени чтобы разобраться в сути его небольшой статьи: «Can programming be liberated from the von Neumann style?», то для него станет понятной связь между моделью ?-исчислений и биологическими нейронами.
Существует глубокое заблуждение, что «нейрон прост» и представляет собой элемент с известными функциональными свойствами, которые можно формально специфицировать. При этом упускаются из вида хорошо известные факты:
– как и всякая клетка, нейрон может размножаться;
– нейрон способен инициировать соединения с другими нейронами;
– нейрон может принимать или отказываться (attraction, repulsion) от приглашений на соединение, поступающие от других клеток;
– внутри нейрона есть механизм, который реагирует на изменение электро-магнитного и биохимического состояния внешней для него среды и, соответственно, у него есть генератор ответных электрических или химических сигналов;
– нейрон имеет внутреннюю долговременную память – при помощи рибосомы он способен копировать и интерпретировать молекулы РНК, в которых могут храниться разнообразные данные.
Эти свойства нейрона, а также ещё многое, чего мы пока не знаем, позволяют утверждать, что нейрон – не прост! Это не элемент, а сложная система, и ближайшим аналогом ему является вовсе не процессор или запоминающий элемент памяти, а целостный компьютер. Если исходить из этой аналогии, то нервная система похожа на сеть компьютеров, или – интернет нейронов.
Способность нейрона связываться с другими нейронами и с другими функциональными клетками, изменять свое состояние в соответствии с внутренними процессами и внешними сигналами, запоминать значения и генерировать выходные импульсы – является важным свойством, которое предполагает новый подход к анализу нервной деятельности, но одновременно открывает программистам пути для использования опыта биологических систем при решения принципиально нового класса задач.
Когда-то Аристотель в своих рассуждениях о природе знаний, выделил два типа поведения: подчиненное и рассудительное. Подчиненное поведение – это исполнение инструкций без необходимости или возможности понимать цель. А рассудительное – способность определить пользу действия и разработать инструкцию для исполнителя. Человек, способный понять – способен сформулировать цель и определить способ достижения. Так же и программист создает последовательности инструкций для исполнения компьютером аналогично тому, как менеджер или технолог создают процедуры для исполнителей в офисе или на производстве. В биологических системах, для того чтобы понять, используются динамические многослойные нейронные сети, способные генерировать новые ассоциации. Создание новых ассоциативных связей – это то, что отличает высшую нервную деятельность от любых, сколь угодно сложных, исполнительных механизмов или систем интерпретации программ. Нервная система червяка-нематоды принципиально отличаются от человека не только количеством нейронов, но и тем, что наш мозг постоянно создаёт новые связи, а у червяка, после этапа формирования, они остаются одними и теми же на протяжении всего периода его существования. И наверное поэтому люди все разные, а червяки – одинаковые.
Какой бы сложной не была программа, до тех пор, пока исполнительный механизм будет следовать ее логике, этот механизм не создает новых знаний. И в этом отличие машин Тьюринга или фон Неймана от динамических нейронных моделей. Машины такого типа не могут работать без загруженных в них программ, а наш головной мозг работает без центрального процессора и без внешнего программиста. Теперь на вопрос: «Может ли машина мыслить?» рассудительный программист мог бы ответить так: «Одна машина мыслить не может точно, а вот множество взаимосвязанных машин с определенными новыми свойствами, похоже, что да. И кто знает, возможно, что Интернет – это прототип нового поколения умных машин?».
Возвращаясь к ДНК и базовым моделям вычислительных машин, в которых данные интерпретируются однозначно, можно сказать, что в основе этого лежит буква. В формальных грамматика такой объект называется Терминалом. Действительно, для заданного алфавита, любая система должна распознавать букву из этого алфавита, однозначно. И любая буква, поступающая на вход такой системы, также должна иметь единственное значение. После того, как входное устройство передало сообщение процессору, буквосочетания будут интерпретироваться в соответствии с логикой внутренней программы, которая может быть весьма сложной и иметь свое состояние. Но если заглянуть в память машины, мы увидим статические последовательности «букв, которые могут быть изменены только центральным процессором по командам программы.
Хотя алфавиты, с которыми работают компьютеры, меняются часто, неизменной остается двоичная система, на базе которой строятся более мощные структуры – машинные слова, шестнадцатеричные символы, юникод, и т. п. А вот базовая спецификация языка, на котором записаны коды биологических программ не меняется на протяжении миллиарда лет! И более того, это язык, в основании которого лежит очень простой алфавит. Можно сказать, что геном человека – это программа, написанная всего четырьмя буквами. Если бы нам удалось построить аналогичную основу систем программирования, то продолжительность жизни программ увеличилась бы существенно, и это то направление, в котором работают конструкторы виртуальных машин.
Совсем иная ситуация возникает, когда мы используем слова. Слово естественного языка не может быть определено однозначно, потому что его интерпретация происходит в системах с различными ассоциативными связями и состояниями. Одно из ключевых свойств нейронных сетей, это неоднозначная интерпретации входного сообщения, которая зависит от контекста или состояния этой сети. Каждый человек или каждая активная нейронная сеть, получив сообщение, поймет его по-разному и более того, одно и то же сообщение будет воспринято иначе одной и той же системой в разное время. Интересно, что такое свойство нейронных систем, хорошо согласуется с физическими свойствами неопределенности и относительности – два наблюдателя не в состоянии синхронизировать свои знания.
Поток слов, поступающих в нейронную сеть, вызывает возмущение ее состояния, которое можно представить себе как волнение поверхности воды от падения капель дождя. Такой образ, совсем далекий от строгих определений, к котором привыкли алгоритмические программисты, вряд ли смутит человека, не знакомого с формальными грамматиками, но неоднократно наблюдавшего волнения воды. А поскольку наша задача при создании новых «умных» систем, будет очень похожа на моделирование волновых процессов, мы надеемся, что подобные аналогии помогут с формированием образного представления о том, как такое решение может работать.
Дело и деньги
Богатый – это тот, у когоденег всегда достаточно.
Почти математическое определение (Р. Ф.)
Среди программистов не бывает бедных. Они по сути своей профессии всегда должны иметь достаточно средств или возможностей, чтобы получить доступ к компьютеру. И не обязательно его покупать – очень часто программисты работают на чужих компьютерах, но именно «власть» над компьютерами, физическими или виртуальными, делает программиста собственником в самом положительном смысле этого слова. Некоторые программисты зарабатывают много денег, а у других, денег достаточно, чтобы получать удовольствие от любимого дела. Достаточно – очень интересное слово! В одном случае оно может определять условие, а в другом, количество, как и категория бесконечность, которая в одной математике – число, а в другой – процесс. В древности, люди употребляли слово много для обозначения совокупности предметов, а правила счета в самой старой троичной системе (1, 2, много) были очень просты: 1+1=2; 2+1=много; много+много=много. По аналогии с такой троичной арифметикой слово достаточно можно применить как критерий в нечёткой логике человеческих ценностей. Для программистов различные логики и операции над лингвистическими значениями, являются естественной и рутинной нормой. Например, вместо двоичной системы счисления или булевой логики, в современном программировании для определения двоичного состояния битa памяти, используются троичное значение, которое может быть: 1, 0 или null (если значение неопределено или недоступно) и большинство современных компиляторов это учитывают. A такие лингвистические переменные, как «лучше» или «хуже», согласно Л. Заде, можно свести к функции или набору числовых параметров, и уже к ним применять стандартные алгебраические операции.
И вот здесь на нашей сцене появляется деловой человек (бизнесмен), для которого подобные логические и лингвистические проблемы не относятся к категории значимых, а понятие богатство по обыкновению, это количество, которого всегда не достаточно.
Если посадить рядом бизнесмена и программиста, разговор между ними получается очень сложным. У делового человека и у программиста разное практически все: словарный запас, парадигмы мышления, критерии, стиль жизни, и ко всему этому, долгая история взаимного недоверия. Но есть нечто, объединяющее их вопреки всем различиям. Дело или действие, это то, ради чего, в конечном счете, программист пишет программы, и если во всех рассуждениях, наряду с физиком и математиком, он будет прислушиваться к мнению делового человека, а иногда и обращаться к нему с идеями или предложениями, то от этого безусловно выиграет не только наша книга.
Все деньги в современном мире создаются или контролируются информационными технологиями, а программисты, это те, кто создают и контролируют эти самые информационные технологии. «Если бы ещё знать, что такое деньги?» вдруг возникает дерзкая мысль у наивного программиста. Ведь не зря же появились биткойн и множество его вариантов. Правда, хитрые бизнесмены быстро привязали биткойны к доллару, и – пропала независимая мера! Но если деньги выступают в качестве меры стоимости, то, следуя логике измерения энерго-информационных действий в джоулях и битах, почему бы не предложить универсальную меру, в которой эти две единицы будут объединены? И тут расчетливый программист декларирует: «Если построить энерго-информационную модель, в которой единицы измерения энергии и информации – джоуль и бит, будут связаны интуитивно понятными отношениями, то это позволит создать принципиально новую денежную единицу, назовем ее условно ДжоБит, которая может прийти на смену биткойну и даже доллару.». Тогда на энерго-информационном рынке возможны вот такие отношения подобия:
1 грамм молока ~ 1 байт знаний ~ 1 ДжоБит
1 грамм колбасы ~ 1 байт веселья ~ 1 ДжоБит
3 минуты программиста ~ 1 минута врача ~ 2 ДжоБит
В такой модели становится возможным обосновать соответствие между трудом информационным и трудом физическим. И вековая мечта философов о равенстве, о справедливом обмене на рынке производства и потребления, становится теоретически достижимой. Ведь если можно измерить любой труд, то и результатами труда можно обмениваться на основе понятных и соизмеряемых величин. Старый лозунг социалистов: «От каждого – по способностям, каждому – по труду» будет оставаться идеалистической догмой, до тех пор, пока не появится сначала теоретическая, а затем и практически осуществимая возможность измерить труд в двух его составляющих: физической и информационной.
Если это произойдет, будет устранена ключевая проблема в экономической модели наивных коммунистов, в которой только физический труд рабочих оценивается на основе измерений и нормативов, а знания и удовольствия относятся к непостижимой области идеализма. Одновременно и теория капитализма приобретёт радикально иной смысл, когда рыночные отношения, по аналогии с законом сохранения энергии в физике, будут служить основой для оптимизации новой экономики, в которой термины «бесплатное» и «прибыль» не имеют смысла. Равенство людей, должно быть основано на том, что они получают равные деньги за равный труд, независимо от того, где и как они работают. Один программист может написать программу за неделю, а другой – за две, но в результате оба совершат одинаковую работу и должны получить за неё одинаковую плату. Но если за одинаковое время один программист заработает сто единиц, а другой десять, то это вполне возможно и нормально, и подтверждается старыми статистическими данными измерений различных параметров технологии программирования, которые показали, что производительность труда среди программистов в среднем отличается приблизительно в десять раз.
«Получается, что когда в проект приглашают людей из других стран, и за ту же самую работу им платят меньше, то это форма дискриминации? Или эксплуатации?Становится понятной суть поведения некоторого подмножества множества посредников (финансовых, маркетинговых, страховых и др.), которые разнообразными способами отнимают у людей деньги, не создавая ничего полезного и прикрываются понятием прибыли, якобы обоснованной теорией капитализма. Мы должны бороться против дешёвой рабочей силы!» – возбуждённо воскликнет программист-демократ и с ним наверняка согласятся многие беспартийные участники производственных отношений.
Однако программисту не следует слишком далеко углубляться в самые различные области знаний, с которыми его сталкивает профессиональная деятельность, и особенно – в политические споры! Интерес программиста к предмету, с которым его на короткое время сводит судьба, как правило, дилетантский. Но все-таки, в логике и умению быстро разобраться в сути проблемы, программистам не откажешь. И вот если провести экспресс-анализ архитектуры, да и самой возможности построения системы поддержки универсальной денежной единицы, основанной на энерго-информационной мере, то аргументы и предложения расчетливого программиста могут показаться вполне разумными.
Можно начать с информационного барьера В. М. Глушкова. Рассуждая о способности человека обрабатывать информацию, он пришел к выводу о необходимости создания новой, безбумажной экономики. В рассуждениях Глушкова, совершенно далеких от монетарных проблем, есть вроде бы тривиальный, но в то же время очень важный формальный момент: способности человека потреблять энергию и тратить ее на работу, так же, как и воспринимать и обрабатывать информацию – ограничены, и стало быть, существует барьерная функция, которая позволяет вычислить объективное значение суммарного производственно-потребительского порога человечества в джоулях и битах. И эта величина может послужить основой для определения не только оптимального объема данных на веб-странницах в Интернете, но и предельного количества универсальных ДжоБитов, по аналогии с золотым запасом или максимальным количеством биткойнов. А если известна предельная величина и мы сможем построить баланс, то это и есть основа для универсальных расчетов. Таким образом, вместо сложного и закрытого механизма печати и перераспределения денег, которую мы имеем сегодня, можно построить прозрачную и основанную на понятных показателях систему, в которой деньги будут обладать всеми свойствами привычных мер, таких как масса, длина, температура и т. п. Все основные компоненты и технологии, которые потребуются для её создания, имеются в наличии, включая протоколы блокчейн, методы измерений энергии и информации, а также расчетливых программистов, которые могут всё это реализовать. Дело за малым.
Подобные крамольные идеи приходят в головы программистов довольно часто. Иногда они бывают утопические, как ДжоБит, но иногда и конструктивные. Современная история знает примеры, когда такие идеи помогали деловым людям заработать очень много денег! Особенно в наиболее благоприятное для инвестиций время, когда в вычислительной технике происходят кардинальные изменения и когда закладываются решения и платформы, которые будут определять развитие компьютеров на десятилетия вперед.
Начало нового периода – это идеальное время для софтверных стартапов, и большинство гигантов компьютерной индустрии возникли как раз в такие моменты: Apple и Microsoft были созданы в конце 70-х, одновременно с первыми персональными компьютерами. Amazon и Google – в конце 90-х, как раз накануне появления первых вычислительных облаков. Если спросить старого программиста, который помнит эпоху ЭВМ, бум персональных компьютеров и расцвет облаков, о том, когда наступит следующий этап и чем он может отличаться, то его ответ может выглядеть вот так: «Нужно просто к слову облако добавить слово персональное».
Название «Персональные облака» – идеально подходит для обозначения нового этапа в эволюции вычислительной техники. Не сложно спрогнозировать, что в информационных технологиях в ближайшем будущем будут доминировать гипер-персональные умные устройства и мультимодальные формы общения: с одной стороны, человек будет окружен разнообразными датчиками, экранами, микрофонами, гаджетами, смартфонами, а с другой – ему будут доступны неограниченные информационные ресурсы, как в локальных, так и в удаленных облаках. И вследствие этого появится новая среда, в которой виртуальные помощники, обладающие искусственным интеллектом, соединят вместе «Умный дом» и «Умное здоровье», «Профессиональных помощников» с «Персональными», и эта новая среда будет способна совершать физические действия, общаться на естественном языке и самое главное – понимать конкретного человека.
Можно по-разному интерпретировать двадцатилетние периоды в эволюции вычислительной техники, например, наложить полусинусоиды на технологические фазы, и определить участки, на которых та или иная платформа достигает пика своего развития. Но вот однажды успешный бизнесмен решил объяснить программисту, в чем состоит секрет успеха в бизнесе, и согласно его модели, рынок подчиняется «закону колеса», а правило успеха он сформулировал следующим образом: «Бизнес нужно начинать в нижней точке цикла, а продавать в наивысшей. О. Т.», что неплохо согласуется с аксиомой об инвестициях в моменты переходных периодов и совпадает с поведением успешных компаний, о которых шла речь выше.
В рациональном мире потребления всё характеризуется экономическими показателями, и задача новой технологии сводится к их улучшению. Чтобы понять почему и как Персональные облака смогут изменить нашу жизнь к лучшему, и одновременно принести прибыль деловым людям, попробуем определить связь между возможностями новых информационных технологий и экономическими показателями. Для этого рассмотрим структурно-функциональную модель рыночных отношений с точки зрения программиста-потребителя, который, с одной стороны, владеет системным анализом, а с другой, как и все остальные потребители, заинтересован в оптимизации и повышении эффективности процесса получения услуг и продуктов в этом самом мире потребления.
Следуя традициям концептуального проектирования, в этой модели будут представлены три группы интересов: потребителей